-keepclassmembers enum co.pushe.plus.** { *; }
-keepclassmembers enum androidx.work.** { *; }

-keep class * extends co.pushe.plus.internal.PusheComponentInitializer {
    public void preInitialize(android.content.Context);
    public io.reactivex.Completable postInitialize(android.content.Context);
}
-keep class co.pushe.plus.internal.PusheInitializer { *; }

-keep class co.pushe.plus.** extends co.pushe.plus.internal.task.PusheTask { *; }

-optimizations !class/unboxing/enum

# -- Moshi --
-dontwarn okio.**
-dontwarn javax.annotation.**
-keepclasseswithmembers class * {
    <init>(...);
    @com.squareup.moshi.* <methods>;
}
-keep @com.squareup.moshi.JsonQualifier interface *

-keep class **JsonAdapter {
    <init>(...);
    <fields>;
}
-keepnames @com.squareup.moshi.JsonClass class *

-dontwarn org.codehaus.mojo.animal_sniffer.*

# Keep Exception names
-keepnames class co.pushe.plus.** extends java.lang.Exception

-keep class co.pushe.plus.CoreInitializer { *; }
-if class co.pushe.plus.messages.upstream.CheckHiddenAppUpstreamMessage
-keepnames class co.pushe.plus.messages.upstream.CheckHiddenAppUpstreamMessage
-if class co.pushe.plus.messages.upstream.CheckHiddenAppUpstreamMessage
-keep class co.pushe.plus.messages.upstream.CheckHiddenAppUpstreamMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.upstream.CheckHiddenAppUpstreamMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.upstream.CheckHiddenAppUpstreamMessage
-keepclassmembers class co.pushe.plus.messages.upstream.CheckHiddenAppUpstreamMessage {
    public synthetic <init>(boolean,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.upstream.UserAttributeMessage
-keepnames class co.pushe.plus.messages.upstream.UserAttributeMessage
-if class co.pushe.plus.messages.upstream.UserAttributeMessage
-keep class co.pushe.plus.messages.upstream.UserAttributeMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.upstream.UserAttributeMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.upstream.UserAttributeMessage
-keepclassmembers class co.pushe.plus.messages.upstream.UserAttributeMessage {
    public synthetic <init>(java.lang.Boolean,java.lang.String,java.lang.Boolean,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.Double,java.lang.Double,java.lang.String,java.util.Map,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.common.HttpResult
-keepnames class co.pushe.plus.messages.common.HttpResult
-if class co.pushe.plus.messages.common.HttpResult
-keep class co.pushe.plus.messages.common.HttpResultJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.common.HttpResult
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.common.HttpResult
-keepclassmembers class co.pushe.plus.messages.common.HttpResult {
    public synthetic <init>(int,java.lang.String,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messaging.PersistedUpstreamMessageWrapper
-keepnames class co.pushe.plus.messaging.PersistedUpstreamMessageWrapper
-if class co.pushe.plus.messaging.PersistedUpstreamMessageWrapper
-keep class co.pushe.plus.messaging.PersistedUpstreamMessageWrapperJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class co.pushe.plus.messages.upstream.UserLoginMessage
-keepnames class co.pushe.plus.messages.upstream.UserLoginMessage
-if class co.pushe.plus.messages.upstream.UserLoginMessage
-keep class co.pushe.plus.messages.upstream.UserLoginMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.upstream.UserLoginMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.upstream.UserLoginMessage
-keepclassmembers class co.pushe.plus.messages.upstream.UserLoginMessage {
    public synthetic <init>(boolean,java.lang.String,co.pushe.plus.utils.Time,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.upstream.RegistrationMessage
-keepnames class co.pushe.plus.messages.upstream.RegistrationMessage
-if class co.pushe.plus.messages.upstream.RegistrationMessage
-keep class co.pushe.plus.messages.upstream.RegistrationMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.upstream.RegistrationMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.upstream.RegistrationMessage
-keepclassmembers class co.pushe.plus.messages.upstream.RegistrationMessage {
    public synthetic <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,long,java.lang.String,int,java.lang.String,java.util.List,java.lang.String,java.lang.Long,java.lang.Long,java.lang.Boolean,java.util.Map,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.internal.task.StoredTaskInfo
-keepnames class co.pushe.plus.internal.task.StoredTaskInfo
-if class co.pushe.plus.internal.task.StoredTaskInfo
-keep class co.pushe.plus.internal.task.StoredTaskInfoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.internal.task.StoredTaskInfo
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.internal.task.StoredTaskInfo
-keepclassmembers class co.pushe.plus.internal.task.StoredTaskInfo {
    public synthetic <init>(androidx.work.ExistingWorkPolicy,androidx.work.NetworkType,java.lang.String,java.lang.String,int,co.pushe.plus.utils.Time,androidx.work.BackoffPolicy,java.util.Map,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.upstream.TagSubscriptionMessage
-keepnames class co.pushe.plus.messages.upstream.TagSubscriptionMessage
-if class co.pushe.plus.messages.upstream.TagSubscriptionMessage
-keep class co.pushe.plus.messages.upstream.TagSubscriptionMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.upstream.TagSubscriptionMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.upstream.TagSubscriptionMessage
-keepclassmembers class co.pushe.plus.messages.upstream.TagSubscriptionMessage {
    public synthetic <init>(java.util.Map,java.util.List,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.downstream.RegistrationResponseMessage
-keepnames class co.pushe.plus.messages.downstream.RegistrationResponseMessage
-if class co.pushe.plus.messages.downstream.RegistrationResponseMessage
-keep class co.pushe.plus.messages.downstream.RegistrationResponseMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.downstream.RegistrationResponseMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.downstream.RegistrationResponseMessage
-keepclassmembers class co.pushe.plus.messages.downstream.RegistrationResponseMessage {
    public synthetic <init>(co.pushe.plus.messages.downstream.RegistrationResponseMessage$Status,java.lang.String,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.downstream.GeofenceMessage
-keepnames class co.pushe.plus.messages.downstream.GeofenceMessage
-if class co.pushe.plus.messages.downstream.GeofenceMessage
-keep class co.pushe.plus.messages.downstream.GeofenceMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
    private com.squareup.moshi.JsonAdapter nullableTimeAtMillisAdapter;
}
-if class co.pushe.plus.messages.downstream.GeofenceMessage
-keep @interface co.pushe.plus.utils.Millis
-if class co.pushe.plus.messages.downstream.GeofenceMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.downstream.GeofenceMessage
-keepclassmembers class co.pushe.plus.messages.downstream.GeofenceMessage {
    public synthetic <init>(java.lang.String,java.lang.String,double,double,float,java.util.Date,int,java.lang.Boolean,co.pushe.plus.utils.Time,co.pushe.plus.utils.Time,java.lang.Integer,co.pushe.plus.utils.Time,java.util.Map,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.upstream.UserIdUpdateMessage
-keepnames class co.pushe.plus.messages.upstream.UserIdUpdateMessage
-if class co.pushe.plus.messages.upstream.UserIdUpdateMessage
-keep class co.pushe.plus.messages.upstream.UserIdUpdateMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.upstream.UserIdUpdateMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.upstream.UserIdUpdateMessage
-keepclassmembers class co.pushe.plus.messages.upstream.UserIdUpdateMessage {
    public synthetic <init>(java.lang.String,java.lang.String,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.upstream.DeliveryMessage
-keepnames class co.pushe.plus.messages.upstream.DeliveryMessage
-if class co.pushe.plus.messages.upstream.DeliveryMessage
-keep class co.pushe.plus.messages.upstream.DeliveryMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.upstream.DeliveryMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.upstream.DeliveryMessage
-keepclassmembers class co.pushe.plus.messages.upstream.DeliveryMessage {
    public synthetic <init>(java.lang.String,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.upstream.TopicStatusMessage
-keepnames class co.pushe.plus.messages.upstream.TopicStatusMessage
-if class co.pushe.plus.messages.upstream.TopicStatusMessage
-keep class co.pushe.plus.messages.upstream.TopicStatusMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.upstream.TopicStatusMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.upstream.TopicStatusMessage
-keepclassmembers class co.pushe.plus.messages.upstream.TopicStatusMessage {
    public synthetic <init>(java.lang.String,int,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.downstream.UpdateTopicSubscriptionMessage
-keepnames class co.pushe.plus.messages.downstream.UpdateTopicSubscriptionMessage
-if class co.pushe.plus.messages.downstream.UpdateTopicSubscriptionMessage
-keep class co.pushe.plus.messages.downstream.UpdateTopicSubscriptionMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.downstream.UpdateTopicSubscriptionMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.downstream.UpdateTopicSubscriptionMessage
-keepclassmembers class co.pushe.plus.messages.downstream.UpdateTopicSubscriptionMessage {
    public synthetic <init>(java.util.List,java.util.List,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.downstream.RunDebugCommandMessage
-keepnames class co.pushe.plus.messages.downstream.RunDebugCommandMessage
-if class co.pushe.plus.messages.downstream.RunDebugCommandMessage
-keep class co.pushe.plus.messages.downstream.RunDebugCommandMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.downstream.RunDebugCommandMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.downstream.RunDebugCommandMessage
-keepclassmembers class co.pushe.plus.messages.downstream.RunDebugCommandMessage {
    public synthetic <init>(java.lang.String,java.util.List,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.upstream.UserAppCrashMessage
-keepnames class co.pushe.plus.messages.upstream.UserAppCrashMessage
-if class co.pushe.plus.messages.upstream.UserAppCrashMessage
-keep class co.pushe.plus.messages.upstream.UserAppCrashMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.upstream.UserAppCrashMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.upstream.UserAppCrashMessage
-keepclassmembers class co.pushe.plus.messages.upstream.UserAppCrashMessage {
    public synthetic <init>(boolean,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.common.ApplicationDetail
-keepnames class co.pushe.plus.messages.common.ApplicationDetail
-if class co.pushe.plus.messages.common.ApplicationDetail
-keep class co.pushe.plus.messages.common.ApplicationDetailJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.common.ApplicationDetail
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.common.ApplicationDetail
-keepclassmembers class co.pushe.plus.messages.common.ApplicationDetail {
    public synthetic <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.Long,java.lang.Long,java.lang.String,java.util.List,java.lang.Boolean,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class co.pushe.plus.messages.downstream.UpdateConfigMessage
-keepnames class co.pushe.plus.messages.downstream.UpdateConfigMessage
-if class co.pushe.plus.messages.downstream.UpdateConfigMessage
-keep class co.pushe.plus.messages.downstream.UpdateConfigMessageJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.messages.downstream.UpdateConfigMessage
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.messages.downstream.UpdateConfigMessage
-keepclassmembers class co.pushe.plus.messages.downstream.UpdateConfigMessage {
    public synthetic <init>(java.util.Map,java.util.List,int,kotlin.jvm.internal.DefaultConstructorMarker);
}


