From b7300a343e213884135d314a67ac74c76dd8af3f Mon Sep 17 00:00:00 2001 From: Jonathan Grenda Date: Tue, 30 Aug 2022 13:40:22 +0200 Subject: [PATCH] Add project files --- .github/workflows/main.yml | 25 + .gitignore | 9 + README.md | 63 +- .../graalvm_native_image_minecraft_banner.jpg | Bin 0 -> 93559 bytes build.sh | 75 + configuration/jni-config.json | 159 ++ configuration/predefined-classes-config.json | 8 + configuration/proxy-config.json | 2 + configuration/reflect-config.json | 2156 +++++++++++++++++ configuration/resource-config.json | 63 + configuration/serialization-config.json | 6 + 11 files changed, 2565 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/main.yml create mode 100644 .gitignore create mode 100644 assets/graalvm_native_image_minecraft_banner.jpg create mode 100755 build.sh create mode 100644 configuration/jni-config.json create mode 100644 configuration/predefined-classes-config.json create mode 100644 configuration/proxy-config.json create mode 100644 configuration/reflect-config.json create mode 100644 configuration/resource-config.json create mode 100644 configuration/serialization-config.json diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..ae48184 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,25 @@ +name: Build Native Minecraft Server +on: [ push, pull_request ] +jobs: + build: + name: Build on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + steps: + - uses: actions/checkout@v2 + - uses: graalvm/setup-graalvm@v1 + with: + version: '22.2.0' + java-version: '17' + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Check build.sh + shell: bash + run: shellcheck build.sh + if: ${{ matrix.os == 'ubuntu-latest' }} + - name: Build and run native Minecraft server + shell: bash + run: | + ./build.sh + ./native-minecraft-server --help diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5532611 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +/*.json +build +debug +eula.txt +logs +native-minecraft-server +server.properties +sources +world diff --git a/README.md b/README.md index 1288f5c..f606cfb 100644 --- a/README.md +++ b/README.md @@ -1 +1,62 @@ -# Native Minecraft Server +# Native Minecraft Servers with GraalVM Native Image + +[![Build Native Minecraft Server](https://github.com/hpi-swa/native-minecraft-server/actions/workflows/main.yml/badge.svg)](https://github.com/hpi-swa/native-minecraft-server/actions/workflows/main.yml) + +![Banner](./assets/graalvm_native_image_minecraft_banner.jpg) + +The Minecraft server is known to require a lot of CPU and memory resources and can be hard to deploy. +This project makes it possible to compile the Minecraft server into a self-contained native executable using [GraalVM Native Image][ni]. +As such, it is supposed to require fewer CPU and memory resources, provide better startup times, and be easier and cheaper to deploy. + +A native Minecraft server is less than 120MB in size, and with that significantly smaller than Minecraft's `server.jar` plus a JDK required to run it. +With [upx] compression, the size of the native executable can be reduced even further to less than 40MB, which is smaller than just the `server.jar`. +Initial experiments also suggest competitive run-time performance with a reduced memory footprint. +For best results, build with [GraalVM Enterprise][ee] Native Image, which provides better performance and lower memory usage than the Community Edition, and try out the [G1 GC][g1gc] and [Profile-Guided Optimizations][pgo]. +The [Oracle Cloud Free Tier][oci-free] not only provides four Ampere A1 cores and 24 GB of RAM always free, which is plenty for [hosting a Minecraft server][oci-minecraft], but also free access to GraalVM Enterprise. + +Check out [this blog post][blog-post] for more information. + +*Disclaimer: This project is meant for demonstration purposes only and intended to help the Minecraft community evaluate the use of GraalVM Native Image. Please use at your own risk.* + +## Getting Started + +1. Download GraalVM [Community][ce] or [Enterprise][ee] *(GraalVM 22.2.0 or later is required)*. +*Optional: make sure [upx] is on your `$PATH` to enable compression.* +2. Download or check out this repository and run the [`build.sh`](build.sh). +3. Launch the native Minecraft server with `./native-minecraft-server`. +*The first time you run the server, you will have to follow the regular procedure of accepting Minecraft's EULA.* + +## How It Works +This project only contains the `build.sh` script and [reachability metadata][metadata] for building a native Minecraft server. +The `build.sh` script first downloads Minecraft's `server.jar` and extracts jars and other resources from it. +Afterward, it invokes GraalVM Native Image with an appropriate configuration to generate a native version of the Minecraft server. +Finally, and only if [upx] is on the `$PATH`, the script will compress the native executable. + +## Limitations and Known Issues + +- The configuration currently only supports Minecraft `1.18.2`. +- The server GUI is not yet supported. +- Mods are currently not supported. +- There is no build script for Windows yet, but the [WSL] should work. +- The native executable sometimes fails on startup. Restarting it a few times usually helps. +*Error: `com.mojang.datafixers.types.templates.List$ListType cannot be cast to java.lang.Comparable`*. + +## Contributions +Please [report any issues here on GitHub][issues] and open pull requests if you'd like to contribute to the project. + +## License +This project is released under the [MIT license](./LICENSE). + + +[blog-post]: https://medium.com/p/1a3f6a92eb48 +[ce]: https://github.com/graalvm/graalvm-ce-builds/releases/latest +[ee]: https://www.oracle.com/downloads/graalvm-downloads.html +[g1gc]: https://www.graalvm.org/22.2/reference-manual/native-image/optimizations-and-performance/MemoryManagement/ +[issues]: https://github.com/hpi-swa/native-minecraft-server/issues +[metadata]: https://www.graalvm.org/22.2/reference-manual/native-image/metadata/ +[ni]: https://www.graalvm.org/native-image/ +[oci-free]: https://www.oracle.com/cloud/free/ +[oci-minecraft]: https://blogs.oracle.com/developers/post/how-to-set-up-and-run-a-really-powerful-free-minecraft-server-in-the-cloud +[pgo]: https://www.graalvm.org/22.2/reference-manual/native-image/guides/optimize-native-executable-with-pgo/ +[upx]: https://upx.github.io/ +[wsl]: https://docs.microsoft.com/en-us/windows/wsl/install diff --git a/assets/graalvm_native_image_minecraft_banner.jpg b/assets/graalvm_native_image_minecraft_banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9b9434556cbb47c115b49039d168248033eb9fe3 GIT binary patch literal 93559 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 /dev/null; then + echo "Installing GraalVM Native Image..." + "${GRAALVM_HOME}/bin/gu" install --no-progress native-image +fi + +if [[ ! -d "${BUILD_DIR}" ]]; then + mkdir "${BUILD_DIR}" +fi +pushd "${BUILD_DIR}" > /dev/null + +if [[ ! -f "${JAR_PATH}" ]]; then + echo "Downloading Minecraft's server.jar..." + curl --show-error --fail --location -o "${JAR_PATH}" "${SERVER_JAR_DL}" +fi + +if [[ ! -d "${META_INF_PATH}" ]]; then + echo "Extracting resources from Minecraft's server.jar..." + unzip -qq "${JAR_PATH}" "META-INF/*" -d "." +fi + +if [[ ! -f "${META_INF_PATH}/classpath-joined" ]]; then + echo "Unable to determine classpath. Exiting..." + exit 1 +fi +CLASSPATH_JOINED=$(cat "${META_INF_PATH}/classpath-joined") +readonly CLASSPATH_JOINED + +if [[ ! -f "${META_INF_PATH}/main-class" ]]; then + echo "Unable to determine main class. Exiting..." + exit 1 +fi +MAIN_CLASS=$(cat "${META_INF_PATH}/main-class") +readonly MAIN_CLASS + +pushd "${META_INF_PATH}" > /dev/null +"${NI_EXEC}" --no-fallback \ + -H:ConfigurationFileDirectories="${SCRIPT_DIR}/configuration/" \ + --enable-url-protocols=https \ + --initialize-at-run-time=io.netty \ + -H:+AllowVMInspection \ + --initialize-at-build-time=net.minecraft.util.profiling.jfr.event \ + -H:Name="${BINARY_NAME}" \ + -cp "${CLASSPATH_JOINED//;/:}" \ + "${MAIN_CLASS}" +mv "${BINARY_NAME}" "${SCRIPT_DIR}/${BINARY_NAME}" +popd > /dev/null # Exit $META_INF_PATH +popd > /dev/null # Exit $BUILD_DIR + +if command -v upx &> /dev/null; then + echo "Compressing the native Minecraft server with upx..." + upx "${SCRIPT_DIR}/${BINARY_NAME}" +fi + +echo "" +echo "Done! The native Minecraft server is located at:" +echo "${SCRIPT_DIR}/${BINARY_NAME}" diff --git a/configuration/jni-config.json b/configuration/jni-config.json new file mode 100644 index 0000000..9d2951c --- /dev/null +++ b/configuration/jni-config.json @@ -0,0 +1,159 @@ +[ +{ + "name":"[Lcom.sun.management.internal.DiagnosticCommandArgumentInfo;" +}, +{ + "name":"[Lcom.sun.management.internal.DiagnosticCommandInfo;" +}, +{ + "name":"com.sun.management.internal.DiagnosticCommandArgumentInfo", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String","java.lang.String","java.lang.String","boolean","boolean","boolean","int"] }] +}, +{ + "name":"com.sun.management.internal.DiagnosticCommandInfo", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","boolean","java.util.List"] }] +}, +{ + "name":"io.netty.channel.ChannelException" +}, +{ + "name":"io.netty.channel.DefaultFileRegion", + "fields":[ + {"name":"file"}, + {"name":"transferred"} + ] +}, +{ + "name":"io.netty.channel.epoll.LinuxSocket" +}, +{ + "name":"io.netty.channel.epoll.Native" +}, +{ + "name":"io.netty.channel.epoll.NativeDatagramPacketArray$NativeDatagramPacket", + "fields":[ + {"name":"count"}, + {"name":"memoryAddress"}, + {"name":"recipientAddr"}, + {"name":"recipientAddrLen"}, + {"name":"recipientPort"}, + {"name":"recipientScopeId"}, + {"name":"segmentSize"}, + {"name":"senderAddr"}, + {"name":"senderAddrLen"}, + {"name":"senderPort"}, + {"name":"senderScopeId"} + ] +}, +{ + "name":"io.netty.channel.epoll.NativeStaticallyReferencedJniMethods" +}, +{ + "name":"io.netty.channel.unix.Buffer" +}, +{ + "name":"io.netty.channel.unix.DatagramSocketAddress", + "methods":[{"name":"","parameterTypes":["byte[]","int","int","int","io.netty.channel.unix.DatagramSocketAddress"] }] +}, +{ + "name":"io.netty.channel.unix.DomainDatagramSocketAddress", + "methods":[{"name":"","parameterTypes":["byte[]","int","io.netty.channel.unix.DomainDatagramSocketAddress"] }] +}, +{ + "name":"io.netty.channel.unix.ErrorsStaticallyReferencedJniMethods" +}, +{ + "name":"io.netty.channel.unix.FileDescriptor" +}, +{ + "name":"io.netty.channel.unix.LimitsStaticallyReferencedJniMethods" +}, +{ + "name":"io.netty.channel.unix.PeerCredentials", + "methods":[{"name":"","parameterTypes":["int","int","int[]"] }] +}, +{ + "name":"io.netty.channel.unix.Socket" +}, +{ + "name":"java.io.FileDescriptor", + "fields":[{"name":"fd"}] +}, +{ + "name":"java.io.IOException" +}, +{ + "name":"java.lang.Boolean", + "methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.ClassLoader", + "methods":[ + {"name":"getPlatformClassLoader","parameterTypes":[] }, + {"name":"loadClass","parameterTypes":["java.lang.String"] } + ] +}, +{ + "name":"java.lang.OutOfMemoryError" +}, +{ + "name":"java.lang.RuntimeException" +}, +{ + "name":"java.lang.SecurityManager", + "fields":[{"name":"initialized"}] +}, +{ + "name":"java.net.InetSocketAddress", + "methods":[{"name":"","parameterTypes":["java.lang.String","int"] }] +}, +{ + "name":"java.net.PortUnreachableException" +}, +{ + "name":"java.nio.Buffer", + "fields":[ + {"name":"limit"}, + {"name":"position"} + ], + "methods":[ + {"name":"limit","parameterTypes":[] }, + {"name":"position","parameterTypes":[] } + ] +}, +{ + "name":"java.nio.DirectByteBuffer" +}, +{ + "name":"java.nio.channels.ClosedChannelException", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"java.util.Arrays", + "methods":[{"name":"asList","parameterTypes":["java.lang.Object[]"] }] +}, +{ + "name":"jdk.internal.loader.ClassLoaders$PlatformClassLoader" +}, +{ + "name":"org.graalvm.jniutils.JNIExceptionWrapperEntryPoints", + "methods":[{"name":"getClassName","parameterTypes":["java.lang.Class"] }] +}, +{ + "name":"sun.management.VMManagementImpl", + "fields":[ + {"name":"compTimeMonitoringSupport"}, + {"name":"currentThreadCpuTimeSupport"}, + {"name":"objectMonitorUsageSupport"}, + {"name":"otherThreadCpuTimeSupport"}, + {"name":"remoteDiagnosticCommandsSupport"}, + {"name":"synchronizerUsageSupport"}, + {"name":"threadAllocatedMemorySupport"}, + {"name":"threadContentionMonitoringSupport"} + ] +}, +{ + "name":"sun.nio.ch.FileChannelImpl", + "fields":[{"name":"fd"}] +} +] diff --git a/configuration/predefined-classes-config.json b/configuration/predefined-classes-config.json new file mode 100644 index 0000000..0e79b2c --- /dev/null +++ b/configuration/predefined-classes-config.json @@ -0,0 +1,8 @@ +[ + { + "type":"agent-extracted", + "classes":[ + ] + } +] + diff --git a/configuration/proxy-config.json b/configuration/proxy-config.json new file mode 100644 index 0000000..0d4f101 --- /dev/null +++ b/configuration/proxy-config.json @@ -0,0 +1,2 @@ +[ +] diff --git a/configuration/reflect-config.json b/configuration/reflect-config.json new file mode 100644 index 0000000..c344667 --- /dev/null +++ b/configuration/reflect-config.json @@ -0,0 +1,2156 @@ +[ +{ + "name":"[B" +}, +{ + "name":"[C" +}, +{ + "name":"[D" +}, +{ + "name":"[F" +}, +{ + "name":"[I" +}, +{ + "name":"[J" +}, +{ + "name":"[Lcom.mojang.datafixers.types.templates.TypeTemplate;" +}, +{ + "name":"[Ldle;" +}, +{ + "name":"[Ldlu;" +}, +{ + "name":"[Ldmn;" +}, +{ + "name":"[Ldnv;" +}, +{ + "name":"[Ljava.lang.Object;" +}, +{ + "name":"[Ljava.lang.String;" +}, +{ + "name":"[Ljavax.management.openmbean.CompositeData;" +}, +{ + "name":"[Lorg.apache.logging.log4j.core.Appender;" +}, +{ + "name":"[Lorg.apache.logging.log4j.core.Filter;" +}, +{ + "name":"[Lorg.apache.logging.log4j.core.appender.rolling.TriggeringPolicy;" +}, +{ + "name":"[Lorg.apache.logging.log4j.core.config.AppenderRef;" +}, +{ + "name":"[Lorg.apache.logging.log4j.core.config.LoggerConfig;" +}, +{ + "name":"[Lorg.apache.logging.log4j.core.config.Property;" +}, +{ + "name":"[S" +}, +{ + "name":"[Z" +}, +{ + "name":"[[[Ljava.util.function.Predicate;" +}, +{ + "name":"ael", + "queriedMethods":[{"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }] +}, +{ + "name":"aen$1" +}, +{ + "name":"com.google.common.util.concurrent.AbstractFuture", + "fields":[ + {"name":"listeners"}, + {"name":"value"}, + {"name":"waiters"} + ] +}, +{ + "name":"com.google.common.util.concurrent.AbstractFuture$Waiter", + "fields":[ + {"name":"next"}, + {"name":"thread"} + ] +}, +{ + "name":"com.google.gson.stream.JsonReader", + "fields":[ + {"name":"lineStart"}, + {"name":"pos"} + ] +}, +{ + "name":"com.mojang.authlib.yggdrasil.response.HasJoinedMinecraftServerResponse", + "allDeclaredFields":true, + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.mojang.authlib.yggdrasil.response.Response", + "allDeclaredFields":true +}, +{ + "name":"com.mojang.logging.plugins.LegacyXMLLayout" +}, +{ + "name":"com.mojang.logging.plugins.QueueLogAppender", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createAppender","parameterTypes":["java.lang.String","java.lang.String","org.apache.logging.log4j.core.Layout","org.apache.logging.log4j.core.Filter","java.lang.String"] }] +}, +{ + "name":"com.sun.crypto.provider.AESCipher$General", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.ARCFOURCipher", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Poly1305", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.DESCipher", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.DESedeCipher", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.DHParameters", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.GaloisCounterMode$AESGCM", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.HmacCore$HmacSHA256", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.RSACipher", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.TlsMasterSecretGenerator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.management.GarbageCollectorMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.GcInfo", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.HotSpotDiagnosticMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.ThreadMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.UnixOperatingSystemMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.VMOption", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.internal.GarbageCollectorExtImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.management.internal.HotSpotDiagnostic", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.management.internal.HotSpotThreadImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.management.internal.OperatingSystemImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"io.netty.bootstrap.ServerBootstrap$1" +}, +{ + "name":"io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor", + "queriedMethods":[ + {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, + {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] } + ] +}, +{ + "name":"io.netty.buffer.AbstractByteBufAllocator", + "queryAllDeclaredMethods":true +}, +{ + "name":"io.netty.buffer.AbstractReferenceCountedByteBuf", + "fields":[{"name":"refCnt"}] +}, +{ + "name":"io.netty.channel.ChannelDuplexHandler", + "queriedMethods":[ + {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, + {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, + {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, + {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, + {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, + {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] } + ] +}, +{ + "name":"io.netty.channel.ChannelHandlerAdapter", + "queriedMethods":[{"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }] +}, +{ + "name":"io.netty.channel.ChannelInboundHandlerAdapter", + "queriedMethods":[ + {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, + {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, + {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] } + ] +}, +{ + "name":"io.netty.channel.ChannelInitializer", + "queriedMethods":[ + {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] } + ] +}, +{ + "name":"io.netty.channel.ChannelOutboundHandlerAdapter", + "queriedMethods":[ + {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, + {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, + {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, + {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, + {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, + {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] } + ] +}, +{ + "name":"io.netty.channel.DefaultChannelPipeline$HeadContext", + "queriedMethods":[ + {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, + {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, + {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, + {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, + {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, + {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, + {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, + {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, + {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] } + ] +}, +{ + "name":"io.netty.channel.DefaultChannelPipeline$TailContext", + "queriedMethods":[ + {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, + {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, + {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] } + ] +}, +{ + "name":"io.netty.channel.DefaultFileRegion" +}, +{ + "name":"io.netty.channel.SimpleChannelInboundHandler", + "queriedMethods":[{"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }] +}, +{ + "name":"io.netty.channel.epoll.EpollServerSocketChannel", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"io.netty.channel.epoll.NativeDatagramPacketArray$NativeDatagramPacket" +}, +{ + "name":"io.netty.channel.unix.DatagramSocketAddress" +}, +{ + "name":"io.netty.channel.unix.DomainDatagramSocketAddress" +}, +{ + "name":"io.netty.channel.unix.PeerCredentials" +}, +{ + "name":"io.netty.handler.codec.ByteToMessageDecoder", + "queriedMethods":[ + {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, + {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] } + ] +}, +{ + "name":"io.netty.handler.codec.MessageToByteEncoder", + "queriedMethods":[{"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }] +}, +{ + "name":"io.netty.handler.codec.MessageToMessageDecoder", + "queriedMethods":[{"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }] +}, +{ + "name":"io.netty.handler.timeout.IdleStateHandler", + "queriedMethods":[ + {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, + {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] } + ] +}, +{ + "name":"io.netty.handler.timeout.ReadTimeoutHandler" +}, +{ + "name":"io.netty.util.AbstractReferenceCounted", + "fields":[{"name":"refCnt"}] +}, +{ + "name":"io.netty.util.ReferenceCountUtil", + "queryAllDeclaredMethods":true +}, +{ + "name":"io.netty.util.internal.NativeLibraryUtil", + "methods":[{"name":"loadLibrary","parameterTypes":["java.lang.String","boolean"] }] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields", + "fields":[{"name":"producerLimit"}] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields", + "fields":[{"name":"consumerIndex"}] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields", + "fields":[{"name":"producerIndex"}] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField", + "fields":[{"name":"consumerIndex"}] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField", + "fields":[{"name":"producerIndex"}] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField", + "fields":[{"name":"producerLimit"}] +}, +{ + "name":"java.io.FileDescriptor" +}, +{ + "name":"java.io.IOException" +}, +{ + "name":"java.io.ObjectInputStream", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.Boolean", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Byte", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Character", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Deprecated", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.Double", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Float", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Integer", + "fields":[{"name":"TYPE"}], + "queriedMethods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.Long", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Object", + "allDeclaredFields":true +}, +{ + "name":"java.lang.OutOfMemoryError" +}, +{ + "name":"java.lang.RuntimeException" +}, +{ + "name":"java.lang.Short", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.StackTraceElement", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.String" +}, +{ + "name":"java.lang.Throwable", + "queriedMethods":[{"name":"addSuppressed","parameterTypes":["java.lang.Throwable"] }] +}, +{ + "name":"java.lang.Void", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.management.BufferPoolMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.ClassLoadingMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.CompilationMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.LockInfo", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.ManagementFactory", + "methods":[{"name":"getRuntimeMXBean","parameterTypes":[] }] +}, +{ + "name":"java.lang.management.ManagementPermission", + "methods":[{"name":"","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.management.MemoryMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MemoryManagerMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MemoryPoolMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MemoryUsage", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MonitorInfo", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.PlatformLoggingMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.RuntimeMXBean", + "queryAllPublicMethods":true, + "methods":[ + {"name":"getInputArguments","parameterTypes":[] }, + {"name":"getName","parameterTypes":[] }, + {"name":"getStartTime","parameterTypes":[] } + ] +}, +{ + "name":"java.lang.management.ThreadInfo", + "queryAllPublicMethods":true +}, +{ + "name":"java.math.BigDecimal" +}, +{ + "name":"java.math.BigInteger" +}, +{ + "name":"java.net.InetSocketAddress" +}, +{ + "name":"java.net.PortUnreachableException" +}, +{ + "name":"java.nio.Bits", + "fields":[{"name":"UNALIGNED"}] +}, +{ + "name":"java.nio.Buffer", + "fields":[{"name":"address"}] +}, +{ + "name":"java.nio.ByteBuffer", + "queriedMethods":[{"name":"alignedSlice","parameterTypes":["int"] }] +}, +{ + "name":"java.nio.DirectByteBuffer", + "queriedMethods":[{"name":"","parameterTypes":["long","int"] }] +}, +{ + "name":"java.nio.channels.ClosedChannelException" +}, +{ + "name":"java.nio.channels.FileChannel" +}, +{ + "name":"java.security.AlgorithmParametersSpi" +}, +{ + "name":"java.security.KeyStoreSpi" +}, +{ + "name":"java.security.SecureRandomParameters" +}, +{ + "name":"java.security.interfaces.RSAPrivateKey" +}, +{ + "name":"java.security.interfaces.RSAPublicKey" +}, +{ + "name":"java.sql.Date" +}, +{ + "name":"java.util.BitSet", + "methods":[{"name":"clone","parameterTypes":[] }] +}, +{ + "name":"java.util.Date" +}, +{ + "name":"java.util.HashMap", + "queriedMethods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"java.util.PropertyPermission", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"java.util.logging.LogManager", + "methods":[{"name":"getLoggingMXBean","parameterTypes":[] }] +}, +{ + "name":"java.util.logging.LoggingMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"javax.management.MBeanOperationInfo", + "queryAllPublicMethods":true +}, +{ + "name":"javax.management.MBeanServerBuilder", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"javax.management.NotificationBroadcasterSupport", + "queriedMethods":[{"name":"getNotificationInfo","parameterTypes":[] }] +}, +{ + "name":"javax.management.ObjectName" +}, +{ + "name":"javax.management.openmbean.CompositeData" +}, +{ + "name":"javax.management.openmbean.OpenMBeanOperationInfoSupport" +}, +{ + "name":"javax.management.openmbean.TabularData" +}, +{ + "name":"javax.security.auth.x500.X500Principal", + "methods":[{"name":"","parameterTypes":["sun.security.x509.X500Name"] }] +}, +{ + "name":"jdk.internal.misc.Unsafe", + "methods":[{"name":"getUnsafe","parameterTypes":[] }] +}, +{ + "name":"jdk.management.jfr.ConfigurationInfo", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.EventTypeInfo", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.FlightRecorderMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.FlightRecorderMXBeanImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"jdk.management.jfr.RecordingInfo", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.SettingDescriptorInfo", + "queryAllPublicMethods":true +}, +{ + "name":"joptsimple.OptionException" +}, +{ + "name":"joptsimple.OptionParser" +}, +{ + "name":"joptsimple.OptionParserState$2" +}, +{ + "name":"net.minecraft.server.Main", + "methods":[{"name":"main","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"net.minecraft.util.profiling.jfr.event.ChunkGenerationEvent", + "allDeclaredFields":true +}, +{ + "name":"net.minecraft.util.profiling.jfr.event.NetworkSummaryEvent", + "allDeclaredFields":true +}, +{ + "name":"net.minecraft.util.profiling.jfr.event.PacketReceivedEvent", + "allDeclaredFields":true +}, +{ + "name":"net.minecraft.util.profiling.jfr.event.PacketSentEvent", + "allDeclaredFields":true +}, +{ + "name":"net.minecraft.util.profiling.jfr.event.ServerTickTimeEvent", + "allDeclaredFields":true +}, +{ + "name":"net.minecraft.util.profiling.jfr.event.WorldLoadFinishedEvent", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.appender.AbstractAppender$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.appender.AppenderSet" +}, +{ + "name":"org.apache.logging.log4j.core.appender.AsyncAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.ConsoleAppender", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newBuilder","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.appender.ConsoleAppender$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.appender.CountingNoOpAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.FailoverAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.FailoversPlugin" +}, +{ + "name":"org.apache.logging.log4j.core.appender.FileAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.HttpAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.MemoryMappedFileAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.NullAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.OutputStreamAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.RandomAccessFileAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.RollingFileAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newBuilder","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.appender.ScriptAppenderSelector" +}, +{ + "name":"org.apache.logging.log4j.core.appender.SmtpAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.SocketAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.SyslogAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.WriterAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.ColumnMapping" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.jdbc.ColumnConfig" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.jdbc.DataSourceConnectionSource" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.jdbc.DriverManagerConnectionSource" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.jdbc.FactoryMethodConnectionSource" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.mom.JmsAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.mom.jeromq.JeroMqAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.mom.kafka.KafkaAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.nosql.NoSqlAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rewrite.LoggerNameLevelRewritePolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rewrite.MapRewritePolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rewrite.PropertiesRewritePolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rewrite.RewriteAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.CompositeTriggeringPolicy", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createPolicy","parameterTypes":["org.apache.logging.log4j.core.appender.rolling.TriggeringPolicy[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.CronTriggeringPolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.DirectWriteRolloverStrategy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.NoOpTriggeringPolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.OnStartupTriggeringPolicy", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createPolicy","parameterTypes":["long"] }] +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.SizeBasedTriggeringPolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newBuilder","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.DeleteAction" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfAccumulatedFileCount" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfAccumulatedFileSize" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfAll" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfAny" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfFileName" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfLastModified" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfNot" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.PathSortByModificationTime" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.PosixViewAttributeAction" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.ScriptCondition" +}, +{ + "name":"org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.routing.Route" +}, +{ + "name":"org.apache.logging.log4j.core.appender.routing.Routes" +}, +{ + "name":"org.apache.logging.log4j.core.appender.routing.RoutingAppender" +}, +{ + "name":"org.apache.logging.log4j.core.async.ArrayBlockingQueueFactory" +}, +{ + "name":"org.apache.logging.log4j.core.async.AsyncLoggerConfig" +}, +{ + "name":"org.apache.logging.log4j.core.async.AsyncLoggerConfig$RootLogger" +}, +{ + "name":"org.apache.logging.log4j.core.async.DisruptorBlockingQueueFactory" +}, +{ + "name":"org.apache.logging.log4j.core.async.JCToolsBlockingQueueFactory" +}, +{ + "name":"org.apache.logging.log4j.core.async.LinkedTransferQueueFactory" +}, +{ + "name":"org.apache.logging.log4j.core.config.AppenderRef", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createAppenderRef","parameterTypes":["java.lang.String","org.apache.logging.log4j.Level","org.apache.logging.log4j.core.Filter"] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.AppendersPlugin", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createAppenders","parameterTypes":["org.apache.logging.log4j.core.Appender[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.CustomLevelConfig" +}, +{ + "name":"org.apache.logging.log4j.core.config.CustomLevels" +}, +{ + "name":"org.apache.logging.log4j.core.config.DefaultAdvertiser" +}, +{ + "name":"org.apache.logging.log4j.core.config.HttpWatcher" +}, +{ + "name":"org.apache.logging.log4j.core.config.LoggerConfig" +}, +{ + "name":"org.apache.logging.log4j.core.config.LoggerConfig$RootLogger", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createLogger","parameterTypes":["java.lang.String","org.apache.logging.log4j.Level","java.lang.String","org.apache.logging.log4j.core.config.AppenderRef[]","org.apache.logging.log4j.core.config.Property[]","org.apache.logging.log4j.core.config.Configuration","org.apache.logging.log4j.core.Filter"] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.LoggersPlugin", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createLoggers","parameterTypes":["org.apache.logging.log4j.core.config.LoggerConfig[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.PropertiesPlugin" +}, +{ + "name":"org.apache.logging.log4j.core.config.Property" +}, +{ + "name":"org.apache.logging.log4j.core.config.ScriptsPlugin" +}, +{ + "name":"org.apache.logging.log4j.core.config.arbiters.ClassArbiter" +}, +{ + "name":"org.apache.logging.log4j.core.config.arbiters.DefaultArbiter" +}, +{ + "name":"org.apache.logging.log4j.core.config.arbiters.ScriptArbiter" +}, +{ + "name":"org.apache.logging.log4j.core.config.arbiters.SelectArbiter" +}, +{ + "name":"org.apache.logging.log4j.core.config.arbiters.SystemPropertyArbiter" +}, +{ + "name":"org.apache.logging.log4j.core.config.json.JsonConfigurationFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigDecimalConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigIntegerConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BooleanConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteArrayConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharArrayConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharacterConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharsetConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ClassConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CronExpressionConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DoubleConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DurationConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FileConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FloatConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$InetAddressConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$IntegerConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LevelConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LongConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PathConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PatternConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$SecurityProviderConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ShortConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$StringConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UriConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UrlConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UuidConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.validation.validators.RequiredValidator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.visitors.PluginAttributeVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.visitors.PluginBuilderAttributeVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.visitors.PluginConfigurationVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.filter.AbstractFilterable$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.filter.BurstFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.CompositeFilter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createFilters","parameterTypes":["org.apache.logging.log4j.core.Filter[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.filter.DenyAllFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.DynamicThresholdFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.LevelMatchFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.LevelRangeFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.MapFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.MarkerFilter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createFilter","parameterTypes":["java.lang.String","org.apache.logging.log4j.core.Filter$Result","org.apache.logging.log4j.core.Filter$Result"] }] +}, +{ + "name":"org.apache.logging.log4j.core.filter.NoMarkerFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.RegexFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.ScriptFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.StringMatchFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.StructuredDataFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.ThreadContextMapFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.ThresholdFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.TimeFilter" +}, +{ + "name":"org.apache.logging.log4j.core.impl.Log4jContextFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.jmx.AppenderAdmin", + "queryAllPublicConstructors":true +}, +{ + "name":"org.apache.logging.log4j.core.jmx.AppenderAdminMBean", + "queryAllPublicMethods":true +}, +{ + "name":"org.apache.logging.log4j.core.jmx.ContextSelectorAdmin", + "queryAllPublicConstructors":true +}, +{ + "name":"org.apache.logging.log4j.core.jmx.ContextSelectorAdminMBean", + "queryAllPublicMethods":true +}, +{ + "name":"org.apache.logging.log4j.core.jmx.LoggerConfigAdmin", + "queryAllPublicConstructors":true +}, +{ + "name":"org.apache.logging.log4j.core.jmx.LoggerConfigAdminMBean", + "queryAllPublicMethods":true +}, +{ + "name":"org.apache.logging.log4j.core.jmx.LoggerContextAdmin", + "queryAllPublicConstructors":true +}, +{ + "name":"org.apache.logging.log4j.core.jmx.LoggerContextAdminMBean", + "queryAllPublicMethods":true +}, +{ + "name":"org.apache.logging.log4j.core.jmx.StatusLoggerAdmin", + "queryAllPublicConstructors":true +}, +{ + "name":"org.apache.logging.log4j.core.jmx.StatusLoggerAdminMBean", + "queryAllPublicMethods":true +}, +{ + "name":"org.apache.logging.log4j.core.layout.CsvLogEventLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.CsvParameterLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.GelfLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.HtmlLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.JsonLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.LevelPatternSelector" +}, +{ + "name":"org.apache.logging.log4j.core.layout.LoggerFields" +}, +{ + "name":"org.apache.logging.log4j.core.layout.MarkerPatternSelector" +}, +{ + "name":"org.apache.logging.log4j.core.layout.MessageLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.PatternLayout", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newBuilder","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.layout.PatternLayout$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.layout.PatternMatch" +}, +{ + "name":"org.apache.logging.log4j.core.layout.Rfc5424Layout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.ScriptPatternSelector" +}, +{ + "name":"org.apache.logging.log4j.core.layout.SerializedLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.SyslogLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.XmlLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.YamlLayout" +}, +{ + "name":"org.apache.logging.log4j.core.lookup.ContextMapLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.DateLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.EnvironmentLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.EventLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.JavaLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.JndiLookup" +}, +{ + "name":"org.apache.logging.log4j.core.lookup.Log4jLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.LowerLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.MainMapLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.MapLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.MarkerLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.ResourceBundleLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.StructuredDataLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.SystemPropertiesLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.UpperLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.net.MulticastDnsAdvertiser" +}, +{ + "name":"org.apache.logging.log4j.core.net.SocketAddress" +}, +{ + "name":"org.apache.logging.log4j.core.net.SocketOptions" +}, +{ + "name":"org.apache.logging.log4j.core.net.SocketPerformancePreferences" +}, +{ + "name":"org.apache.logging.log4j.core.net.ssl.KeyStoreConfiguration" +}, +{ + "name":"org.apache.logging.log4j.core.net.ssl.SslConfiguration" +}, +{ + "name":"org.apache.logging.log4j.core.net.ssl.TrustStoreConfiguration" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Black" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Blue" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Cyan" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Green" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Magenta" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Red" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$White" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Yellow" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ClassNamePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.DatePatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.EncodingPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.EndOfBatchPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.EqualsIgnoreCaseReplacementConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.EqualsReplacementConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.FileDatePatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.FileLocationPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.FullLocationPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.HighlightConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.IntegerPatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.LevelPatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.LineLocationPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.LineSeparatorPatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.LoggerFqcnPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.LoggerPatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MapPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MarkerPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MarkerSimpleNamePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MaxLengthConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MdcPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MessagePatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["org.apache.logging.log4j.core.config.Configuration","java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MethodLocationPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.NanoTimePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.NdcPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ProcessIdPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.RegexReplacement" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.RegexReplacementConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.RelativeTimePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.RepeatPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.RootThrowablePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.SequenceNumberPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.StyleConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ThreadIdPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ThreadNamePatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ThreadPriorityPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ThrowablePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.UuidPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.VariablesNotEmptyReplacementConverter" +}, +{ + "name":"org.apache.logging.log4j.core.script.Script" +}, +{ + "name":"org.apache.logging.log4j.core.script.ScriptFile" +}, +{ + "name":"org.apache.logging.log4j.core.script.ScriptRef" +}, +{ + "name":"org.apache.logging.log4j.core.util.ExecutorServices" +}, +{ + "name":"org.apache.logging.log4j.core.util.KeyValuePair" +}, +{ + "name":"org.apache.logging.log4j.message.DefaultFlowMessageFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.message.ReusableMessageFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.util.internal.DefaultObjectInputFilter", + "queryAllPublicMethods":true +}, +{ + "name":"ps" +}, +{ + "name":"pt" +}, +{ + "name":"pu" +}, +{ + "name":"pv" +}, +{ + "name":"pw", + "queriedMethods":[ + {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, + {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] } + ] +}, +{ + "name":"pz" +}, +{ + "name":"qa" +}, +{ + "name":"qe" +}, +{ + "name":"qf" +}, +{ + "name":"sun.management.ClassLoadingImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.CompilationImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.ManagementFactoryHelper$1", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.ManagementFactoryHelper$PlatformLoggingImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.MemoryImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.MemoryManagerImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.MemoryPoolImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.RuntimeImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.misc.Unsafe", + "allDeclaredFields":true, + "methods":[{"name":"invokeCleaner","parameterTypes":["java.nio.ByteBuffer"] }], + "queriedMethods":[ + {"name":"copyMemory","parameterTypes":["java.lang.Object","long","java.lang.Object","long","long"] }, + {"name":"getAndAddLong","parameterTypes":["java.lang.Object","long","long"] }, + {"name":"getAndSetObject","parameterTypes":["java.lang.Object","long","java.lang.Object"] } + ] +}, +{ + "name":"sun.security.pkcs12.PKCS12KeyStore", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.pkcs12.PKCS12KeyStore$DualFormatPKCS12", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.DSA$SHA224withDSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.DSA$SHA256withDSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.JavaKeyStore$DualFormatJKS", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.JavaKeyStore$JKS", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.MD5", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.NativePRNG", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA2$SHA224", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA2$SHA256", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA5$SHA384", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA5$SHA512", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.X509Factory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.certpath.PKIXCertPathValidator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.PSSParameters", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSAKeyFactory$Legacy", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSAKeyPairGenerator$Legacy", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSAPSSSignature", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSASignature$SHA224withRSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSASignature$SHA256withRSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.KeyManagerFactoryImpl$SunX509", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.SSLContextImpl$DefaultSSLContext", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.TrustManagerFactoryImpl$PKIXFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.x509.AuthorityInfoAccessExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.AuthorityKeyIdentifierExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.BasicConstraintsExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.CRLDistributionPointsExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.CertificatePoliciesExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.ExtendedKeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.IssuerAlternativeNameExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.KeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.NetscapeCertTypeExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.PrivateKeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.SubjectAlternativeNameExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.SubjectKeyIdentifierExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"ctq", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$j", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$n", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$v", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$a", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$l", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$o", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$ab", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$q", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$s", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$t", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$r", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$e", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$g", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$k", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$w", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$x", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$y", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$h", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctp", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$ac", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"com.mojang.datafixers.types.templates.List$ListType", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"com.mojang.datafixers.types.templates.Product$ProductType", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"ctq$h", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bka", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkb", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkc", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkd", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bke", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkf", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkg", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkh", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bki", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkj", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkk", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkl", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkm", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkn", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bko", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkp", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkq", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkr", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bks", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkt", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bku", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkv", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkw", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkx", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bky", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +}, +{ + "name":"bkz", + "allDeclaredFields":true, + "allDeclaredMethods":true, + "allDeclaredConstructors":true, + "allDeclaredClasses":true, + "allPermittedSubclasses":true +} +] diff --git a/configuration/resource-config.json b/configuration/resource-config.json new file mode 100644 index 0000000..0242879 --- /dev/null +++ b/configuration/resource-config.json @@ -0,0 +1,63 @@ +{ + "resources":{ + "includes":[ + { + "pattern":"assets/.*" + }, + { + "pattern":"data/.*" + }, + { + "pattern":"\\QMETA-INF/MOJANGCS.SF\\E" + }, + { + "pattern":"\\QMETA-INF/MOJANGCS.RSA\\E" + }, + { + "pattern":"\\Qflightrecorder-config.jfc\\E" + }, + { + "pattern":"\\QMETA-INF/libraries.list\\E" + }, + { + "pattern":"\\QMETA-INF/native/libnetty_transport_native_epoll_x86_64.so\\E" + }, + { + "pattern":"\\QMETA-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat\\E" + }, + { + "pattern":"\\QMETA-INF/services/java.nio.file.spi.FileSystemProvider\\E" + }, + { + "pattern":"\\QMETA-INF/services/org.apache.logging.log4j.core.util.ContextDataProvider\\E" + }, + { + "pattern":"\\QMETA-INF/services/org.apache.logging.log4j.spi.Provider\\E" + }, + { + "pattern":"\\QMETA-INF/services/org.apache.logging.log4j.util.PropertySource\\E" + }, + { + "pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E" + }, + { + "pattern":"\\Qlog4j2.xml\\E" + }, + { + "pattern":"\\Qoshi.architecture.properties\\E" + }, + { + "pattern":"\\Qoshi.properties\\E" + }, + { + "pattern":"\\Qversion.json\\E" + }, + { + "pattern":"\\Qyggdrasil_session_pubkey.der\\E" + } + ]}, + "bundles":[ + { "name":"joptsimple.ExceptionMessages" }, + { "name":"joptsimple.HelpFormatterMessages" } + ] +} diff --git a/configuration/serialization-config.json b/configuration/serialization-config.json new file mode 100644 index 0000000..bf554e0 --- /dev/null +++ b/configuration/serialization-config.json @@ -0,0 +1,6 @@ +{ + "types":[ + ], + "lambdaCapturingTypes":[ + ] +}