From 0ba77cbcbf598cc3783391b45b760fe612a72eb8 Mon Sep 17 00:00:00 2001 From: David Nestorovic Date: Tue, 19 Nov 2024 14:57:00 +0100 Subject: [PATCH 01/26] Restyle docs landing page --- docs/src/docs/asciidoc/changelog.adoc | 478 +++++++++++++++++ .../images/GraalVM-icon.svg} | 0 docs/src/docs/asciidoc/css/images/Grabbit.svg | 53 ++ docs/src/docs/asciidoc/css/landing-page.css | 33 ++ docs/src/docs/asciidoc/docinfo-footer.html | 3 +- docs/src/docs/asciidoc/index.adoc | 503 +----------------- 6 files changed, 588 insertions(+), 482 deletions(-) create mode 100644 docs/src/docs/asciidoc/changelog.adoc rename docs/src/docs/asciidoc/{img/GraalVM-rgb.svg => css/images/GraalVM-icon.svg} (100%) create mode 100644 docs/src/docs/asciidoc/css/images/Grabbit.svg create mode 100644 docs/src/docs/asciidoc/css/landing-page.css diff --git a/docs/src/docs/asciidoc/changelog.adoc b/docs/src/docs/asciidoc/changelog.adoc new file mode 100644 index 000000000..37f40952a --- /dev/null +++ b/docs/src/docs/asciidoc/changelog.adoc @@ -0,0 +1,478 @@ +[[changelog]] +== Changelog + +=== Release 0.10.3 + +- Remove usage of macro from merger tool initialization and throw better error if executable does not exist +- Add support for the new reachability-metadata.json config file +- Remove custom post-processing task for filtering config files entries and use access-filter.json instead + +==== Gradle plugin + +- Add retries when downloading the metadata repository when using a URL directly + +==== Maven plugin + +- Add retries when downloading the metadata repository when using a URL directly + + +=== Release 0.10.2 + +- Fix class path directory analyzer +- Update Reachability Metadata repository version + +==== Gradle plugin + +- Update Default Target Directory for MetadataCopy Task + +==== Maven plugin + +- Update Getting Started with Maven Plugin doc +- Delete old stale args file +- Add a parameter to be able to skip build native for pom type modules, leave it as false per default for backward compat + +=== Release 0.10.1 + +- Mark additional JUnit 5 types for build-time initialization for compatibility with Native Image's `--strict-image-heap` option. + + +=== Release 0.10.0 + +- Update version of GraalVM dependency to 22.3.5 + +==== Gradle plugin + +- Update plugin to use metadata repository by default. Metadata repository <> + +==== Maven plugin + +- Update plugin to use metadata repository by default. Metadata repository <> + + +=== Release 0.9.28 + +* Fix path escaping problem for Windows users +* Fix and improve major JDK version detection. + +==== Gradle plugin + +- Remove use of deprecated `getConvention` APIs + +=== Release 0.9.27 + +* Update JUnit configuration for native testing on GraalVM for JDK 21 with `--strict-image-heap` mode. + +=== Release 0.9.26 + +* Relax GraalVM version check for dev versions +* Prepare plugins for release of _GraalVM for JDK 21_. They no longer deploy any experimental options. +* Bump Java compliance of the plugins from Java 8+ to Java 11+. +* Fix compatibility with Maven 3.9. + +==== Gradle plugin + +* Fix compatibility with Gradle 8.3 + +=== Release 0.9.25 + +* Upgrade metadata to 0.3.4 + +=== Release 0.9.24 + +* Upgrade metadata to 0.3.3 + +==== Gradle plugin + +* Add support for PGO + +=== Release 0.9.23 + +* Upgrade metadata to 0.3.2 +* Display the GraalVM logo on the generated NBT docs + +==== Gradle plugin + +- Remove use of GFileUtils +- Fix "collect reachability metadata" with config cache + +=== Release 0.9.22 + +* Upgrade metadata to 0.3.0 +* Add support for default-for attribute + +==== Gradle plugin + +- Fix lookup of metadata repository + +=== Release 0.9.21 + +* Deprecate `requiredVersion` check without replacement. + +==== Gradle plugin + +- Bump minimal version of Gradle to 7.4 +- Fix compatibility with Gradle's https://docs.gradle.org/8.0.2/userguide/configuration_cache.html#header[configuration cache] (requires Gradle 7.5+) +- Remove use of deprecated Gradle APIs +- [Behavior change] Toolchain detection is now disabled by default + +==== Maven plugin + +- Add a new `native:write-args-file` goal that can be used to write the arguments passed to `native-image` to a file + +=== Release 0.9.20 + +==== Gradle plugin + +- Fix `collectReachabilityMetadata` not being thread-safe +- Add an option to configure the maximum number of images which can be built in parallel +- Fix GraalVM version check being too strict + +==== Maven plugin + +- Add agent modes to Maven plugin + +=== Release 0.9.19 + +==== Gradle plugin + +- Fix `nativeCompile` being out-of-date whenever native runtime arguments change +- Fix GraalVM metadata repository not downloaded from project repositories by default + +==== Maven plugin + +=== Release 0.9.18 + +* Trim GraalVM version to fix Windows support +* Add tests for NativeImageUtils.escapeArg +* Do not escape quoted regexp args when using argsfile +* Upgrade to GraalVM metadata repository 0.2.5 + +=== Release 0.9.17 + +* Add a `requiredVersion` property to check the minimal GraalVM version +* Make GraalVM installation check lazy + +=== Release 0.9.16 + +* Fixed regression with a reachability-metadata repository + +=== Release 0.9.15 + +* Upgrade to GraalVM metadata repository 0.2.3. +* Ship the metadata repository as an artifact alongside the plugin +* Add ability to collect GraalVM metadata of dependencies to a custom location + +==== Gradle plugin + +* Improved diagnostics to help users figure out what GraalVM toolchain was selected + +=== Release 0.9.14 + +==== Gradle plugin +* Add ability to set environment variables to the native image builder process +* Argument files are now stored in the `build` directory (workaround for absolute path issue on Windows with older GraalVM versions) + +==== Maven plugin +* Added `native:compile` forking goal that can be started from the command line as `mvn native:compile`. +* Deprecated `build` goal in favour of `compile-no-fork` goal. This goal should now be used for attaching to the `package` phase in `pom.xml`. Attaching the `build` goal will (for now) produce a runtime warning. +* Argument files are now stored in the `target` directory (workaround for absolute path issue on Windows with older GraalVM versions). +* Default and test outputs are now much less noisy. +* When running tests in JVM mode with the native-image-agent, GraalVM's `java` executable is now always used. +* Maven plugin now shouldn't require that JVM running it must be GraalVM. + +=== Release 0.9.13 + +==== Gradle plugin +* Reverted a change in the `NativeImagePlugin` that removed publicly accessible constants. This should prevent breakage of external plugins. + +==== JUnit testing support +* Adapted the JUnit automatic metadata registration to changes in annotation handling on newer native image versions. + +=== Release 0.9.12 + +==== Gradle plugin +* Completely reworked agent support - **BREAKING CHANGE** +* The agent block is no longer tied to the target binary. +* The agent can now instrument any task that extends `JavaForkOptions`. +* Introduced the `metadataCopy` task. +* Introduced the concept of agent modes. +** Under the hood, the agent mode dictates what options are passed to the agent and how metadata produced by multiple runs get merged. +* Added `excludeConfig` configuration option that allows skipping of configuration files that are present in dependencies. +* `useArgFile` is now set to true by default only on Windows. +* Added `quickBuild` configuration option. + +==== Maven plugin +* Added support for GraalVM Reachability Metadata Repository. +* Completely reworked Maven plugin (should fix many of previous issues and inconsistencies between main and test builds). +* Added `classesDirectory`, `debug`, `fallback`, `verbose`, `sharedLibrary`, `configurationFileDirectories`, `excludeConfig`, `quickBuild`, and `jvmArgs` properties in order to match those present in the Gradle plugin. ++ +See <> for more information. +* `useArgFile` is now set to true by default only on Windows. +* Changed lookup order for `native-image` discovery -- `GRAALVM_HOME`, `JAVA_HOME`, `PATH`. + +=== Release 0.9.11 + +==== Maven plugin + +* Fix long classpath issue under Windows when running native tests +* Inherit environment variables and system properties from the surefire plugin configuration when executing tests +* Fix invocation of `native-image` when classpath contains spaces + +==== Gradle plugin + +* Add support for environment variables in native test execution +* Fix invocation of `native-image` when classpath contains spaces +* Add experimental support for the JVM reachability metadata repository + +=== Release 0.9.10 + +==== Maven plugin + +* Native testing support can now be explicitly disabled via `skipNativeTests`. + - See <> for details. +* Fixed race condition which prevented the agent files to be generated properly if tests were executed concurrently +* Documented version compatibility for the JUnit Platform and Maven Surefire plugin. + - See <> for details. +* Add support for long classpath by using an argument file when invoking `native-image` + +==== Gradle plugin + +* Fixed `nativeRun` not working properly under Windows +* Fixed race condition which prevented the agent files to be generated properly if tests were executed concurrently +* Add support for long classpath by using an argument file when invoking `native-image` + +=== Release 0.9.9 + +==== Gradle plugin + +* Fixed resource inference not working on custom binaries +* Fixed `disableToolchainDetection` not working if a GraalVM installation isn't present. Please use `graalvmNative.toolchainDetection.set(false)` instead. + +=== Release 0.9.8 + +==== Gradle plugin + +* [Breaking change] The `agent` option has been replaced with an `agent { ... }` configuration block which includes an `enabled` property. +* Toolchain support can now be disabled altogether, which can be useful when using GraalVM Enterprise Edition. + - See <> for details. +* Fixed a bug when using a _fat jar_ which assumed that all entries to be repackaged were jars. +* Agent options are now configurable. + - Note that the `experimental-class-loader-support` agent option is no longer added by default. + - See <> for details. +* Added an option to perform resource detection in classpath entries which contain a `native-image/resource-config.json` file. + +==== Maven plugin + +* The agent can now be enabled in the POM. + - See <> for details. +* Agent options are now configurable. + - Note that the `experimental-class-loader-support` agent option is no longer added by default. + - See <> for details. +* Added an option to perform resource detection in classpath entries which contain a `native-image/resource-config.json` file. + +==== JUnit Platform Native + +* Builds now correctly fail if a container-level extension or lifecycle method fails -- + for example, if an `@BeforeAll` method in a JUnit Jupiter test class throws an exception. +* Builds no longer fail when tests are aborted -- for example, via a failed assumption. +* Improved documentation for JUnit Platform and Maven Surefire support in the plugins. + +=== Release 0.9.7.1 + +==== Bugfixes + +- Fixed https://github.com/graalvm/native-build-tools/issues/144[Maven plugin configuration not applied if declared in a parent POM]. + +=== Release 0.9.7 + +Release didn't include any fixes. + +=== Release 0.9.6 + +==== Upgrade to JUnit 5.8 + +The plugins now depend on JUnit 5.8 which provides an official test listener which is used by these plugins. +As a consequence, Maven users will have to configure their builds to enable the plugin extensions: + +```xml + + org.graalvm.buildtools + native-maven-plugin + ${native.maven.plugin.version} + true + ... + +``` + +The dependency on `junit-platform-native` which used to be required pre-0.9.6 can now safely be removed. + +For Gradle users, there's no impact on the configuration, however a good consequence is that the `junit-native-platform` dependency no longer leaks into your application's classpath. + +==== Agent support for Maven plugin + +The Maven plugin now supports the GraalVM agent to generate configuration files. +Please refer to the <> for details. + +==== Disabling testing support + +The Gradle plugin now provides an option to disable testing support. +This can be useful if the test framework you are using doesn't work with this plugin or that you simply don't want to execute tests natively. + +To disable tests, use the `graalvmNative` configuration block: + +```kotlin +graalvmNative { + testSupport.set(false) +} +``` + +==== Configuring additional test images + +The Gradle plugin now supports building multiple test images, which can be used to execute tests natively for more kinds of tests: integration tests, functional tests, ... + +For more information, please refer to <> + +=== Release 0.9.5 + +This release contains, in preparation for supporting more images in the Gradle plugin: + +- The `nativeBuild` and `nativeTest` extensions are now deprecated. A top-level container for configuring native images has been introduced. Instead of: + +[source,groovy] +---- +nativeBuild { + verbose = true +} +---- + +you need to use: + +[source,groovy] +---- +graalvmNative { + binaries { + main { + verbose = true + } + } +} +---- + +and instead of: + +[source,groovy] +---- +nativeTest { + buildArgs("...") +} +---- + +you need to use: + +[source,groovy] +---- +graalvmNative { + binaries { + test { + verbose = true + } + } +} +---- + +- The `nativeBuild` task has been renamed to `nativeCompile`. +- The `nativeTestBuild` task has been renamed to `nativeTestCompile`. + +Both `nativeBuild` and `nativeTestBuild` task invocations are still supported but deprecated and will be removed in a future release. + +=== Release 0.9.4 + +This release works around a limitation for Windows users who encounter an issue with long classpath entries on CLI: the Gradle plugin will now automatically handle this problem by creating a fat jar instead of passing all entries on classpath (this behavior can be <>) if needed). +Maven users will have to <> to use shading. + +In addition to this, we're now publishing development snapshots of this plugin. For Gradle, you will need to declare this repository in your settings.gradle(.kts) file: + +[source,groovy] +---- +pluginManagement { + plugins { + id 'org.graalvm.buildtools.native' version '0.9.5-SNAPSHOT' + } + repositories { + maven { + url "https://raw.githubusercontent.com/graalvm/native-build-tools/snapshots" + } + gradlePluginPortal() + } +} +---- + +For Maven, you need to use this repository configuration: + +[source,xml] +---- + + + graalvm-native-build-tools-snapshots + GraalVM native-build-tools Snapshots + https://raw.githubusercontent.com/graalvm/native-build-tools/snapshots + + false + + + true + + + +---- + +=== Release 0.9.3 + +This release contains: + +- Fix for mainClass not being optional (Gradle plugin) +- Fix for Gradle < 7 failing to determine GraalVM toolchain +- Gradle plugin now registers proper groups +- Automatic native-image tool fetching via gu (Gradle plugin) +- FIxed issue where nativeTest would fail when tests are annotated with Timeout +- Added a sharedLibrary configuration option for Gradle plugin +- Removed broken server configuration option from Gradle plugin +- Added a documentation website with proper CI integration + +In addition to those improvements, several behind-the-scenes changes were made: + +- Introduced "Dockerless" Maven plugin functional testing +- Parallelized Gradle testing in CI +- Replaced groovy-json with jackson-databind for JSON handling +- Fixed Github Actions syntax to enable manual workflow invoking + +=== Release 0.9.2 + +This release contains: + +- Revamped Gradle plugin that is now a lot more idiomatic. +- Fixes for several issues regarding JUnit testing. +- Removal of Test Discovery mode from the Maven plugin. +- Fix for Maven creating empty test images when no tests are present. +- Added support for Kotlin tests in Gradle. + +In addition to those improvements, several behind-the-scenes changes were made in order to ensure better compatibility moving forward: + +- Test coverage has been greatly improved for all subprojects. +- Build tooling for this repository has been improved significantly. + +Note that there has been a breaking change in the Gradle plugin - `persistConfig` configuration option was removed. +Using said option will cause existing builds to break, so users are advised to remove it from their configuration prior to upgrading. +System property `-DpersistConfig` will have no effect going forward. + +=== Release 0.9.1 + +This release contains: + +- Fixes for most of the known issues regarding Gradle and Maven plugins +- Massively improved automatic JUnit support as well as initial JUnit Vintage support +- Improved JavaDoc and tests for the Gradle plugin + +=== Release 0.9.0 + +Initial release diff --git a/docs/src/docs/asciidoc/img/GraalVM-rgb.svg b/docs/src/docs/asciidoc/css/images/GraalVM-icon.svg similarity index 100% rename from docs/src/docs/asciidoc/img/GraalVM-rgb.svg rename to docs/src/docs/asciidoc/css/images/GraalVM-icon.svg diff --git a/docs/src/docs/asciidoc/css/images/Grabbit.svg b/docs/src/docs/asciidoc/css/images/Grabbit.svg new file mode 100644 index 000000000..2242e9970 --- /dev/null +++ b/docs/src/docs/asciidoc/css/images/Grabbit.svg @@ -0,0 +1,53 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/docs/src/docs/asciidoc/css/landing-page.css b/docs/src/docs/asciidoc/css/landing-page.css new file mode 100644 index 000000000..66a44fc6e --- /dev/null +++ b/docs/src/docs/asciidoc/css/landing-page.css @@ -0,0 +1,33 @@ +body { + background: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.9)); + color: white; +} + +#header>h1:first-child { + color: white; + font-weight: 600; +} + +#header>.details { + color: white; +} + +#footer { + background: rgba(0, 0, 0, 0.2); +} + +h3 { + color: #ffc107; +} + +p { + color: white; +} + +a { + color: #00758F; +} + +.admonitionblock td.icon .icon-tip::before { + color: white; +} diff --git a/docs/src/docs/asciidoc/docinfo-footer.html b/docs/src/docs/asciidoc/docinfo-footer.html index 0ec25b33b..03dc4635a 100644 --- a/docs/src/docs/asciidoc/docinfo-footer.html +++ b/docs/src/docs/asciidoc/docinfo-footer.html @@ -1,7 +1,8 @@ + diff --git a/docs/src/docs/asciidoc/index.adoc b/docs/src/docs/asciidoc/index.adoc index 703456ede..cc83de422 100644 --- a/docs/src/docs/asciidoc/index.adoc +++ b/docs/src/docs/asciidoc/index.adoc @@ -1,496 +1,37 @@ = Native Build Tools The GraalVM team -The {doctitle} project provides plugins for different build tools to add support for building and testing native applications written in Java (or any other language compiled to JVM bytecode). +The {doctitle} project provides plugins for different build tools to add support for building and testing native applications written in Java +(or any other language compiled to JVM bytecode) using the https://www.graalvm.org/reference-manual/native-image/[GraalVM Native Image]. +At the moment, you can build your native projects using our Gradle or Maven plugin. -Most notably, this is the official source for integrating with the https://www.graalvm.org/reference-manual/native-image/[GraalVM Native Image]. - -Please refer to the following pages for build tool specific documentation: - -- The <> -- The <> - -This release of Native Build Tools ships with the GraalVM reachability metadata repository release {metadata-repository-version}. - -If you are interested in contributing, please refer to the https://github.com/graalvm/native-build-tools[Git repository]. +Each plugin takes metadata for available libraries from the https://github.com/oracle/graalvm-reachability-metadata[GraalVM reachability metadata repository] +to provide better experience during the development of your native project. If you are using alternative build systems, see <>. -[[changelog]] -== Changelog - -=== Release 0.10.3 - -- Remove usage of macro from merger tool initialization and throw better error if executable does not exist -- Add support for the new reachability-metadata.json config file -- Remove custom post-processing task for filtering config files entries and use access-filter.json instead - -==== Gradle plugin - -- Add retries when downloading the metadata repository when using a URL directly - -==== Maven plugin - -- Add retries when downloading the metadata repository when using a URL directly - - -=== Release 0.10.2 - -- Fix class path directory analyzer -- Update Reachability Metadata repository version - -==== Gradle plugin - -- Update Default Target Directory for MetadataCopy Task - -==== Maven plugin - -- Update Getting Started with Maven Plugin doc -- Delete old stale args file -- Add a parameter to be able to skip build native for pom type modules, leave it as false per default for backward compat - -=== Release 0.10.1 - -- Mark additional JUnit 5 types for build-time initialization for compatibility with Native Image's `--strict-image-heap` option. - - -=== Release 0.10.0 - -- Update version of GraalVM dependency to 22.3.5 - -==== Gradle plugin - -- Update plugin to use metadata repository by default. Metadata repository <> - -==== Maven plugin - -- Update plugin to use metadata repository by default. Metadata repository <> - - -=== Release 0.9.28 - -* Fix path escaping problem for Windows users -* Fix and improve major JDK version detection. - -==== Gradle plugin - -- Remove use of deprecated `getConvention` APIs - -=== Release 0.9.27 - -* Update JUnit configuration for native testing on GraalVM for JDK 21 with `--strict-image-heap` mode. - -=== Release 0.9.26 - -* Relax GraalVM version check for dev versions -* Prepare plugins for release of _GraalVM for JDK 21_. They no longer deploy any experimental options. -* Bump Java compliance of the plugins from Java 8+ to Java 11+. -* Fix compatibility with Maven 3.9. - -==== Gradle plugin - -* Fix compatibility with Gradle 8.3 - -=== Release 0.9.25 - -* Upgrade metadata to 0.3.4 - -=== Release 0.9.24 - -* Upgrade metadata to 0.3.3 - -==== Gradle plugin - -* Add support for PGO - -=== Release 0.9.23 - -* Upgrade metadata to 0.3.2 -* Display the GraalVM logo on the generated NBT docs - -==== Gradle plugin - -- Remove use of GFileUtils -- Fix "collect reachability metadata" with config cache - -=== Release 0.9.22 - -* Upgrade metadata to 0.3.0 -* Add support for default-for attribute - -==== Gradle plugin - -- Fix lookup of metadata repository - -=== Release 0.9.21 - -* Deprecate `requiredVersion` check without replacement. - -==== Gradle plugin - -- Bump minimal version of Gradle to 7.4 -- Fix compatibility with Gradle's https://docs.gradle.org/8.0.2/userguide/configuration_cache.html#header[configuration cache] (requires Gradle 7.5+) -- Remove use of deprecated Gradle APIs -- [Behavior change] Toolchain detection is now disabled by default - -==== Maven plugin - -- Add a new `native:write-args-file` goal that can be used to write the arguments passed to `native-image` to a file - -=== Release 0.9.20 - -==== Gradle plugin - -- Fix `collectReachabilityMetadata` not being thread-safe -- Add an option to configure the maximum number of images which can be built in parallel -- Fix GraalVM version check being too strict - -==== Maven plugin - -- Add agent modes to Maven plugin - -=== Release 0.9.19 - -==== Gradle plugin - -- Fix `nativeCompile` being out-of-date whenever native runtime arguments change -- Fix GraalVM metadata repository not downloaded from project repositories by default - -==== Maven plugin - -=== Release 0.9.18 - -* Trim GraalVM version to fix Windows support -* Add tests for NativeImageUtils.escapeArg -* Do not escape quoted regexp args when using argsfile -* Upgrade to GraalVM metadata repository 0.2.5 - -=== Release 0.9.17 - -* Add a `requiredVersion` property to check the minimal GraalVM version -* Make GraalVM installation check lazy - -=== Release 0.9.16 - -* Fixed regression with a reachability-metadata repository - -=== Release 0.9.15 - -* Upgrade to GraalVM metadata repository 0.2.3. -* Ship the metadata repository as an artifact alongside the plugin -* Add ability to collect GraalVM metadata of dependencies to a custom location - -==== Gradle plugin - -* Improved diagnostics to help users figure out what GraalVM toolchain was selected - -=== Release 0.9.14 - -==== Gradle plugin -* Add ability to set environment variables to the native image builder process -* Argument files are now stored in the `build` directory (workaround for absolute path issue on Windows with older GraalVM versions) - -==== Maven plugin -* Added `native:compile` forking goal that can be started from the command line as `mvn native:compile`. -* Deprecated `build` goal in favour of `compile-no-fork` goal. This goal should now be used for attaching to the `package` phase in `pom.xml`. Attaching the `build` goal will (for now) produce a runtime warning. -* Argument files are now stored in the `target` directory (workaround for absolute path issue on Windows with older GraalVM versions). -* Default and test outputs are now much less noisy. -* When running tests in JVM mode with the native-image-agent, GraalVM's `java` executable is now always used. -* Maven plugin now shouldn't require that JVM running it must be GraalVM. - -=== Release 0.9.13 - -==== Gradle plugin -* Reverted a change in the `NativeImagePlugin` that removed publicly accessible constants. This should prevent breakage of external plugins. - -==== JUnit testing support -* Adapted the JUnit automatic metadata registration to changes in annotation handling on newer native image versions. - -=== Release 0.9.12 - -==== Gradle plugin -* Completely reworked agent support - **BREAKING CHANGE** -* The agent block is no longer tied to the target binary. -* The agent can now instrument any task that extends `JavaForkOptions`. -* Introduced the `metadataCopy` task. -* Introduced the concept of agent modes. -** Under the hood, the agent mode dictates what options are passed to the agent and how metadata produced by multiple runs get merged. -* Added `excludeConfig` configuration option that allows skipping of configuration files that are present in dependencies. -* `useArgFile` is now set to true by default only on Windows. -* Added `quickBuild` configuration option. - -==== Maven plugin -* Added support for GraalVM Reachability Metadata Repository. -* Completely reworked Maven plugin (should fix many of previous issues and inconsistencies between main and test builds). -* Added `classesDirectory`, `debug`, `fallback`, `verbose`, `sharedLibrary`, `configurationFileDirectories`, `excludeConfig`, `quickBuild`, and `jvmArgs` properties in order to match those present in the Gradle plugin. -+ -See <> for more information. -* `useArgFile` is now set to true by default only on Windows. -* Changed lookup order for `native-image` discovery -- `GRAALVM_HOME`, `JAVA_HOME`, `PATH`. - -=== Release 0.9.11 - -==== Maven plugin - -* Fix long classpath issue under Windows when running native tests -* Inherit environment variables and system properties from the surefire plugin configuration when executing tests -* Fix invocation of `native-image` when classpath contains spaces - -==== Gradle plugin - -* Add support for environment variables in native test execution -* Fix invocation of `native-image` when classpath contains spaces -* Add experimental support for the JVM reachability metadata repository - -=== Release 0.9.10 - -==== Maven plugin - -* Native testing support can now be explicitly disabled via `skipNativeTests`. - - See <> for details. -* Fixed race condition which prevented the agent files to be generated properly if tests were executed concurrently -* Documented version compatibility for the JUnit Platform and Maven Surefire plugin. - - See <> for details. -* Add support for long classpath by using an argument file when invoking `native-image` - -==== Gradle plugin - -* Fixed `nativeRun` not working properly under Windows -* Fixed race condition which prevented the agent files to be generated properly if tests were executed concurrently -* Add support for long classpath by using an argument file when invoking `native-image` - -=== Release 0.9.9 - -==== Gradle plugin - -* Fixed resource inference not working on custom binaries -* Fixed `disableToolchainDetection` not working if a GraalVM installation isn't present. Please use `graalvmNative.toolchainDetection.set(false)` instead. - -=== Release 0.9.8 - -==== Gradle plugin - -* [Breaking change] The `agent` option has been replaced with an `agent { ... }` configuration block which includes an `enabled` property. -* Toolchain support can now be disabled altogether, which can be useful when using GraalVM Enterprise Edition. - - See <> for details. -* Fixed a bug when using a _fat jar_ which assumed that all entries to be repackaged were jars. -* Agent options are now configurable. - - Note that the `experimental-class-loader-support` agent option is no longer added by default. - - See <> for details. -* Added an option to perform resource detection in classpath entries which contain a `native-image/resource-config.json` file. - -==== Maven plugin - -* The agent can now be enabled in the POM. - - See <> for details. -* Agent options are now configurable. - - Note that the `experimental-class-loader-support` agent option is no longer added by default. - - See <> for details. -* Added an option to perform resource detection in classpath entries which contain a `native-image/resource-config.json` file. - -==== JUnit Platform Native - -* Builds now correctly fail if a container-level extension or lifecycle method fails -- - for example, if an `@BeforeAll` method in a JUnit Jupiter test class throws an exception. -* Builds no longer fail when tests are aborted -- for example, via a failed assumption. -* Improved documentation for JUnit Platform and Maven Surefire support in the plugins. - -=== Release 0.9.7.1 - -==== Bugfixes - -- Fixed https://github.com/graalvm/native-build-tools/issues/144[Maven plugin configuration not applied if declared in a parent POM]. - -=== Release 0.9.7 - -Release didn't include any fixes. - -=== Release 0.9.6 - -==== Upgrade to JUnit 5.8 - -The plugins now depend on JUnit 5.8 which provides an official test listener which is used by these plugins. -As a consequence, Maven users will have to configure their builds to enable the plugin extensions: - -```xml - - org.graalvm.buildtools - native-maven-plugin - ${native.maven.plugin.version} - true - ... - -``` - -The dependency on `junit-platform-native` which used to be required pre-0.9.6 can now safely be removed. - -For Gradle users, there's no impact on the configuration, however a good consequence is that the `junit-native-platform` dependency no longer leaks into your application's classpath. - -==== Agent support for Maven plugin - -The Maven plugin now supports the GraalVM agent to generate configuration files. -Please refer to the <> for details. - -==== Disabling testing support - -The Gradle plugin now provides an option to disable testing support. -This can be useful if the test framework you are using doesn't work with this plugin or that you simply don't want to execute tests natively. - -To disable tests, use the `graalvmNative` configuration block: - -```kotlin -graalvmNative { - testSupport.set(false) -} -``` - -==== Configuring additional test images - -The Gradle plugin now supports building multiple test images, which can be used to execute tests natively for more kinds of tests: integration tests, functional tests, ... - -For more information, please refer to <> - -=== Release 0.9.5 - -This release contains, in preparation for supporting more images in the Gradle plugin: - -- The `nativeBuild` and `nativeTest` extensions are now deprecated. A top-level container for configuring native images has been introduced. Instead of: - -[source,groovy] ----- -nativeBuild { - verbose = true -} ----- - -you need to use: - -[source,groovy] ----- -graalvmNative { - binaries { - main { - verbose = true - } - } -} ----- - -and instead of: - -[source,groovy] ----- -nativeTest { - buildArgs("...") -} ----- - -you need to use: - -[source,groovy] ----- -graalvmNative { - binaries { - test { - verbose = true - } - } -} ----- - -- The `nativeBuild` task has been renamed to `nativeCompile`. -- The `nativeTestBuild` task has been renamed to `nativeTestCompile`. - -Both `nativeBuild` and `nativeTestBuild` task invocations are still supported but deprecated and will be removed in a future release. - -=== Release 0.9.4 - -This release works around a limitation for Windows users who encounter an issue with long classpath entries on CLI: the Gradle plugin will now automatically handle this problem by creating a fat jar instead of passing all entries on classpath (this behavior can be <>) if needed). -Maven users will have to <> to use shading. - -In addition to this, we're now publishing development snapshots of this plugin. For Gradle, you will need to declare this repository in your settings.gradle(.kts) file: - -[source,groovy] ----- -pluginManagement { - plugins { - id 'org.graalvm.buildtools.native' version '0.9.5-SNAPSHOT' - } - repositories { - maven { - url "https://raw.githubusercontent.com/graalvm/native-build-tools/snapshots" - } - gradlePluginPortal() - } -} ----- - -For Maven, you need to use this repository configuration: - -[source,xml] ----- - - - graalvm-native-build-tools-snapshots - GraalVM native-build-tools Snapshots - https://raw.githubusercontent.com/graalvm/native-build-tools/snapshots - - false - - - true - - - ----- - -=== Release 0.9.3 - -This release contains: - -- Fix for mainClass not being optional (Gradle plugin) -- Fix for Gradle < 7 failing to determine GraalVM toolchain -- Gradle plugin now registers proper groups -- Automatic native-image tool fetching via gu (Gradle plugin) -- FIxed issue where nativeTest would fail when tests are annotated with Timeout -- Added a sharedLibrary configuration option for Gradle plugin -- Removed broken server configuration option from Gradle plugin -- Added a documentation website with proper CI integration - -In addition to those improvements, several behind-the-scenes changes were made: - -- Introduced "Dockerless" Maven plugin functional testing -- Parallelized Gradle testing in CI -- Replaced groovy-json with jackson-databind for JSON handling -- Fixed Github Actions syntax to enable manual workflow invoking - -=== Release 0.9.2 - -This release contains: - -- Revamped Gradle plugin that is now a lot more idiomatic. -- Fixes for several issues regarding JUnit testing. -- Removal of Test Discovery mode from the Maven plugin. -- Fix for Maven creating empty test images when no tests are present. -- Added support for Kotlin tests in Gradle. +[discrete] +=== Documentation -In addition to those improvements, several behind-the-scenes changes were made in order to ensure better compatibility moving forward: +In case you are new to the Native Build Tools (eiter as an end user or a library author), read our: -- Test coverage has been greatly improved for all subprojects. -- Build tooling for this repository has been improved significantly. +- <> +- <> -Note that there has been a breaking change in the Gradle plugin - `persistConfig` configuration option was removed. -Using said option will cause existing builds to break, so users are advised to remove it from their configuration prior to upgrading. -System property `-DpersistConfig` will have no effect going forward. +For detailed documentation, please refer to the following pages of the specific build tools: -=== Release 0.9.1 +- <> +- <> -This release contains: +You can see the full changelog <>. -- Fixes for most of the known issues regarding Gradle and Maven plugins -- Massively improved automatic JUnit support as well as initial JUnit Vintage support -- Improved JavaDoc and tests for the Gradle plugin +[discrete] +=== Contributing -=== Release 0.9.0 +If you are interested in contributing or reporting an issue related to the plugins, please refer to the https://github.com/graalvm/native-build-tools[Native Build Tools repository]. +Also, be aware that all contributors must sign the https://oca.opensource.oracle.com/[Oracle Contributor Agreement] (OCA). -Initial release +[TIP] +-- +Please be aware that this repository should be used to report issues related to the Maven or Gradle plugins for GraalVM. +Please report issues which are specific to the framework itself (for example https://spring.io/[Spring Framework] or the https://micronaut.io/[Micronaut framework]) to their specific repositories. From f846fb3a6d6be8bcf3f5e63f003393ac6e41233a Mon Sep 17 00:00:00 2001 From: David Nestorovic Date: Wed, 20 Nov 2024 15:29:28 +0100 Subject: [PATCH 02/26] Redesign gh pages --- docs/src/docs/asciidoc/css/landing-page.css | 33 ------- .../docs/asciidoc/css/multi-lang-sample.css | 29 +++--- docs/src/docs/asciidoc/css/page.css | 76 +++++++++++++++ docs/src/docs/asciidoc/docinfo-footer.html | 2 +- docs/src/docs/asciidoc/docinfo-header.html | 3 + docs/src/docs/asciidoc/gradle-plugin.adoc | 6 +- .../styles/equilibrium-light.min.css | 96 ++++++++++++++++++- docs/src/docs/asciidoc/maven-plugin.adoc | 86 ++++++++++------- 8 files changed, 245 insertions(+), 86 deletions(-) delete mode 100644 docs/src/docs/asciidoc/css/landing-page.css create mode 100644 docs/src/docs/asciidoc/css/page.css create mode 100644 docs/src/docs/asciidoc/docinfo-header.html diff --git a/docs/src/docs/asciidoc/css/landing-page.css b/docs/src/docs/asciidoc/css/landing-page.css deleted file mode 100644 index 66a44fc6e..000000000 --- a/docs/src/docs/asciidoc/css/landing-page.css +++ /dev/null @@ -1,33 +0,0 @@ -body { - background: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.9)); - color: white; -} - -#header>h1:first-child { - color: white; - font-weight: 600; -} - -#header>.details { - color: white; -} - -#footer { - background: rgba(0, 0, 0, 0.2); -} - -h3 { - color: #ffc107; -} - -p { - color: white; -} - -a { - color: #00758F; -} - -.admonitionblock td.icon .icon-tip::before { - color: white; -} diff --git a/docs/src/docs/asciidoc/css/multi-lang-sample.css b/docs/src/docs/asciidoc/css/multi-lang-sample.css index df018b2b1..0bdc9b565 100644 --- a/docs/src/docs/asciidoc/css/multi-lang-sample.css +++ b/docs/src/docs/asciidoc/css/multi-lang-sample.css @@ -52,20 +52,20 @@ .multi-language-selector .language-option[data-lang='groovy'], +.multi-language-selector .language-option.selected[data-lang='groovy'], .exampleblock[data-lang=groovy] > .content .title { background-image: url('data:image/svg+xml;base64,PHN2Zw0KICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIg0KICAgd2lkdGg9IjYxNC4wNjA4NSINCiAgIGhlaWdodD0iMzAzLjU5ODYiDQogICB2ZXJzaW9uPSIxLjEiPg0KICA8Zw0KICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzUuMzk2NTk5LC0zMC41NTgxOTYpIj4NCiAgICA8cGF0aA0KICAgICAgIGQ9Im0gMTU0Ljk3Njg3LDMzMi42OTE2MiBjIDAsLTAuODA1ODcgMTAuODMxMjMsLTE4LjYyMTcyIDI0LjA2OTQsLTM5LjU5MDc2IDEzLjIzODE5LC0yMC45NjkwNSAyMi42NjA1NywtMzguNjIwNjYgMjAuOTM4NjcsLTM5LjIyNTc3IC0xLjcyMTkxLC0wLjYwNTEgLTcuNjc5OTIsMC40ODU2NyAtMTMuMjQwMDIsMi40MjM5MyAtMTYuNzQ1MjQsNS44Mzc0MyAtMjAuMTg2MDUsNC4yOTAxNiAtMzIuNjkzMDgsLTE0LjcwMTU1IC0xMy41MzI2NSwtMjAuNTQ5MDYgLTE0LjAxNzI0LC0yMi42Njk4MyAtNi45NjE1OCwtMzAuNDY2MjQgNC42MDg3NiwtNS4wOTI1NiA0LjMzMTU5LC02LjI3OTY3IC0zLjIzMTksLTEzLjg0MzE2IC00LjU1MDA5LC00LjU1MDEgLTguMjcyODksLTkuNjQzMDkgLTguMjcyODksLTExLjMxNzc2IDAsLTIuODE2NzkgLTMwLjk5MTQ1LC0xNS41ODkzMyAtNzkuOTg5NDk2LC0zMi45NjYxNSAtMTEuMTA5NjYsLTMuOTM5OTcgLTIwLjE5OTM3NSwtNy44MjkyOCAtMjAuMTk5Mzc1LC04LjY0MjkxIDAsLTAuODEzNjYgMjMuNDcwNzM4LC0xLjAwNDc2IDUyLjE1NzE5MSwtMC40MjQ2OSBsIDUyLjE1NzIxLDEuMDU0NjYgNS4wOTEyNywtOC4wMzAwMSBjIDIxLjUxNjQ0LC0zMy45MzU5MiA1NC4wMDk1MiwtNjQuNTg4MjEyIDY4LjQ2NzA1LC02NC41ODgyMTIgMy4wMTA2LDAgOS4xMjE0MSwyLjg2OTE4IDEzLjU3OTUzLDYuMzc1OTQ1IDcuMjU5NDYsNS43MTAyODMgOC4yNTY1LDkuMjQ4NjMyIDkuNTQ5OTQsMzMuODkxOTY3IDAuNzk0MywxNS4xMzM4MiAyLjQyNDIyLDI4LjQ5NjAxIDMuNjIxOTgsMjkuNjkzNzkgMS4xOTc3NSwxLjE5Nzc2IDQuOTk3NjksLTAuMzc0MjUgOC40NDQzMSwtMy40OTMzOSA0LjQwMTQsLTMuOTgzMjMgOS4wMzQ4NCwtNS4wNjMxMyAxNS41Njc2MSwtMy42MjgzIDYuNzY3NTYsMS40ODY0MSAxMC42MjcxLDAuNDY4OTUgMTQuMTY5MzgsLTMuNzM1NDMgNS4zMTM2LC02LjMwNjY2IDMxLjkwNTk2LC00OC45MzcyMDEgMzEuOTA1OTYsLTUxLjE0ODc0NCAwLC0wLjc1MTU4OCA1LjI2NTA5LC05Ljc1NzMwNiAxMS43MDAyMywtMjAuMDEyNzAzIDYuNDM1MDksLTEwLjI1NTM5NyAxMy44NDY2NCwtMjIuMDgwNjMxIDE2LjQ3MDA3LC0yNi4yNzgyODMgNC42NjU1OCwtNy40NjUyMDEgNS4zOTY2LC02LjU4MTczNSAzMy40MjY5Miw0MC4zOTg3MzYgMjguOTQxMjEsNDguNTA3MTY0IDQ0LjUxNzY3LDY2LjQwNjU1NCA1Mi4zMTU3LDYwLjExNzYzNCA1LjQ0MiwtNC4zODg4OSAzNC4wMDA1NSwtNC42Mzc5NCA0MS45ODI0NiwtMC4zNjYxNCA0LjUzNjY1LDIuNDI3OTMgNy40MTkxNiwyLjM5NjEgOS45MjQ4NCwtMC4xMDk2MiA1LjIwMDA3LC01LjIwMDA2IDE3LjY0OTgyLC00LjI5NDM3IDIwLjkwNDEyLDEuNTIwNzggMi41NjM5Myw0LjU4MTQ2IDMuMjE3ODQsNC41ODE0NiA3LjAyMDE0LDAgMi4zMDYwNiwtMi43Nzg2NyA5LjEzNjE5LC01LjA1MjA4IDE1LjE3ODAzLC01LjA1MjA4IDguNTM4ODQsMCAxMS43OTMzNiwxLjc3MzY3IDE0LjYxNDAzLDcuOTY0MzcgbCAzLjYyODgxLDcuOTY0MzYgNTYuMDkyMDMsLTEuOTg1OCBjIDMwLjg1MDYyLC0xLjA5MjIyIDU2LjA5MjA0LC0xLjI4Njg4IDU2LjA5MjA0LC0wLjQzMjU1IDAsMC44NTQyNyAtMjIuOTA2MDgsMTAuMDcxOTUgLTUwLjkwMjQxLDIwLjQ4MzcxIC0yNy45OTYzMiwxMC40MTE3MiAtNTEuMzY3LDE5LjI0MzA1IC01MS45MzQ4NCwxOS42MjUxMiAtMC41Njc4NSwwLjM4MjA3IDAuNjk4NDcsOS40OTI3MyAyLjgxNDA1LDIwLjI0NTg4IDUuNTA0NTcsMjcuOTc5MTcgMS45MTQ1OCw0Ni42MjU4OSAtMTEuOTI2MjksNjEuOTQ2MDQgLTYuMjA5LDYuODcyNjMgLTE2LjI4MzM4LDE0LjE0Mzk1IC0yMi4zODc1MywxNi4xNTg0OSAtNi4xMDQxNSwyLjAxNDU0IC0xMS4wOTg0NCw0LjM4NjE0IC0xMS4wOTg0NCw1LjI3MDE5IDAsMC44ODQwNiA2LjUxNTI1LDExLjY3ODkzIDE0LjQ3ODM1LDIzLjk4ODU5IDcuOTYzMDksMTIuMzA5NjkgMTMuMjgyOCwyMi4zODEyNSAxMS44MjE1MiwyMi4zODEyNSAtMi4zODUwNCwwIC02MC40Njk4NywtMjIuNDQyMzggLTE1MC43ODg5OCwtNTguMjYwNyAtMTcuODA5LC03LjA2MjU4IC0zNC4wMjY4MywtMTIuODQxMDkgLTM2LjAzOTYxLC0xMi44NDEwOSAtMy43NTM2MywwIC0zNi4xNjY5LDEyLjI4NjYyIC0xMzEuMjI0MjMsNDkuNzQyMDYgLTU1LjEyNTI1LDIxLjcyMTAzIC01Ny4yOTIxNywyMi40NzM0OCAtNTcuMjkyMTcsMTkuODk0NTEgeiBtIDExMy4xMTY0OCwtNTEuMjUyNjUgYyAyOS4zMjk0OSwtMTEuMzk1MDYgNTguNDE2NTcsLTIyLjUzMDggNjQuNjM3OTgsLTI0Ljc0NjA3IDEwLjcwMDY4LC0zLjgxMDE5IDE0LjI3OTE4LC0yLjg1NDkzIDY2LjI1Mzk0LDE3LjY4NjM0IDMwLjIxODI1LDExLjk0Mjc0IDYwLjAzMjUyLDIzLjU3NTg3IDY2LjI1MzkyLDI1Ljg1MTM0IDYuMjIxNDEsMi4yNzU1MiAxOS4wNDMxNyw3LjIyMDU5IDI4LjQ5Mjc1LDEwLjk4OTA4IDEwLjc3NTAzLDQuMjk3MDQgMTYuMjgyNTEsNS4zMzE2NiAxNC43NzEwOCwyLjc3NDg0IC0xNi44ODM3LC0yOC41NjExMyAtMTcuMzk5OCwtMjkuMDM3MTYgLTI5LjEwMDgzLC0yNi44NDIwNSAtMTQuMTEzNjEsMi42NDc3MiAtMjIuODc4OTcsLTAuMDY4NSAtMjcuMzgzNjksLTguNDg1NTQgLTIuOTIxMTIsLTUuNDU4MTYgLTIuMDI5NDQsLTguMTI3NTkgNS4yNTQ0MiwtMTUuNzMwMzEgMTAuODQ4ODcsLTExLjMyMzc3IDkuMTQ0NTcsLTIxLjc0MTQ0IC00Ljg0NDI5LC0yOS42MTA5OSAtNS4zNjc2NCwtMy4wMTk1OSAtMTIuMTQwNTksLTEwLjQ4MzcyIC0xNS4wNTEwMiwtMTYuNTg2OTcgbCAtNS4yOTE2OSwtMTEuMDk2ODIgLTExLjM0NTUxLDcuNjk5MjggYyAtMTMuOTQ0NTgsOS40NjMwNCAtMzAuOTUwNjIsOS45NTA2MyAtNDUuMTQ3NjQsMS4yOTQ0OCBsIC0xMC40NjQ4OCwtNi4zODA2NSAtMTIuMTU4NDEsOC4yNjI4NCBjIC0xMi4xNzQ2Miw4LjI3Mzg2IC0yNi4xOTEwOCw5LjM0MjggLTQwLjQzNzUyLDMuMDgzOTIgLTMuOTI0OTgsLTEuNzI0MzkgLTUuNjU1ODMsLTEuMDU0MTUgLTUuNjU1ODMsMi4xOTAwOCAwLDIuNTcxMTggLTMuNzA0MjksNi4zNjI2NSAtOC4yMzE4MSw4LjQyNTUzIC0xMy41NzQyLDYuMTg0NzkgLTI2LjgyMTA3LDQuNTQyNDcgLTM1LjgwMjI5LC00LjQzODc1IGwgLTguMTg5NDQsLTguMTg5NDQgLTYuNjA5ODIsOC40MDMwMyBjIC0zLjYzNTM5LDQuNjIxNjYgLTEyLjA0OTUyLDExLjgzNjk4IC0xOC42OTgwNSwxNi4wMzM5OCAtOC4yMjk2NSw1LjE5NTE4IC0xOC40MTc0MSwxNy44NzE4MiAtMzEuOTE2NCwzOS43MTM2MSAtMTAuOTA1NDksMTcuNjQ1NDYgLTE5LjgyODE2LDMyLjk4MDQyIC0xOS44MjgxNiwzNC4wNzc3NiAwLDEuMDk3MyA4LjM2MjU1LC0xLjUyNzM2IDE4LjU4MzQyLC01LjgzMjU5IDEwLjIyMDg5LC00LjMwNTIxIDQyLjU4MDI4LC0xNy4xNTA4NyA3MS45MDk3NywtMjguNTQ1OTMgeiBtIDI0OC43NjcyOSwtMTIuMjU4NDYgYyAyMi4yNTU1NywtMTIuNTA4MzMgMjcuNDE0MjQsLTM1LjY0ODA4IDE3LjU3Njg1LC03OC44NDMxOCAtOC4yMjE0LC0zNi4wOTk2MSAtMTIuMzI1NSwtNDcuOTEzMjcgLTE3LjE5NDk0LC00OS40OTU5NyAtMy4zNjkwMiwtMS4wOTUwMyAtMy44ODY3NCwwLjEwNjk5IC0xLjk4ODU4LDQuNjE2MzUgMTIuMzE1MTYsMjkuMjU3NzEgMTIuOTk5NjMsNDMuOTQ2NjIgMi4yNDAyMiw0OC4wNzU0MSAtNy4zOTE1MSwyLjgzNjQyIC0xNS4yMzIzOSwtNy43OTA3NSAtMjEuMzk5MDIsLTI5LjAwMzI2IC00Ljc3NTEyLC0xNi40MjU4NyAtOS43Njg2MSwtMjMuODI4MzcgLTEzLjUzMzg3LC0yMC4wNjMxMSAtMC45MDE1NywwLjkwMTYgMC42Nzg0OCw2LjEyMTE3IDMuNTExMjQsMTEuNTk5MTMgMi44MzI3Myw1LjQ3NzkgNi43MTcyMSwyMS45NzQ1NSA4LjYzMjE3LDM2LjY1OTIgMS45MTQ5NywxNC42ODQ2MiA1LjYxMzg1LDMwLjA2MDczIDguMjE5NzMsMzQuMTY5MTIgNi43NzE5OCwxMC42NzY2MSAxNy41NTEyOCw4LjEwMzYgMjQuNTIzODIsLTUuODUzODQgNi44OTM3MywtMTMuNzk5NzUgNy42NzI4NCwtNC42MDc4MSAwLjk2OTMsMTEuNDM2MDIgLTYuOTYwNzQsMTYuNjU5MzcgLTI3LjYzNDQyLDIxLjY1NDgxIC01MS41ODQxOCwxMi40NjQ0MiAtMy44MzMzLC0xLjQ3MDk2IC01LjEzMDM5LDAuMDUxNSAtNS4xMzAzOSw2LjAyMDk3IDAsNC4zOTQzMSAtMi45MzYxOCwxMS43MjI0NSAtNi41MjQ4OCwxNi4yODQ3IGwgLTYuNTI0ODgsOC4yOTUwNiA4Ljk0ODgxLDEuNTExMjMgYyAxNS40NDk0NSwyLjYwOTA5IDM2LjYzMzI4LC0wLjc3NjQyIDQ5LjI1ODYsLTcuODcyMjUgeiBtIC0zMjAuMzY2NSwtMjcuNTM3MzMgYyA0Ni40NTk2NSwtMTMuMzU0NSA1NC43NjE4OCwtMjguOTMwOTMgMzkuMzI4ODUsLTczLjc4NzgyIC0zLjU4MTg1LC0xMC40MTA3OSAtNi41MTI0MywtMjEuNjA5NzEgLTYuNTEyNDMsLTI0Ljg4NjU0IDAsLTExLjE1NzEyIC01LjYxMTUyLC02LjAwMTYxIC05LjgxNzEzLDkuMDE5NDMgLTUuNTYyMDMsMTkuODY1NjEgLTIyLjI5MTE1LDM2Ljc1MDUzIC0zNi4zNDUxNiwzNi42ODM2NCAtMTIuMjA1NDcsLTAuMDU4MiAtMTYuMTgyNTEsLTIuMjgwMDggLTIxLjIyMzc4LC0xMS44NTc2OCAtOS4wNDc0OCwtMTcuMTg4ODIgMC44MTQ2OSwtNDMuNTY3OTcgMjUuOTY5NTQsLTY5LjQ2MjcyIDE4LjQyNDMxLC0xOC45NjYzMDQgMjguNDg4OTMsLTIwLjY4Mzk2NSAyOC40ODg5MywtNC44NjIwNSAwLDI0LjY3MzIgLTE3LjAxMTM0LDYwLjk5NDcgLTI1Ljk3MzA5LDU1LjQ1NjA0IC00LjM4MjA1LC0yLjcwODI2IC0zLjY3MTM4LC0xNC42Njc1MiAxLjQxNzIyLC0yMy44NTAwOSA0LjMyNzM1LC03LjgwODgyIDMuNDQ4MTQsLTE5LjcwNzcxIC0xLjQ1NjIsLTE5LjcwNzcxIC01LjY4Njg5LDAgLTE2Ljk0NTQ3LDIwLjcxMTk2IC0xOC40MzMxOCwzMy45MTA3NCAtMS4zMTUxNSwxMS42NjgyNiAtMC40OTI4NiwxNC41MDU0NSA1LjA2NjUyLDE3LjQ4MDcyIDE5LjQ4MjQ0LDEwLjQyNjcgNDUuMDA1MzEsLTIxLjM5NTQ1IDQ2LjI5MDgzLC01Ny43MTU4NCAwLjY3NTA0LC0xOS4wNzMxODEgLTMuMDE2NzYsLTI0LjQ0MTEwNSAtMTQuNzc5MDYsLTIxLjQ4ODk1MSAtMTcuMTE4NzksNC4yOTY1NDMgLTYzLjIzNDgzLDYzLjc4NjY0MSAtNjMuMjM0ODMsODEuNTczNDYxIDAsMTMuOTEyOCA2Ljk4NzM3LDIzLjY5NzI4IDE5LjI4ODI3LDI3LjAwOTYgMjAuOTE0MTksNS42MzE2MiA0MS4xMzUzOSwtNC4zNzM4OSA1NS40NjMzLC0yNy40NDMzOCBsIDYuMDIxNzUsLTkuNjk1NzEgMC4wMTMyLDEzLjE3MjIzIGMgMC4wMTYyLDE5LjA3MzggLTEyLjQyNjE5LDI5LjEyNzQgLTUxLjY5ODE3LDQxLjc2NzkzIC05Ljc3NjQ5LDMuMTQ2OCAtMTguMTgzMzIsNi4wNTQ0MSAtMTguNjgxOCw2LjQ2MTM3IC0xLjgyMDU2LDEuNDg2MzIgMTYuNjg3MzksMjcuNDc1NzEgMTkuNTY2NDQsMjcuNDc1NzEgMS42MzI2MiwwIDExLjE5MTE1LC0yLjM2MzU5IDIxLjI0MTIzLC01LjI1MjM4IHogTSA0NzYuNDExLDIxNy45NjMwMSBjIDQuNjYzNDcsLTUuMTUzMSA1LjQ4NTUxLC0xMC43NTEwMyA0LjQ4NTc5LC0zMC41NDgyMyAtMS4wODczOSwtMjEuNTMzMzEgLTIuMjc3NDYsLTI1LjMzODUxIC0xMC42NjE0MywtMzQuMDg5NDkgLTE1LjE0ODgyLC0xNS44MTE5NCAtMzMuODYxMjMsLTExLjc3ODI4IC0yMi45MDgxOSw0LjkzODE0IDUuODIyNTYsOC44ODYzNyAxMi45MjU0LDcuMzY4NjQgMTAuNDE2NDEsLTIuMjI1ODEgLTEuOTk4NjQsLTcuNjQyNzYgMS43Mjk5OCwtNy44NDM1OCA4LjIyODM5LC0wLjQ0MzIyIDEyLjE5MzAxLDEzLjg4NTM3IDkuMTE1MzQsMzMuMTI2OTggLTUuMjk4NiwzMy4xMjY5OCAtOS44NjcxNiwwIC0xMi45NDE5NSwtNC4yMzE3NiAtMTkuMzczNTMsLTI2LjY2MzE4IC0yLjkzMDU5LC0xMC4yMjA4NyAtNi40OTk2NCwtMTguNTgzNDMgLTcuOTMxMjcsLTE4LjU4MzQzIC00Ljc2ODk5LDAgLTYuODkyODcsNC4yMDg3OCAtMy45MjcyMSw3Ljc4MjQgMS42MTA4OCwxLjk0MTEgNi4wNzIxOCwxNS44OTEyNyA5LjkxNDA0LDMxLjAwMDQxIDkuNjY5MDMsMzguMDI1OTYgMjMuMTc2NjYsNTEuMDQxNDUgMzcuMDU1NiwzNS43MDU0MyB6IG0gLTE4My43NzEyNSwwLjYwMzk1IGMgMS45ODk3OCwtMS4zMzUgMi44OTk3NSwtNy42NDg5MyAyLjA3ODY1LC0xNC40MjMgLTEuMzI0NDksLTEwLjkyNzAyIC0yLjA2NjYyLC0xMS43MjQxIC03Ljk3MjcsLTguNTYzMjcgLTguNDg3MzMsNC41NDIyNyAtMTcuNjA4MzksLTQuMDYzNTEgLTIwLjcwMjIyLC0xOS41MzI2IC0yLjM0NzA3LC0xMS43MzUzOCAtMy4wNjUyNiwtMTEuNTA0ODkgMTQuMDI1NzYsLTQuNTAxNDkgMi4xNDI4OCwwLjg3ODA4IDcuNTk2NzEsLTIuMTA0MDIgMTIuMTE5NjMsLTYuNjI2OTQgOC4yNzQwOCwtOC4yNzQwOCAxMC45OTgwMiwtMTguMjEyOTkgNC45OTE1NiwtMTguMjEyOTkgLTEuNzc3NTQsMCAtMy4yMzE5LDEuNDU0MzYgLTMuMjMxOSwzLjIzMTkgMCw0LjY0OTIzIC04Ljg0MjMxLDMuOTg5ODIgLTEwLjgzNDY1LC0wLjgwNzk3IC0xLjE2MjI0LC0yLjc5ODc5IC0zLjYzODA3LC0xLjgwNTkxIC04LjA1OTE1LDMuMjMxOSAtMy41MDk4NSwzLjk5OTQ4IC03Ljc5NjczLDcuMjcxNzggLTkuNTI2NDEsNy4yNzE3OCAtMS43Mjk2OSwwIC00LjA2NTYsLTMuMjcyMyAtNS4xOTA4OCwtNy4yNzE3OCAtMS45NzE5NSwtNy4wMDg1NiAtMi4yMTM2NiwtNy4wNTI3NyAtNi42NzczNywtMS4yMjE2OSAtMy45MTA2LDUuMTA4NTQgLTMuOTQ1NTcsNi43MzU4MyAtMC4yMjQ2MSwxMC40NTY2MSAzLjk0MDYyLDMuOTQwNjQgMTEuNDI2MTUsMzAuODcxMDIgMTEuNDI2MTUsNDEuMTA3NDQgMCwxMi43Mjg2NyAxNy41MjkzMywyMi43MzgzMiAyNy43NzgzLDE1Ljg2MjEgeiBtIDU4Ljk0MzA5LC0xNi44NzUzMSBjIDEyLjE0NTY3LC0xMi4xNDU2NyAxNS43NDQ1MiwtMzAuMzUxNDMgOS4xMjk0MywtNDYuMTgzNTcgLTUuMTcwMTYsLTEyLjM3Mzk3IC0xNC4xNDQ2NiwtMTcuMDA1MTYgLTI2Ljc5ODc4LC0xMy44MjkxOCAtOS40MDI2MywyLjM1OTkxIC0yMy43MjMxMSwyOS43NzY1OSAtMjMuNzczODcsNDUuNTE1MzYgLTAuMDc5MiwyNC41MjkwMiAyMy4yNTA1MywzMi42OTAwNSA0MS40NDMyMiwxNC40OTczOSB6IG0gLTIyLjA4MzQxLC0xOS40MzQwNyBjIC0zLjU1NTEsLTMuNTU1MSAtNi40MTc1NSwtMTAuNDYzMjggLTYuMzYxMDIsLTE1LjM1MTUzIDAuMDkzNCwtOC4wNzk2NSAwLjQ5MzE1LC04LjM3MzUgNC4zOTYxOSwtMy4yMzE5IDQuODI0NjQsNi4zNTU2OSAxMy4zOTc5Nyw3LjQ1NjY2IDE2LjY4MjQxLDIuMTQyMzIgMS4xOTQzMiwtMS45MzI0MSAwLjU1Mjk1LC01LjEzMjAyIC0xLjQyNTIsLTcuMTEwMTcgLTUuMDgxMzIsLTUuMDgxMzIgLTQuNDY1NjEsLTExLjk5OTYzIDEuMDY3OTIsLTExLjk5OTYzIDYuMTUxMzcsMCAxNC43MjY3OSwxMi41MTQ3NyAxNC43MjY3OSwyMS40OTE5MSAwLDYuNjA2NzQgLTEzLjQ0NDQsMjAuNTIyOCAtMTkuODI3MjQsMjAuNTIyOCAtMS41Mzc4NSwwIC01LjcwNDc2LC0yLjkwODcyIC05LjI1OTg1LC02LjQ2MzggeiBtIDg2LjM0ODk3LDE4LjU4MzQxIGMgMTMuNDEwNzQsLTE0LjYwMjYzIDEyLjEwMzc2LC0zNy4wOTggLTMuMDk4MjUsLTUzLjMyNjM0IC03Ljg1MDU3LC04LjM4MDYgLTI1LjI5Mjk4LC05LjgyNTUyIC0zMi40MzE4NSwtMi42ODY2NCAtNi41ODc2MSw2LjU4NzYxIC0xMy4xNjQ2NSwzMi40OTMwMyAtMTAuNzIxMjIsNDIuMjI4NDEgNS4yMTEyMiwyMC43NjMxOCAzMi40MDA0MSwyOC44NjY1MiA0Ni4yNTEzMiwxMy43ODQ1NyB6IG0gLTI3LjQ1NTY1LC0yMy42MTQ1MiBjIC01LjMwNjIzLC0zLjcxNjY0IC03LjEyOTQxLC04LjE0OTc0IC02Ljk3ODA2LC0xNi45Njc0NyAwLjE2OTM1LC05Ljg2MDMzIDAuNjg0MywtMTAuNzQ5ODEgMi45NjE0NSwtNS4xMTQxNSAzLjM0NTczLDguMjgwMzIgMTAuMzYyOTIsMTEuNDA3MzQgMTYuNTE4MTQsNy4zNjA5IDMuODE3NTMsLTIuNTA5NjMgMy42MzkyOSwtMy42OTU5NyAtMS4xMDEwNCwtNy4zMjkwNyAtNi4zMjE4OSwtNC44NDUyMyAtNy41NTUwOCwtMTEuNzAxOTEgLTIuMTA0NjUsLTExLjcwMTkxIDQuODczNjQsMCAyMi4zMDQwMiwxOS4wNjY2NiAyMi4zMDQwMiwyNC4zOTc3OCAwLDUuMjAzMTYgLTEyLjM3NzM5LDE0LjM4NTAzIC0xOS4zOTEzOSwxNC4zODUwMyAtMi43NjQwNSwwIC04LjI1NzksLTIuMjY0MDIgLTEyLjIwODQ3LC01LjAzMTExIHogbSAxODkuOTYyOTIsLTE0LjI4ODg3IDMzLjkzNDk1LC0xMi43MzY4MiAtMzYuMzU4ODgsLTAuMTMxMjUgYyAtMzIuNTM5MiwtMC4xMTczNiAtMzYuMzU0MjQsMC40NjMwNyAtMzYuMzE0NzUsNS41MjQ3NSAwLjA0MDEsNS4xMjc1NyAzLjMzMDczLDIwLjI4Mzk1IDQuMzcyNywyMC4xMzk2NyAwLjIzNzIyLC0wLjAzMjkgMTUuNzAxNzcsLTUuNzkxMjQgMzQuMzY1OTgsLTEyLjc5NjQ4IHogbSAtNDQzLjQ5MzQzLC0yLjI3OTMgMy40NjgyNSwtMTAuMjg3NjEgLTMwLjQ2Njg2LC0xLjAyNDA0IGMgLTE2Ljc1Njc0NCwtMC41NjMyMiAtMzAuNDYzNTg0LC0wLjEzMjEzIC0zMC40NTk1OCwwLjk1ODA0IDAuMDA1OCwxLjU5NTEzIDUyLjUwNjU3LDIyLjEwNzA3IDUzLjY2MTc0LDIwLjk2NTUyIDAuMTgwMzUsLTAuMTc4NCAxLjg4ODkyLC00Ljk1MzcyIDMuNzk2NDUsLTEwLjYxMTkxIHogbSAyMDguOTA5MiwtMzEuODg2OTUgYyA3LjE2NjY3LDEuMTQ2IDE1LjI0OTgxLDQuMDc5MjQgMTcuOTYyNTYsNi41MTgzNSA0LjIxMjc5LDMuNzg3ODMgNi4wNDUyOCwzLjUyOTY2IDEyLjU2MjA3LC0xLjc2OTg1IDQuMTk2NDMsLTMuNDEyNSA5LjY1MDI2LC02LjIwNDU3IDEyLjExOTYzLC02LjIwNDU3IDIuNDY5MzksMCA0LjQ4OTgyLC0wLjcxMzA4IDQuNDg5ODIsLTEuNTg0NjcgMCwtMy4wMDkxOCAtNDYuNTM5NTQsLTc5LjIxMjUyIC00OC4zMTQ0NywtNzkuMTA5NjEgLTIuMDg1LDAuMTIwODcyIC00OS43ODYwMyw4MC4wODc5OCAtNTEuMjU0NjQsODUuOTI0MzcgLTAuNjE2MzQsMi40NDk1MiAxLjMxODA0LDMuMzUzNzEgNS4wNzM2NCwyLjM3MTYgMy4zMzgzNiwtMC44NzMgNy45NTQxNiwwLjY4MzI2IDEwLjI1NzI3LDMuNDU4MzYgMy43MzU0LDQuNTAwODcgNS4yNjEwOCw0LjE0MjI5IDE0LjEzMDY4LC0zLjMyMDk3IDguNDI2NDcsLTcuMDkwNDEgMTEuOTMwOCwtOC4wNDg4IDIyLjk3MzQ0LC02LjI4MzAxIHoiDQogICAgICAgc3R5bGU9ImZpbGw6IzMzMzMzMztmaWxsLW9wYWNpdHk6MSIgLz4NCiAgICA8cGF0aA0KICAgICAgIHN0eWxlPSJmaWxsOiM2Mzk4YWE7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiDQogICAgICAgZD0ibSAzMDkuNTQ1NzksMTQwLjg3OTIyIGMgLTAuNTAwNzUsLTAuMjMzMTEgLTEuMTE4MDQsLTAuNzY3OTkgLTIuNTI3OCwtMi4xOTAzNSAtMS45MTE4OCwtMS45Mjg5NyAtMi42NzE4OCwtMi40OTAxMyAtNC4yNjEwOCwtMy4xNDYyOCAtMi4wODc5MSwtMC44NjIwNCAtNC4zNTQ5LC0xLjA5NDIzIC02LjQ4MjMxLC0wLjY2MzkxIC0xLjg5ODA4LDAuMzgzOTMgLTIuNDI0MzUsMC40MjUyNyAtMy4yODI0MiwwLjI1NzggLTEuNDMyMjQsLTAuMjc5NTMgLTEuOTQxNTcsLTEuMTQ5MjkgLTEuNTM1ODMsLTIuNjIyNzIgMC41MDU3MywtMS44MzY1NyA0LjMzNjkzLC04Ljk0MjU1IDEyLjAwODk5LC0yMi4yNzM4NyAxNS41ODM3LC0yNy4wNzg5ODggMzYuNTM2MjQsLTYxLjIyMDk2OCAzOC44NTA1NiwtNjMuMzA2NjYyIDAuMjU2MzEsLTAuMjMwOTk0IDAuMjY1LC0wLjIzMDk5NCAwLjUyMjQ4LDAgMS4zNzc2OCwxLjIzNTk3NiA5LjQ3NjIsMTMuNzI1ODg5IDIwLjU0MDM2LDMxLjY3ODI5OCAxNC45NjY5NiwyNC4yODUwMDQgMjcuNDExMDIsNDUuNjQzNzE0IDI3LjQxMTAyLDQ3LjA0NzcwNCAwLDAuODU3MjkgLTEuMzE2MDgsMS4zNzIxNSAtNC4wODU5MSwxLjU5ODQ1IC0zLjQ0MjI2LDAuMjgxMjQgLTcuNDI0NzgsMi4zMDE4OCAtMTIuODY4ODcsNi41MjkzNiAtMi41ODcxMiwyLjAwODk4IC0zLjY5MTI2LDIuNzU5MzMgLTQuOTUwNjIsMy4zNjQzOCAtMS4wNDkyOCwwLjUwNDExIC0xLjEzNjkyLDAuNTI0MzcgLTIuMjY4NTQsMC41MjQzNyAtMS4xMTM2OCwwIC0xLjIyNjYxLC0wLjAyNDkgLTIuMDk2MjMsLTAuNDYxMjggLTAuNTEyMTMsLTAuMjU3MDIgLTEuNTA0NjksLTAuOTQ5MyAtMi4yNDE1NSwtMS41NjM0MiAtMi4xNzg0OCwtMS44MTU2MSAtNC43OTkxOCwtMy4xMzYxNCAtOS4wNzE5NywtNC41NzEyNCAtNS40Mjk5NywtMS44MjM3NiAtMTEuMjQ0NTQsLTIuOTE4NCAtMTYuMTk1NTEsLTMuMDQ4OTYgLTMuOTA5MzQsLTAuMTAzMDggLTUuNzEyMDEsMC4yNDc5OCAtOC42NzYwMiwxLjY4OTYzIC0yLjQxOTg4LDEuMTc2OTggLTMuNTg2MjEsMi4wMTMxMSAtOS4xMjQ3NSw2LjU0MTQ1IC01LjYzMzc2LDQuNjA2MTcgLTcuNjM0NDIsNS41NjIwNSAtOS42NjQsNC42MTcyNSB6IiAvPg0KICAgIDxwYXRoDQogICAgICAgc3R5bGU9ImZpbGw6IzYzOThhYTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSINCiAgICAgICBkPSJtIDEyOC42Mzc4NiwxNzAuNzM5IGMgLTEwLjE1OSwtMi45NjA3IC00NS41MDMxNzEsLTE2LjkxOTYyIC01MC40NTA5MjQsLTE5LjkyNTIzIC0wLjY4MjkxNiwtMC40MTQ4NCAtMC43MzgwOTgsLTAuNDc3ODcgLTAuNTQzMjA3LC0wLjYyMDM4IDEuMTMxNTYzLC0wLjgyNzQxIDEyLjMzNzk4MywtMS4yMzkwMSAyNS4wMDQwMzEsLTAuOTE4MzYgNS4wNTEzMSwwLjEyNzg4IDM1LjUwMTMyLDEuMTMzMjMgMzUuNTUwOSwxLjE3Mzc3IDAuMDk5NywwLjA4MTUgLTYuNTIxNjQsMTkuMjg4OCAtNy4wMzA1MSwyMC4zOTQzMyAtMC4yMTI1MSwwLjQ2MTcgLTAuNjUwNjMsMC40NDM2NyAtMi41MzAyOSwtMC4xMDQxMyB6IiAvPg0KICAgIDxwYXRoDQogICAgICAgc3R5bGU9ImZpbGw6IzYzOThhYTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSINCiAgICAgICBkPSJtIDU0My42OTQxMywxNzUuMzEwNTUgYyAtMS4zODYyLC0yLjcxMjg3IC0zLjg4NzY5LC0xNC45NzA2NyAtMy45NjA3OCwtMTkuNDA4NTggLTAuMDI4NCwtMS43MjQyNCAwLjE4NjY3LC0yLjQyNzQxIDAuOTYwNiwtMy4xNDA4IDEuNzczNzgsLTEuNjM1MDEgNS4zNzkzOCwtMi4yMjMyIDE1LjI5MDE3LC0yLjQ5NDM0IDUuMDAzNDcsLTAuMTM2ODkgMjguMTAxOSwtMC4xNTc5NiA0NC40MTEyNywtMC4wNDA1IGwgMTEuNDI4NTksMC4wODIzIC0yNy41MTc3LDEwLjMxNDI3IGMgLTI1LjA5MjkyLDkuNDA1NCAtMzkuNjg0NzMsMTQuODQxMjYgLTQwLjIyNDkxLDE0Ljk4NDkgLTAuMTM1MTcsMC4wMzYgLTAuMjY5ODEsLTAuMDY3NCAtMC4zODcyNCwtMC4yOTcyMyBsIDAsMCB6IiAvPg0KICAgIDxwYXRoDQogICAgICAgc3R5bGU9ImZpbGw6IzYzOThhYTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSINCiAgICAgICBkPSJtIDE3OC4wODgzNSwzMTUuNTE0MzMgYyAwLC0wLjc3MDc4IDMuMjY4OSwtNi41MzMxIDExLjU1Mzk1LC0yMC4zNjY5OCAxOS44NTExOCwtMzMuMTQ2MzEgMjguOTI3MTUsLTQ1LjE2MDEyIDQwLjA3MjkyLC01My4wNDQyOSA5Ljk3MTI3LC03LjA1MzM3IDE1LjMwMjc5LC0xMS45Mjk0IDIxLjI0NTM5LC0xOS40MzAzMyBsIDMuNjY0MDksLTQuNjI0OTIgNC45Mzk5LDQuODU2NTIgYyA4LjY0Nzg0LDguNTAxODkgMTMuODYxMywxMC45NjY2OCAyMy4yOTcxNywxMS4wMTQzMiAxMS41NDA1OCwwLjA1ODMgMjQuMTc4NDksLTYuMzg4MSAyNC4xNzg0OSwtMTIuMzMyOTkgMCwtMS4zMzk4IDAuOTU0MDQsLTIuNzIyMzYgMS44Nzg1NywtMi43MjIzNiAwLjM5MTMyLDAgMi42MTY4NiwwLjY4MzY1IDQuOTQ1NjUsMS41MTkyMyA2LjA2OTkyLDIuMTc3OSA5LjYzMDI4LDIuOTY1NDggMTQuNjA5MTIsMy4yMzE2NSA0LjkzOTk4LDAuMjY0MDkgOC41NDg0OCwtMC4xNzA0IDEzLjM1ODE3LC0xLjYwODQxIDQuNzI1NjEsLTEuNDEyODggNy40NDcwOSwtMi44NTkwNSAxNS41OTgzMywtOC4yODg4MiA0LjEwNzYsLTIuNzM2MTggNy41OTk1NCwtNC45NzQ4NyA3Ljc1OTg4LC00Ljk3NDg3IDAuMTYwMzMsMCAzLjEyNTM0LDEuNzE4OTYgNi41ODg5LDMuODE5OTEgMy40NjM1NiwyLjEwMDk1IDcuNjI1NDIsNC4zODEzMyA5LjI0ODU5LDUuMDY3NTEgMTEuMDY4NjIsNC42NzkxOCAyMy4wMjQ0NSw0LjM3MzkgMzMuOTcxMjYsLTAuODY3NDEgMS45NTc5NSwtMC45Mzc0NyA2LjU2NzkzLC0zLjczMDc0IDEwLjI0NDQsLTYuMjA3MjcgMy42NzY0OCwtMi40NzY1MyA2LjczNjEzLC00LjQ0NTc2IDYuNzk5MjMsLTQuMzc2MDYgMC4wNjMxLDAuMDY5NyAxLjQ1NjA1LDIuOTIwOCAzLjA5NTQ0LDYuMzM1NzggMS42Mzk0LDMuNDE0OTggMy42OTg5NSw3LjI2NjcgNC41NzY3OSw4LjU1OTM3IDMuODAwMDEsNS41OTU3OCA4LjE3NTg4LDkuNzUxNDEgMTQuMDgzNDMsMTMuMzc0NjQgNi4wODEyMiwzLjcyOTc1IDkuODMyMDYsOC42ODY4IDEwLjIxODgyLDEzLjUwNTA3IDAuMzgzNjcsNC43Nzk2OCAtMS43MDMyOSw5LjAxOTM5IC03LjcyMTg5LDE1LjY4NzIxIC00LjY5NzQ3LDUuMjA0MTkgLTUuODczMyw3LjIzNTQgLTUuODYxMTMsMTAuMTI0OTEgMC4wMTIyLDIuODkyNjIgMS43MDEwMyw2LjIyODU0IDQuNjY5NjQsOS4yMjM3OSA0LjgwNTMzLDQuODQ4NDQgMTIuMzQ2MDUsNi4yODc3NyAyMy40MzUzNCw0LjQ3MzE5IDIuNDc0MDgsLTAuNDA0ODQgNS41OTQ3OSwtMC43Mzc1NyA2LjkzNDkxLC0wLjczOTM4IDQuMjg1NTEsLTAuMDA2IDYuOTAzMTksMi4wOTU5NSAxMS44OTI1MSw5LjU0ODU5IDMuNDQzNTEsNS4xNDM2NSAxMC45NzM5NiwxNy43NTUwOCAxMC45NzM5NiwxOC4zNzgzNiAwLDAuMzI0MDcgLTAuMzUxNDUsMC41NTIwOCAtMC44NTA5NywwLjU1MjA4IC0xLjA1MTA5LDAgLTUuNjIzMTQsLTEuMjQzOCAtOC45MzIxNCwtMi40Mjk5NCAtNC4zNDg1LC0xLjU1ODc1IC01Ny4yNzIzOCwtMjIuMDA1MjYgLTc0Ljc0Nzg2LC0yOC44Nzc5NSAtNDYuNjYzNSwtMTguMzUxNjIgLTYyLjAyODA1LC0yNC4yMTI0NiAtNjkuNTM2NTcsLTI2LjUyNDg5IC04LjExNDE3LC0yLjQ5ODk1IC0xMy42NDAyOSwtMy4wODUyMiAtMTguMTI2NjEsLTEuOTIzMDYgLTUuNTc5OTYsMS40NDU0NiAtODEuNzIwNjcsMzAuODY4ODggLTEyNi4xMzI0NSw0OC43NDE5NSAtMjEuOTMxMTksOC44MjYgLTI0LjY3NzQ5LDkuODc1NzcgLTI4Ljc4MTE2LDExLjAwMTU5IC0zLjI2MzAzLDAuODk1MjEgLTMuMTQ0MDcsMC44ODI5NCAtMy4xNDQwNywwLjMyNDI2IHoiIC8+DQogIDwvZz4NCjwvc3ZnPg=='); - background-position: 16px 80%; background-repeat: no-repeat; - background-size: 20px 12px; + background-size: 25px 14px; padding-left: 2.5em; } .multi-language-selector .language-option[data-lang='kotlin'], +.multi-language-selector .language-option.selected[data-lang='kotlin'], .exampleblock[data-lang=kotlin] > .content .title { background-image: url('data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA2MCA2MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjAgNjA7Ij4NCjxnPg0KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfM18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMTUuOTU5NCIgeTE9Ii0xMy4wMTQzIiB4Mj0iNDQuMzA2OCIgeTI9IjE1LjMzMzIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCA2MSkiPg0KCQk8c3RvcCAgb2Zmc2V0PSI5LjY3NzAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiMwMDk1RDUiLz4NCgkJPHN0b3AgIG9mZnNldD0iMC4zMDA3IiBzdHlsZT0ic3RvcC1jb2xvcjojMjM4QUQ5Ii8+DQoJCTxzdG9wICBvZmZzZXQ9IjAuNjIxMSIgc3R5bGU9InN0b3AtY29sb3I6IzU1N0JERSIvPg0KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2NDMiIHN0eWxlPSJzdG9wLWNvbG9yOiM3NDcyRTIiLz4NCgkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzgwNkVFMyIvPg0KCTwvbGluZWFyR3JhZGllbnQ+DQoJPHBvbHlnb24gaWQ9IlhNTElEXzJfIiBzdHlsZT0iZmlsbDp1cmwoI1hNTElEXzNfKTsiIHBvaW50cz0iMCw2MCAzMC4xLDI5LjkgNjAsNjAgCSIvPg0KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNC4yMDkyIiB5MT0iNDguOTQwOSIgeDI9IjIwLjY3MzQiIHkyPSI2NS40MDUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCA2MSkiPg0KCQk8c3RvcCAgb2Zmc2V0PSIwLjExODMiIHN0eWxlPSJzdG9wLWNvbG9yOiMwMDk1RDUiLz4NCgkJPHN0b3AgIG9mZnNldD0iMC40MTc4IiBzdHlsZT0ic3RvcC1jb2xvcjojM0M4M0RDIi8+DQoJCTxzdG9wICBvZmZzZXQ9IjAuNjk2MiIgc3R5bGU9InN0b3AtY29sb3I6IzZENzRFMSIvPg0KCQk8c3RvcCAgb2Zmc2V0PSIwLjgzMzMiIHN0eWxlPSJzdG9wLWNvbG9yOiM4MDZFRTMiLz4NCgk8L2xpbmVhckdyYWRpZW50Pg0KCTxwb2x5Z29uIHN0eWxlPSJmaWxsOnVybCgjU1ZHSURfMV8pOyIgcG9pbnRzPSIwLDAgMzAuMSwwIDAsMzIuNSAJIi8+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8yXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItMTAuMTAxNyIgeTE9IjUuODM2MiIgeDI9IjQ1LjczMTUiIHkyPSI2MS42Njk0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNjEpIj4NCgkJPHN0b3AgIG9mZnNldD0iMC4xMDc1IiBzdHlsZT0ic3RvcC1jb2xvcjojQzc1N0JDIi8+DQoJCTxzdG9wICBvZmZzZXQ9IjAuMjEzOCIgc3R5bGU9InN0b3AtY29sb3I6I0QwNjA5QSIvPg0KCQk8c3RvcCAgb2Zmc2V0PSIwLjQyNTQiIHN0eWxlPSJzdG9wLWNvbG9yOiNFMTcyNUMiLz4NCgkJPHN0b3AgIG9mZnNldD0iMC42MDQ4IiBzdHlsZT0ic3RvcC1jb2xvcjojRUU3RTJGIi8+DQoJCTxzdG9wICBvZmZzZXQ9IjAuNzQzIiBzdHlsZT0ic3RvcC1jb2xvcjojRjU4NjEzIi8+DQoJCTxzdG9wICBvZmZzZXQ9IjAuODIzMiIgc3R5bGU9InN0b3AtY29sb3I6I0Y4ODkwOSIvPg0KCTwvbGluZWFyR3JhZGllbnQ+DQoJPHBvbHlnb24gc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8yXyk7IiBwb2ludHM9IjMwLjEsMCAwLDMxLjcgMCw2MCAzMC4xLDI5LjkgNjAsMCAJIi8+DQo8L2c+DQo8L3N2Zz4='); - background-position: 17px 80%; background-repeat: no-repeat; - background-size: 11px 11px; + background-size: 12px 12px; padding-left: 2.3em; } @@ -108,8 +108,9 @@ } .multi-language-selector .language-option { - background-color: white; - border: 1px solid #f7f7f8; + color: #ffc107; + border: 1px solid gray; + background: none; border-radius: 4px 4px 0 0; cursor: pointer; display: inline-block; @@ -122,16 +123,14 @@ text-align: center; filter: grayscale(1); -webkit-filter: grayscale(1); - opacity: 0.7; } .multi-language-selector .language-option.selected { - background-color: #f7f7f8; - color: #000000; + color: #ffc107; + border: 1px solid #ffc107; font-weight: bold; filter: none; -webkit-filter: none; - opacity: 1; } .multi-language-text.hidden, @@ -149,8 +148,8 @@ .copytoclipboard { font-family: "Open Sans"; cursor: pointer; - background-color: lightgray; - color: #000000; + border: 1px solid #ffc107; + border-top: none; float: right; padding: 10px 15px; font-size: 10px; @@ -159,3 +158,9 @@ border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; } + +.copytoclipboard:hover { + background: #ffc107; + color: #00758F; + font-weight: 600; +} diff --git a/docs/src/docs/asciidoc/css/page.css b/docs/src/docs/asciidoc/css/page.css new file mode 100644 index 000000000..09ac6205e --- /dev/null +++ b/docs/src/docs/asciidoc/css/page.css @@ -0,0 +1,76 @@ +body { + background: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.85)); + color: white; +} + +#grabbit-logo { + position: absolute; + right: 0; + top: 0; + width: 150px; +} + +#toc { + background: none !important; +} + +#toc > #toctitle { + color: #ffc107; +} + +#header > h1:first-child { + color: white; + font-weight: 600; +} + +#header>.details { + color: white; +} + +#preamble>.sectionbody>[class="paragraph"]:first-of-type p { + color: white; +} + +h2, h3, h4, .title { + color: #ffc107 !important; +} + +p { + color: white; +} + +a { + color: #00a8cd; +} + +a:hover { + color: #ffc107; +} + +.listingblock >.content>pre:not(.highlight) { + color: white; + background: none; + border: 1px solid #ffc107; + border-radius: 4px; +} + +:not(pre):not([class^=L])>code { + background: #00758F; + color: white; +} + +.admonitionblock td.icon .icon-tip::before { + color: white; +} + +.admonitionblock td.icon .icon-note::before { + color: white; +} + +.admonitionblock>table td.content { + color: white; +} + +#footer { + background: rgba(0, 0, 0, 0.2); +} diff --git a/docs/src/docs/asciidoc/docinfo-footer.html b/docs/src/docs/asciidoc/docinfo-footer.html index 03dc4635a..bde51b7e7 100644 --- a/docs/src/docs/asciidoc/docinfo-footer.html +++ b/docs/src/docs/asciidoc/docinfo-footer.html @@ -1,5 +1,5 @@ - +