# Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle.kts. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile -dontwarn org.bouncycastle.jsse.BCSSLParameters -dontwarn org.bouncycastle.jsse.BCSSLSocket -dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider -dontwarn org.conscrypt.Conscrypt$Version -dontwarn org.conscrypt.Conscrypt -dontwarn org.conscrypt.ConscryptHostnameVerifier -dontwarn org.openjsse.javax.net.ssl.SSLParameters -dontwarn org.openjsse.javax.net.ssl.SSLSocket -dontwarn org.openjsse.net.ssl.OpenJSSE -dontwarn java.lang.invoke.StringConcatFactory # Keep `Companion` object fields of serializable classes. # This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects. -if @kotlinx.serialization.Serializable class ** -keepclassmembers class <1> { static <1>$Companion Companion; } # Keep `serializer()` on companion objects (both default and named) of serializable classes. -if @kotlinx.serialization.Serializable class ** { static **$* *; } -keepclassmembers class <2>$<3> { kotlinx.serialization.KSerializer serializer(...); } # Keep `INSTANCE.serializer()` of serializable objects. -if @kotlinx.serialization.Serializable class ** { public static ** INSTANCE; } -keepclassmembers class <1> { public static <1> INSTANCE; kotlinx.serialization.KSerializer serializer(...); } # @Serializable and @Polymorphic are used at runtime for polymorphic serialization. -keepattributes RuntimeVisibleAnnotations,AnnotationDefault # Don't print notes about potential mistakes or omissions in the configuration for kotlinx-serialization classes # See also https://github.com/Kotlin/kotlinx.serialization/issues/1900 -dontnote kotlinx.serialization.** # Serialization core uses `java.lang.ClassValue` for caching inside these specified classes. # If there is no `java.lang.ClassValue` (for example, in Android), then R8/ProGuard will print a warning. # However, since in this case they will not be used, we can disable these warnings -dontwarn kotlinx.serialization.internal.ClassValueWrapper -dontwarn kotlinx.serialization.internal.ParametrizedClassValueWrapper # Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and # EnclosingMethod is required to use InnerClasses. -keepattributes Signature, InnerClasses, EnclosingMethod # Retrofit does reflection on method and parameter annotations. -keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations # Keep annotation default values (e.g., retrofit2.http.Field.encoded). -keepattributes AnnotationDefault # Retain service method parameters when optimizing. -keepclassmembers,allowshrinking,allowobfuscation interface * { @retrofit2.http.* ; } # Ignore annotation used for build tooling. -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement # Ignore JSR 305 annotations for embedding nullability information. -dontwarn javax.annotation.** # Guarded by a NoClassDefFoundError try/catch and only used when on the classpath. -dontwarn kotlin.Unit # Top-level functions that can only be used by Kotlin. -dontwarn retrofit2.KotlinExtensions -dontwarn retrofit2.KotlinExtensions$* # With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy # and replaces all potential values with null. Explicitly keeping the interfaces prevents this. -if interface * { @retrofit2.http.* ; } -keep,allowobfuscation interface <1> # Keep inherited services. -if interface * { @retrofit2.http.* ; } -keep,allowobfuscation interface * extends <1> # Keep generic signature of Call, Response (R8 full mode strips signatures from non-kept items). -keep,allowobfuscation,allowshrinking interface retrofit2.Call -keep,allowobfuscation,allowshrinking class retrofit2.Response # With R8 full mode generic signatures are stripped for classes that are not # kept. Suspend functions are wrapped in continuations where the type argument # is used. -keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation -dontwarn com.sun.net.httpserver.HttpContext -dontwarn com.sun.net.httpserver.HttpHandler -dontwarn com.sun.net.httpserver.HttpServer -dontwarn javax.enterprise.context.ApplicationScoped -dontwarn javax.enterprise.inject.Alternative -dontwarn sun.net.www.protocol.http.Handler -keep class org.jupnp.** { *; } -dontwarn com.sun.net.httpserver.Headers -dontwarn com.sun.net.httpserver.HttpExchange -dontwarn java.awt.BorderLayout -dontwarn java.awt.Component -dontwarn java.awt.Container -dontwarn java.awt.Dimension -dontwarn java.awt.Frame -dontwarn java.awt.LayoutManager -dontwarn java.awt.Rectangle -dontwarn java.awt.Toolkit -dontwarn java.awt.Window -dontwarn java.awt.datatransfer.Clipboard -dontwarn java.awt.datatransfer.ClipboardOwner -dontwarn java.awt.datatransfer.StringSelection -dontwarn java.awt.datatransfer.Transferable -dontwarn java.awt.event.ActionEvent -dontwarn java.awt.event.ActionListener -dontwarn java.awt.event.ItemListener -dontwarn java.awt.event.WindowAdapter -dontwarn java.awt.event.WindowEvent -dontwarn java.awt.event.WindowListener -dontwarn javax.enterprise.event.Event -dontwarn javax.enterprise.event.Observes -dontwarn javax.enterprise.inject.Any -dontwarn javax.enterprise.inject.Default -dontwarn javax.enterprise.inject.Instance -dontwarn javax.enterprise.util.AnnotationLiteral -dontwarn javax.swing.AbstractAction -dontwarn javax.swing.AbstractButton -dontwarn javax.swing.BorderFactory -dontwarn javax.swing.Box -dontwarn javax.swing.BoxLayout -dontwarn javax.swing.Icon -dontwarn javax.swing.ImageIcon -dontwarn javax.swing.JButton -dontwarn javax.swing.JCheckBox -dontwarn javax.swing.JComboBox -dontwarn javax.swing.JDialog -dontwarn javax.swing.JFrame -dontwarn javax.swing.JLabel -dontwarn javax.swing.JPanel -dontwarn javax.swing.JScrollPane -dontwarn javax.swing.JTable -dontwarn javax.swing.JTextArea -dontwarn javax.swing.JToolBar -dontwarn javax.swing.JTree -dontwarn javax.swing.JWindow -dontwarn javax.swing.ListSelectionModel -dontwarn javax.swing.SwingUtilities -dontwarn javax.swing.UIManager -dontwarn javax.swing.border.Border -dontwarn javax.swing.border.TitledBorder -dontwarn javax.swing.event.ListSelectionEvent -dontwarn javax.swing.event.ListSelectionListener -dontwarn javax.swing.event.TreeExpansionEvent -dontwarn javax.swing.event.TreeWillExpandListener -dontwarn javax.swing.table.AbstractTableModel -dontwarn javax.swing.table.DefaultTableCellRenderer -dontwarn javax.swing.table.JTableHeader -dontwarn javax.swing.table.TableCellRenderer -dontwarn javax.swing.table.TableColumn -dontwarn javax.swing.table.TableColumnModel -dontwarn javax.swing.table.TableModel -dontwarn javax.swing.tree.DefaultMutableTreeNode -dontwarn javax.swing.tree.DefaultTreeCellRenderer -dontwarn javax.swing.tree.DefaultTreeModel -dontwarn javax.swing.tree.MutableTreeNode -dontwarn javax.swing.tree.TreeCellRenderer -dontwarn javax.swing.tree.TreeModel -dontwarn javax.swing.tree.TreeNode -dontwarn javax.swing.tree.TreePath -dontwarn javax.swing.tree.TreeSelectionModel -dontwarn sun.net.www.protocol.http.HttpURLConnection -dontwarn org.osgi.framework.BundleContext -dontwarn org.osgi.framework.ServiceReference -dontwarn org.osgi.framework.ServiceRegistration -dontwarn org.osgi.service.cm.ManagedService -dontwarn org.osgi.service.component.ComponentContext -dontwarn org.osgi.service.http.HttpContext -dontwarn org.osgi.service.http.HttpService -dontwarn org.osgi.service.http.NamespaceException -dontwarn io.netty.internal.tcnative.AsyncSSLPrivateKeyMethod -dontwarn io.netty.internal.tcnative.AsyncTask -dontwarn io.netty.internal.tcnative.Buffer -dontwarn io.netty.internal.tcnative.CertificateCallback -dontwarn io.netty.internal.tcnative.CertificateCompressionAlgo -dontwarn io.netty.internal.tcnative.CertificateVerifier -dontwarn io.netty.internal.tcnative.Library -dontwarn io.netty.internal.tcnative.SSL -dontwarn io.netty.internal.tcnative.SSLContext -dontwarn io.netty.internal.tcnative.SSLPrivateKeyMethod -dontwarn io.netty.internal.tcnative.SSLSessionCache -dontwarn io.netty.internal.tcnative.SessionTicketKey -dontwarn io.netty.internal.tcnative.SniHostNameMatcher -dontwarn java.lang.management.ManagementFactory -dontwarn java.lang.management.RuntimeMXBean -dontwarn org.apache.log4j.Level -dontwarn org.apache.log4j.Logger -dontwarn org.apache.log4j.Priority -dontwarn org.apache.logging.log4j.Level -dontwarn org.apache.logging.log4j.LogManager -dontwarn org.apache.logging.log4j.Logger -dontwarn org.apache.logging.log4j.message.MessageFactory -dontwarn org.apache.logging.log4j.spi.ExtendedLogger -dontwarn org.apache.logging.log4j.spi.ExtendedLoggerWrapper -dontwarn org.eclipse.jetty.npn.NextProtoNego$ClientProvider -dontwarn org.eclipse.jetty.npn.NextProtoNego$Provider -dontwarn org.eclipse.jetty.npn.NextProtoNego$ServerProvider -dontwarn org.eclipse.jetty.npn.NextProtoNego -dontwarn reactor.blockhound.integration.BlockHoundIntegration -dontwarn java.lang.Module -dontwarn javax.naming.ldap.LdapName -dontwarn javax.naming.ldap.Rdn -dontwarn org.eclipse.jetty.alpn.ALPN$Provider -dontwarn org.eclipse.jetty.alpn.ALPN$ServerProvider -dontwarn org.eclipse.jetty.alpn.ALPN -keep class io.netty.** {*; } -keep class io.ktor.** {*; } -keep class kotlin.reflect.jvm.internal.** { *; } -dontwarn com.aayushatharva.brotli4j.Brotli4jLoader -dontwarn com.aayushatharva.brotli4j.decoder.DecoderJNI$Status -dontwarn com.aayushatharva.brotli4j.decoder.DecoderJNI$Wrapper -dontwarn com.aayushatharva.brotli4j.encoder.BrotliEncoderChannel -dontwarn com.aayushatharva.brotli4j.encoder.Encoder$Mode -dontwarn com.aayushatharva.brotli4j.encoder.Encoder$Parameters -dontwarn com.github.luben.zstd.Zstd -dontwarn com.google.protobuf.ExtensionRegistry -dontwarn com.google.protobuf.ExtensionRegistryLite -dontwarn com.google.protobuf.MessageLite$Builder -dontwarn com.google.protobuf.MessageLite -dontwarn com.google.protobuf.MessageLiteOrBuilder -dontwarn com.google.protobuf.Parser -dontwarn com.google.protobuf.nano.CodedOutputByteBufferNano -dontwarn com.google.protobuf.nano.MessageNano -dontwarn com.jcraft.jzlib.Deflater -dontwarn com.jcraft.jzlib.Inflater -dontwarn com.jcraft.jzlib.JZlib$WrapperType -dontwarn com.jcraft.jzlib.JZlib -dontwarn com.ning.compress.BufferRecycler -dontwarn com.ning.compress.lzf.ChunkDecoder -dontwarn com.ning.compress.lzf.ChunkEncoder -dontwarn com.ning.compress.lzf.LZFChunk -dontwarn com.ning.compress.lzf.LZFEncoder -dontwarn com.ning.compress.lzf.util.ChunkDecoderFactory -dontwarn com.ning.compress.lzf.util.ChunkEncoderFactory -dontwarn com.oracle.svm.core.annotate.Alias -dontwarn com.oracle.svm.core.annotate.InjectAccessors -dontwarn com.oracle.svm.core.annotate.RecomputeFieldValue$Kind -dontwarn com.oracle.svm.core.annotate.RecomputeFieldValue -dontwarn com.oracle.svm.core.annotate.TargetClass -dontwarn io.netty.internal.tcnative.ResultCallback -dontwarn io.netty.internal.tcnative.SSLSession -dontwarn lzma.sdk.ICodeProgress -dontwarn lzma.sdk.lzma.Encoder -dontwarn net.jpountz.lz4.LZ4Compressor -dontwarn net.jpountz.lz4.LZ4Exception -dontwarn net.jpountz.lz4.LZ4Factory -dontwarn net.jpountz.lz4.LZ4FastDecompressor -dontwarn net.jpountz.xxhash.XXHash32 -dontwarn net.jpountz.xxhash.XXHashFactory -dontwarn org.jboss.marshalling.ByteInput -dontwarn org.jboss.marshalling.ByteOutput -dontwarn org.jboss.marshalling.Marshaller -dontwarn org.jboss.marshalling.MarshallerFactory -dontwarn org.jboss.marshalling.MarshallingConfiguration -dontwarn org.jboss.marshalling.Unmarshaller -dontwarn reactor.blockhound.BlockHound$Builder -dontwarn sun.security.x509.AlgorithmId -dontwarn sun.security.x509.CertificateAlgorithmId -dontwarn sun.security.x509.CertificateSerialNumber -dontwarn sun.security.x509.CertificateSubjectName -dontwarn sun.security.x509.CertificateValidity -dontwarn sun.security.x509.CertificateVersion -dontwarn sun.security.x509.CertificateX509Key -dontwarn sun.security.x509.X500Name -dontwarn sun.security.x509.X509CertImpl -dontwarn sun.security.x509.X509CertInfo # mmupnp -dontwarn org.slf4j.impl.StaticLoggerBinder