log for com.github.shadowsocks.tv:5020650

== Installed Android Tools ==

2022-05-10 03:32:09,950 DEBUG: Reading 'config.yml'
2022-05-10 03:32:09,960 INFO: Using /opt/android-sdk/build-tools/29.0.3/apksigner 
2022-05-10 03:32:09,963 INFO: Creating log directory
2022-05-10 03:32:09,963 INFO: Creating temporary directory
2022-05-10 03:32:09,964 INFO: Creating output directory
2022-05-10 03:32:09,966 DEBUG: Getting git vcs interface for https://github.com/shadowsocks/shadowsocks-android.git
2022-05-10 03:32:09,966 DEBUG: > git --version
git version 2.11.0
2022-05-10 03:32:10,178 INFO: Using git version 2.11.0
2022-05-10 03:32:10,178 DEBUG: Checking 5.2.6-nightly
2022-05-10 03:32:10,178 INFO: Building version 5.2.6-nightly (5020650) of com.github.shadowsocks.tv
2022-05-10 03:32:10,179 INFO: Running 'sudo' commands in /home/vagrant
2022-05-10 03:32:10,179 DEBUG: > sudo DEBIAN_FRONTEND=noninteractive bash -x -c apt-get update || apt-get update && apt-get install openjdk-11-jdk-headless && update-alternatives --auto java
+ apt-get update
Ign:1 http://deb.debian.org/debian stretch InRelease
Get:2 http://security.debian.org/debian-security stretch/updates InRelease [53.0 kB]
Hit:3 http://deb.debian.org/debian stretch-updates InRelease
Get:4 http://deb.debian.org/debian stretch-backports-sloppy InRelease [46.7 kB]
Get:5 http://deb.debian.org/debian stretch-backports InRelease [91.8 kB]
Get:6 http://deb.debian.org/debian testing InRelease [130 kB]
Hit:7 http://deb.debian.org/debian stretch Release
Get:8 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [764 kB]
Get:9 http://security.debian.org/debian-security stretch/updates/main i386 Packages [764 kB]
Get:10 http://security.debian.org/debian-security stretch/updates/main Translation-en [357 kB]
Get:11 http://deb.debian.org/debian testing/main i386 Packages.diff/Index [63.6 kB]
Get:13 http://deb.debian.org/debian testing/main amd64 Packages.diff/Index [63.6 kB]
Get:14 http://deb.debian.org/debian testing/main Translation-en.diff/Index [63.6 kB]
Get:15 http://deb.debian.org/debian testing/main i386 Packages T-2022-05-10-0210.05-F-2022-05-09-2003.58.pdiff [26.3 kB]
Get:16 http://deb.debian.org/debian testing/main amd64 Packages T-2022-05-10-0210.05-F-2022-05-09-2003.58.pdiff [26.3 kB]
Get:15 http://deb.debian.org/debian testing/main i386 Packages T-2022-05-10-0210.05-F-2022-05-09-2003.58.pdiff [26.3 kB]
Get:16 http://deb.debian.org/debian testing/main amd64 Packages T-2022-05-10-0210.05-F-2022-05-09-2003.58.pdiff [26.3 kB]
Get:17 http://deb.debian.org/debian testing/main Translation-en T-2022-05-10-0210.05-F-2022-05-10-0210.05.pdiff [3,194 B]
Get:17 http://deb.debian.org/debian testing/main Translation-en T-2022-05-10-0210.05-F-2022-05-10-0210.05.pdiff [3,194 B]
Fetched 2,454 kB in 4s (547 kB/s)
Reading package lists...
+ apt-get install openjdk-11-jdk-headless
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  libasound2 libasound2-data openjdk-11-jre-headless
Suggested packages:
  libasound2-plugins alsa-utils openjdk-11-demo openjdk-11-source libnss-mdns
  fonts-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho
  fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic
The following NEW packages will be installed:
  libasound2 libasound2-data openjdk-11-jdk-headless openjdk-11-jre-headless
0 upgraded, 4 newly installed, 0 to remove and 2 not upgraded.
Need to get 230 MB of archives.
After this operation, 374 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian stretch/main amd64 libasound2-data all 1.1.3-5 [173 kB]
Get:2 http://deb.debian.org/debian stretch/main amd64 libasound2 amd64 1.1.3-5 [497 kB]
Get:3 http://deb.debian.org/debian stretch-backports/main amd64 openjdk-11-jre-headless amd64 11.0.6+10-1~bpo9+1 [37.4 MB]
Get:4 http://deb.debian.org/debian stretch-backports/main amd64 openjdk-11-jdk-headless amd64 11.0.6+10-1~bpo9+1 [192 MB]
Fetched 230 MB in 3s (72.4 MB/s)
Selecting previously unselected package libasound2-data.
(Reading database ... 64892 files and directories currently installed.)
Preparing to unpack .../libasound2-data_1.1.3-5_all.deb ...
Unpacking libasound2-data (1.1.3-5) ...
Selecting previously unselected package libasound2:amd64.
Preparing to unpack .../libasound2_1.1.3-5_amd64.deb ...
Unpacking libasound2:amd64 (1.1.3-5) ...
Selecting previously unselected package openjdk-11-jre-headless:amd64.
Preparing to unpack .../openjdk-11-jre-headless_11.0.6+10-1~bpo9+1_amd64.deb ...
Unpacking openjdk-11-jre-headless:amd64 (11.0.6+10-1~bpo9+1) ...
Selecting previously unselected package openjdk-11-jdk-headless:amd64.
Preparing to unpack .../openjdk-11-jdk-headless_11.0.6+10-1~bpo9+1_amd64.deb ...
Unpacking openjdk-11-jdk-headless:amd64 (11.0.6+10-1~bpo9+1) ...
Setting up libasound2-data (1.1.3-5) ...
Setting up libasound2:amd64 (1.1.3-5) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...
Setting up openjdk-11-jre-headless:amd64 (11.0.6+10-1~bpo9+1) ...
Setting up openjdk-11-jdk-headless:amd64 (11.0.6+10-1~bpo9+1) ...
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jdeprscan to provide /usr/bin/jdeprscan (jdeprscan) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jimage to provide /usr/bin/jimage (jimage) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jlink to provide /usr/bin/jlink (jlink) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jmod to provide /usr/bin/jmod (jmod) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jshell to provide /usr/bin/jshell (jshell) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jaotc to provide /usr/bin/jaotc (jaotc) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode
+ update-alternatives --auto java
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/java to provide /usr/bin/java (java) in auto mode
2022-05-10 03:32:33,651 DEBUG: > sudo passwd --lock root
passwd: password expiry information changed.
2022-05-10 03:32:33,857 DEBUG: > sudo SUDO_FORCE_REMOVE=yes dpkg --purge sudo
(Reading database ... 65549 files and directories currently installed.)
Removing sudo (1.8.19p1-2.1+deb9u3) ...
Purging configuration files for sudo (1.8.19p1-2.1+deb9u3) ...
Processing triggers for systemd (232-25+deb9u13) ...
2022-05-10 03:32:38,721 INFO: Getting source for revision 1c73e48cc6e590aa628179ab6687558c901693a5
2022-05-10 03:32:38,721 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:38,721 DEBUG: > git rev-parse --show-toplevel
2022-05-10 03:32:38,925 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:38,925 DEBUG: > git submodule foreach --recursive git reset --hard
2022-05-10 03:32:39,332 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:39,332 DEBUG: > git reset --hard
2022-05-10 03:32:39,828 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:39,828 DEBUG: > git submodule foreach --recursive git clean -dffx
2022-05-10 03:32:40,307 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:40,308 DEBUG: > git clean -dffx
2022-05-10 03:32:40,412 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:40,412 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com fetch origin
2022-05-10 03:32:40,987 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:40,987 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com remote prune origin
2022-05-10 03:32:41,291 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:41,291 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com fetch --prune --tags --force origin
2022-05-10 03:32:41,599 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:41,600 DEBUG: > git remote set-head origin --auto
2022-05-10 03:32:42,005 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:42,005 DEBUG: > git checkout -f 1c73e48cc6e590aa628179ab6687558c901693a5
2022-05-10 03:32:42,220 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:42,221 DEBUG: > git clean -dffx
2022-05-10 03:32:42,326 INFO: Initialising submodules
2022-05-10 03:32:42,327 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:42,327 DEBUG: > git rev-parse --show-toplevel
2022-05-10 03:32:42,544 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:42,545 DEBUG: > git submodule sync
2022-05-10 03:32:42,861 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-05-10 03:32:42,861 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com submodule update --init --force --recursive
Submodule path 'core/src/main/jni/badvpn': checked out 'fb01eb983915c9a09a690ad44c6028dd87500ec7'
Submodule path 'core/src/main/jni/libancillary': checked out '311e5d14f593f16c785bc6605220517eb1f21f6b'
Submodule path 'core/src/main/jni/libevent': checked out 'f29f07bc8c43eec96f227e6f6eede32b3af66168'
Submodule path 'core/src/main/jni/redsocks': checked out 'd9954892ba96627748efab2901f38d7e20d6d0a2'
Submodule path 'core/src/main/rust/shadowsocks-rust': checked out 'f35762cbb7f917261f6ea9735e760a1f1311215b'
2022-05-10 03:32:43,366 INFO: Collecting source libraries
2022-05-10 03:32:43,386 DEBUG: Removing debuggable flags from build/srclib/rustup
2022-05-10 03:32:43,395 INFO: Creating local.properties file at build/com.github.shadowsocks.tv/local.properties
2022-05-10 03:32:43,396 INFO: Creating local.properties file at build/com.github.shadowsocks.tv/tv/local.properties
2022-05-10 03:32:43,396 DEBUG: Removing debuggable flags from build/com.github.shadowsocks.tv/tv
2022-05-10 03:32:43,397 INFO: Removing specified files
2022-05-10 03:32:43,397 INFO: Removing core/src/main/jni/badvpn/lime
2022-05-10 03:32:43,398 INFO: Removing mobile
2022-05-10 03:32:43,402 INFO: Removing core/src/main/jni/badvpn/lwip/test/fuzz/inputs
2022-05-10 03:32:43,416 INFO: Running 'prebuild' commands in build/com.github.shadowsocks.tv/tv
2022-05-10 03:32:43,416 DEBUG: Directory: build/com.github.shadowsocks.tv/tv
2022-05-10 03:32:43,416 DEBUG: > bash -x -c -- echo "rust.rustcCommand=$HOME/.cargo/bin/rustc" >> ../local.properties && echo "rust.cargoCommand=$HOME/.cargo/bin/cargo" >> ../local.properties && echo "rust.pythonCommand=/usr/bin/python3" >> ../local.properties && sed -i -e '/gms/d' -e '/firebase/d' ../build.gradle.kts build.gradle.kts && sed -i -e '/gms/d' -e '/firebase/d' -e '/kotlinx-coroutines-play-services/d' ../core/build.gradle.kts && pushd ../core/src/main && sed -i -E -e '/service_subscription_working/s/%d(.*)%d/%1$d\1%2$d/' res/*/strings.xml && cd java/com/github/shadowsocks && sed -i -e '/firebase/Id' Core.kt bg/BaseService.kt && popd && sed -i -e '/OssLicensesMenuActivity/d' src/main/java/com/github/shadowsocks/tv/MainPreferenceFragment.kt && sed -i -z -E -e 's/<Preference[^<]+ossLicenses[^>]+>//' src/main/res/xml/pref_main.xml && sed -i -e '/isEnable/s/true/false/' ../buildSrc/src/main/kotlin/Helpers.kt
+ echo rust.rustcCommand=/home/vagrant/.cargo/bin/rustc
+ echo rust.cargoCommand=/home/vagrant/.cargo/bin/cargo
+ echo rust.pythonCommand=/usr/bin/python3
+ sed -i -e /gms/d -e /firebase/d ../build.gradle.kts build.gradle.kts
+ sed -i -e /gms/d -e /firebase/d -e /kotlinx-coroutines-play-services/d ../core/build.gradle.kts
+ pushd ../core/src/main
~/build/com.github.shadowsocks.tv/core/src/main ~/build/com.github.shadowsocks.tv/tv
+ sed -i -E -e '/service_subscription_working/s/%d(.*)%d/%1$d\1%2$d/' res/values-ar/strings.xml res/values-es/strings.xml res/values-fa/strings.xml res/values-fr/strings.xml res/values-ja/strings.xml res/values-ko/strings.xml res/values-ru/strings.xml res/values/strings.xml res/values-tr/strings.xml res/values-zh-rCN/strings.xml res/values-zh-rTW/strings.xml
+ cd java/com/github/shadowsocks
+ sed -i -e /firebase/Id Core.kt bg/BaseService.kt
+ popd
~/build/com.github.shadowsocks.tv/tv
+ sed -i -e /OssLicensesMenuActivity/d src/main/java/com/github/shadowsocks/tv/MainPreferenceFragment.kt
+ sed -i -z -E -e 's/<Preference[^<]+ossLicenses[^>]+>//' src/main/res/xml/pref_main.xml
+ sed -i -e /isEnable/s/true/false/ ../buildSrc/src/main/kotlin/Helpers.kt
2022-05-10 03:32:43,622 INFO: Cleaning Gradle project...
2022-05-10 03:32:43,623 DEBUG: Directory: build/com.github.shadowsocks.tv/tv
2022-05-10 03:32:43,623 DEBUG: > /home/vagrant/fdroidserver/gradlew-fdroid clean
Found 7.2 via distributionUrl
Downloading missing gradle version 7.2
cachedir /home/vagrant/.cache/fdroidserver
/home/vagrant/.cache/fdroidserver/gradle-7.2-bin.zip: OK
Running /opt/gradle/versions/7.2/bin/gradle clean

Welcome to Gradle 7.2!

Here are the highlights of this release:
 - Toolchain support for Scala
 - More cache hits when Java source files have platform-specific line endings
 - More resilient remote HTTP build cache behavior

For more details see https://docs.gradle.org/7.2/release-notes.html

To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 

> Task :buildSrc:compileKotlin
w: /home/vagrant/build/com.github.shadowsocks.tv/buildSrc/src/main/kotlin/Helpers.kt: (2, 26): 'VariantOutput' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks.tv/buildSrc/src/main/kotlin/Helpers.kt: (115, 65): 'VariantOutput' is deprecated. Deprecated in Java

> Task :buildSrc:compileJava NO-SOURCE
> Task :buildSrc:compileGroovy NO-SOURCE
> Task :buildSrc:pluginDescriptors
> Task :buildSrc:processResources NO-SOURCE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:inspectClassesForKotlinIC

> Task :buildSrc:jar
:jar: No valid plugin descriptors were found in META-INF/gradle-plugins

> Task :buildSrc:assemble
> Task :buildSrc:compileTestKotlin NO-SOURCE
> Task :buildSrc:pluginUnderTestMetadata
> Task :buildSrc:compileTestJava NO-SOURCE
> Task :buildSrc:compileTestGroovy NO-SOURCE
> Task :buildSrc:processTestResources NO-SOURCE
> Task :buildSrc:testClasses UP-TO-DATE
> Task :buildSrc:test NO-SOURCE
> Task :buildSrc:validatePlugins
> Task :buildSrc:check
> Task :buildSrc:build

> Configure project :core
WARNING:The option setting 'android.enableR8.fullMode=true' is experimental.
The current default is 'false'.
WARNING:The option setting 'android.enableResourceOptimizations=false' is deprecated.
The current default is 'true'.
It will be removed in version 8.0 of the Android Gradle plugin.
Warning: No match found for [DefaultTaskExecutionRequest{args=[clean],projectPath='null',rootDir='null'}]
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
IO exception while downloading manifest:
java.io.FileNotFoundException: https://dl.google.com/android/repository/sys-img/android-desktop/sys-img2-2.xml
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1915)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1515)
	at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:250)
	at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.openUrl(DownloadCache.java:246)
	at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.downloadAndCache(DownloadCache.java:622)
	at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.openCachedUrl(DownloadCache.java:545)
	at com.android.sdklib.repository.legacy.LegacyDownloader.downloadAndStream(LegacyDownloader.java:65)
	at com.android.repository.impl.downloader.LocalFileAwareDownloader.downloadAndStream(LocalFileAwareDownloader.java:51)
	at com.android.repository.impl.manager.RemoteRepoLoaderImpl.lambda$fetchPackages$0(RemoteRepoLoaderImpl.java:138)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)


> Configure project :plugin
Checking the license for package Android SDK Build-Tools 31 in /opt/android-sdk/licenses
License for package Android SDK Build-Tools 31 accepted.
Preparing "Install Android SDK Build-Tools 31 (revision: 31.0.0)".
"Install Android SDK Build-Tools 31 (revision: 31.0.0)" ready.
Installing Android SDK Build-Tools 31 in /opt/android-sdk/build-tools/31.0.0
"Install Android SDK Build-Tools 31 (revision: 31.0.0)" complete.
"Install Android SDK Build-Tools 31 (revision: 31.0.0)" finished.
Checking the license for package Android SDK Platform 31 in /opt/android-sdk/licenses
License for package Android SDK Platform 31 accepted.
Preparing "Install Android SDK Platform 31 (revision: 1)".
"Install Android SDK Platform 31 (revision: 1)" ready.
Installing Android SDK Platform 31 in /opt/android-sdk/platforms/android-31
"Install Android SDK Platform 31 (revision: 1)" complete.
"Install Android SDK Platform 31 (revision: 1)" finished.

> Configure project :tv
Warning: No match found for [DefaultTaskExecutionRequest{args=[clean],projectPath='null',rootDir='null'}]

> Task :tv:clean UP-TO-DATE

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 1m 53s
7 actionable tasks: 6 executed, 1 up-to-date
2022-05-10 03:34:40,493 INFO: Scanning source for common problems...
2022-05-10 03:34:40,500 INFO: Removing gradle-wrapper.jar at gradle/wrapper/gradle-wrapper.jar
2022-05-10 03:34:40,593 INFO: Creating source tarball...
2022-05-10 03:34:41,910 INFO: Running 'build' commands in build/com.github.shadowsocks.tv/tv
2022-05-10 03:34:41,910 DEBUG: Directory: build/com.github.shadowsocks.tv/tv
2022-05-10 03:34:41,910 DEBUG: > bash -x -c /home/vagrant/build/srclib/rustup/rustup-init.sh -y && source $HOME/.cargo/env && rustup default 1.60.0 && cd ../core/src/main/rust/shadowsocks-rust && rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
+ /home/vagrant/build/srclib/rustup/rustup-init.sh -y
info: downloading installer
info: profile set to 'default'
info: default host triple is x86_64-unknown-linux-gnu
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: latest update on 2022-04-07, rust version 1.60.0 (7737e0b5c 2022-04-04)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'

  stable-x86_64-unknown-linux-gnu installed - rustc 1.60.0 (7737e0b5c 2022-04-04)


Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, run:
source $HOME/.cargo/env
+ source /home/vagrant/.cargo/env
++ case ":${PATH}:" in
++ export PATH=/home/vagrant/.cargo/bin:/opt/android-sdk/ndk/21.4.7075529:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/android-sdk/tools:/opt/android-sdk/platform-tools:/opt/gradle/bin
++ PATH=/home/vagrant/.cargo/bin:/opt/android-sdk/ndk/21.4.7075529:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/android-sdk/tools:/opt/android-sdk/platform-tools:/opt/gradle/bin
+ rustup default 1.60.0
info: syncing channel updates for '1.60.0-x86_64-unknown-linux-gnu'
info: latest update on 2022-04-07, rust version 1.60.0 (7737e0b5c 2022-04-04)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'
info: default toolchain set to '1.60.0-x86_64-unknown-linux-gnu'

  1.60.0-x86_64-unknown-linux-gnu installed - rustc 1.60.0 (7737e0b5c 2022-04-04)

+ cd ../core/src/main/rust/shadowsocks-rust
+ rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
info: syncing channel updates for 'nightly-2021-06-03-x86_64-unknown-linux-gnu'
info: latest update on 2021-06-03, rust version 1.54.0-nightly (dbe459ded 2021-06-02)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'
info: downloading component 'rust-std' for 'armv7-linux-androideabi'
info: installing component 'rust-std' for 'armv7-linux-androideabi'
info: downloading component 'rust-std' for 'aarch64-linux-android'
info: installing component 'rust-std' for 'aarch64-linux-android'
info: downloading component 'rust-std' for 'i686-linux-android'
info: installing component 'rust-std' for 'i686-linux-android'
info: downloading component 'rust-std' for 'x86_64-linux-android'
info: installing component 'rust-std' for 'x86_64-linux-android'
2022-05-10 03:35:26,095 INFO: Building Gradle project...
2022-05-10 03:35:26,095 DEBUG: Directory: build/com.github.shadowsocks.tv/tv
2022-05-10 03:35:26,095 DEBUG: > /home/vagrant/fdroidserver/gradlew-fdroid assembleFreedomRelease
Found 7.2 via distributionUrl
Running /opt/gradle/versions/7.2/bin/gradle assembleFreedomRelease
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 

> Task :buildSrc:compileKotlin
w: /home/vagrant/build/com.github.shadowsocks.tv/buildSrc/src/main/kotlin/Helpers.kt: (2, 26): 'VariantOutput' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks.tv/buildSrc/src/main/kotlin/Helpers.kt: (115, 65): 'VariantOutput' is deprecated. Deprecated in Java

> Task :buildSrc:compileJava NO-SOURCE
> Task :buildSrc:compileGroovy NO-SOURCE
> Task :buildSrc:pluginDescriptors
> Task :buildSrc:processResources NO-SOURCE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:inspectClassesForKotlinIC

> Task :buildSrc:jar
:jar: No valid plugin descriptors were found in META-INF/gradle-plugins

> Task :buildSrc:assemble
> Task :buildSrc:compileTestKotlin NO-SOURCE
> Task :buildSrc:pluginUnderTestMetadata
> Task :buildSrc:compileTestJava NO-SOURCE
> Task :buildSrc:compileTestGroovy NO-SOURCE
> Task :buildSrc:processTestResources NO-SOURCE
> Task :buildSrc:testClasses UP-TO-DATE
> Task :buildSrc:test NO-SOURCE
> Task :buildSrc:validatePlugins
> Task :buildSrc:check
> Task :buildSrc:build

> Configure project :core
WARNING:The option setting 'android.enableR8.fullMode=true' is experimental.
The current default is 'false'.
WARNING:The option setting 'android.enableResourceOptimizations=false' is deprecated.
The current default is 'true'.
It will be removed in version 8.0 of the Android Gradle plugin.
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :core:preBuild UP-TO-DATE
> Task :core:preReleaseBuild UP-TO-DATE
> Task :plugin:preBuild UP-TO-DATE
> Task :plugin:preReleaseBuild UP-TO-DATE
> Task :plugin:compileReleaseAidl NO-SOURCE
> Task :plugin:packageReleaseRenderscript NO-SOURCE
> Task :core:compileReleaseRenderscript NO-SOURCE
> Task :core:generateReleaseBuildConfig
> Task :core:generateReleaseResValues
> Task :core:generateReleaseResources
> Task :core:compileReleaseAidl
> Task :core:packageReleaseResources
> Task :plugin:compileReleaseRenderscript NO-SOURCE
> Task :plugin:generateReleaseResValues
> Task :plugin:generateReleaseResources
> Task :plugin:packageReleaseResources
> Task :core:parseReleaseLocalResources
> Task :plugin:parseReleaseLocalResources
> Task :plugin:generateReleaseBuildConfig
> Task :plugin:processReleaseManifest

> Task :core:processReleaseManifest
/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/AndroidManifest.xml:113:9-114:40 Warning:
	provider#com.google.firebase.provider.FirebaseInitProvider was tagged at AndroidManifest.xml:113 to remove other declarations but no other declaration present

> Task :plugin:javaPreCompileRelease
> Task :tv:preBuild UP-TO-DATE
> Task :tv:preFreedomReleaseBuild UP-TO-DATE
> Task :tv:compileFreedomReleaseAidl NO-SOURCE
> Task :core:packageReleaseRenderscript NO-SOURCE
> Task :tv:compileFreedomReleaseRenderscript NO-SOURCE
> Task :core:javaPreCompileRelease
> Task :tv:generateFreedomReleaseBuildConfig
> Task :core:writeReleaseAarMetadata
> Task :plugin:writeReleaseAarMetadata
> Task :tv:generateFreedomReleaseResValues
> Task :tv:generateFreedomReleaseResources
> Task :tv:createFreedomReleaseCompatibleScreenManifests
> Task :core:extractDeepLinksRelease
> Task :plugin:extractDeepLinksRelease
> Task :tv:extractDeepLinksFreedomRelease
> Task :tv:javaPreCompileFreedomRelease
> Task :tv:checkFreedomReleaseAarMetadata
> Task :tv:mergeFreedomReleaseResources
> Task :plugin:generateReleaseRFile

> Task :tv:processFreedomReleaseMainManifest
/home/vagrant/build/com.github.shadowsocks.tv/tv/src/main/AndroidManifest.xml:124:9-126:35 Warning:
	provider#com.google.firebase.provider.FirebaseInitProvider was tagged at AndroidManifest.xml:124 to remove other declarations but no other declaration present

> Task :tv:processFreedomReleaseManifest
> Task :core:configureNdkBuildRelease

> Task :core:buildNdkBuildRelease
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 4 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 13 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 4 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:450:63: warning: passing 'int *' to parameter of type 'socklen_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign]
C/C++:         if ((sock2 = accept(sock, (struct sockaddr *)&remote, &t)) == -1) {
C/C++:                                                               ^~
C/C++: /opt/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/sys/socket.h:301:71: note: passing argument to parameter '__addr_length' here
C/C++: __socketcall int accept(int __fd, struct sockaddr* __addr, socklen_t* __addr_length);
C/C++:                                                                       ^
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 14 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 4 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 13 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:183:56: warning: taking address of packed member 'data' of class or structure 'epoll_event' may result in an unaligned pointer value [-Waddress-of-packed-member]
C/C++:         bfd->epoll_returned_ptr = (BFileDescriptor **)&event->data.ptr;
C/C++:                                                        ^~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 5 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:450:63: warning: passing 'int *' to parameter of type 'socklen_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign]
C/C++:         if ((sock2 = accept(sock, (struct sockaddr *)&remote, &t)) == -1) {
C/C++:                                                               ^~
C/C++: /opt/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/sys/socket.h:301:71: note: passing argument to parameter '__addr_length' here
C/C++: __socketcall int accept(int __fd, struct sockaddr* __addr, socklen_t* __addr_length);
C/C++:                                                                       ^
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 14 warnings generated.

> Task :plugin:mergeReleaseJniLibFolders
> Task :plugin:mergeReleaseNativeLibs NO-SOURCE
> Task :plugin:stripReleaseDebugSymbols NO-SOURCE
> Task :plugin:copyReleaseJniLibsProjectOnly
> Task :generateLinkerWrapper

> Task :core:cargoBuildArm
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
    Updating crates.io index

> Task :tv:processFreedomReleaseManifestForPackage

> Task :core:cargoBuildArm
 Downloading crates ...
  Downloaded humantime v2.1.0
  Downloaded anyhow v1.0.42
  Downloaded qrcode v0.12.0
  Downloaded proc-macro-nested v0.1.7
  Downloaded exitcode v1.1.2
  Downloaded bloomfilter v1.0.5
  Downloaded futures-channel v0.3.16
  Downloaded spin v0.9.2
  Downloaded parking_lot v0.11.1
  Downloaded generic-array v0.12.4
  Downloaded rand v0.8.4
  Downloaded serde_yaml v0.8.17
  Downloaded async-trait v0.1.50
  Downloaded base64 v0.13.0
  Downloaded crossbeam-channel v0.5.1
  Downloaded sha-1 v0.8.2
  Downloaded rand_chacha v0.3.1
  Downloaded unicode-normalization v0.1.19
  Downloaded json5 v0.3.0
  Downloaded regex v1.5.4
  Downloaded thiserror v1.0.26
  Downloaded smallvec v1.6.1
  Downloaded linked-hash-map v0.5.4
  Downloaded shadowsocks-crypto v0.2.4
  Downloaded num-traits v0.2.14
  Downloaded unicode-width v0.1.8
  Downloaded socket2 v0.4.0
  Downloaded inotify-sys v0.1.5
  Downloaded same-file v1.0.6
  Downloaded proc-macro-hack v0.5.19
  Downloaded regex-syntax v0.6.25
  Downloaded pest v2.1.3
  Downloaded pin-project v1.0.8
  Downloaded unsafe-any v0.4.2
  Downloaded match_cfg v0.1.0
  Downloaded ipnet v2.3.1
  Downloaded bit-vec v0.6.3
  Downloaded traitobject v0.1.0
  Downloaded log v0.4.14
  Downloaded maplit v1.0.2
  Downloaded fake-simd v0.1.2
  Downloaded digest v0.8.1
  Downloaded byte-tools v0.3.1
  Downloaded boxfnonce v0.1.1
  Downloaded block-buffer v0.7.3
  Downloaded opaque-debug v0.2.3
  Downloaded hostname v0.3.1
  Downloaded futures-core v0.3.16
  Downloaded checked_int_cast v1.0.0
  Downloaded ansi_term v0.11.0
  Downloaded ring v0.16.20
  Downloaded serde_urlencoded v0.7.0
  Downloaded strsim v0.8.0
  Downloaded siphasher v0.3.5
  Downloaded mio v0.7.13
  Downloaded untrusted v0.7.1
  Downloaded quote v1.0.9
  Downloaded unicode-segmentation v1.8.0
  Downloaded slab v0.4.3
  Downloaded serde_derive v1.0.126
  Downloaded ucd-trie v0.1.3
  Downloaded unicode-xid v0.2.2
  Downloaded vec_map v0.8.2
  Downloaded tinyvec v1.3.1
  Downloaded memoffset v0.6.4
  Downloaded yaml-rust v0.4.5
  Downloaded unicode-bidi v0.3.5
  Downloaded tokio-macros v1.3.0
  Downloaded trust-dns-proto v0.20.3
  Downloaded matches v0.1.8
  Downloaded trust-dns-resolver v0.20.3
  Downloaded syn v1.0.74
  Downloaded thread-id v3.3.0
  Downloaded log4rs v1.0.0
  Downloaded pin-project-internal v1.0.8
  Downloaded resolv-conf v0.7.0
  Downloaded pest_derive v2.1.0
  Downloaded tokio-io-timeout v1.1.1
  Downloaded walkdir v2.3.2
  Downloaded tokio v1.9.0
  Downloaded time v0.1.43
  Downloaded futures-io v0.3.16
  Downloaded serde v1.0.126
  Downloaded bitflags v1.2.1
  Downloaded inotify v0.9.3
  Downloaded clap v2.33.3
  Downloaded thiserror-impl v1.0.26
  Downloaded crypto2 v0.1.2
  Downloaded chrono v0.4.19
  Downloaded daemonize v0.4.1
  Downloaded cc v1.0.69
  Downloaded bytes v1.0.1
  Downloaded libc v0.2.98
  Downloaded typenum v1.13.0
  Downloaded data-encoding v2.3.2
  Downloaded term_size v0.3.2
  Downloaded futures-sink v0.3.16
  Downloaded enum-as-inner v0.3.3
  Downloaded url v2.2.2
  Downloaded cfg-if v1.0.0
  Downloaded byteorder v1.4.3
  Downloaded textwrap v0.11.0
  Downloaded pest_meta v2.1.3
  Downloaded instant v0.1.10
  Downloaded ppv-lite86 v0.2.10
  Downloaded num-integer v0.1.44
  Downloaded signal-hook-registry v1.4.0
  Downloaded rand_core v0.6.3
  Downloaded quick-error v1.2.3
  Downloaded percent-encoding v2.1.0
  Downloaded lru-cache v0.1.2
  Downloaded lazy_static v1.4.0
  Downloaded num_cpus v1.13.0
  Downloaded aho-corasick v0.7.18
  Downloaded getrandom v0.2.3
  Downloaded futures-util v0.3.16
  Downloaded futures-executor v0.3.16
  Downloaded futures v0.3.16
  Downloaded filetime v0.2.14
  Downloaded crossbeam-utils v0.8.5
  Downloaded byte_string v1.0.0
  Downloaded arc-swap v1.3.0
  Downloaded futures-macro v0.3.16
  Downloaded lru_time_cache v0.11.11
  Downloaded form_urlencoded v1.0.1
  Downloaded serde_json v1.0.64
  Downloaded serde-value v0.7.0
  Downloaded ryu v1.0.5
  Downloaded pin-project-lite v0.2.7
  Downloaded parking_lot_core v0.8.3
  Downloaded once_cell v1.8.0
  Downloaded notify v5.0.0-pre.11
  Downloaded itoa v0.4.7
  Downloaded iprange v0.6.4
  Downloaded tinyvec_macros v0.1.0
  Downloaded spin v0.5.2
  Downloaded scopeguard v1.1.0
  Downloaded pin-utils v0.1.0
  Downloaded idna v0.2.3
  Downloaded heck v0.3.3
  Downloaded fnv v1.0.7
  Downloaded autocfg v1.0.1
  Downloaded arc-swap v0.4.8
  Downloaded memchr v2.4.0
  Downloaded proc-macro2 v1.0.28
  Downloaded ordered-float v2.7.0
  Downloaded nix v0.22.0
  Downloaded lock_api v0.4.4
  Downloaded futures-task v0.3.16
  Downloaded atty v0.2.14
  Downloaded block-padding v0.1.5
  Downloaded pest_generator v2.1.3
  Downloaded derivative v2.2.0
  Downloaded dtoa v0.4.8
  Downloaded log-mdc v0.1.0
  Downloaded typemap v0.3.3
 Downloading crates ...
  Downloaded env_logger v0.9.0
   Compiling libc v0.2.98
   Compiling proc-macro2 v1.0.28
   Compiling unicode-xid v0.2.2
   Compiling syn v1.0.74
   Compiling autocfg v1.0.1
   Compiling cfg-if v1.0.0
   Compiling serde_derive v1.0.126
   Compiling serde v1.0.126
   Compiling memchr v2.4.0
   Compiling scopeguard v1.1.0
   Compiling log v0.4.14
   Compiling proc-macro-hack v0.5.19
   Compiling futures-core v0.3.16
   Compiling futures-task v0.3.16
   Compiling matches v0.1.8
   Compiling futures-channel v0.3.16
   Compiling pin-project-lite v0.2.7
   Compiling proc-macro-nested v0.1.7
   Compiling smallvec v1.6.1
   Compiling futures-sink v0.3.16
   Compiling ppv-lite86 v0.2.10
   Compiling once_cell v1.8.0
   Compiling tinyvec_macros v0.1.0
   Compiling ryu v1.0.5
   Compiling linked-hash-map v0.5.4
   Compiling lazy_static v1.4.0
   Compiling percent-encoding v2.1.0
   Compiling futures-io v0.3.16
   Compiling bitflags v1.2.1
   Compiling slab v0.4.3
   Compiling pin-utils v0.1.0
   Compiling async-trait v0.1.50
   Compiling unicode-segmentation v1.8.0
   Compiling ucd-trie v0.1.3
   Compiling bytes v1.0.1
   Compiling cc v1.0.69
   Compiling crossbeam-utils v0.8.5
   Compiling ipnet v2.3.1
   Compiling itoa v0.4.7
   Compiling match_cfg v0.1.0
   Compiling maplit v1.0.2
   Compiling serde_json v1.0.64
   Compiling untrusted v0.7.1
   Compiling anyhow v1.0.42
   Compiling same-file v1.0.6
   Compiling data-encoding v2.3.2
   Compiling traitobject v0.1.0
   Compiling quick-error v1.2.3
   Compiling spin v0.5.2
   Compiling siphasher v0.3.5
   Compiling bit-vec v0.6.3
   Compiling crypto2 v0.1.2
   Compiling dtoa v0.4.8
   Compiling regex-syntax v0.6.25
   Compiling fnv v1.0.7
   Compiling log-mdc v0.1.0
   Compiling byte_string v1.0.0
   Compiling checked_int_cast v1.0.0
   Compiling arc-swap v0.4.8
   Compiling unicode-width v0.1.8
   Compiling humantime v2.1.0
   Compiling arc-swap v1.3.0
   Compiling base64 v0.13.0
   Compiling boxfnonce v0.1.1
   Compiling ansi_term v0.11.0
   Compiling byteorder v1.4.3
   Compiling vec_map v0.8.2
   Compiling lru_time_cache v0.11.11
   Compiling strsim v0.8.0
   Compiling exitcode v1.1.2
   Compiling instant v0.1.10
   Compiling futures-macro v0.3.16
   Compiling futures-util v0.3.16
   Compiling num-traits v0.2.14
   Compiling tokio v1.9.0
   Compiling memoffset v0.6.4
   Compiling num-integer v0.1.44
   Compiling lock_api v0.4.4
   Compiling unicode-bidi v0.3.5
   Compiling tinyvec v1.3.1
   Compiling yaml-rust v0.4.5
   Compiling lru-cache v0.1.2
   Compiling form_urlencoded v1.0.1
   Compiling pest v2.1.3
   Compiling iprange v0.6.4
   Compiling heck v0.3.3
   Compiling walkdir v2.3.2
   Compiling unsafe-any v0.4.2
   Compiling ring v0.16.20
   Compiling qrcode v0.12.0
   Compiling spin v0.9.2
   Compiling unicode-normalization v0.1.19
   Compiling typemap v0.3.3
   Compiling pest_meta v2.1.3
   Compiling aho-corasick v0.7.18
   Compiling quote v1.0.9
   Compiling getrandom v0.2.3
   Compiling parking_lot_core v0.8.3
   Compiling signal-hook-registry v1.4.0
   Compiling num_cpus v1.13.0
   Compiling hostname v0.3.1
   Compiling time v0.1.43
   Compiling filetime v0.2.14
   Compiling thread-id v3.3.0
   Compiling term_size v0.3.2
   Compiling socket2 v0.4.0
   Compiling atty v0.2.14
   Compiling daemonize v0.4.1
   Compiling crossbeam-channel v0.5.1
   Compiling nix v0.22.0
   Compiling idna v0.2.3
   Compiling regex v1.5.4
   Compiling ordered-float v2.7.0
   Compiling rand_core v0.6.3
   Compiling parking_lot v0.11.1
   Compiling resolv-conf v0.7.0
   Compiling textwrap v0.11.0
   Compiling notify v5.0.0-pre.11
   Compiling url v2.2.2
   Compiling chrono v0.4.19
   Compiling rand_chacha v0.3.1
   Compiling clap v2.33.3
   Compiling rand v0.8.4
   Compiling pest_generator v2.1.3
   Compiling bloomfilter v1.0.5
   Compiling shadowsocks-crypto v0.2.4
   Compiling thiserror-impl v1.0.26
   Compiling tokio-macros v1.3.0
   Compiling enum-as-inner v0.3.3
   Compiling pin-project-internal v1.0.8
   Compiling derivative v2.2.0
   Compiling pest_derive v2.1.0
   Compiling thiserror v1.0.26
   Compiling pin-project v1.0.8
   Compiling futures-executor v0.3.16
   Compiling futures v0.3.16
   Compiling serde-value v0.7.0
   Compiling serde_yaml v0.8.17
   Compiling serde_urlencoded v0.7.0
   Compiling json5 v0.3.0
   Compiling mio v0.7.13
   Compiling log4rs v1.0.0
   Compiling trust-dns-proto v0.20.3
   Compiling tokio-io-timeout v1.1.1
   Compiling trust-dns-resolver v0.20.3
   Compiling shadowsocks v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 3m 26s

> Task :core:cargoBuildArm64
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
   Compiling cfg-if v1.0.0
   Compiling scopeguard v1.1.0
   Compiling matches v0.1.8
   Compiling pin-project-lite v0.2.7
   Compiling smallvec v1.6.1
   Compiling futures-sink v0.3.16
   Compiling tinyvec_macros v0.1.0
   Compiling ppv-lite86 v0.2.10
   Compiling once_cell v1.8.0
   Compiling pin-utils v0.1.0
   Compiling slab v0.4.3
   Compiling linked-hash-map v0.5.4
   Compiling futures-io v0.3.16
   Compiling percent-encoding v2.1.0
   Compiling lazy_static v1.4.0
   Compiling bytes v1.0.1
   Compiling ipnet v2.3.1
   Compiling itoa v0.4.7
   Compiling match_cfg v0.1.0
   Compiling data-encoding v2.3.2
   Compiling traitobject v0.1.0
   Compiling spin v0.5.2
   Compiling same-file v1.0.6
   Compiling untrusted v0.7.1
   Compiling quick-error v1.2.3
   Compiling dtoa v0.4.8
   Compiling siphasher v0.3.5
   Compiling regex-syntax v0.6.25
   Compiling bit-vec v0.6.3
   Compiling crypto2 v0.1.2
   Compiling ucd-trie v0.1.3
   Compiling base64 v0.13.0
   Compiling humantime v2.1.0
   Compiling arc-swap v1.3.0
   Compiling unicode-width v0.1.8
   Compiling log-mdc v0.1.0
   Compiling byte_string v1.0.0
   Compiling checked_int_cast v1.0.0
   Compiling fnv v1.0.7
   Compiling arc-swap v0.4.8
   Compiling byteorder v1.4.3
   Compiling strsim v0.8.0
   Compiling lru_time_cache v0.11.11
   Compiling vec_map v0.8.2
   Compiling ansi_term v0.11.0
   Compiling boxfnonce v0.1.1
   Compiling exitcode v1.1.2
   Compiling libc v0.2.98
   Compiling serde v1.0.126
   Compiling memchr v2.4.0
   Compiling log v0.4.14
   Compiling futures-core v0.3.16
   Compiling proc-macro-nested v0.1.7
   Compiling futures-task v0.3.16
   Compiling futures-channel v0.3.16
   Compiling instant v0.1.10
   Compiling unicode-bidi v0.3.5
   Compiling lock_api v0.4.4
   Compiling bitflags v1.2.1
   Compiling tinyvec v1.3.1
   Compiling form_urlencoded v1.0.1
   Compiling ryu v1.0.5
   Compiling crossbeam-utils v0.8.5
   Compiling lru-cache v0.1.2
   Compiling yaml-rust v0.4.5
   Compiling serde_json v1.0.64
   Compiling unsafe-any v0.4.2
   Compiling anyhow v1.0.42
   Compiling iprange v0.6.4
   Compiling walkdir v2.3.2
   Compiling pest v2.1.3
   Compiling qrcode v0.12.0
   Compiling num-traits v0.2.14
   Compiling futures-util v0.3.16
   Compiling tokio v1.9.0
   Compiling num-integer v0.1.44
   Compiling memoffset v0.6.4
   Compiling spin v0.9.2
   Compiling ring v0.16.20
   Compiling unicode-normalization v0.1.19
   Compiling typemap v0.3.3
   Compiling getrandom v0.2.3
   Compiling parking_lot_core v0.8.3
   Compiling signal-hook-registry v1.4.0
   Compiling num_cpus v1.13.0
   Compiling hostname v0.3.1
   Compiling time v0.1.43
   Compiling filetime v0.2.14
   Compiling term_size v0.3.2
   Compiling socket2 v0.4.0
   Compiling thread-id v3.3.0
   Compiling atty v0.2.14
   Compiling daemonize v0.4.1
   Compiling aho-corasick v0.7.18
   Compiling crossbeam-channel v0.5.1
   Compiling rand_core v0.6.3
   Compiling parking_lot v0.11.1
   Compiling idna v0.2.3
   Compiling resolv-conf v0.7.0
   Compiling textwrap v0.11.0
   Compiling nix v0.22.0
   Compiling rand_chacha v0.3.1
   Compiling regex v1.5.4
   Compiling ordered-float v2.7.0
   Compiling notify v5.0.0-pre.11
   Compiling url v2.2.2
   Compiling clap v2.33.3
   Compiling rand v0.8.4
   Compiling chrono v0.4.19
   Compiling thiserror v1.0.26
   Compiling pin-project v1.0.8
   Compiling bloomfilter v1.0.5
   Compiling shadowsocks-crypto v0.2.4
   Compiling serde_urlencoded v0.7.0
   Compiling serde_yaml v0.8.17
   Compiling serde-value v0.7.0
   Compiling json5 v0.3.0
   Compiling mio v0.7.13
   Compiling futures-executor v0.3.16
   Compiling log4rs v1.0.0
   Compiling futures v0.3.16
   Compiling trust-dns-proto v0.20.3
   Compiling tokio-io-timeout v1.1.1
   Compiling trust-dns-resolver v0.20.3
   Compiling shadowsocks v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 2m 37s

> Task :core:cargoBuildX86
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
   Compiling cfg-if v1.0.0
   Compiling scopeguard v1.1.0
   Compiling smallvec v1.6.1
   Compiling matches v0.1.8
   Compiling pin-project-lite v0.2.7
   Compiling tinyvec_macros v0.1.0
   Compiling futures-sink v0.3.16
   Compiling ppv-lite86 v0.2.10
   Compiling once_cell v1.8.0
   Compiling pin-utils v0.1.0
   Compiling linked-hash-map v0.5.4
   Compiling slab v0.4.3
   Compiling lazy_static v1.4.0
   Compiling percent-encoding v2.1.0
   Compiling futures-io v0.3.16
   Compiling bytes v1.0.1
   Compiling itoa v0.4.7
   Compiling ipnet v2.3.1
   Compiling match_cfg v0.1.0
   Compiling quick-error v1.2.3
   Compiling traitobject v0.1.0
   Compiling data-encoding v2.3.2
   Compiling untrusted v0.7.1
   Compiling spin v0.5.2
   Compiling same-file v1.0.6
   Compiling dtoa v0.4.8
   Compiling bit-vec v0.6.3
   Compiling siphasher v0.3.5
   Compiling ucd-trie v0.1.3
   Compiling crypto2 v0.1.2
   Compiling regex-syntax v0.6.25
   Compiling byte_string v1.0.0
   Compiling unicode-width v0.1.8
   Compiling arc-swap v0.4.8
   Compiling fnv v1.0.7
   Compiling checked_int_cast v1.0.0
   Compiling base64 v0.13.0
   Compiling humantime v2.1.0
   Compiling log-mdc v0.1.0
   Compiling arc-swap v1.3.0
   Compiling vec_map v0.8.2
   Compiling byteorder v1.4.3
   Compiling strsim v0.8.0
   Compiling lru_time_cache v0.11.11
   Compiling ansi_term v0.11.0
   Compiling boxfnonce v0.1.1
   Compiling exitcode v1.1.2
   Compiling libc v0.2.98
   Compiling serde v1.0.126
   Compiling memchr v2.4.0
   Compiling log v0.4.14
   Compiling futures-core v0.3.16
   Compiling proc-macro-nested v0.1.7
   Compiling futures-task v0.3.16
   Compiling futures-channel v0.3.16
   Compiling instant v0.1.10
   Compiling tinyvec v1.3.1
   Compiling lock_api v0.4.4
   Compiling unicode-bidi v0.3.5
   Compiling ryu v1.0.5
   Compiling bitflags v1.2.1
   Compiling crossbeam-utils v0.8.5
   Compiling lru-cache v0.1.2
   Compiling yaml-rust v0.4.5
   Compiling form_urlencoded v1.0.1
   Compiling serde_json v1.0.64
   Compiling anyhow v1.0.42
   Compiling unsafe-any v0.4.2
   Compiling iprange v0.6.4
   Compiling walkdir v2.3.2
   Compiling pest v2.1.3
   Compiling qrcode v0.12.0
   Compiling futures-util v0.3.16
   Compiling num-traits v0.2.14
   Compiling tokio v1.9.0
   Compiling num-integer v0.1.44
   Compiling memoffset v0.6.4
   Compiling spin v0.9.2
   Compiling ring v0.16.20
   Compiling unicode-normalization v0.1.19
   Compiling typemap v0.3.3
   Compiling aho-corasick v0.7.18
   Compiling getrandom v0.2.3
   Compiling parking_lot_core v0.8.3
   Compiling num_cpus v1.13.0
   Compiling signal-hook-registry v1.4.0
   Compiling hostname v0.3.1
   Compiling filetime v0.2.14
   Compiling time v0.1.43
   Compiling thread-id v3.3.0
   Compiling socket2 v0.4.0
   Compiling term_size v0.3.2
   Compiling atty v0.2.14
   Compiling daemonize v0.4.1
   Compiling crossbeam-channel v0.5.1
   Compiling nix v0.22.0
   Compiling idna v0.2.3
   Compiling regex v1.5.4
   Compiling ordered-float v2.7.0
   Compiling rand_core v0.6.3
   Compiling parking_lot v0.11.1
   Compiling resolv-conf v0.7.0
   Compiling textwrap v0.11.0
   Compiling notify v5.0.0-pre.11
   Compiling url v2.2.2
   Compiling chrono v0.4.19
   Compiling rand_chacha v0.3.1
   Compiling clap v2.33.3
   Compiling thiserror v1.0.26
   Compiling pin-project v1.0.8
   Compiling rand v0.8.4
   Compiling serde-value v0.7.0
   Compiling serde_urlencoded v0.7.0
   Compiling serde_yaml v0.8.17
   Compiling json5 v0.3.0
   Compiling mio v0.7.13
   Compiling bloomfilter v1.0.5
   Compiling shadowsocks-crypto v0.2.4
   Compiling log4rs v1.0.0
   Compiling futures-executor v0.3.16
   Compiling futures v0.3.16
   Compiling trust-dns-proto v0.20.3
   Compiling tokio-io-timeout v1.1.1
   Compiling trust-dns-resolver v0.20.3
   Compiling shadowsocks v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 2m 34s

> Task :core:cargoBuildX86_64
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
   Compiling cfg-if v1.0.0
   Compiling scopeguard v1.1.0
   Compiling smallvec v1.6.1
   Compiling pin-project-lite v0.2.7
   Compiling matches v0.1.8
   Compiling futures-sink v0.3.16
   Compiling tinyvec_macros v0.1.0
   Compiling once_cell v1.8.0
   Compiling ppv-lite86 v0.2.10
   Compiling lazy_static v1.4.0
   Compiling futures-io v0.3.16
   Compiling pin-utils v0.1.0
   Compiling linked-hash-map v0.5.4
   Compiling percent-encoding v2.1.0
   Compiling slab v0.4.3
   Compiling bytes v1.0.1
   Compiling ipnet v2.3.1
   Compiling match_cfg v0.1.0
   Compiling itoa v0.4.7
   Compiling traitobject v0.1.0
   Compiling quick-error v1.2.3
   Compiling untrusted v0.7.1
   Compiling data-encoding v2.3.2
   Compiling same-file v1.0.6
   Compiling spin v0.5.2
   Compiling siphasher v0.3.5
   Compiling ucd-trie v0.1.3
   Compiling regex-syntax v0.6.25
   Compiling dtoa v0.4.8
   Compiling crypto2 v0.1.2
   Compiling bit-vec v0.6.3
   Compiling base64 v0.13.0
   Compiling checked_int_cast v1.0.0
   Compiling unicode-width v0.1.8
   Compiling log-mdc v0.1.0
   Compiling fnv v1.0.7
   Compiling arc-swap v0.4.8
   Compiling arc-swap v1.3.0
   Compiling humantime v2.1.0
   Compiling byte_string v1.0.0
   Compiling ansi_term v0.11.0
   Compiling strsim v0.8.0
   Compiling vec_map v0.8.2
   Compiling byteorder v1.4.3
   Compiling boxfnonce v0.1.1
   Compiling lru_time_cache v0.11.11
   Compiling exitcode v1.1.2
   Compiling libc v0.2.98
   Compiling serde v1.0.126
   Compiling memchr v2.4.0
   Compiling futures-core v0.3.16
   Compiling log v0.4.14
   Compiling futures-channel v0.3.16
   Compiling futures-task v0.3.16
   Compiling proc-macro-nested v0.1.7
   Compiling unicode-bidi v0.3.5
   Compiling lock_api v0.4.4
   Compiling instant v0.1.10
   Compiling tinyvec v1.3.1
   Compiling bitflags v1.2.1
   Compiling ryu v1.0.5
   Compiling yaml-rust v0.4.5
   Compiling lru-cache v0.1.2
   Compiling crossbeam-utils v0.8.5
   Compiling form_urlencoded v1.0.1
   Compiling serde_json v1.0.64
   Compiling unsafe-any v0.4.2
   Compiling iprange v0.6.4
   Compiling anyhow v1.0.42
   Compiling walkdir v2.3.2
   Compiling pest v2.1.3
   Compiling qrcode v0.12.0
   Compiling futures-util v0.3.16
   Compiling num-traits v0.2.14
   Compiling tokio v1.9.0
   Compiling num-integer v0.1.44
   Compiling memoffset v0.6.4
   Compiling spin v0.9.2
   Compiling unicode-normalization v0.1.19
   Compiling ring v0.16.20
   Compiling typemap v0.3.3
   Compiling getrandom v0.2.3
   Compiling parking_lot_core v0.8.3
   Compiling signal-hook-registry v1.4.0
   Compiling num_cpus v1.13.0
   Compiling hostname v0.3.1
   Compiling filetime v0.2.14
   Compiling time v0.1.43
   Compiling socket2 v0.4.0
   Compiling thread-id v3.3.0
   Compiling term_size v0.3.2
   Compiling atty v0.2.14
   Compiling daemonize v0.4.1
   Compiling aho-corasick v0.7.18
   Compiling crossbeam-channel v0.5.1
   Compiling rand_core v0.6.3
   Compiling parking_lot v0.11.1
   Compiling idna v0.2.3
   Compiling resolv-conf v0.7.0
   Compiling textwrap v0.11.0
   Compiling nix v0.22.0
   Compiling rand_chacha v0.3.1
   Compiling notify v5.0.0-pre.11
   Compiling ordered-float v2.7.0
   Compiling regex v1.5.4
   Compiling url v2.2.2
   Compiling clap v2.33.3
   Compiling rand v0.8.4
   Compiling chrono v0.4.19
   Compiling thiserror v1.0.26
   Compiling pin-project v1.0.8
   Compiling bloomfilter v1.0.5
   Compiling futures-executor v0.3.16
   Compiling serde_urlencoded v0.7.0
   Compiling serde_yaml v0.8.17
   Compiling serde-value v0.7.0
   Compiling json5 v0.3.0
   Compiling futures v0.3.16
   Compiling mio v0.7.13
   Compiling shadowsocks-crypto v0.2.4
   Compiling log4rs v1.0.0
   Compiling trust-dns-proto v0.20.3
   Compiling tokio-io-timeout v1.1.1
   Compiling trust-dns-resolver v0.20.3
   Compiling shadowsocks v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 2m 36s

> Task :core:cargoBuild
> Task :core:mergeReleaseJniLibFolders
> Task :core:mergeReleaseShaders
> Task :core:compileReleaseShaders NO-SOURCE
> Task :core:generateReleaseAssets UP-TO-DATE
> Task :core:packageReleaseAssets
> Task :core:prepareLintJarForPublish
> Task :core:prepareReleaseArtProfile
> Task :core:processReleaseJavaRes NO-SOURCE
> Task :core:writeReleaseLintModelMetadata
> Task :plugin:copyReleaseJniLibsProjectAndLocalJars
> Task :core:generateReleaseRFile
> Task :plugin:compileReleaseKotlin
> Task :plugin:compileReleaseJavaWithJavac
> Task :plugin:bundleLibCompileToJarRelease
warn: removing resource com.github.shadowsocks.tv:string/advanced without required default value.
warn: removing resource com.github.shadowsocks.tv:string/auto_connect_summary_v24 without required default value.
warn: removing resource com.github.shadowsocks.tv:string/invalid_server without required default value.
warn: removing resource com.github.shadowsocks.tv:string/night_mode without required default value.
warn: removing resource com.github.shadowsocks.tv:string/night_mode_auto without required default value.
warn: removing resource com.github.shadowsocks.tv:string/night_mode_off without required default value.
warn: removing resource com.github.shadowsocks.tv:string/night_mode_on without required default value.
warn: removing resource com.github.shadowsocks.tv:string/night_mode_system without required default value.
warn: removing resource com.github.shadowsocks.tv:string/received without required default value.
warn: removing resource com.github.shadowsocks.tv:string/sent without required default value.
warn: removing resource com.github.shadowsocks.tv:string/tcp_fastopen_failure without required default value.
warn: removing resource com.github.shadowsocks.tv:string/tcp_fastopen_summary without required default value.
warn: removing resource com.github.shadowsocks.tv:string/tcp_fastopen_summary_unsupported without required default value.

> Task :tv:processFreedomReleaseResources
> Task :core:kaptGenerateStubsReleaseKotlin
> Task :core:externalNativeBuildRelease
> Task :core:mergeReleaseNativeLibs
> Task :core:kaptReleaseKotlin
> Task :plugin:extractReleaseAnnotations

> Task :core:compileReleaseKotlin
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/Core.kt: (144, 23): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/Core.kt: (145, 27): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (72, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (78, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (82, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (121, 26): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt: (266, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt: (343, 34): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/bg/GuardedProcessPool.kt: (82, 21): The value 'true' assigned to 'var running: Boolean defined in com.github.shadowsocks.bg.GuardedProcessPool.Guard.looper' is never used
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/bg/GuardedProcessPool.kt: (87, 17): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/bg/VpnService.kt: (196, 38): Type mismatch: inferred type is String? but String was expected
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/database/PrivateDatabase.kt: (50, 36): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/database/PublicDatabase.kt: (43, 36): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (51, 32): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (51, 44): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ObsoleteCoroutinesApi' or '@OptIn(kotlinx.coroutines.ObsoleteCoroutinesApi::class)'
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (55, 25): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ObsoleteCoroutinesApi' or '@OptIn(kotlinx.coroutines.ObsoleteCoroutinesApi::class)'
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/HttpsTest.kt: (92, 19): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/Subnet.kt: (81, 46): Type mismatch: inferred type is String? but String was expected
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/Subnet.kt: (81, 71): Unsafe use of a nullable receiver of type String?
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/subscription/SubscriptionService.kt: (111, 36): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ExperimentalCoroutinesApi' or '@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)'
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/subscription/SubscriptionService.kt: (114, 21): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/utils/Utils.kt: (86, 64): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/utils/Utils.kt: (88, 9): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.

> Task :core:compileReleaseJavaWithJavac
> Task :core:bundleLibCompileToJarRelease

> Task :core:stripReleaseDebugSymbols
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :core:copyReleaseJniLibsProjectAndLocalJars
> Task :tv:kaptGenerateStubsFreedomReleaseKotlin
> Task :tv:kaptFreedomReleaseKotlin

> Task :tv:compileFreedomReleaseKotlin
w: /home/vagrant/build/com.github.shadowsocks.tv/tv/src/main/java/com/github/shadowsocks/tv/MainFragment.kt: (48, 21): 'setTargetFragment(Fragment?, Int): Unit' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks.tv/tv/src/main/java/com/github/shadowsocks/tv/MainFragment.kt: (56, 17): 'setTargetFragment(Fragment?, Int): Unit' is deprecated. Deprecated in Java

> Task :tv:compileFreedomReleaseJavaWithJavac
> Task :tv:compileFreedomReleaseSources
> Task :core:extractReleaseAnnotations
> Task :core:mergeReleaseGeneratedProguardFiles
> Task :core:mergeReleaseConsumerProguardFiles
> Task :plugin:mergeReleaseGeneratedProguardFiles
> Task :plugin:mergeReleaseConsumerProguardFiles
> Task :plugin:mergeReleaseShaders
> Task :plugin:compileReleaseShaders NO-SOURCE
> Task :plugin:generateReleaseAssets UP-TO-DATE
> Task :plugin:packageReleaseAssets
> Task :plugin:prepareLintJarForPublish
> Task :plugin:prepareReleaseArtProfile
> Task :plugin:processReleaseJavaRes NO-SOURCE
> Task :plugin:writeReleaseLintModelMetadata
> Task :plugin:bundleLibResRelease
> Task :core:bundleLibResRelease
> Task :plugin:bundleLibRuntimeToJarRelease
> Task :tv:extractProguardFiles
> Task :core:bundleLibRuntimeToJarRelease
> Task :plugin:createFullJarRelease
> Task :tv:mergeFreedomReleaseJniLibFolders
> Task :tv:bundleFreedomReleaseClasses
> Task :plugin:mergeReleaseJavaResource
> Task :core:mergeReleaseJavaResource
> Task :core:copyReleaseJniLibsProjectOnly
> Task :core:syncReleaseLibJars
> Task :core:bundleReleaseLocalLintAar
> Task :plugin:syncReleaseLibJars
> Task :plugin:bundleReleaseLocalLintAar
> Task :core:createFullJarRelease
> Task :core:exportReleaseConsumerProguardFiles
> Task :plugin:exportReleaseConsumerProguardFiles
> Task :tv:mergeFreedomReleaseNativeLibs
> Task :tv:checkFreedomReleaseDuplicateClasses

> Task :tv:stripFreedomReleaseDebugSymbols
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :tv:mergeFreedomReleaseGeneratedProguardFiles
> Task :tv:processFreedomReleaseJavaRes NO-SOURCE

> Task :tv:extractFreedomReleaseNativeSymbolTables
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :tv:mergeFreedomReleaseNativeDebugMetadata NO-SOURCE
> Task :tv:mergeFreedomReleaseShaders
> Task :tv:compileFreedomReleaseShaders NO-SOURCE
> Task :tv:generateFreedomReleaseAssets UP-TO-DATE
> Task :tv:mergeFreedomReleaseAssets
> Task :tv:compressFreedomReleaseAssets
> Task :tv:collectFreedomReleaseDependencies
> Task :tv:sdkFreedomReleaseDependencyData
> Task :tv:writeFreedomReleaseAppMetadata
> Task :tv:writeFreedomReleaseSigningConfigVersions
> Task :tv:mergeFreedomReleaseArtProfile
> Task :tv:mergeFreedomReleaseJavaResource

> Task :tv:minifyFreedomReleaseWithR8
WARNING:/home/vagrant/build/com.github.shadowsocks.tv/tv/build/intermediates/merged_java_res/freedomRelease/base.jar: R8: Unexpected reference to missing service class: META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor.
WARNING:Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /home/vagrant/build/com.github.shadowsocks.tv/tv/build/outputs/mapping/freedomRelease/missing_rules.txt.

WARNING:R8: Missing class lombok.Generated (referenced from: org.slf4j.Logger org.xbill.DNS.Compression.log and 1 other context)
Missing class org.slf4j.impl.StaticLoggerBinder (referenced from: void org.slf4j.LoggerFactory.bind() and 3 other contexts)
Missing class sun.net.spi.nameservice.NameServiceDescriptor (referenced from: org.xbill.DNS.spi.DNSJavaNameServiceDescriptor)

> Task :tv:lintVitalAnalyzeFreedomRelease

> Task :tv:lintVitalFreedomRelease
No issues found.

> Task :tv:shrinkFreedomReleaseRes
> Task :tv:l8DexDesugarLibFreedomRelease
> Task :tv:compileFreedomReleaseArtProfile
> Task :tv:packageFreedomRelease
> Task :tv:assembleFreedomRelease

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 14m 9s
118 actionable tasks: 118 executed
2022-05-10 03:49:35,700 DEBUG: Popen(['git', 'cat-file', '--batch-check'], cwd=/home/vagrant/build/com.github.shadowsocks.tv, universal_newlines=False, shell=None)
2022-05-10 03:49:35,704 INFO: Successfully built version 5.2.6-nightly of com.github.shadowsocks.tv from 1c73e48cc6e590aa628179ab6687558c901693a5
2022-05-10 03:49:36,763 DEBUG: AXML contains a RESOURCE MAP
2022-05-10 03:49:36,763 DEBUG: Start of Namespace mapping: prefix 42: 'android' --> uri 114: 'http://schemas.android.com/apk/res/android'
2022-05-10 03:49:36,765 DEBUG: Checking build/com.github.shadowsocks.tv/tv/build/outputs/apk/freedom/release/tv-freedom-release-unsigned.apk
2022-05-10 03:49:36,773 DEBUG: AXML contains a RESOURCE MAP
2022-05-10 03:49:36,774 DEBUG: Start of Namespace mapping: prefix 42: 'android' --> uri 114: 'http://schemas.android.com/apk/res/android'
2022-05-10 03:49:36,794 INFO: success: com.github.shadowsocks.tv
2022-05-10 03:49:36,795 INFO: Finished
2022-05-10 03:49:36,795 INFO: 1 build succeeded