-verbose
-dontoptimize
-dontshrink
#-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
#-optimizations !method/inlining/*
#-optimizationpasses 30
-repackageclasses 'io.netsocks.vpnclient.sdk'

-allowaccessmodification
-overloadaggressively
-adaptclassstrings

-keep class io.netsocks.vpnclient.models.VpnClientState { *; }
-keepclasseswithmembers class io.netsocks.vpnclient.VpnGateway { *; }
-keepclasseswithmembers class io.netsocks.vpnclient.models.VpnClientState {
     *;
    <fields>;
}

# Kotlin rules
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
    static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
}

# Moshi rules
-dontwarn javax.annotation.**

-keepclasseswithmembers class * {
    @com.squareup.moshi.* <methods>;
}

-keep @com.squareup.moshi.JsonQualifier interface *

-keepclassmembers @com.squareup.moshi.JsonClass class * extends java.lang.Enum {
    <fields>;
}

-keepnames @com.squareup.moshi.JsonClass class *

-if @com.squareup.moshi.JsonClass class *
-keep class <1>JsonAdapter {
    <init>(...);
    <fields>;
}
-if @com.squareup.moshi.JsonClass class **$*
-keep class <1>_<2>JsonAdapter {
    <init>(...);
    <fields>;
}
-if @com.squareup.moshi.JsonClass class **$*$*
-keep class <1>_<2>_<3>JsonAdapter {
    <init>(...);
    <fields>;
}
-if @com.squareup.moshi.JsonClass class **$*$*$*
-keep class <1>_<2>_<3>_<4>JsonAdapter {
    <init>(...);
    <fields>;
}
-if @com.squareup.moshi.JsonClass class **$*$*$*$*
-keep class <1>_<2>_<3>_<4>_<5>JsonAdapter {
    <init>(...);
    <fields>;
}
-if @com.squareup.moshi.JsonClass class **$*$*$*$*$*
-keep class <1>_<2>_<3>_<4>_<5>_<6>JsonAdapter {
    <init>(...);
    <fields>;
}

-keep class kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoaderImpl

-keepclassmembers class kotlin.Metadata {
    public <methods>;
}

-if class io.netsocks.vpnclient.models.ConnectionSettings
-keepnames class io.netsocks.vpnclient.models.ConnectionSettings
-if class io.netsocks.vpnclient.models.ConnectionSettings
-keep class io.netsocks.vpnclient.models.ConnectionSettingsJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.netsocks.vpnclient.models.ServiceSettings
-keepnames class io.netsocks.vpnclient.models.ServiceSettings
-if class io.netsocks.vpnclient.models.ServiceSettings
-keep class io.netsocks.vpnclient.models.ServiceSettingsJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.netsocks.vpnclient.rest.models.Country
-keepnames class io.netsocks.vpnclient.rest.models.Country
-if class io.netsocks.vpnclient.rest.models.Country
-keep class io.netsocks.vpnclient.rest.models.CountryJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}


