#ycloud
-keep class com.ycloud.mediacodec.videocodec.**{*;}
-keep class com.ycloud.utils.** { *; }
-keep class com.ycloud.mediarecord.** { *; }
-keep class com.ycloud.mediarecord2.** { *; }
-keep class com.ycloud.common.CPUMemUtils
-keep class com.ycloud.common.CPUMemUtils.CPUInfo
-keep class com.ycloud.mrlog.MRLog
-keep class com.ycloud.player.** { *; }
-keep class com.ycloud.player.ffmpeg.** { *; }
-keep class com.ycloud.yuv.YUV{ *; }
-keep class com.ycloud.gpufilter.LibGpuFilter{ *; }
#ycloud end


##----- CIMSDK begin -----
-keep class com.hummer.im.** { *; }
-keepclassmembers class com.hummer.im.** {
    public *;
}
##----- CIMSDK end -----

##----- ndk_crash_catch_log begin -----
-keep class com.yy.crash.** { *; }
-keepclassmembers class com.yy.sdk.crashreport.anr.AnrTracesInfo {
    private static void *(java.lang.String, java.lang.String);
}
##----- ndk_crash_catch_log end -----

##--yyvideolib begin----
-keep class com.yy.mediaframework.** { *; }
##---yyvideolib end----
##---videoplayer start----
-keep class com.yy.videoplayer.decoder.** { *; }
-keep class com.yy.videoplayer.render.** { *; }
##---videoplayer end----

##---audioenginesdk start----
-keep class org.webrtc.audioengine.** { *; }
-keep class com.yy.android.medialibrary.audiocodec.** { *; }
##---audioenginesdk end----

-keep public class com.yy.sdk.crashreport.CrashHandler{<methods>;}

-dontwarn okio.**
-dontwarn com.squareup.okhttp.**
-dontwarn okhttp3.**
-dontwarn javax.annotation.**

-keep class org.json.** { *; }

#阿里云
-keep class com.alibaba.sdk.android.oss.** { *; }
-dontwarn org.apache.commons.codec.binary.**


##GCM混淆 start
-keep class com.google.firebase.**{*;}
-keep class com.google.android.**{*;}
##GCM混淆 end


##----- begin yyruntime sdk ------
-keep class com.yy.webgame.** {*;}
-keep class org.cocos2dx.lib.** {*;}
##----- end yyruntime sdk ------


##keep game modle
#-keep class com.yy.hiyo.game.base.** {*;}

#-keep class com.yy.game.model.EmojiBean {*;}

##keep voice modle
-keep class com.yy.hiyo.voice.base.bean.MicStatusMsg {*;}

-keep class org.msgpack.core.buffer.* {*;}


##--FlexBoxLayout
-keep class com.google.android.flexbox.* {*;}

-keep class * extends com.yy.im.module.room.holder.ChatBaseHolder {*;}


-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite {
 public static ** getDefaultInstance();
}

#-keep class * extends com.google.protobuf.GeneratedMessageLite$Builder {*;}
-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite$Builder {
 public ** setHeader(***);
}

#klog
-keep public interface tv.athena.*.api.**{*;}
-keep public class tv.athena.*.api.**{*;}
-keep public class **.*$$AxisBinder{*;}
-keep class com.jobase.** { *; }


##keep 一些crash报的转换
-keep class com.yy.game.module.streakwin.ui.StreakWinShareView {*;}
-keep class com.yy.appbase.ui.widget.ViewPagerMoveSpotLayout {*;}
-keep class com.yy.appbase.ui.widget.FocusTouchRecyclerView {*;}
-keep class com.yy.im.ui.SuggestFriendsRecyclerView {*;}
-keep class com.yy.hiyo.user.profile.ProfileInfoPage {*;}
##
#-keep class com.yy.framework.core.ControllerCenter
-keepclassmembers class * extends com.yy.framework.core.AbstractController{
 public <init>(com.yy.framework.core.Environment);
}

#尝试fix crash http://crash.yypm.com/static/issue.html?appId=yym-hago-and&appVersion=1.6.8&startDateString=2018-10-30&endDateString=2018-10-30&verRange=all&curpage=1&keyword=objectbox&issueStatus=ALL&filterFirstAppVersion=ALL&crashType=ALL&relatedBug=ALL&relatedMe=ALL&sha1=d1659e39aa6a4f2930eec6790447f80e91e3a37f
-keep class io.objectbox.internal.NativeLibraryLoader {*;}


# gson
-keep class com.google.gson.internal.$Gson$Types { *;}

#-keep class com.yy.appbase.http.** {*;}


#ai denoise
-keep class com.yy.audiodenoise.AudioDenoiseWrap {*;}
-keep interface com.yy.platform.baseservice.**
-keepclassmembers interface com.yy.platform.baseservice.** { *; }

-keep class com.yy.platform.baseservice.Channel
-keepclassmembers class com.yy.platform.baseservice.Channel {
   *;
}
-keep class com.yy.platform.baseservice.YYServiceCore
-keepclassmembers class com.yy.platform.baseservice.YYServiceCore {
   public *;
}

-keep class com.yy.platform.baseservice.YYServiceCore.BroadcastReceiverImpl
-keepclassmembers class com.yy.platform.baseservice.YYServiceCore.BroadcastReceiverImpl {
   public *;
}

-keep class com.yy.platform.baseservice.task.*
-keepclassmembers class com.yy.platform.baseservice.task.* {
   public *;
}
-keep class com.yy.platform.baseservice.ConstCode$*
-keepclassmembers class com.yy.platform.baseservice.ConstCode$* {
   public *;
}
-keep class com.yy.platform.baseservice.utils.*
# keep 内部类
-keepclassmembers class com.yy.platform.baseservice.utils.* {
   public *;
}

-assumenosideeffects class com.yy.base.logger.MLog {
    public static void verbose(...);
    public static void debug(...);
}

-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}

-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
-keep class sun.misc.Unsafe { *; }
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn okio.**

################### ------------------ chromium start  ------------------ ###################
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Contains flags that can be safely shared with Cronet, and thus would be
# appropriate for third-party apps to include.

# Keep all annotation related attributes that can affect runtime
-keepattributes RuntimeVisible*Annotations
-keepattributes AnnotationDefault

# Keep the annotations, because if we don't, the ProGuard rules that use them
# will not be respected. These classes then show up in our final dex, which we
# do not want - see crbug.com/628226.
-keep @interface org.chromium.base.annotations.AccessedByNative
-keep @interface org.chromium.base.annotations.CalledByNative
-keep @interface org.chromium.base.annotations.CalledByNativeUnchecked
-keep @interface org.chromium.base.annotations.DoNotInline
-keep @interface org.chromium.base.annotations.RemovableInRelease
-keep @interface org.chromium.base.annotations.UsedByReflection

# Keeps for class level annotations.
-keep @org.chromium.base.annotations.UsedByReflection class * {}

# Keeps for method level annotations.
-keepclasseswithmembers class * {
  @org.chromium.base.annotations.AccessedByNative <fields>;
}
-keepclasseswithmembers,includedescriptorclasses class * {
  @org.chromium.base.annotations.CalledByNative <methods>;
}
-keepclasseswithmembers,includedescriptorclasses class * {
  @org.chromium.base.annotations.CalledByNativeUnchecked <methods>;
}
-keepclasseswithmembers class * {
  @org.chromium.base.annotations.UsedByReflection <methods>;
}
-keepclasseswithmembers class * {
  @org.chromium.base.annotations.UsedByReflection <fields>;
}
-keepclasseswithmembers,includedescriptorclasses class * {
  native <methods>;
}

# Remove methods annotated with this if their return value is unused.
-assumenosideeffects class ** {
  @org.chromium.base.annotations.RemovableInRelease <methods>;
}

# Never inline classes or methods with this annotation, but allow shrinking and
# obfuscation.
-keepnames,allowobfuscation @org.chromium.base.annotations.DoNotInline class * {
  *;
}
-keepclassmembernames,allowobfuscation class * {
  @org.chromium.base.annotations.DoNotInline <methods>;
}

# Keep all CREATOR fields within Parcelable that are kept.
-keepclassmembers class org.chromium.** implements android.os.Parcelable {
  public static *** CREATOR;
}

# Don't obfuscate Parcelables as they might be marshalled outside Chrome.
# If we annotated all Parcelables that get put into Bundles other than
# for saveInstanceState (e.g. PendingIntents), then we could actually keep the
# names of just those ones. For now, we'll just keep them all.
-keepnames class org.chromium.** implements android.os.Parcelable

# Keep all enum values and valueOf methods. See
# http://proguard.sourceforge.net/index.html#manual/examples.html
# for the reason for this. Also, see http://crbug.com/248037.
-keepclassmembers enum org.chromium.** {
    public static **[] values();
}
# Proguard config for apps that depend on cronet_impl_native_java.jar.

# 保留Parcelable序列化的类不能被混淆
-keepclassmembers class * implements android.os.Parcelable {
    static ** CREATOR;
    <fields>;
    <methods>;
}
-keepnames class * implements android.os.Parcelable {
    static ** CREATOR;
}
# 保留Serializable 序列化的类不被混淆
-keep class * implements java.io.Serializable {
    *;
}

# This constructor is called using the reflection from Cronet API (cronet_api.jar).
-keep class org.chromium.net.impl.NativeCronetProvider {
    public <init>(android.content.Context);
}

# Suppress unnecessary warnings.
-dontnote org.chromium.net.ProxyChangeListener$ProxyReceiver
-dontnote org.chromium.net.AndroidKeyStore
# Needs 'void setTextAppearance(int)' (API level 23).
-dontwarn org.chromium.base.ApiCompatibilityUtils
# Needs 'boolean onSearchRequested(android.view.SearchEvent)' (API level 23).
-dontwarn org.chromium.base.WindowCallbackWrapper

# Generated for chrome apk and not included into cronet.
-dontwarn org.chromium.base.library_loader.NativeLibraries
-dontwarn org.chromium.base.multidex.ChromiumMultiDexInstaller
-dontwarn org.chromium.base.metrics.CachedMetrics
-dontwarn org.chromium.base.library_loader.LibraryLoader
-dontwarn org.chromium.base.SysUtils

# Objects of this type are passed around by native code, but the class
# is never used directly by native code. Since the class is not loaded, it does
# not need to be preserved as an entry point.
-dontnote org.chromium.net.UrlRequest$ResponseHeadersMap
# https://android.googlesource.com/platform/sdk/+/marshmallow-mr1-release/files/proguard-android.txt#54
-dontwarn android.support.**

# This class should be explicitly kept to avoid failure if
# class/merging/horizontal proguard optimization is enabled.
-keep class org.chromium.base.CollectionUtil

################### ------------------ chromium end  ------------------ ###################



##----- begin mediarecord ------
-keep class com.ycloud.ymrmodel.** { *; }
-keep class com.ycloud.mediacodec.** {*;}
-keep class com.ycloud.mediafilters.** {*;}
-keep class com.ycloud.utils.** { *; }
-keep class com.ycloud.mediarecord.** { *; }
-keep class com.ycloud.mediarecord2.** { *; }
-keep class com.ycloud.common.CPUMemUtils
-keep class com.ycloud.common.CPUMemUtils.CPUInfo
-keep class com.ycloud.mrlog.MRLog
-keep class com.ycloud.player.** { *; }
-keep class com.ycloud.player.IjkMediaPlayer
-keep class com.ycloud.player.IjkMediaPlayer.** { *; }
-keep class com.ycloud.player.ffmpeg.** { *; }
-keep class com.ycloud.svplayer.** { *; }
-keep class com.ycloud.yuv.YUV{ *; }
-keep class com.ycloud.gpufilter.LibGpuFilter{ *; }
-keep class com.ycloud.gpuimagefilter.utils.RhythmInfo{ *; }
-keep class com.ycloud.gpuimagefilter.utils.RhythmInfo$* { *; }
-keep class com.ycloud.gpuimagefilter.param.DecodedVideoFilterParameter{ *; }
-keep class com.ycloud.gpuimagefilter.param.DecodedVideoFilterParameter$*{ *; }
-keep class com.ycloud.gpuimagefilter.param.OFEditStickerEffectFilterParameter{ *; }
-keep class com.ycloud.gpuimagefilter.param.OFEditStickerEffectFilterParameter$*{ *; }
-keep class com.venus.** { *;}
-keep class com.yy.mediaframework.** { *; }
-keep class com.sun.jna.** { *; }
##----- end mediarecord ------

# ------------ 视频推荐 ----------
-keep class com.yy.transvod.**{*;}
-keep class com.chromium.custom.**{*;}
-keep class org.chromium.custom.**{*;}

-keep class com.orangefilter.**{*;}
-keep class com.yy.orangefilter.**{*;}

-keep class tv.athena.live.api.**{*;}
-keep public class * extends tv.athena.live.base.mvvmImpl.MvvmComponent
-keep class com.yy.liveplatform.proto.nano.**{*;}

-keep class * implements tv.athena.core.mvp.PresenterBinder{*;}
-keep class * implements tv.athena.core.sly.SlyBridge.IMessageHandler{*;}
-keep class * implements tv.athena.core.axis.AxisProvider{*;}

# protobuf gen code wire
-keep class com.squareup.wire.** { *; }
-keep class * extends com.squareup.wire.AndroidMessage { *; }
-keep class * extends com.squareup.wire.WireEnum { *; }
-keep class * extends com.squareup.wire.Message$Builder { *; }

-keep class com.yy.audioengine.** {*;}

-keep class org.webrtc.audioengine.** { *; }
-keep class com.yy.android.medialibrary.audiocodec.** { *; }

-keepclasseswithmembers class * {
@tv.athena.annotation.MessageBinding public <methods>;
}

#貌似kotlin中定义的内部类接口keep不住，只能先用类名通配符来keep
-keep public class **.*$$SlyBinder{*;}

-keep @tv.athena.annotation.ProguardKeepClass class * { *; }
-keepclassmembers class * {
@tv.athena.annotation.ProguardKeepMethod <methods>;
}

-keepclassmembers class androidx.viewpager.widget.ViewPager.LayoutParams {
    int position;
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

# 清掉 礼物 sdk 中没必要的缓存
-keepclassmembers class com.yy.mobile.framework.revenuesdk.gift.GiftServiceImpl {
    ** mGiftCache;
}
-keepclassmembers class com.yy.mobile.framework.revenuesdk.gift.GiftCache {
    ** cacheGiftMap;
    ** allGiftInfos;
    ** giftInfoMap;
    ** giftCacheInfoMap;
}
-keepclassmembers class com.yy.mobile.framework.revenuesdk.gift.GiftCacheInfo {
    ** compressData;
}

# 营收sdk
-keep class * implements com.yy.mobile.framework.revenuesdk.payapi.payservice.IPayMethod {
    *;
}


-keepclassmembers class * extends android.webkit.WebChromeClient{
    public void openFileChooser(...);
}

# 增长相关的混淆
#-keep class * extends com.yy.appbase.growth.AbsExperiment
-keep class com.yy.appbase.growth.GrowthBusinessRegistry
-keep class * implements com.yy.appbase.growth.IGrowthFilter
-keep class * extends com.yy.appbase.growth.AbsExperimentCreator

# https://r8.googlesource.com/r8/+/refs/heads/main/compatibility-faq.md
# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
  @com.google.gson.annotations.SerializedName <fields>;
}

-keepattributes EnclosingMethod

-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

-keepclassmembers enum  * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    public static ** valueOf(int);
}

-keep public @interface com.yy.base.utils.DontProguardClass

-keep public @interface com.yy.base.utils.DontProguardMethod

-keep @com.yy.base.utils.DontProguardClass class * { *; }

-keepclassmembers class * {
    @com.yy.mobile.util.DontProguardMethod <methods>;
}

-keep public @interface com.yy.DontProguardClass
-keep @com.yy.DontProguardClass class * { *; }

-keep class * extends com.yy.appbase.core.AbsModuleLoader

-keep class * extends androidx.core.content.FileProvider{
    *;
}

##----Message start ----
-keep public class * extends com.yy.hiyo.database.module.BaseMessage
##----Message end----

#event and kvo
-keepclassmembers class * {
    @com.yy.base.event.kvo.KvoMethodAnnotation *;
    @com.yy.base.event.kvo.KvoFieldAnnotation *;
    @com.yy.base.event.fw.FWEventAnnotation *;
}

-keep class com.yy.base.event.kvo.KvoMethodAnnotation
-keep class com.yy.base.event.kvo.KvoFieldAnnotation
-keep class com.yy.base.event.fw.FWEventAnnotation

-keep class * extends com.yy.base.event.kvo.KvoSource{*;}

-keep class * implements com.yy.hiyo.channel.cbase.module.IChannelModuleLoader
-keep class * implements com.yy.hiyo.channel.cbase.module.IChannelModule
-keep public @interface com.yy.hiyo.channel.cbase.module.ChannelModuleEntry
-keep @com.yy.hiyo.channel.cbase.module.ChannelModuleEntry class * {}


-keep class * extends com.yy.framework.core.ui.recyclerview.BaseViewHolder {
    public <init>(android.view.View);
}

-keep class com.yy.hiyo.x2c.**  {*;}

-keep class com.duowan.hago.party.imp.HagoPartyBridge
-keepclassmembers class com.duowan.hago.party.imp.HagoPartyBridge {
    void init(...);
}
-keep class com.yy.hiyo.HagoPartySdkApplication
-keepclassmembers class com.yy.hiyo.HagoPartySdkApplication {
    void onCreate(android.app.Application, com.yy.appbase.aab.IAabApi);
}

##----appsflyer start----
-dontwarn com.appsflyer.**
-dontwarn com.android.installreferrer
-keep public class com.google.firebase.iid.FirebaseInstanceId {
        public *;
     }
-keep public class com.google.firebase.messaging.FirebaseMessagingService {
       public *;
     }
-keep class com.appsflyer.** { *; }
##----appsflyer  end----