Remove workspace-based dependencies and ensure RJE works with Bazel 9 (#1536)

diff --git a/.bazelci/examples.yml b/.bazelci/examples.yml
index 638d133..4749b97 100644
--- a/.bazelci/examples.yml
+++ b/.bazelci/examples.yml
@@ -2,13 +2,13 @@
 tasks:
   android-kotlin-linux:
     name: "Android Kotlin example"
-    platform: ubuntu1804
+    platform: ubuntu2404
     working_directory: examples/android_kotlin_app
     build_targets:
       - "//:app"
   android-kotlin-macos:
     name: "Android Kotlin example"
-    platform: macos
+    platform: macos_arm64
     working_directory: examples/android_kotlin_app
     build_targets:
       - "//:app"
@@ -20,49 +20,34 @@
       - "//:app"
   android-local-test-linux:
     name: "Android Robolectric test example"
-    platform: ubuntu1804
+    platform: ubuntu2404
     working_directory: examples/android_local_test
     test_targets:
       - "//..."
   android-local-test-macos:
     name: "Android Robolectric test example"
-    platform: macos
+    platform: macos_arm64
     working_directory: examples/android_local_test
     test_targets:
       - "//..."
-  android-local-test-windows:
-    name: "Android Robolectric test example"
-    platform: windows
-    working_directory: examples/android_local_test
-    build_targets:
-      - "//..."
-  bzlmod-linux:
-    name: "bzlmod example"
-    platform: ubuntu1804
-    working_directory: examples/bzlmod
-    build_targets:
-      - "//..."
-  bzlmod-macos:
-    name: "bzlmod example"
-    platform: macos
-    working_directory: examples/bzlmod
-    build_targets:
-      - "//..."
-  bzlmod-windows:
-    name: "bzlmod example"
-    platform: windows
-    working_directory: examples/bzlmod
-    build_targets:
-      - "//..."
+  # The AddToZip action in rules_android's android_local_test uses a
+  # bash script that fails to resolve zip.exe through runfiles on
+  # Windows. Re-enable once rules_android fixes this.
+  #  android-local-test-windows:
+  #    name: "Android Robolectric test example"
+  #    platform: windows
+  #    working_directory: examples/android_local_test
+  #    build_targets:
+  #      - "//..."
   java-export-linux:
     name: "java-export example"
-    platform: ubuntu1804
+    platform: ubuntu2204
     working_directory: examples/java-export
     build_targets:
       - "//..."
   java-export-macos:
     name: "java-export example"
-    platform: macos
+    platform: macos_arm64
     working_directory: examples/java-export
     build_targets:
       - "//..."
@@ -74,31 +59,28 @@
       - "//..."
   kotlin-android-local-test-linux:
     name: "Kotlin Android Robolectric test example"
-    platform: ubuntu1804
+    platform: ubuntu2404
     working_directory: examples/kt_android_local_test
     test_targets:
       - "//..."
-  #  kotlin-android-local-test-macos:
+  # The AddToZip action in rules_android's android_local_test uses a
+  # bash script that fails to resolve zip.exe through runfiles on
+  # Windows. Re-enable once rules_android fixes this.
+  #  kotlin-android-local-test-windows:
   #    name: "Kotlin Android Robolectric test example"
-  #    platform: macos
+  #    platform: windows
   #    working_directory: examples/kt_android_local_test
-  #    test_targets:
+  #    build_targets:
   #      - "//..."
-  kotlin-android-local-test-windows:
-    name: "Kotlin Android Robolectric test example"
-    platform: windows
-    working_directory: examples/kt_android_local_test
-    build_targets:
-      - "//..."
   kotlin-jvm-export-linux:
     name: "kt_jvm_export example"
-    platform: ubuntu1804
+    platform: ubuntu2404
     working_directory: examples/kt_jvm_export
     build_targets:
       - "//..."
   kotlin-jvm-export-macos:
     name: "kt_jvm_export example"
-    platform: macos
+    platform: macos_arm64
     working_directory: examples/kt_jvm_export
     build_targets:
       - "//..."
@@ -112,13 +94,13 @@
   #      - "//..."
   pom-file-generation-linux:
     name: "POM file generation example"
-    platform: ubuntu1804
+    platform: ubuntu2404
     working_directory: examples/pom_file_generation
     build_targets:
       - "//..."
   pom-file-generation-macos:
     name: "POM file generation example"
-    platform: macos
+    platform: macos_arm64
     working_directory: examples/pom_file_generation
     build_targets:
       - "//..."
@@ -130,13 +112,13 @@
       - "//..."
   protobuf-java-linux:
     name: "Protobuf Java example"
-    platform: ubuntu1804
+    platform: ubuntu2404
     working_directory: examples/protobuf-java
     test_targets:
       - "//..."
   protobuf-java-macos:
     name: "Protobuf Java example"
-    platform: macos
+    platform: macos_arm64
     working_directory: examples/protobuf-java
     test_targets:
       - "//..."
@@ -150,7 +132,7 @@
       - "//..."
   scala-akka-linux:
     name: "Scala example"
-    platform: ubuntu1804
+    platform: ubuntu2404
     working_directory: examples/scala_akka
     build_targets:
       - "//..."
@@ -158,7 +140,7 @@
       - "//..."
   scala-akka-macos:
     name: "Scala example"
-    platform: macos
+    platform: macos_arm64
     working_directory: examples/scala_akka
     build_targets:
       - "//..."
@@ -175,7 +157,7 @@
     # - "//..."
   simple-linux:
     name: "Simple example"
-    platform: ubuntu1804
+    platform: ubuntu2404
     working_directory: examples/simple
     shell_command:
       - "bazel run @maven//:pin"
@@ -183,7 +165,7 @@
       - "//..."
   simple-macos:
     name: "Simple example"
-    platform: macos
+    platform: macos_arm64
     working_directory: examples/simple
     shell_command:
       - "bazel run @maven//:pin"
@@ -197,7 +179,7 @@
       - "//..."
   spring-boot-linux:
     name: "Spring boot example"
-    platform: ubuntu1804
+    platform: ubuntu2404
     working_directory: examples/spring_boot
     build_targets:
       - "//..."
@@ -205,7 +187,7 @@
       - "//..."
   spring-boot-macos:
     name: "Spring boot example"
-    platform: macos
+    platform: macos_arm64
     working_directory: examples/spring_boot
     build_targets:
       - "//..."
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index 8bf6402..4586dc6 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -2,11 +2,32 @@
 tasks:
   prebuilt_jars_up_to_date:
     name: Prebuilt JARs are up to date
-    platform: ubuntu2204
+    platform: ubuntu2404
     shell_commands:
       - bazel run //scripts:refresh-prebuilts
       - git diff --exit-code
-  ubuntu2204:
+  ubuntu2204_7_x:
+    name: Bazel 7.x tests
+    platform: ubuntu2404
+    bazel: 7.x
+    environment:
+      REPIN: 1
+    build_targets:
+      - "//..."
+    shell_commands:
+      - bazel run @regression_testing_coursier//:pin
+      - bazel run @regression_testing_gradle//:pin
+      - bazel run @regression_testing_maven//:pin
+      - bazel run @maven_install_in_custom_location//:pin
+      - bazel run @same_override_target//:pin
+      - tests/bazel_run_tests.sh
+    test_targets:
+      - "--"
+      - "//..."
+  ubuntu2204_8_x:
+    name: Bazel 8.x tests
+    platform: ubuntu2404
+    bazel: 8.x
     environment:
       # This tests custom cache locations.
       # https://github.com/bazelbuild/rules_jvm_external/pull/316
@@ -24,29 +45,17 @@
     test_targets:
       - "--"
       - "//..."
-  ubuntu2204_7_x:
-    platform: ubuntu2204
-    bazel: 7.x
-    environment:
-      REPIN: 1
-    shell_commands:
-      - bazel run @regression_testing_coursier//:pin
-      - bazel run @regression_testing_gradle//:pin
-      - bazel run @regression_testing_maven//:pin
-      - bazel run @maven_install_in_custom_location//:pin
-      - bazel run @same_override_target//:pin
-      - tests/bazel_run_tests.sh
-    test_targets:
-      - "--"
-      - "//..."
-  ubuntu2204_8_x:
-    platform: ubuntu2204
-    bazel: 8.x
+  ubuntu2204_9_x:
+    name: Bazel 9.x tests
+    platform: ubuntu2404
+    bazel: 9.x
     environment:
       # This tests custom cache locations.
       # https://github.com/bazelbuild/rules_jvm_external/pull/316
       COURSIER_CACHE: /tmp/custom_coursier_cache
       REPIN: 1
+    build_targets:
+      - "//..."
     shell_commands:
       - bazel run @regression_testing_coursier//:pin
       - bazel run @regression_testing_gradle//:pin
@@ -57,7 +66,10 @@
     test_targets:
       - "--"
       - "//..."
-  macos:
+  macos_9_x:
+    name: Bazel 9.x on macOS
+    platform: macos_arm64
+    bazel: 9.x
     environment:
       # This tests custom cache locations.
       # https://github.com/bazelbuild/rules_jvm_external/pull/316
@@ -72,8 +84,10 @@
       - tests/bazel_run_tests.sh
     test_targets:
       - "//..."
-      # manual tests
-  windows:
+  windows_9_x:
+    name: Bazel 9.x on Windows
+    platform: windows
+    bazel: 9.x
     environment:
       # This tests custom cache locations.
       # https://github.com/bazelbuild/rules_jvm_external/pull/316
diff --git a/.bazelversion b/.bazelversion
index 18bb418..5942a0d 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-7.5.0
+7.7.1
diff --git a/MODULE.bazel b/MODULE.bazel
index afcb244..339f7f7 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -1,25 +1,28 @@
 module(
     name = "rules_jvm_external",
-    version = "6.10",
+    version = "7.0",
     bazel_compatibility = [">=7.0.0"],
 )
 
-bazel_dep(name = "rules_android", version = "0.6.6")
-bazel_dep(name = "bazel_features", version = "1.30.0")
-bazel_dep(name = "bazel_skylib", version = "1.7.1")
+bazel_dep(name = "rules_android", version = "0.7.1")
+bazel_dep(name = "bazel_features", version = "1.33.0")
+bazel_dep(name = "bazel_skylib", version = "1.8.1")
 bazel_dep(name = "package_metadata", version = "0.0.7")
-bazel_dep(name = "platforms", version = "0.0.11")
+bazel_dep(name = "platforms", version = "1.0.0")
 bazel_dep(name = "rules_license", version = "1.0.0")
-bazel_dep(name = "rules_java", version = "8.13.0")
-bazel_dep(name = "rules_kotlin", version = "2.1.3")
-bazel_dep(name = "rules_shell", version = "0.4.1")
+bazel_dep(name = "rules_java", version = "9.3.0")
+bazel_dep(name = "rules_kotlin", version = "2.2.2")
+bazel_dep(name = "rules_shell", version = "0.6.1")
 
 bazel_dep(name = "aspect_bazel_lib", version = "2.20.0", dev_dependency = True)
+bazel_dep(name = "protobuf", version = "33.4", dev_dependency = True)
 bazel_dep(name = "stardoc", version = "0.7.2", dev_dependency = True, repo_name = "io_bazel_stardoc")
 
-# Remove this once rules_android has rolled out official Bzlmod support
-remote_android_extensions = use_extension("@bazel_tools//tools/android:android_extensions.bzl", "remote_android_tools_extensions")
-use_repo(remote_android_extensions, "android_gmaven_r8", "android_tools")
+# Use compatibility_proxy for Bazel 7 compatibility with rules_java 9.x
+# For Bazel 8+, this uses rules_java implementations
+# For Bazel 7, this falls back to native Java rules
+compat_proxy = use_extension("@rules_java//java:rules_java_deps.bzl", "compatibility_proxy")
+use_repo(compat_proxy, "compatibility_proxy")
 
 maven = use_extension(":extensions.bzl", "maven")
 
@@ -29,8 +32,6 @@
 
 _GRADLE_VERSION = "8.13"
 
-# NOTE: Please keep any changes to this maven.install in sync with the
-# definition in repositories.bzl
 maven.install(
     name = "rules_jvm_external_deps",
     artifacts = [
@@ -80,11 +81,7 @@
     ],
     strict_visibility = True,
 )
-use_repo(
-    maven,
-    "rules_jvm_external_deps",
-    "unpinned_rules_jvm_external_deps",
-)
+use_repo(maven, "rules_jvm_external_deps")
 
 http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
 
@@ -143,19 +140,6 @@
 ############# Dev dependencies below here
 
 bazel_dep(
-    name = "protobuf",
-    # Note: In MODULE.bazel, we use a version >= 29.1 to avoid polluting the
-    # default maven repo name with protobuf's dependencies.
-    # https://github.com/protocolbuffers/protobuf/pull/19477
-    # However, in WORKSPACE, we use version 21.7 since version 27.2 doesn't work
-    # with Bazel 5.x.
-    # https://github.com/protocolbuffers/protobuf/commit/a80daa2a2caaaac9ebe9ae6bb1b639c2771c5c55
-    # This should be ok because we only use protobuf to pull in the google/protobuf/wrappers.proto
-    # for testing.
-    version = "31.1",
-    dev_dependency = True,
-)
-bazel_dep(
     name = "bzlmod_lock_files",
     version = "0.0.0",
     dev_dependency = True,
@@ -173,7 +157,7 @@
 dev_maven.install(
     artifacts = [
         "com.google.guava:guava:33.5.0-jre",
-        "com.google.protobuf:protobuf-java:4.31.0",
+        "com.google.protobuf:protobuf-java:4.33.4",
         "org.hamcrest:hamcrest-core:2.1",
         "io.netty:netty-tcnative-boringssl-static:2.0.61.Final",
     ],
@@ -306,6 +290,13 @@
         "https://repo1.maven.org/maven2",
         "https://maven.google.com",
     ],
+    # The TOML file includes AAR artifacts (e.g. play-services-tasks) which
+    # pull in transitive AAR deps like androidx.fragment:fragment. On Bazel 8+
+    # the native aar_import no longer exists so the Starlark version from
+    # rules_android is used automatically. On Bazel 7 we must opt in
+    # explicitly, otherwise the native aar_import requires an Android SDK
+    # toolchain that is not registered in this module.
+    use_starlark_android_rules = True,
 )
 dev_maven.from_toml(
     name = "from_files",
@@ -334,7 +325,7 @@
 dev_maven.install(
     name = "java_export_exclusion_testing",
     artifacts = [
-        "com.google.protobuf:protobuf-java:4.31.1",
+        "com.google.protobuf:protobuf-java:4.33.4",
     ],
     lock_file = "//tests/custom_maven_install:java_export_exclusion_testing_install.json",
 )
diff --git a/README.md b/README.md
index e100b11..6bdbb13 100644
--- a/README.md
+++ b/README.md
@@ -6,67 +6,9 @@
 Status](https://badge.buildkite.com/26d895f5525652e57915a607d0ecd3fc945c8280a0bdff83d9.svg?branch=master)](https://buildkite.com/bazel/rules-jvm-external)
 * Examples build: [![Build status](https://badge.buildkite.com/d1e93c6c5321c9f7d24c71d849f00542f4ac5c9eed763eca2d.svg)](https://buildkite.com/bazel/rules-jvm-external-examples)
 
-
-Table of Contents
-=================
-
-- [Features](#features)
-- [Examples](#examples)
-    - [Projects using rules_jvm_external](#projects-using-rules_jvm_external)
-- [Prerequisites](#prerequisites)
-- [Usage](#usage)
-    - [With bzlmod (Bazel 7 and above)](#with-bzlmod-bazel-7-and-above)
-    - [With WORKSPACE file (legacy)](#with-workspace-file-legacy)
-- [API Reference](#api-reference)
-- [Pinning artifacts and integration with Bazel's downloader](#pinning-artifacts-and-integration-with-bazels-downloader)
-    - [Updating `maven_install.json`](#updating-maven_installjson)
-    - [Requiring lock file repinning when the list of artifacts changes](#requiring-lock-file-repinning-when-the-list-of-artifacts-changes)
-    - [Custom location for `maven_install.json`](#custom-location-for-maven_installjson)
-    - [Multiple `maven_install.json` files](#multiple-maven_installjson-files)
-- [(Experimental) Support for Maven BOM files](#experimental-support-for-maven-bom-files)
-- [Generated targets](#generated-targets)
-- [Outdated artifacts](#outdated-artifacts)
-- [Advanced usage](#advanced-usage)
-    - [Fetch source JARs](#fetch-source-jars)
-    - [Checksum verification](#checksum-verification)
-    - [Using a custom Coursier download url](#using-a-custom-coursier-download-url)
-    - [`artifact` helper macro](#artifact-helper-macro)
-    - [`java_plugin_artifact` helper macro](#java_plugin_artifact-helper-macro)
-    - [Multiple `maven_install` declarations for isolated artifact version trees](#multiple-maven_install-declarations-for-isolated-artifact-version-trees)
-    - [Detailed dependency information specifications](#detailed-dependency-information-specifications)
-    - [Artifact exclusion](#artifact-exclusion)
-    - [Compile-only dependencies](#compile-only-dependencies)
-    - [Test-only dependencies](#test-only-dependencies)
-    - [Resolving user-specified and transitive dependency version conflicts](#resolving-user-specified-and-transitive-dependency-version-conflicts)
-    - [Overriding generated targets](#overriding-generated-targets)
-    - [Proxies](#proxies)
-    - [Repository aliases](#repository-aliases)
-    - [Repository remapping](#repository-remapping)
-    - [Hiding transitive dependencies](#hiding-transitive-dependencies)
-    - [Accessing transitive dependencies list](#accessing-transitive-dependencies-list)
-    - [Fetch and resolve timeout](#fetch-and-resolve-timeout)
-    - [Ignoring empty jars](#ignoring-empty-jars)
-    - [Duplicate artifact warning](#duplicate-artifact-warning)
-    - [Provide JVM options for artifact resolution](#provide-jvm-options-for-artifact-resolution)
-    - [Provide JVM options for Coursier with `COURSIER_OPTS`](#provide-jvm-options-for-coursier-with-coursier_opts)
-    - [Resolving issues with nonstandard system default JDKs](#resolving-issues-with-nonstandard-system-default-jdks)
-    - [Exporting and consuming artifacts from external repositories](#exporting-and-consuming-artifacts-from-external-repositories)
-    - [Publishing to External Repositories](#publishing-to-external-repositories)
-- [Configuring the dependency resolver](#configuring-the-dependency-resolver)
-    - [Common options](#common-options)
-    - [Configuring Coursier](#configuring-coursier)
-    - [Configuring Maven](#configuring-maven)
-- [IPv6 support](#ipv6-support)
-- [Developing this project](#developing-this-project)
-    - [Verbose / debug mode](#verbose--debug-mode)
-    - [Tests](#tests)
-    - [Installing the Android SDK on macOS](#installing-the-android-sdk-on-macos)
-    - [Generating documentation](#generating-documentation)
-
 ## Features
 
-* MODULE.bazel bzlmod configuration (Bazel 7 and above) 
-* WORKSPACE configuration
+* MODULE.bazel bzlmod configuration
 * Artifact version resolution with Coursier, Maven or Gradle
 * Import downloaded JAR, AAR, source JARs
 * Export built JARs to Maven repositories
@@ -88,64 +30,40 @@
 ### Projects using rules_jvm_external
 
 Find other GitHub projects using `rules_jvm_external`
-[with this search query](https://github.com/search?p=1&q=rules_jvm_external+filename%3A%2FWORKSPACE+filename%3A%5C.bzl&type=Code).
-
+[with this search query](https://github.com/search?q=rules_jvm_external+filename%3AMODULE.bazel&type=Code).
 
 ## Prerequisites
 
-* Bazel 6.4.0, up to the current LTS version.
-* Support for Bazel versions between `5.4` and `7.x` is only available on releases `6.x`.
+**Compatibility guideline:** This project aims to be backwards compatible with
+the (current LTS - 2) version. If the current LTS version is 9, then we aim to
+support versions 7, 8 and 9. 
+
+The project will only support the last release of non-LTS releases. That is, if
+the current LTS version is 9, then only Bazel 7.7.1 would be supported of the 7.x
+versions.
+
+* Support for Bazel versions between `7.x` and `9.x` is only available on releases `7.x`
+* Support for Bazel versions between `5.x` and `7.x` is only available on releases `6.x`.
 * Support for Bazel versions between `4.x` and `5.4` is only available on releases `5.x`.
 * Support for Bazel versions before `4.0.0` is only available on releases `4.2` or earlier.
 
-**Compatibility guideline:** This project aims to be backwards compatible with
-the (current LTS - 2) version. If the current LTS version is 8, then we aim to
-support versions 6, 7 and 8.
+## API Reference
+
+You can find the complete API reference for rules at [docs/api.md](docs/api.md) and for the
+bzlmod tag classes in [docs/bzlmod.md]
 
 ## Usage
 
-### With bzlmod (Bazel 7 and above)
+See [bzlmod.md](./docs/bzlmod.md) for complete usage instructions.
 
-If you are starting a new project, or your project is already using Bazel 7 and
-above, we recommend using [`bzlmod`](https://bazel.build/external/overview) to
-manage your external dependencies, including Maven dependencies with
-`rules_jvm_external`. It address several shortcomings of the `WORKSPACE`
-mechanism. If you are unable to use `bzlmod`, `rules_jvm_external` also supports
-the `WORKSPACE` mechanism (see below).
+```starlark
+# MODULE.bazel
 
-See [bzlmod.md](./docs/bzlmod.md) for the usage instructions. bzlmod is
-on-by-default in Bazel 7.0.
+bazel_dep(name = "rules_jvm_external", version = "7.0.0")
 
-### With WORKSPACE file (legacy)
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
 
-NOTE: WORKSPACE support is disabled by default in Bazel 8.0, and will be removed in Bazel 9.0.
-
-List the top-level Maven artifacts and servers in the WORKSPACE:
-
-```python
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-RULES_JVM_EXTERNAL_TAG = "4.5"
-RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6"
-
-http_archive(
-    name = "rules_jvm_external",
-    strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
-    sha256 = RULES_JVM_EXTERNAL_SHA,
-    url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,
-)
-
-load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
-
-rules_jvm_external_deps()
-
-load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
-
-load("@rules_jvm_external//:defs.bzl", "maven_install")
-
-maven_install(
+maven.install(
     artifacts = [
         "junit:junit:4.12",
         "androidx.test.espresso:espresso-core:3.1.1",
@@ -157,40 +75,33 @@
         "https://maven.google.com",
         "https://repo1.maven.org/maven2",
     ],
+    lock_file = "//:maven_install.json",
 )
 ```
 
 Credentials for private repositories can also be specified using a property file
 or environment variables. See the [Coursier
 documentation](https://get-coursier.io/docs/other-credentials.html#property-file)
-for more information.
+for more information. You may also use a `.netrc` file.
 
-`rules_jvm_external_deps` uses a default list of maven repositories to download
- `rules_jvm_external`'s own dependencies from. Should you wish to change this,
- use the `repositories` parameter, and also set the path to the lock file:
+### Pinning and lock files
 
- ```python
-rules_jvm_external_deps(
-    repositories = ["https://mycorp.com/artifacts"],
-    deps_lock_file = "@//:rules_jvm_external_deps_install.json")
-rules_jvm_external_setup()
-```
+In order to support repeatable builds, and to avoid projects needing to perform
+their own dependency resolution at build time, it is strongly recommend that
+projects "pin" their dependencies. This is a three step process:
 
-If you are using `bzlmod`, define an `install` tag in your root
-`MODULE.bazel` which overrides the values:
+1. Add a `lock_file` attribute to the `install` tag. The lock file is traditionally
+   called `maven_install.json`.
+2. `touch maven_install.json BUILD.bazel` The lock file must exist before pinning
+   but may be empty. It must also be a valid target. This command creates both of
+   the required files.
+3. `REPIN=1 bazel run @maven//:pin` This will generate the lock file.
 
-```python
-maven.install(
-    name = "rules_jvm_external_deps",
-    repositories = ["https://mycorp.com/artifacts"],
-    lock_file = "//:rules_jvm_external_deps_install.json",
-)
-```
+You may now add the build and lock file to source control.
 
-Once these changes have been made, repin using `REPIN=1 bazel run
-@rules_jvm_external_deps//:pin` and commit the file to your version
-control system (note that at this point you will need to maintain your
-customized `rules_jvm_external_deps_install.json`):
+Subsequent repins are required every time you modify the artifacts or BOMs in
+used in the dependency resolution. `rules_jvm_external` will fail the build and
+notify you if a repin is ever required.
 
 Next, reference the artifacts in the BUILD file with their versionless label:
 
@@ -218,10 +129,6 @@
 * Only the group and artifact IDs are required.
 * The target is located in the `@maven` top level package (`@maven//`).
 
-## API Reference
-
-You can find the complete API reference at [docs/api.md](docs/api.md).
-
 ## Pinning artifacts and integration with Bazel's downloader
 
 `rules_jvm_external` supports pinning artifacts and their SHA-256 checksums into
@@ -256,29 +163,15 @@
 $ bazel run @maven//:pin
 ```
 
-Then, specify `maven_install_json` in `maven_install` and load
-`pinned_maven_install` from `@maven//:defs.bzl`:
+Then, specify `lock_file` in your `maven.install` in `MODULE.bazel`:
 
-```python
-maven_install(
+```starlark
+maven.install(
     # artifacts, repositories, ...
-    maven_install_json = "//:maven_install.json",
+    lock_file = "//:maven_install.json",
 )
-
-load("@maven//:defs.bzl", "pinned_maven_install")
-pinned_maven_install()
 ```
 
-**Note:** The `//:maven_install.json` label assumes you have a BUILD file in
-your project's root directory. If you do not have one, create an empty BUILD
-file to fix issues you may see. See
-[#242](https://github.com/bazelbuild/rules_jvm_external/issues/242)
-
-**Note:** If you're using an older version of `rules_jvm_external` and
-haven't repinned your dependencies, you may see a warning that you lock
-file "does not contain a signature of the required artifacts" then don't
-worry: either ignore the warning or repin the dependencies.
-
 ### Updating `maven_install.json`
 
 Whenever you make a change to the list of `artifacts` or `repositories` and want
@@ -289,14 +182,14 @@
 $ REPIN=1 bazel run @maven//:pin
 ```
 
-Without re-pinning, `maven_install` will not pick up the changes made to the
-WORKSPACE, as `maven_install.json` is now the source of truth.
+Without re-pinning, `maven_install` will not pick up the changes made to
+`MODULE.bazel`, as `maven_install.json` is now the source of truth.
 
 ### Requiring lock file repinning when the list of artifacts changes
 
 It can be easy to forget to update the `maven_install.json` lock file
 when updating artifacts in a `maven_install`. Normally,
-rules_jvm_external will print a warning to the console and continue
+`rules_jvm_external` will print a warning to the console and continue
 the build when this happens, but by setting the
 `fail_if_repin_required` attribute to `True`, this will be treated as
 a build error, causing the build to fail. When this attribute is set,
@@ -311,57 +204,58 @@
 ```
 
 Alternatively, it is also possible to modify the
-`fail_if_repin_required` attribute in your `WORKSPACE` file, run
+`fail_if_repin_required` attribute in your `MODULE.bazel` file, run
 `bazel run @maven//:pin` and then reset the
 `fail_if_repin_required` attribute.
 
 ### Custom location for `maven_install.json`
 
 You can specify a custom location for `maven_install.json` by changing the
-`maven_install_json` attribute value to point to the new file label. For example:
+`lock_file` attribute value to point to the new file label. For example:
 
-```python
-maven_install(
+```starlark
+maven.install(
     name = "maven_install_in_custom_location",
     artifacts = ["com.google.guava:guava:27.0-jre"],
     repositories = ["https://repo1.maven.org/maven2"],
-    maven_install_json = "@rules_jvm_external//tests/custom_maven_install:maven_install.json",
+    lock_file = "//tests/custom_maven_install:maven_install.json",
 )
-
-load("@maven_install_in_custom_location//:defs.bzl", "pinned_maven_install")
-pinned_maven_install()
 ```
 
+**Note:** The `//:maven_install.json` label assumes you have a BUILD file in
+your project's root directory. If you do not have one, create an empty BUILD
+file to fix issues you may see. See
+[#242](https://github.com/bazelbuild/rules_jvm_external/issues/242)
+
+**Note:** If you're using an older version of `rules_jvm_external` and
+haven't repinned your dependencies, you may see a warning that you lock
+file "does not contain a signature of the required artifacts" then don't
+worry: either ignore the warning or repin the dependencies.
+
 Future artifact pinning updates to `maven_install.json` will overwrite the file
 at the specified path instead of creating a new one at the default root
 directory location.
 
 ### Multiple `maven_install.json` files
 
-If you have multiple `maven_install` declarations, you have to alias
-`pinned_maven_install` to another name to prevent redefinitions:
+If you have multiple `maven.install` declarations, each should have a unique
+`name` and its own `lock_file`:
 
-```python
-maven_install(
+```starlark
+maven.install(
     name = "foo",
-    maven_install_json = "//:foo_maven_install.json",
+    lock_file = "//:foo_maven_install.json",
     # ...
 )
 
-load("@foo//:defs.bzl", foo_pinned_maven_install = "pinned_maven_install")
-foo_pinned_maven_install()
-
-maven_install(
+maven.install(
     name = "bar",
-    maven_install_json = "//:bar_maven_install.json",
+    lock_file = "//:bar_maven_install.json",
     # ...
 )
-
-load("@bar//:defs.bzl", bar_pinned_maven_install = "pinned_maven_install")
-bar_pinned_maven_install()
 ```
 
-## (Experimental) Support for Maven BOM files
+## Support for Maven BOM files
 
 Maven BOMs can be used by using the `boms` attribute, for example:
 
@@ -411,7 +305,8 @@
 
 **Transitive classes**: To use a class from `hamcrest-core` in your test, it's not sufficient to just
 depend on `@maven//:junit_junit` even though JUnit depends on Hamcrest. The compile classes are not exported
-transitively, so your test should also depend on `@maven//:org_hamcrest_hamcrest_core`.
+transitively, so your test should also depend on `@maven//:org_hamcrest_hamcrest_core`. However
+it is recommended that you add first-order dependencies directly to your build files.
 
 **Original coordinates**: The generated `tags` attribute value also contains the original coordinates of
 the artifact, which integrates with rules like [bazel-common's
@@ -427,6 +322,8 @@
 $ bazel run @maven//:outdated
 ```
 
+This will list the coordinates of every dependency that might need to be updated in your repo.
+
 ## Advanced usage
 
 ### Fetch source JARs
@@ -532,33 +429,27 @@
 
 ### Multiple `maven_install` declarations for isolated artifact version trees
 
-If your WORKSPACE contains several projects that use different versions of the
-same artifact, you can specify multiple `maven_install` declarations in the
-WORKSPACE, with a unique repository name for each of them.
+If your project has several components that use different versions of the
+same artifact, you can specify multiple `maven.install` declarations in
+`MODULE.bazel`, with a unique repository name for each of them.
 
 For example, if you want to use the JRE version of Guava for a server app, and
-the Android version for an Android app, you can specify two `maven_install`
+the Android version for an Android app, you can specify two `maven.install`
 declarations:
 
-```python
-maven_install(
+```starlark
+maven.install(
     name = "server_app",
     artifacts = [
         "com.google.guava:guava:27.0-jre",
     ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
 )
 
-maven_install(
+maven.install(
     name = "android_app",
     artifacts = [
         "com.google.guava:guava:27.0-android",
     ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
 )
 ```
 
@@ -599,41 +490,32 @@
 containing all of the required information. This map can express more
 information than the coordinate strings can, so internally the coordinate
 strings are parsed into the artifact map with default values for the additional
-items. To assist in generating the maps, you can pull in the file `specs.bzl`
-alongside `defs.bzl` and import the `maven` struct, which provides several
-helper functions to assist in creating these maps. An example:
+items. To assist in generating the maps, you can use either the `artifact` or
+`amend_artifact` tags. An example:
 
 ```python
-load("@rules_jvm_external//:defs.bzl", "artifact")
-load("@rules_jvm_external//:specs.bzl", "maven")
-
-maven_install(
+maven.install(
     artifacts = [
-        maven.artifact(
-            group = "com.google.guava",
-            artifact = "guava",
-            version = "27.0-android",
-            exclusions = [
-                ...
-            ]
-        ),
         "junit:junit:4.12",
-        ...
     ],
-    repositories = [
-        maven.repository(
-            "https://some.private.maven.re/po",
-            user = "johndoe",
-            password = "example-password"
-        ),
-        "https://repo1.maven.org/maven2",
+)
+
+maven.artifact(
+    group = "com.google.guava",
+    artifact = "guava",
+    version = "27.0-android",
+    exclusions = [
         ...
-    ],
+    ]
+)
+
+maven.amend_artifact(
+    coordinates = "junit:junit",
+    testonly = "true",
 )
 ```
 
-Note [when using `bzlmod`](docs/bzlmod.md) the syntax in `MODULE.bazel` is
-different than shown above.
+See [bzlmod.md](docs/bzlmod.md) for more details.
 
 ### Artifact exclusion
 
@@ -641,46 +523,27 @@
 artifact, specify its `group-id:artifact-id` in the `exclusions` attribute of
 the `maven.artifact` helper:
 
-```python
-load("@rules_jvm_external//:specs.bzl", "maven")
-
-maven_install(
-    artifacts = [
-        maven.artifact(
-            group = "com.google.guava",
-            artifact = "guava",
-            version = "27.0-jre",
-            exclusions = [
-                maven.exclusion(
-                    group = "org.codehaus.mojo",
-                    artifact = "animal-sniffer-annotations"
-                ),
-                "com.google.j2objc:j2objc-annotations",
-            ]
-        ),
-        # ...
-    ],
-    repositories = [
-        # ...
+```starlark
+maven.artifact(
+    group = "com.google.guava",
+    artifact = "guava",
+    version = "27.0-jre",
+    exclusions = [
+        "org.codehaus.mojo:animal-sniffer-annotations",
+        "com.google.j2objc:j2objc-annotations",
     ],
 )
 ```
 
-You can specify the exclusion using either the `maven.exclusion` helper or the
-`group-id:artifact-id` string directly.
-
 You can also exclude artifacts globally using the `excluded_artifacts`
-attribute in `maven_install`:
+attribute in the `install` tag:
 
 
 ```python
-maven_install(
+maven.install(
     artifacts = [
         # ...
     ],
-    repositories = [
-        # ...
-    ],
     excluded_artifacts = [
         "com.google.guava:guava",
     ],
@@ -690,17 +553,13 @@
 ### Compile-only dependencies
 
 If you want to mark certain artifacts as compile-only dependencies, use the
-`neverlink` attribute in the `maven.artifact` helper:
+`neverlink` attribute in the `artifact` or `amend_artifact` tag:
 
-```python
-load("@rules_jvm_external//:specs.bzl", "maven")
-
-maven_install(
-    artifacts = [
-        maven.artifact("com.squareup", "javapoet", "1.11.0", neverlink = True),
-    ],
-    # ...
-)
+```starlark
+maven.amend_artifact(
+    coordinates = "com.squareup:javapoet",
+    neverlink = "true",
+)    
 ```
 
 This instructs `rules_jvm_external` to mark the generated target for
@@ -710,21 +569,17 @@
 ### Test-only dependencies
 
 If you want to mark certain artifacts as test-only dependencies, use the
-`testonly` attribute in the `maven.artifact` helper:
+`testonly` attribute in the `artifact` or `amend_artifact` tag:
 
-```python
-load("@rules_jvm_external//:specs.bzl", "maven")
-
-maven_install(
-    artifacts = [
-        maven.artifact("junit", "junit", "4.13", testonly = True),
-    ],
-    # ...
+```starlark
+maven.amend_artifact(
+    coordinates = "junit:junit",
+    testonly = "true",
 )
 ```
 
 This instructs `rules_jvm_external` to mark the generated target for
-`junit:Junit` with the `testonly = True` attribute, making the
+`junit:junit` with the `testonly = True` attribute, making the
 artifact available only for tests (e.g. `java_test`), or targets specifically
 marked as `testonly = True`.
 
@@ -744,15 +599,12 @@
 For example, pulling in guava transitively via google-cloud-storage resolves to
 guava-26.0-android.
 
-```python
-maven_install(
+```starlark
+maven.install(
     name = "pinning",
     artifacts = [
         "com.google.cloud:google-cloud-storage:1.66.0",
     ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ]
 )
 ```
 
@@ -764,16 +616,13 @@
 
 Pulling in guava-27.0-android directly works as expected.
 
-```python
-maven_install(
+```starlark
+maven.install(
     name = "pinning",
     artifacts = [
         "com.google.cloud:google-cloud-storage:1.66.0",
         "com.google.guava:guava:27.0-android",
     ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ]
 )
 ```
 
@@ -785,16 +634,13 @@
 
 Pulling in guava-25.0-android (a lower version), resolves to guava-26.0-android. This is the default version conflict policy in action, where artifacts are resolved to the highest version.
 
-```python
-maven_install(
+```starlark
+maven.install(
     name = "pinning",
     artifacts = [
         "com.google.cloud:google-cloud-storage:1.66.0",
         "com.google.guava:guava:25.0-android",
     ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ]
 )
 ```
 
@@ -806,16 +652,13 @@
 
 Now, if we add `version_conflict_policy = "pinned"`, we should see guava-25.0-android getting pulled instead. The rest of non-specified artifacts still resolve to the highest version in the case of version conflicts.
 
-```python
-maven_install(
+```starlark
+maven.install(
     name = "pinning",
     artifacts = [
         "com.google.cloud:google-cloud-storage:1.66.0",
         "com.google.guava:guava:25.0-android",
     ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ]
     version_conflict_policy = "pinned",
 )
 ```
@@ -829,26 +672,24 @@
 There may be cases where you want the `default` pinning strategy, but
 want one specific dependency to be pinned, no matter what. In these
 cases, you can use the `force_version` attribute on the
-`maven.artifact` helper to ensure this happens.
+`artifact` or `amend_artifact` helper to ensure this happens.
 
 ```starlark
-maven_install(
+maven.install(
     name = "forcing_versions",
     artifacts = [
-        # Specify an ancient version of guava, and force its use. If we try to use `[23.3-jre]` as the version,
-        # the resolution will fail when using `coursier`
-        maven.artifact(
-            artifact = "guava",
-            force_version = True,
-            group = "com.google.guava",
-            version = "23.3-jre",
-        ),
         # And something that depends on a more recent version of guava
         "xyz.rogfam:littleproxy:2.1.0",
     ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
+)
+
+# Specify an ancient version of guava, and force its use. If we try to use `[23.3-jre]` as the version,
+# the resolution will fail when using `coursier`
+maven.artifact(
+    artifact = "guava",
+    force_version = "true",
+    group = "com.google.guava",
+    version = "23.3-jre",
 )
 ```
 
@@ -856,33 +697,15 @@
 
 ### Overriding generated targets
 
-When are using a WORKSPACE file you can override the generated targets for
-artifacts with a target label of your choice. For instance, if you want to
-provide your own definition of `@maven//:com_google_guava_guava` at
-`//third_party/guava:guava`, specify the mapping in the `override_targets`
-attribute:
+You can override the generated targets for artifacts with a target label of your
+choice. For instance, if you want to provide your own definition of
+`@maven//:com_google_guava_guava` at `//third_party/guava:guava`, use the
+`maven.override` tag:
 
-```python
-maven_install(
-    name = "pinning",
-    artifacts = [
-        "com.google.guava:guava:27.0-jre",
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-    override_targets = {
-        "com.google.guava:guava": "@//third_party/guava:guava",
-    },
-)
-```
-
-When you are using bzlmod you can override the generated target with
-```
+```starlark
 maven.override(
-    name = "maven",
     coordinates = "com.google.guava:guava",
-    target = "//third_party/guava:guava",
+    target = "@//third_party/guava:guava",
 )
 ```
 
@@ -910,7 +733,7 @@
 is different from the `@maven//:group_artifact` naming style used in this project.
 
 As some Bazel projects depend on the `@group_artifact//jar` style labels, we
-provide a `generate_compat_repositories` attribute in `maven_install`. If
+provide a `generate_compat_repositories` attribute in `maven.install`. If
 enabled, JAR artifacts can also be referenced using the `@group_artifact//jar`
 target label. For example, `@maven//:com_google_guava_guava` can also be
 referenced using `@com_google_guava_guava//jar`.
@@ -919,45 +742,18 @@
 `java_import_external` as `@group_artifact//:group_artifact` or
 `@group_artifact` for short.
 
-```python
-maven_install(
+```starlark
+maven.install(
     artifacts = [
         # ...
     ],
     repositories = [
         # ...
     ],
-    generate_compat_repositories = True
-)
-
-load("@maven//:compat.bzl", "compat_repositories")
-compat_repositories()
-```
-
-#### Repository remapping
-
-If the `maven_jar` or `jvm_import_external` is not named according to `rules_jvm_external`'s
-conventions, you can apply
-[repository remapping](https://docs.bazel.build/versions/master/external.html#shadowing-dependencies)
-from the expected name to the new name for compatibility.
-
-For example, if an external dependency uses `@guava//jar`, and `rules_jvm_external`
-generates `@com_google_guava_guava//jar`, apply the `repo_mapping` attribute to the external
-repository WORKSPACE rule, like `http_archive` in this example:
-
-```python
-http_archive(
-    name = "my_dep",
-    repo_mapping = {
-        "@guava": "@com_google_guava_guava",
-    }
-    # ...
+    generate_compat_repositories = True,
 )
 ```
 
-With `repo_mapping`, all references to `@guava//jar` in `@my_dep`'s BUILD files will be mapped
-to `@com_google_guava_guava//jar` instead.
-
 ### Hiding transitive dependencies
 
 As a convenience, transitive dependencies are visible to your build rules.
@@ -966,8 +762,8 @@
 graph.  To force rule authors to explicitly declare all directly referenced
 artifacts, use the `strict_visibility` attribute in `maven_install`:
 
-```python
-maven_install(
+```starlark
+maven.install(
     artifacts = [
         # ...
     ],
@@ -988,7 +784,7 @@
 versioned maven coordinate strings of all dependencies.
 
 For example:
-```python
+```starlark
 load("@maven//:defs.bzl", "maven_artifacts")
 
 load("@rules_jvm_external//:defs.bzl", "artifact")
@@ -1009,8 +805,8 @@
 to change this to resolve a large number of artifacts you can set the
 `resolve_timeout` attribute in `maven_install`:
 
-```python
-maven_install(
+```starlark
+maven.install(
     artifacts = [
         # ...
     ],
@@ -1028,8 +824,8 @@
 empty file) as if they were not found, you can set the `ignore_empty_files` attribute in `maven_install` to remove such
 artifacts from coursier's output:
 
-```python
-maven_install(
+```starlark
+maven.install(
     artifacts = [
         # ...
     ],
@@ -1048,14 +844,11 @@
 
 By default you will be warned if there are duplicate artifacts in your artifact list. The `duplicate_version_warning` setting can be used to change this behavior. Use "none" to disable the warning and "error" to fail the build instead of warn.
 
-```python
-maven_install(
+```starlark
+maven.install(
     artifacts = [
         # ...
     ],
-    repositories = [
-        # ...
-    ],
     duplicate_version_warning = "error"
 )
 ```
@@ -1064,7 +857,7 @@
 
 You can set the `JDK_JAVA_OPTIONS` environment variable to provide additional JVM options to the artifact resolver.
 
-```python
+```bash
 build --repo_env=JDK_JAVA_OPTIONS=-Djavax.net.ssl.trustStore=<path-to-cacerts>
 ```
 can be added to your .bazelrc file if you need to specify custom cacerts for artifact resolution.
@@ -1123,59 +916,15 @@
   ...
 ```
 
-## Exporting and consuming artifacts from external repositories
+## Exporting and consuming artifacts from non-root modules
 
-If you're writing a library that has dependencies, you should define a constant that
-lists all of the artifacts that your library requires. For example:
+With bzlmod, dependencies from `bazel_dep` modules can be automatically
+merged. This allows non-root modules to contribute to the dependency
+resolution of the root module. The project calls this "module dependency
+layering".
 
-```python
-# my_library/BUILD
-# Public interface of the library
-java_library(
-  name = "my_interface",
-  deps = [
-    "@maven//:junit_junit",
-    "@maven//:com_google_inject_guice",
-  ],
-)
-```
-
-```python
-# my_library/library_deps.bzl
-# All artifacts required by the library
-MY_LIBRARY_ARTIFACTS = [
-  "junit:junit:4.12",
-  "com.google.inject:guice:4.0",
-]
-```
-
-Users of your library can then load the constant in their `WORKSPACE` and add the
-artifacts to their `maven_install`. For example:
-
-```python
-# user_project/WORKSPACE
-load("@my_library//:library_deps.bzl", "MY_LIBRARY_ARTIFACTS")
-
-maven_install(
-  artifacts = [
-        "junit:junit:4.11",
-        "com.google.guava:guava:26.0-jre",
-  ] + MY_LIBRARY_ARTIFACTS,
-)
-```
-
-```python
-# user_project/BUILD
-java_library(
-  name = "user_lib",
-  deps = [
-    "@my_library//:my_interface",
-    "@maven//:junit_junit",
-  ],
-)
-```
-
-Any version conflicts or duplicate artifacts will resolved automatically.
+See [bzlmod.md](./docs/bzlmod.md) for details on module dependency
+layering.
 
 ## Publishing to External Repositories
 
@@ -1217,7 +966,9 @@
 
 In order to publish the artifact, use `bazel run`:
 
-`bazel run --define "maven_repo=file://$HOME/.m2/repository" //user_project:exported_lib.publish`
+```bash
+bazel run --define "maven_repo=file://$HOME/.m2/repository" //user_project:exported_lib.publish
+```
 
 Or, to publish to (eg) Sonatype's OSS repo:
 
@@ -1256,6 +1007,7 @@
 | Environment variable | Meaning                                                           |
 |----------------------|-------------------------------------------------------------------|
 | `RJE_VERBOSE`        | When set to `1` extra diagnostic logging will be sent to `stderr` |
+| `RJE_MAX_THREADS`    | Integer giving the maximum number of threads to use <br/>for downloads. The default value is whichever is lower: the number of processors on the machine, or 5 |
 
 ### Configuring Coursier
 
@@ -1272,7 +1024,7 @@
 ### Configuring Maven
 
 A Maven-backed resolver can be used by using setting the `resolver`
-attribute of `maven_install` to `maven`. This resolver requires the use of a
+attribute of the `install` tag to `maven`. This resolver requires the use of a
 lock file. For bootstrapping purposes, this file may simply be an empty
 file. When using the maven-backed resolver, the following environment
 variables are honoured:
@@ -1280,7 +1032,6 @@
 | Environment variable | Meaning                                                                                                                                                        |
 |----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|
 | `RJE_ASSUME_PRESENT` | Prevents the resolver from checking remote repositories to see if a dependency is present, and just assumes it is                                              |
-| `RJE_MAX_THREADS`    | Integer giving the maximum number of threads to use <br/>for downloads. The default value is whichever is lower: the number of processors on the machine, or 5 |
 | `RJE_UNSAFE_CACHE`   | When set to `1` will use your `$HOME/.m2/repository` directory to speed up dependency resolution                                                               |
 
 Using the unsafe cache option will use your local `$HOME/.m2/repository` as
@@ -1299,6 +1050,11 @@
 use of a lock file. For bootstrapping purposes, this file may simply
 be an empty file.
 
+| Environment variable | Meaning                                                                                                          |
+|----------------------|------------------------------------------------------------------------------------------------------------------|
+| `RJE_ASSUME_PRESENT` | Prevents the resolver from checking remote repositories to see if a dependency is present, and just assumes it is |
+| `RJE_UNSAFE_CACHE`   | When set to `1` will use your `$HOME/.gradle` directory to speed up dependency resolution              |
+
 ## IPv6 support
 
 Certain IPv4/IPv6 dual-stack environments may require flags to override the default settings for downloading dependencies, for both Bazel's native downloader and Coursier as a downloader:
diff --git a/RELEASING.md b/RELEASING.md
index 5563fc2..54ca664 100644
--- a/RELEASING.md
+++ b/RELEASING.md
@@ -14,22 +14,17 @@
 
 ## Make sure all dependencies are up to date
 
-Open up `repositories.bzl` and make sure that our dependencies are the
-most recent versions. If they're not, create a PR to update them, and
-land the change.
+Check the `bazel_dep` entries and the `maven.install` (named
+`rules_jvm_external_deps`) in `MODULE.bazel` and make sure that our
+dependencies are the most recent versions. If they're not, create a
+PR to update them, and land the change.
 
 ## Update the `MODULE.bazel` file to reflect the latest changes
 
-There are three things you need to check
+Check that the `version` parameter in the `module` declaration is the
+same as the version number of the release you're about to push.
 
-1. The `version` parameter in the `module` declaration must be the
-   same as the version number of the release you're about to push.
-2. The `bazel_dep` entries must match the entries in
-   `repositories.bzl`
-3. The deps in the `maven.install` (named `rules_jvm_external_deps`)
-   must match the same deps from `repositories.bzl`
-
-You may well need to create a PR to update these too.
+You may well need to create a PR to update this too.
 
 ## Tag the release in `git` and push the tag
 
diff --git a/WORKSPACE b/WORKSPACE
deleted file mode 100644
index d1cda26..0000000
--- a/WORKSPACE
+++ /dev/null
@@ -1,1203 +0,0 @@
-workspace(name = "rules_jvm_external")
-
-android_sdk_repository(name = "androidsdk")
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
-load(
-    "//private:versions.bzl",
-    "COURSIER_CLI_GITHUB_ASSET_URL",
-    "COURSIER_CLI_SHA256",
-)
-
-http_file(
-    name = "coursier_cli",
-    sha256 = COURSIER_CLI_SHA256,
-    urls = [COURSIER_CLI_GITHUB_ASSET_URL],
-)
-
-load("//:repositories.bzl", "rules_jvm_external_deps")
-
-rules_jvm_external_deps()
-
-load("//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
-
-http_archive(
-    name = "rules_kotlin",
-    sha256 = "5766f1e599acf551aa56f49dab9ab9108269b03c557496c54acaf41f98e2b8d6",
-    url = "https://github.com/bazelbuild/rules_kotlin/releases/download/v1.9.0/rules_kotlin-v1.9.0.tar.gz",
-)
-
-load("@rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories")
-
-kotlin_repositories()
-
-load("@rules_kotlin//kotlin:core.bzl", "kt_register_toolchains")
-
-kt_register_toolchains()
-
-http_archive(
-    name = "io_bazel_stardoc",
-    sha256 = "3fd8fec4ddec3c670bd810904e2e33170bedfe12f90adf943508184be458c8bb",
-    urls = [
-        "https://mirror.bazel.build/github.com/bazelbuild/stardoc/releases/download/0.5.3/stardoc-0.5.3.tar.gz",
-        "https://github.com/bazelbuild/stardoc/releases/download/0.5.3/stardoc-0.5.3.tar.gz",
-    ],
-)
-
-load("@io_bazel_stardoc//:setup.bzl", "stardoc_repositories")
-
-stardoc_repositories()
-
-http_archive(
-    name = "rules_testing",
-    sha256 = "02c62574631876a4e3b02a1820cb51167bb9cdcdea2381b2fa9d9b8b11c407c4",
-    strip_prefix = "rules_testing-0.6.0",
-    url = "https://github.com/bazelbuild/rules_testing/releases/download/v0.6.0/rules_testing-v0.6.0.tar.gz",
-)
-
-http_archive(
-    name = "aspect_bazel_lib",
-    sha256 = "3522895fa13b97e8b27e3b642045682aa4233ae1a6b278aad6a3b483501dc9f2",
-    strip_prefix = "bazel-lib-2.20.0",
-    url = "https://github.com/bazel-contrib/bazel-lib/releases/download/v2.20.0/bazel-lib-v2.20.0.tar.gz",
-)
-
-load("@aspect_bazel_lib//lib:repositories.bzl", "aspect_bazel_lib_dependencies", "aspect_bazel_lib_register_toolchains")
-
-# Required bazel-lib dependencies
-
-aspect_bazel_lib_dependencies()
-
-# Required rules_shell dependencies
-load("@rules_shell//shell:repositories.bzl", "rules_shell_dependencies", "rules_shell_toolchains")
-
-rules_shell_dependencies()
-
-rules_shell_toolchains()
-
-# Register bazel-lib toolchains
-
-aspect_bazel_lib_register_toolchains()
-
-# Create the host platform repository transitively required by bazel-lib
-
-load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
-load("@platforms//host:extension.bzl", "host_platform_repo")
-
-maybe(
-    host_platform_repo,
-    name = "host_platform",
-)
-
-# Stardoc also depends on skydoc_repositories, rules_sass, rules_nodejs, but our
-# usage of Stardoc (scripts/generate_docs) doesn't require any of these
-# dependencies. So, we omit them to keep the WORKSPACE file simpler.
-# https://skydoc.bazel.build/docs/getting_started_stardoc.html
-
-# Required for buildifier (`//scripts:buildifier`)
-http_file(
-    name = "buildifier-linux-arm64",
-    sha256 = "c22a44eee37b8927167ee6ee67573303f4e31171e7ec3a8ea021a6a660040437",
-    urls = ["https://github.com/bazelbuild/buildtools/releases/download/v7.1.2/buildifier-linux-arm64"],
-)
-
-http_file(
-    name = "buildifier-linux-x86_64",
-    sha256 = "28285fe7e39ed23dc1a3a525dfcdccbc96c0034ff1d4277905d2672a71b38f13",
-    urls = ["https://github.com/bazelbuild/buildtools/releases/download/v7.1.2/buildifier-linux-amd64"],
-)
-
-http_file(
-    name = "buildifier-macos-arm64",
-    sha256 = "d0909b645496608fd6dfc67f95d9d3b01d90736d7b8c8ec41e802cb0b7ceae7c",
-    urls = ["https://github.com/bazelbuild/buildtools/releases/download/v7.1.2/buildifier-darwin-arm64"],
-)
-
-http_file(
-    name = "buildifier-macos-x86_64",
-    sha256 = "687c49c318fb655970cf716eed3c7bfc9caeea4f2931a2fd36593c458de0c537",
-    urls = ["https://github.com/bazelbuild/buildtools/releases/download/v7.1.2/buildifier-darwin-amd64"],
-)
-
-# Begin test dependencies
-
-load("//:defs.bzl", "maven_install")
-load("//:specs.bzl", "maven")
-
-maven_install(
-    artifacts = [
-        "com.google.guava:guava:31.1-jre",
-        "org.hamcrest:hamcrest-core:2.1",
-        "io.netty:netty-tcnative-boringssl-static:2.0.61.Final",
-    ],
-    maven_install_json = "@rules_jvm_external//:maven_coursier_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-    resolver = "coursier",
-)
-
-load("@maven//:defs.bzl", "pinned_maven_install")
-
-pinned_maven_install()
-
-maven_install(
-    name = "exclusion_testing",
-    artifacts = [
-        maven.artifact(
-            artifact = "guava",
-            exclusions = [
-                maven.exclusion(
-                    artifact = "animal-sniffer-annotations",
-                    group = "org.codehaus.mojo",
-                ),
-                "com.google.j2objc:j2objc-annotations",
-            ],
-            group = "com.google.guava",
-            version = "27.0-jre",
-        ),
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-maven_install(
-    name = "global_exclusion_testing",
-    artifacts = [
-        "com.google.guava:guava:27.0-jre",  # depends on animal-sniffer-annotations and j2objc-annotations
-        "com.squareup.okhttp3:okhttp:3.14.1",  # depends on animal-sniffer-annotations
-        "com.diffplug.durian:durian-core:1.2.0",  # depends on animal-sniffer-annotations and j2objc-annotations
-    ],
-    excluded_artifacts = [
-        maven.exclusion(
-            artifact = "animal-sniffer-annotations",
-            group = "org.codehaus.mojo",
-        ),
-        "com.google.j2objc:j2objc-annotations",
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-maven_install(
-    name = "manifest_stamp_testing",
-    artifacts = [
-        "com.google.guava:guava:27.0-jre",
-        "javax.inject:javax.inject:1",
-        "org.apache.beam:beam-sdks-java-core:2.15.0",
-        "org.bouncycastle:bcprov-jdk15on:1.64",
-    ],
-    maven_install_json = "//tests/custom_maven_install:manifest_stamp_testing_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@manifest_stamp_testing//:defs.bzl", "pinned_maven_install")
-
-pinned_maven_install()
-
-maven_install(
-    name = "multiple_lock_files",
-    artifacts = [
-        "org.zeromq:jeromq",
-        "redis.clients:jedis",
-    ],
-    maven_install_json = "//tests/custom_maven_install:multiple_lock_files_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@multiple_lock_files//:defs.bzl", _multiple_lock_files_pinned_maven_install = "pinned_maven_install")
-
-_multiple_lock_files_pinned_maven_install()
-
-maven_install(
-    name = "testing",
-    artifacts = [
-        "com.fasterxml.jackson:jackson-bom:2.9.10",
-        "com.github.fommil.netlib:all:1.1.2",
-    ],
-    maven_install_json = "@//:foo.json",
-    resolver = "maven",
-)
-
-# These artifacts helped discover limitations in the Coursier resolver. Each
-# artifact listed here *must have* an accompanying issue. We build_test these
-# targets to ensure that they remain supported by the rule.
-maven_install(
-    name = "regression_testing_coursier",
-    artifacts = [
-        # https://github.com/bazelbuild/rules_jvm_external/issues/74
-        "org.pantsbuild:jarjar:1.6.6",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/59
-        "junit:junit:4.12",
-        "org.jetbrains.kotlin:kotlin-test:1.3.21",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/101
-        # As referenced in the issue, daml is not available anymore, hence
-        # replacing with another artifact with a classifier.
-        "org.eclipse.jetty:jetty-http:jar:tests:9.4.20.v20190813",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/116
-        "org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/92#issuecomment-478430167
-        maven.artifact(
-            "com.squareup",
-            "javapoet",
-            "1.11.1",
-            neverlink = True,
-        ),
-        # https://github.com/bazelbuild/rules_jvm_external/issues/98
-        "com.github.fommil.netlib:all:1.1.2",
-        "nz.ac.waikato.cms.weka:weka-stable:3.8.1",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/111
-        "com.android.support:appcompat-v7:28.0.0@aar",
-        "com.google.android.gms:play-services-base:16.1.0",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/119#issuecomment-484278260
-        "org.apache.flink:flink-test-utils_2.12:1.8.0",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/170
-        "ch.epfl.scala:compiler-interface:1.3.0-M4+20-c8a2f9bd",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/172
-        "org.openjfx:javafx-base:11.0.1",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/178
-        "io.kubernetes:client-java:4.0.0-beta1",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/119#issuecomment-504704752
-        "com.github.oshi:oshi-parent:3.4.0",
-        "com.github.spinalhdl:spinalhdl-core_2.11:1.3.6",
-        "com.github.spinalhdl:spinalhdl-lib_2.11:1.3.6",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/201
-        "org.apache.kafka:kafka_2.11:2.1.1",
-        "io.confluent:kafka-avro-serializer:5.0.1",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/309
-        "io.quarkus.http:quarkus-http-servlet:3.0.0.Beta1",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/371
-        "com.fasterxml.jackson:jackson-bom:2.9.10",
-        "org.junit:junit-bom:5.3.1",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/686
-        "io.netty:netty-tcnative-boringssl-static:2.0.51.Final",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/852
-        maven.artifact(
-            artifact = "jaxb-ri",
-            exclusions = [
-                "com.sun.xml.bind:jaxb-samples",
-                "com.sun.xml.bind:jaxb-release-documentation",
-            ],
-            group = "com.sun.xml.bind",
-            version = "2.3.6",
-        ),
-        # https://github.com/bazelbuild/rules_jvm_external/issues/865
-        maven.artifact(
-            artifact = "google-api-services-compute",
-            classifier = "javadoc",
-            group = "com.google.apis",
-            version = "v1-rev235-1.25.0",
-        ),
-        # https://github.com/bazelbuild/rules_jvm_external/issues/907
-        # Any two platforms to ensure that it doesn't work _only_ under the host operating system
-        "com.google.protobuf:protoc:exe:linux-x86_64:3.21.12",
-        "com.google.protobuf:protoc:exe:osx-aarch_64:3.21.12",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/917
-        # androidx core-testing POM has "exclusion" for "byte-buddy" but it should be downloaded as mockito-core
-        # dependency when the usually omitted "jar" packaging type is specified.
-        "org.mockito:mockito-core:3.3.3@jar",
-        "androidx.arch.core:core-testing:2.1.0@aar",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/1028
-        "build.buf:protovalidate:0.1.9",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/1250
-        "com.github.spotbugs:spotbugs:4.7.0",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/1267
-        "org.mockito:mockito-core:3.3.3@pom",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/1345
-        maven.artifact(
-            artifact = "jffi",
-            classifier = "native",
-            group = "com.github.jnr",
-            version = "1.3.13",
-        ),
-    ],
-    generate_compat_repositories = True,
-    maven_install_json = "//tests/custom_maven_install:regression_testing_coursier_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-        "https://maven.google.com",
-        "https://packages.confluent.io/maven/",
-    ],
-)
-
-load("@regression_testing_coursier//:defs.bzl", "pinned_maven_install")
-
-pinned_maven_install()
-
-load("@regression_testing_coursier//:compat.bzl", "compat_repositories")
-
-compat_repositories()
-
-# These artifacts helped discover limitations in the Maven resolver. Each
-# artifact listed here *must have* an accompanying issue. We build_test these
-# targets to ensure that they remain supported by the rule.
-maven_install(
-    name = "regression_testing_maven",
-    artifacts = [
-        # Depends on org.apache.yetus:audience-annotations:0.11.0 which has an invalid pom
-        "org.apache.parquet:parquet-common:1.11.1",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/1144
-        "org.codehaus.plexus:plexus:1.0.4",
-        "org.hamcrest:hamcrest-core:1.3",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/199
-        # https://github.com/bazelbuild/rules_jvm_external/issues/1162
-        "io.opentelemetry:opentelemetry-sdk",
-        maven.artifact(
-            artifact = "opentelemetry-api",
-            group = "io.opentelemetry",
-            neverlink = True,
-        ),
-        # https://github.com/bazel-contrib/rules_jvm_external/issues/132
-        "com.amazonaws:DynamoDBLocal:1.25.0",
-    ],
-    boms = [
-        "io.opentelemetry:opentelemetry-bom:1.31.0",
-    ],
-    generate_compat_repositories = True,
-    maven_install_json = "//tests/custom_maven_install:regression_testing_maven_install.json",
-    repin_instructions = "Please run `REPIN=1 bazel run @regression_testing_maven//:pin` to refresh the lock file.",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-        "https://maven.google.com",
-    ],
-    resolver = "maven",
-)
-
-load("@regression_testing_maven//:defs.bzl", "pinned_maven_install")
-
-pinned_maven_install()
-
-load("@regression_testing_maven//:compat.bzl", "compat_repositories")
-
-compat_repositories()
-
-maven_install(
-    name = "regression_testing_gradle",
-    artifacts = [
-        # https://github.com/bazel-contrib/rules_jvm_external/issues/909
-        "androidx.compose.foundation:foundation-layout:1.5.0-beta01",
-        # https://github.com/bazel-contrib/rules_jvm_external/issues/909#issuecomment-2019217013
-        "androidx.annotation:annotation:1.6.0",
-        # https://github.com/bazel-contrib/rules_jvm_external/issues/1409
-        "com.squareup.okhttp3:okhttp:4.12.0",
-        # https://github.com/bazel-contrib/rules_jvm_external/issues/1471
-        "androidx.fragment:fragment-ktx:1.6.1",
-    ],
-    generate_compat_repositories = True,
-    maven_install_json = "//tests/custom_maven_install:regression_testing_gradle_install.json",
-    repin_instructions = "Please run `REPIN=1 bazel run @regression_testing_gradle//:pin` to refresh the lock file.",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-        "https://maven.google.com",
-    ],
-    resolver = "gradle",
-)
-
-load("@regression_testing_gradle//:defs.bzl", "pinned_maven_install")
-
-pinned_maven_install()
-
-load("@regression_testing_gradle//:compat.bzl", "compat_repositories")
-
-compat_repositories()
-
-# Grab com.google.ar.sceneform:rendering because we overrode it above
-http_file(
-    name = "com.google.ar.sceneform_rendering",
-    downloaded_file_path = "rendering-1.10.0.aar",
-    sha256 = "d2f6cd1d54eee0d5557518d1edcf77a3ba37494ae94f9bb862e570ee426a3431",
-    urls = [
-        "https://dl.google.com/android/maven2/com/google/ar/sceneform/rendering/1.10.0/rendering-1.10.0.aar",
-    ],
-)
-
-maven_install(
-    name = "testonly_testing",
-    artifacts = [
-        maven.artifact(
-            artifact = "guava",
-            group = "com.google.guava",
-            version = "27.0-jre",
-        ),
-        maven.artifact(
-            testonly = True,
-            artifact = "auto-value-annotations",
-            group = "com.google.auto.value",
-            version = "1.6.3",
-        ),
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-maven_install(
-    name = "policy_pinned_testing",
-    artifacts = [
-        # https://github.com/bazelbuild/rules_jvm_external/issues/107
-        "com.google.cloud:google-cloud-storage:1.66.0",
-        "com.google.guava:guava:25.0-android",
-    ],
-    maven_install_json = "//tests/custom_maven_install:policy_pinned_testing_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-        "https://maven.google.com",
-    ],
-    version_conflict_policy = "pinned",
-)
-
-load(
-    "@policy_pinned_testing//:defs.bzl",
-    _policy_pinned_maven_install = "pinned_maven_install",
-)
-
-_policy_pinned_maven_install()
-
-maven_install(
-    name = "strict_visibility_testing",
-    artifacts = [
-        # https://github.com/bazelbuild/rules_jvm_external/issues/94
-        "org.apache.tomcat:tomcat-catalina:9.0.24",
-        # https://github.com/bazelbuild/rules_jvm_external/issues/255
-        maven.artifact(
-            artifact = "jetty-http",
-            classifier = "tests",
-            group = "org.eclipse.jetty",
-            version = "9.4.20.v20190813",
-        ),
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-    strict_visibility = True,
-)
-
-maven_install(
-    name = "strict_visibility_with_compat_testing",
-    artifacts = [
-        # Must not be in any other maven_install where generate_compat_repositories = True
-        "com.google.http-client:google-http-client-gson:1.42.3",
-    ],
-    generate_compat_repositories = True,
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-    strict_visibility = True,
-)
-
-load("@strict_visibility_with_compat_testing//:compat.bzl", "compat_repositories")
-
-compat_repositories()
-
-maven_install(
-    name = "maven_install_in_custom_location",
-    artifacts = ["com.google.guava:guava:27.0-jre"],
-    maven_install_json = "@rules_jvm_external//tests/custom_maven_install:maven_install.json",
-    repositories = ["https://repo1.maven.org/maven2"],
-)
-
-load("@maven_install_in_custom_location//:defs.bzl", "pinned_maven_install")
-
-pinned_maven_install()
-
-maven_install(
-    name = "duplicate_version_warning",
-    artifacts = [
-        "com.fasterxml.jackson.core:jackson-annotations:2.10.1",
-        "com.fasterxml.jackson.core:jackson-annotations:2.12.1",
-        "com.fasterxml.jackson.core:jackson-annotations:2.10.1",
-        "com.fasterxml.jackson.core:jackson-annotations:2.11.2",
-        "com.github.jnr:jffi:1.3.4",
-        maven.artifact(
-            artifact = "jffi",
-            classifier = "native",
-            group = "com.github.jnr",
-            version = "1.3.3",
-        ),
-        maven.artifact(
-            artifact = "jffi",
-            classifier = "native",
-            group = "com.github.jnr",
-            version = "1.3.2",
-        ),
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-        "https://maven.google.com",
-    ],
-)
-
-maven_install(
-    name = "duplicate_version_warning_same_version",
-    artifacts = [
-        "com.fasterxml.jackson.core:jackson-annotations:2.10.1",
-        "com.fasterxml.jackson.core:jackson-annotations:2.10.1",
-        maven.artifact(
-            artifact = "jffi",
-            classifier = "native",
-            group = "com.github.jnr",
-            version = "1.3.3",
-        ),
-        maven.artifact(
-            artifact = "jffi",
-            classifier = "native",
-            group = "com.github.jnr",
-            version = "1.3.3",
-        ),
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-        "https://maven.google.com",
-    ],
-)
-
-# The test this is for is only for `bzlmod`, but we want to
-# be able to run tests in workspace mode too
-maven_install(
-    name = "root_wins",
-    artifacts = [
-        "io.netty:netty-buffer:4.1.121.Final",
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-maven_install(
-    name = "service_indexing_testing",
-    artifacts = [
-        "com.google.auto.value:auto-value:1.10.4",
-        "com.google.auto.value:auto-value-annotations:1.10.4",
-        "org.projectlombok:lombok:1.18.22",
-    ] + [
-        maven.artifact(
-            testonly = True,  # must be propagated to the generated plugin
-            artifact = artifact,
-            group = "org.openjdk.jmh",
-            version = "1.37",
-        )
-        for artifact in ("jmh-core", "jmh-generator-annprocess")
-    ],
-    maven_install_json = "//tests/custom_maven_install:service_indexing_testing.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@service_indexing_testing//:defs.bzl", pinned_service_indexing_testing = "pinned_maven_install")
-
-pinned_service_indexing_testing()
-
-maven_install(
-    name = "jvm_import_test",
-    artifacts = [
-        "com.google.code.findbugs:jsr305:3.0.2",
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-maven_install(
-    name = "starlark_aar_import_with_sources_test",
-    # The default is "@rules_android//rules:rules.bzl" but use
-    # "@rules_android//android:rules.bzl" with the older 0.1.1 release
-    # to use the native rules.
-    aar_import_bzl_label = "@rules_android//android:rules.bzl",
-    artifacts = [
-        "androidx.work:work-runtime:2.6.0",
-    ],
-    fetch_sources = True,
-    repositories = [
-        "https://repo1.maven.org/maven2",
-        "https://maven.google.com",
-    ],
-    use_starlark_android_rules = True,
-)
-
-maven_install(
-    name = "starlark_aar_import_test",
-    # The default is "@rules_android//rules:rules.bzl" but use
-    # "@rules_android//android:rules.bzl" with the older 0.1.1 release
-    # to use the native rules.
-    aar_import_bzl_label = "@rules_android//android:rules.bzl",
-    artifacts = [
-        "com.android.support:appcompat-v7:28.0.0",
-    ],
-    fetch_sources = False,
-    repositories = [
-        "https://repo1.maven.org/maven2",
-        "https://maven.google.com",
-    ],
-    use_starlark_android_rules = True,
-)
-
-# for the above "starlark_aar_import_test" maven_install with
-# use_starlark_android_rules = True.
-# Note that this version is different from the version in MODULE.bazel
-# because the latest versions of rules_android do not support Bazel 6,
-# which rules_jvm_external supports and uses in CI tests. So use
-# rules_android 0.1.1, which are wrappers around the native Android rules,
-# since the tests with Bazel 6 do no use bzlmod.
-http_archive(
-    name = "rules_android",
-    sha256 = "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806",
-    strip_prefix = "rules_android-0.1.1",
-    url = "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip",
-)
-
-# https://github.com/bazelbuild/rules_jvm_external/issues/351
-maven_install(
-    name = "json_artifacts_testing",
-    artifacts = [
-        "org.json:json:20190722",
-        "io.quarkus:quarkus-maven-plugin:1.0.1.Final",
-        "io.quarkus:quarkus-bom-descriptor-json:1.0.1.Final",
-    ],
-    fetch_sources = True,
-    maven_install_json = "//tests/custom_maven_install:json_artifacts_testing_install.json",
-    repositories = [
-        "https://repo.maven.apache.org/maven2/",
-        "https://repo.spring.io/plugins-release/",
-    ],
-)
-
-# https://github.com/bazelbuild/rules_jvm_external/issues/433
-maven_install(
-    name = "version_interval_testing",
-    artifacts = [
-        "io.grpc:grpc-netty-shaded:1.29.0",
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load(
-    "@json_artifacts_testing//:defs.bzl",
-    _json_artifacts_testing_install = "pinned_maven_install",
-)
-
-_json_artifacts_testing_install()
-
-maven_install(
-    name = "m2local_testing",
-    artifacts = [
-        # this is a test jar built for integration
-        # tests in this repo
-        "com.example:kt:1.0.0",
-    ],
-    fail_on_missing_checksum = True,
-    repositories = [
-        "m2Local",
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-maven_install(
-    name = "m2local_testing_repin",
-    artifacts = [
-        # this is a test jar built for integration
-        # tests in this repo
-        "com.example:no-docs:1.0.0",
-    ],
-    maven_install_json = "//tests/custom_maven_install:m2local_testing_with_pinned_file_install.json",
-    repositories = [
-        "m2Local",
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@m2local_testing_repin//:defs.bzl", m2local_testing_repin_maven_install = "pinned_maven_install")
-
-m2local_testing_repin_maven_install()
-
-maven_install(
-    name = "m2local_testing_without_checksum",
-    artifacts = [
-        # this is a test jar built for integration
-        # tests in this repo
-        "com.example:kt:1.0.0",
-    ],
-    # jar won't have checksums for this test case
-    fail_on_missing_checksum = False,
-    repositories = [
-        "m2Local",
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-maven_install(
-    name = "m2local_testing_ignore_empty_files",
-    artifacts = [
-        # this is a test jar built for integration
-        # tests in this repo
-        "com.example:kt:1.0.0",
-    ],
-    fetch_sources = True,
-    ignore_empty_files = True,
-    repositories = [
-        "m2Local",
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-maven_install(
-    name = "m2local_testing_ignore_empty_files_repin",
-    artifacts = [
-        # this is a test jar built for integration
-        # tests in this repo
-        "com.example:kt:1.0.0",
-    ],
-    fetch_sources = True,
-    ignore_empty_files = True,
-    maven_install_json = "//tests/custom_maven_install:m2local_testing_ignore_empty_files_with_pinned_file_install.json",
-    repositories = [
-        "m2Local",
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@m2local_testing_ignore_empty_files_repin//:defs.bzl", m2local_testing_ignore_empty_files_repin_maven_install = "pinned_maven_install")
-
-m2local_testing_ignore_empty_files_repin_maven_install()
-
-maven_install(
-    name = "artifact_with_plus",
-    artifacts = [
-        "ch.epfl.scala:compiler-interface:1.3.0-M4+47-d881fa2f",
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-maven_install(
-    name = "artifact_with_plus_repin",
-    artifacts = [
-        "ch.epfl.scala:compiler-interface:1.3.0-M4+47-d881fa2f",
-    ],
-    maven_install_json = "//tests/custom_maven_install:artifact_with_plus_repin_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@artifact_with_plus_repin//:defs.bzl", artifact_with_plus_maven_install = "pinned_maven_install")
-
-artifact_with_plus_maven_install()
-
-maven_install(
-    name = "v1_lock_file_format",
-    artifacts = [
-        # Coordinates that are in no other `maven_install`
-        "org.seleniumhq.selenium:selenium-remote-driver:4.8.0",
-    ],
-    generate_compat_repositories = True,
-    maven_install_json = "//tests/custom_maven_install:v1_lock_file_format_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@v1_lock_file_format//:defs.bzl", v1_lock_file_format_pinned_maven_install = "pinned_maven_install")
-
-v1_lock_file_format_pinned_maven_install()
-
-http_file(
-    name = "hamcrest_core_for_test",
-    downloaded_file_path = "hamcrest-core-1.3.jar",
-    sha256 = "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9",
-    urls = [
-        "https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar",
-    ],
-)
-
-http_file(
-    name = "hamcrest_core_srcs_for_test",
-    downloaded_file_path = "hamcrest-core-1.3-sources.jar",
-    sha256 = "e223d2d8fbafd66057a8848cc94222d63c3cedd652cc48eddc0ab5c39c0f84df",
-    urls = [
-        "https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar",
-    ],
-)
-
-http_file(
-    name = "gson_for_test",
-    downloaded_file_path = "gson-2.9.0.jar",
-    sha256 = "c96d60551331a196dac54b745aa642cd078ef89b6f267146b705f2c2cbef052d",
-    urls = [
-        "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar",
-    ],
-)
-
-http_file(
-    name = "junit_platform_commons_for_test",
-    downloaded_file_path = "junit-platform-commons-1.8.2.jar",
-    sha256 = "d2e015fca7130e79af2f4608dc54415e4b10b592d77333decb4b1a274c185050",
-    urls = [
-        "https://repo1.maven.org/maven2/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar",
-    ],
-)
-
-# https://github.com/bazelbuild/rules_jvm_external/issues/865
-http_file(
-    name = "google_api_services_compute_javadoc_for_test",
-    downloaded_file_path = "google-api-services-compute-v1-rev235-1.25.0-javadoc.jar",
-    sha256 = "b03be5ee8effba3bfbaae53891a9c01d70e2e3bd82ad8889d78e641b22bd76c2",
-    urls = [
-        "https://repo1.maven.org/maven2/com/google/apis/google-api-services-compute/v1-rev235-1.25.0/google-api-services-compute-v1-rev235-1.25.0-javadoc.jar",
-    ],
-)
-
-http_file(
-    name = "lombok_for_test",
-    downloaded_file_path = "lombok-1.18.22.jar",
-    sha256 = "ecef1581411d7a82cc04281667ee0bac5d7c0a5aae74cfc38430396c91c31831",
-    urls = [
-        "https://repo1.maven.org/maven2/org/projectlombok/lombok/1.18.22/lombok-1.18.22.jar",
-    ],
-)
-
-# End test dependencies
-
-http_archive(
-    name = "bazel_toolchains",
-    sha256 = "179ec02f809e86abf56356d8898c8bd74069f1bd7c56044050c2cd3d79d0e024",
-    strip_prefix = "bazel-toolchains-4.1.0",
-    urls = [
-        "https://github.com/bazelbuild/bazel-toolchains/releases/download/4.1.0/bazel-toolchains-4.1.0.tar.gz",
-        "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/4.1.0/bazel-toolchains-4.1.0.tar.gz",
-    ],
-)
-
-http_archive(
-    name = "bazelci_rules",
-    sha256 = "eca21884e6f66a88c358e580fd67a6b148d30ab57b1680f62a96c00f9bc6a07e",
-    strip_prefix = "bazelci_rules-1.0.0",
-    url = "https://github.com/bazelbuild/continuous-integration/releases/download/rules-1.0.0/bazelci_rules-1.0.0.tar.gz",
-)
-
-load("@bazelci_rules//:rbe_repo.bzl", "rbe_preconfig")
-
-# Creates a default toolchain config for RBE.
-# Use this as is if you are using the rbe_ubuntu16_04 container,
-# otherwise refer to RBE docs.
-rbe_preconfig(
-    name = "buildkite_config",
-    toolchain = "ubuntu1804-bazel-java11",
-)
-
-# Located at the end, because it's only used in tests
-
-http_archive(
-    name = "com_google_protobuf",
-    sha256 = "e07046fbac432b05adc1fd1318c6f19ab1b0ec0655f7f4e74627d9713959a135",
-    strip_prefix = "protobuf-21.7",
-    url = "https://github.com/protocolbuffers/protobuf/releases/download/v21.7/protobuf-all-21.7.tar.gz",
-)
-
-load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
-
-protobuf_deps()
-
-# When using `bzlmod` this gets pulled in as `protobuf`
-http_archive(
-    name = "protobuf",
-    sha256 = "e07046fbac432b05adc1fd1318c6f19ab1b0ec0655f7f4e74627d9713959a135",
-    strip_prefix = "protobuf-21.7",
-    url = "https://github.com/protocolbuffers/protobuf/releases/download/v21.7/protobuf-all-21.7.tar.gz",
-)
-
-maven_install(
-    name = "java_export_exclusion_testing",
-    artifacts = [
-        "com.google.protobuf:protobuf-java:3.23.1",
-    ],
-    maven_install_json = "@rules_jvm_external//tests/custom_maven_install:java_export_exclusion_testing_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@java_export_exclusion_testing//:defs.bzl", _java_export_exclusion_testing_pinned_maven_install = "pinned_maven_install")
-
-_java_export_exclusion_testing_pinned_maven_install()
-
-maven_install(
-    name = "override_target_in_deps",
-    artifacts = [
-        "io.opentelemetry:opentelemetry-sdk:1.28.0",
-        "org.slf4j:slf4j-log4j12:1.7.36",
-        "redis.clients:jedis:5.0.2",
-    ],
-    maven_install_json = "@rules_jvm_external//tests/custom_maven_install:override_target_in_deps_install.json",
-    override_targets = {
-        # https://github.com/bazelbuild/rules_jvm_external/issues/199
-        # This is a transitive dep of `opentelemetry-sdk`
-        "io.opentelemetry:opentelemetry-api": "@//tests/integration/override_targets:additional_deps",
-        "org.slf4j:slf4j-log4j12": "@override_target_in_deps//:org_slf4j_slf4j_reload4j",
-    },
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@override_target_in_deps//:defs.bzl", _override_target_in_deps_maven_install = "pinned_maven_install")
-
-_override_target_in_deps_maven_install()
-
-maven_install(
-    name = "same_override_target",
-    artifacts = [
-        "org.slf4j:slf4j-log4j12:1.7.36",
-    ],
-    maven_install_json = "@rules_jvm_external//tests/custom_maven_install:same_override_target_install.json",
-    override_targets = {
-        "org.slf4j:slf4j-log4j12": "@same_override_target//:org_slf4j_slf4j_reload4j",
-    },
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@same_override_target//:defs.bzl", _same_override_target_maven_install = "pinned_maven_install")
-
-_same_override_target_maven_install()
-
-maven_install(
-    name = "forcing_versions",
-    artifacts = [
-        # Specify an ancient version of guava, and force its use. If we try to use `[23.3-jre]` as the version,
-        # the resolution will fail when using `coursier`
-        maven.artifact(
-            artifact = "guava",
-            force_version = True,
-            group = "com.google.guava",
-            version = "23.3-jre",
-        ),
-        # And something that depends on a more recent version of guava
-        "xyz.rogfam:littleproxy:2.1.0",
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-maven_install(
-    name = "coursier_resolved_with_boms",
-    artifacts = [
-        "com.google.auth:google-auth-library-oauth2-http",
-        "com.google.auto:auto-common:1.2.2",
-        maven.artifact(
-            artifact = "google-cloud-bigquery",
-            exclusions = [
-                "io.grpc:grpc-auth",
-                "io.grpc:grpc-netty",
-            ],
-            group = "com.google.cloud",
-        ),
-    ],
-    boms = [
-        "com.google.cloud:libraries-bom:26.59.0",
-    ],
-    maven_install_json = "@rules_jvm_external//tests/custom_maven_install:coursier_resolved_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@coursier_resolved_with_boms//:defs.bzl", _coursier_resolved_maven_install = "pinned_maven_install")
-
-_coursier_resolved_maven_install()
-
-maven_install(
-    name = "maven_resolved_with_boms",
-    artifacts = [
-        # A transitive dependency pulls in a `managedDependencies` section which sets the
-        # `xmlpull` version to 1.2.0, which hasn't been publicly released. Maven and Gradle
-        # both handle this situation gracefully and correctly resolve to `xmlpull` 1.1.3.1
-        "org.drools:drools-mvel:7.53.0.Final",
-        "org.optaplanner:optaplanner-core:7.53.0.Final",
-        "org.seleniumhq.selenium:selenium-java",
-        maven.artifact(
-            testonly = True,
-            artifact = "auto-value-annotations",
-            exclusions = [
-                "org.slf4j:slf4j-api",
-            ],
-            group = "com.google.auto.value",
-            version = "1.6.3",
-        ),
-        maven.artifact(
-            artifact = "json-lib",
-            classifier = "jdk15",
-            group = "net.sf.json-lib",
-            version = "2.4",
-        ),
-    ],
-    boms = [
-        "org.seleniumhq.selenium:selenium-bom:4.14.1",
-    ],
-    maven_install_json = "@rules_jvm_external//tests/custom_maven_install:maven_resolved_install.json",
-    repositories = [
-        "https://repo.spring.io/plugins-release/",  # Requires auth, but we don't have it
-        "https://repo1.maven.org/maven2",
-    ],
-    resolver = "maven",
-)
-
-load("@maven_resolved_with_boms//:defs.bzl", _maven_resolved_maven_install = "pinned_maven_install")
-
-_maven_resolved_maven_install()
-
-# https://github.com/bazelbuild/rules_jvm_external/issues/1206
-maven_install(
-    name = "transitive_dependency_with_type_of_pom",
-    # an arbitrary artifact which depends on org.javamoney:moneta:pom
-    artifacts = [
-        # https://github.com/quarkiverse/quarkus-moneta/blob/2.0.0/runtime/pom.xml#L16-L21
-        "io.quarkiverse.moneta:quarkus-moneta:2.0.0",
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-# This failure mode is bzlmod only. But the test still runs on Bazel 5/6, which
-# is WORKSPACE based, so we add a shim here to keep the test passing until
-# WORKSPACE support is no longer needed.
-maven_install(
-    name = "root_module_can_override",
-    artifacts = [
-        "com.squareup:javapoet:1.11.1",
-        "com.squareup.okhttp3:okhttp:4.12.0",
-    ],
-    override_targets = {
-        "com.squareup.okhttp3:okhttp": "@root_module_can_override//:com_squareup_javapoet",
-    },
-    repositories = ["https://repo1.maven.org/maven2"],
-)
-
-# This is bzlmod only. But the test still runs on Bazel 5/6, which
-# is WORKSPACE based, so we add a shim here to keep the test passing until
-# WORKSPACE support is no longer needed.
-maven_install(
-    name = "from_files",
-    artifacts = [
-        "org.junit.jupiter:junit-jupiter-api:5.12.2",
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-maven_install(
-    name = "pom_exclusion_testing_coursier",
-    artifacts = [
-        maven.artifact(
-            artifact = "guava",
-            exclusions = [
-                maven.exclusion(
-                    artifact = "error_prone_annotations",
-                    group = "com.google.errorprone",
-                ),
-            ],
-            group = "com.google.guava",
-            version = "31.1-jre",
-        ),
-    ],
-    excluded_artifacts = [
-        "log4j:log4j",
-    ],
-    maven_install_json = "//tests/integration/pom_file:pom_exclusion_testing_coursier_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-    resolver = "coursier",
-)
-
-maven_install(
-    name = "pom_exclusion_testing_maven",
-    artifacts = [
-        maven.artifact(
-            artifact = "guava",
-            exclusions = [
-                maven.exclusion(
-                    artifact = "error_prone_annotations",
-                    group = "com.google.errorprone",
-                ),
-            ],
-            group = "com.google.guava",
-            version = "31.1-jre",
-        ),
-    ],
-    excluded_artifacts = [
-        "log4j:log4j",
-    ],
-    maven_install_json = "//tests/integration/pom_file:pom_exclusion_testing_maven_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-    resolver = "maven",
-)
-
-maven_install(
-    name = "pom_exclusion_testing_gradle",
-    artifacts = [
-        maven.artifact(
-            artifact = "guava",
-            exclusions = [
-                maven.exclusion(
-                    artifact = "error_prone_annotations",
-                    group = "com.google.errorprone",
-                ),
-            ],
-            group = "com.google.guava",
-            version = "31.1-jre",
-        ),
-    ],
-    excluded_artifacts = [
-        "log4j:log4j",
-    ],
-    maven_install_json = "//tests/integration/pom_file:pom_exclusion_testing_gradle_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-    resolver = "gradle",
-)
-
-maven_install(
-    name = "amend_artifacts",
-    artifacts = [
-        maven.artifact(
-            testonly = False,
-            artifact = "guava",
-            group = "com.google.guava",
-            version = "31.1-jre",
-        ),
-        maven.artifact(
-            testonly = True,
-            artifact = "commons-lang3",
-            group = "org.apache.commons",
-            version = "3.12.0",
-        ),
-        maven.artifact(
-            artifact = "slf4j-api",
-            group = "org.slf4j",
-            neverlink = True,
-            version = "1.7.32",
-        ),
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
diff --git a/WORKSPACE.bzlmod b/WORKSPACE.bzlmod
deleted file mode 100644
index f9d6955..0000000
--- a/WORKSPACE.bzlmod
+++ /dev/null
@@ -1,4 +0,0 @@
-workspace(name = "rules_jvm_external")
-
-# Use this until we can use some pure-bzlmod approach
-android_sdk_repository(name = "androidsdk")
diff --git a/docs/api.md b/docs/api.md
index c0fbf1e..28c36e5 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -252,81 +252,3 @@
 
 
 
-<a id="maven.artifact"></a>
-
-## maven.artifact
-
-<pre>
-load("@rules_jvm_external//:specs.bzl", "maven")
-
-maven.artifact(<a href="#maven.artifact-group">group</a>, <a href="#maven.artifact-artifact">artifact</a>, <a href="#maven.artifact-version">version</a>, <a href="#maven.artifact-packaging">packaging</a>, <a href="#maven.artifact-classifier">classifier</a>, <a href="#maven.artifact-override_license_types">override_license_types</a>, <a href="#maven.artifact-exclusions">exclusions</a>,
-               <a href="#maven.artifact-neverlink">neverlink</a>, <a href="#maven.artifact-testonly">testonly</a>, <a href="#maven.artifact-force_version">force_version</a>)
-</pre>
-
-Generates the data map for a Maven artifact given the available information about its coordinates.
-
-**PARAMETERS**
-
-
-| Name  | Description | Default Value |
-| :------------- | :------------- | :------------- |
-| <a id="maven.artifact-group"></a>group |  The Maven artifact coordinate group name (ex: "com.google.guava").   |  none |
-| <a id="maven.artifact-artifact"></a>artifact |  The Maven artifact coordinate artifact name (ex: "guava").   |  none |
-| <a id="maven.artifact-version"></a>version |  The Maven artifact coordinate version name (ex: "27.0-jre").   |  `""` |
-| <a id="maven.artifact-packaging"></a>packaging |  The Maven packaging specifier (ex: "jar").   |  `None` |
-| <a id="maven.artifact-classifier"></a>classifier |  The Maven artifact classifier (ex: "javadoc").   |  `None` |
-| <a id="maven.artifact-override_license_types"></a>override_license_types |  An array of Bazel license type strings to use for this artifact's rules (overrides autodetection) (ex: ["notify"]).   |  `None` |
-| <a id="maven.artifact-exclusions"></a>exclusions |  An array of exclusion objects to create exclusion specifiers for this artifact (ex: maven.exclusion("junit", "junit")).   |  `None` |
-| <a id="maven.artifact-neverlink"></a>neverlink |  Determines if this artifact should be part of the runtime classpath.   |  `None` |
-| <a id="maven.artifact-testonly"></a>testonly |  Determines whether this artifact is available for targets not marked as `testonly = True`.   |  `None` |
-| <a id="maven.artifact-force_version"></a>force_version |  Whether the `version` is non-negotiable.   |  `False` |
-
-
-<a id="maven.exclusion"></a>
-
-## maven.exclusion
-
-<pre>
-load("@rules_jvm_external//:specs.bzl", "maven")
-
-maven.exclusion(<a href="#maven.exclusion-group">group</a>, <a href="#maven.exclusion-artifact">artifact</a>)
-</pre>
-
-Generates the data map for a Maven artifact exclusion.
-
-**PARAMETERS**
-
-
-| Name  | Description | Default Value |
-| :------------- | :------------- | :------------- |
-| <a id="maven.exclusion-group"></a>group |  The Maven group name of the dependency to exclude, e.g. "com.google.guava".   |  none |
-| <a id="maven.exclusion-artifact"></a>artifact |  The Maven artifact name of the dependency to exclude, e.g. "guava".   |  none |
-
-
-<a id="maven.repository"></a>
-
-## maven.repository
-
-<pre>
-load("@rules_jvm_external//:specs.bzl", "maven")
-
-maven.repository(<a href="#maven.repository-url">url</a>, <a href="#maven.repository-user">user</a>, <a href="#maven.repository-password">password</a>)
-</pre>
-
-Generates the data map for a Maven repository specifier given the available information.
-
-If both a user and password are given as arguments, it will include the
-access credentials in the repository spec. If one or both are missing, it
-will just generate the repository url.
-
-
-**PARAMETERS**
-
-
-| Name  | Description | Default Value |
-| :------------- | :------------- | :------------- |
-| <a id="maven.repository-url"></a>url |  A string containing the repository url (ex: "https://maven.google.com/").   |  none |
-| <a id="maven.repository-user"></a>user |  A username for this Maven repository, if it requires authentication (ex: "johndoe").   |  `None` |
-| <a id="maven.repository-password"></a>password |  A password for this Maven repository, if it requires authentication (ex: "example-password").   |  `None` |
-
-
diff --git a/docs/bzlmod.md b/docs/bzlmod.md
index 09fc426..26d52d7 100644
--- a/docs/bzlmod.md
+++ b/docs/bzlmod.md
@@ -1,12 +1,6 @@
 # Using rules_jvm_external with bzlmod
 
-Bzlmod is the new package manager for Bazel modules, included in Bazel 6.0.
-It allows a significantly shorter setup than the `WORKSPACE` file used prior to bzlmod.
-
-Note: this support is new as of early 2023, so expect some brokenness and missing features.
-Please do file issues for missing bzlmod support.
-
-See the `/examples/bzlmod` folder in this repository for a complete, tested example.
+Bzlmod is the package manager for Bazel modules and is required starting with Bazel 7.
 
 ## Installation
 
@@ -66,7 +60,7 @@
 ```
 
 Now you'll be able to use the same `REPIN=1 bazel run @maven//:pin` operation described in the
-[workspace instructions](/README.md#updating-maven_installjson) to update the dependencies.
+[README](/README.md#updating-maven_installjson) to update the dependencies.
 
 ## Extension and tag documentation
 
diff --git a/examples/android_kotlin_app/.bazelversion b/examples/android_kotlin_app/.bazelversion
index 18bb418..f9c71a5 100644
--- a/examples/android_kotlin_app/.bazelversion
+++ b/examples/android_kotlin_app/.bazelversion
@@ -1 +1 @@
-7.5.0
+8.5.1
diff --git a/examples/android_kotlin_app/MODULE.bazel b/examples/android_kotlin_app/MODULE.bazel
index aee22b7..656a1fd 100644
--- a/examples/android_kotlin_app/MODULE.bazel
+++ b/examples/android_kotlin_app/MODULE.bazel
@@ -1,8 +1,37 @@
-###############################################################################
-# Bazel now uses Bzlmod by default to manage external dependencies.
-# Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel.
-#
-# For more details, please check https://github.com/bazelbuild/bazel/issues/18958
-###############################################################################
+module(
+    name = "android_kotlin_app_example",
+    version = "0.0.0",
+)
 
-bazel_dep(name = "rules_kotlin", version = "1.9.0")
+bazel_dep(name = "rules_kotlin", version = "2.2.2")
+bazel_dep(name = "rules_android", version = "0.7.1")
+bazel_dep(name = "rules_jvm_external", version = "0.0.0")
+local_path_override(
+    module_name = "rules_jvm_external",
+    path = "../..",
+)
+
+# Android SDK and tools
+remote_android_extensions = use_extension("@bazel_tools//tools/android:android_extensions.bzl", "remote_android_tools_extensions")
+use_repo(remote_android_extensions, "android_gmaven_r8", "android_tools")
+
+android_sdk_repository_extension = use_extension("@rules_android//rules/android_sdk_repository:rule.bzl", "android_sdk_repository_extension")
+use_repo(android_sdk_repository_extension, "androidsdk")
+
+register_toolchains("@androidsdk//:sdk-toolchain", "@androidsdk//:all")
+
+# Maven dependencies
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+maven.install(
+    artifacts = [
+        "androidx.appcompat:appcompat:1.0.2",
+        "androidx.core:core-ktx:1.0.1",
+    ],
+    known_contributing_modules = ["protobuf"],
+    lock_file = "//:maven_install.json",
+    repositories = [
+        "https://maven.google.com",
+        "https://repo1.maven.org/maven2",
+    ],
+)
+use_repo(maven, "maven")
diff --git a/examples/android_kotlin_app/MODULE.bazel.lock b/examples/android_kotlin_app/MODULE.bazel.lock
index 66b3a3c..3611471 100644
--- a/examples/android_kotlin_app/MODULE.bazel.lock
+++ b/examples/android_kotlin_app/MODULE.bazel.lock
@@ -1,1987 +1,641 @@
 {
-  "lockFileVersion": 3,
-  "moduleFileHash": "b0d4f1792d060fef980323033d2de65a95380e8685db78ff1bdd41ea5856ee1f",
-  "flags": {
-    "cmdRegistries": [
-      "https://bcr.bazel.build/"
-    ],
-    "cmdModuleOverrides": {},
-    "allowedYankedVersions": [],
-    "envVarAllowedYankedVersions": "",
-    "ignoreDevDependency": false,
-    "directDependenciesMode": "WARNING",
-    "compatibilityMode": "ERROR"
+  "lockFileVersion": 24,
+  "registryFileHashes": {
+    "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497",
+    "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2",
+    "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915",
+    "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed",
+    "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250127.0/MODULE.bazel": "d1086e248cda6576862b4b3fe9ad76a214e08c189af5b42557a6e1888812c5d5",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/MODULE.bazel": "51f2312901470cdab0dbdf3b88c40cd21c62a7ed58a3de45b365ddc5b11bcab2",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/source.json": "cea3901d7e299da7320700abbaafe57a65d039f10d0d7ea601c4a66938ea4b0c",
+    "https://bcr.bazel.build/modules/abseil-py/2.1.0/MODULE.bazel": "5ebe5bf853769c65707e5c28f216798f7a4b1042015e6a36e6d03094d94bec8a",
+    "https://bcr.bazel.build/modules/abseil-py/2.1.0/source.json": "0e8fc4f088ce07099c1cd6594c20c7ddbb48b4b3c0849b7d94ba94be88ff042b",
+    "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896",
+    "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85",
+    "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442",
+    "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2",
+    "https://bcr.bazel.build/modules/bazel_features/1.1.0/MODULE.bazel": "cfd42ff3b815a5f39554d97182657f8c4b9719568eb7fded2b9135f084bf760b",
+    "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd",
+    "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8",
+    "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d",
+    "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a",
+    "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58",
+    "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b",
+    "https://bcr.bazel.build/modules/bazel_features/1.23.0/MODULE.bazel": "fd1ac84bc4e97a5a0816b7fd7d4d4f6d837b0047cf4cbd81652d616af3a6591a",
+    "https://bcr.bazel.build/modules/bazel_features/1.25.0/MODULE.bazel": "e2e60a10a6da64bbf533f15ca652bf61a033e41c2ed734d79a9a08ba87f68c1a",
+    "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65",
+    "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d",
+    "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9",
+    "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87",
+    "https://bcr.bazel.build/modules/bazel_features/1.33.0/MODULE.bazel": "8b8dc9d2a4c88609409c3191165bccec0e4cb044cd7a72ccbe826583303459f6",
+    "https://bcr.bazel.build/modules/bazel_features/1.33.0/source.json": "13617db3930328c2cd2807a0f13d52ca870ac05f96db9668655113265147b2a6",
+    "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7",
+    "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/source.json": "7ebaefba0b03efe59cac88ed5bbc67bcf59a3eff33af937345ede2a38b2d368a",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.1/MODULE.bazel": "02a13b77321773b2042e70ee5e4c5e099c8ddee4cf2da9cd420442c36938d4bd",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.4/MODULE.bazel": "460aa12d01231a80cce03c548287b433b321d205b0028ae596728c35e5ee442e",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.8/MODULE.bazel": "396c1ef53835aafe3d42ce6619080531ee770648303731f16cfaa33fa056bf0c",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.8/source.json": "abaf8ac9d2ab2f47bda9af4c0c080ff7907378888e1f4bc62a0539dd13ba61e8",
+    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.4/MODULE.bazel": "82494a01018bb7ef06d4a17ec4cd7a758721f10eb8b6c820a818e70d669500db",
+    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.8/MODULE.bazel": "e76479eae70bd4e8f5f4c2dfc5d03ab971cfb18750246c7b3f3454c5c2ee6629",
+    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.8/source.json": "9395c4679444bc47bf7e51a710366a4480aa371c6f6bed01868e2fabcf11acec",
+    "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84",
+    "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8",
+    "https://bcr.bazel.build/modules/gazelle/0.32.0/MODULE.bazel": "b499f58a5d0d3537f3cf5b76d8ada18242f64ec474d8391247438bf04f58c7b8",
+    "https://bcr.bazel.build/modules/gazelle/0.33.0/MODULE.bazel": "a13a0f279b462b784fb8dd52a4074526c4a2afe70e114c7d09066097a46b3350",
+    "https://bcr.bazel.build/modules/gazelle/0.34.0/MODULE.bazel": "abdd8ce4d70978933209db92e436deb3a8b737859e9354fb5fd11fb5c2004c8a",
+    "https://bcr.bazel.build/modules/gazelle/0.36.0/MODULE.bazel": "e375d5d6e9a6ca59b0cb38b0540bc9a05b6aa926d322f2de268ad267a2ee74c0",
+    "https://bcr.bazel.build/modules/gazelle/0.40.0/MODULE.bazel": "42ba5378ebe845fca43989a53186ab436d956db498acde790685fe0e8f9c6146",
+    "https://bcr.bazel.build/modules/gazelle/0.47.0/MODULE.bazel": "b61bb007c4efad134aa30ee7f4a8e2a39b22aa5685f005edaa022fbd1de43ebc",
+    "https://bcr.bazel.build/modules/gazelle/0.47.0/source.json": "aeb2e5df14b7fb298625d75d08b9c65bdb0b56014c5eb89da9e5dd0572280ae6",
+    "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb",
+    "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4",
+    "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6",
+    "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f",
+    "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108",
+    "https://bcr.bazel.build/modules/googletest/1.17.0/MODULE.bazel": "dbec758171594a705933a29fcf69293d2468c49ec1f2ebca65c36f504d72df46",
+    "https://bcr.bazel.build/modules/googletest/1.17.0/source.json": "38e4454b25fc30f15439c0378e57909ab1fd0a443158aa35aec685da727cd713",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.6/MODULE.bazel": "2f8d20d3b7d54143213c4dfc3d98225c42de7d666011528dc8fe91591e2e17b0",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.6/source.json": "a04756d367a2126c3541682864ecec52f92cdee80a35735a3cb249ce015ca000",
+    "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902",
+    "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74",
+    "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/source.json": "f448c6e8963fdfa7eb831457df83ad63d3d6355018f6574fb017e8169deb43a9",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.5/MODULE.bazel": "ef4f9439e3270fdd6b9fd4dbc3d2f29d13888e44c529a1b243f7a31dfbc2e8e4",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.7/MODULE.bazel": "7adb03933fc8401f495800cf4eafcff0edc6da0ff55c7db223ef69d19f689486",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.7/source.json": "50639625e937b56115012674c797cca7a05a96b4878c87d803c13dc2b31de8a0",
+    "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5",
+    "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f",
+    "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee",
+    "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37",
+    "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615",
+    "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814",
+    "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d",
+    "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc",
+    "https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580",
+    "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96",
+    "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7",
+    "https://bcr.bazel.build/modules/protobuf/23.1/MODULE.bazel": "88b393b3eb4101d18129e5db51847cd40a5517a53e81216144a8c32dfeeca52a",
+    "https://bcr.bazel.build/modules/protobuf/24.4/MODULE.bazel": "7bc7ce5f2abf36b3b7b7c8218d3acdebb9426aeb35c2257c96445756f970eb12",
+    "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c",
+    "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d",
+    "https://bcr.bazel.build/modules/protobuf/27.2/MODULE.bazel": "32450b50673882e4c8c3d10a83f3bc82161b213ed2f80d17e38bece8f165c295",
+    "https://bcr.bazel.build/modules/protobuf/29.0-rc2.bcr.1/MODULE.bazel": "52f4126f63a2f0bbf36b99c2a87648f08467a4eaf92ba726bc7d6a500bbf770c",
+    "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df",
+    "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92",
+    "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e",
+    "https://bcr.bazel.build/modules/protobuf/29.1/MODULE.bazel": "557c3457560ff49e122ed76c0bc3397a64af9574691cb8201b4e46d4ab2ecb95",
+    "https://bcr.bazel.build/modules/protobuf/29.3/MODULE.bazel": "77480eea5fb5541903e49683f24dc3e09f4a79e0eea247414887bb9fc0066e94",
+    "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0",
+    "https://bcr.bazel.build/modules/protobuf/3.19.2/MODULE.bazel": "532ffe5f2186b69fdde039efe6df13ba726ff338c6bc82275ad433013fa10573",
+    "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858",
+    "https://bcr.bazel.build/modules/protobuf/31.1/MODULE.bazel": "379a389bb330b7b8c1cdf331cc90bf3e13de5614799b3b52cdb7c6f389f6b38e",
+    "https://bcr.bazel.build/modules/protobuf/32.1/MODULE.bazel": "89cd2866a9cb07fee9ff74c41ceace11554f32e0d849de4e23ac55515cfada4d",
+    "https://bcr.bazel.build/modules/protobuf/33.4/MODULE.bazel": "114775b816b38b6d0ca620450d6b02550c60ceedfdc8d9a229833b34a223dc42",
+    "https://bcr.bazel.build/modules/protobuf/33.4/source.json": "555f8686b4c7d6b5ba731fbea13bf656b4bfd9a7ff629c1d9d3f6e1d6155de79",
+    "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e",
+    "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34",
+    "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680",
+    "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206",
+    "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a",
+    "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/source.json": "2ff292be6ef3340325ce8a045ecc326e92cbfab47c7cbab4bd85d28971b97ac4",
+    "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa",
+    "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8",
+    "https://bcr.bazel.build/modules/rules_android/0.6.4/MODULE.bazel": "b4cde12d506dd65d82b2be39761f49f5797303343a3d5b4ee191c0cdf9ef387c",
+    "https://bcr.bazel.build/modules/rules_android/0.7.1/MODULE.bazel": "a806fc382a774252f228a40e3b11b9fcc6276f8778c7fb33e9f72937c6258363",
+    "https://bcr.bazel.build/modules/rules_android/0.7.1/source.json": "151440aed3f0f73a00d4ed5cec5d31f63a6fef9b95d8fab1eb1810150fa525f2",
+    "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a",
+    "https://bcr.bazel.build/modules/rules_apple/3.16.0/source.json": "d8b5fe461272018cc07cfafce11fe369c7525330804c37eec5a82f84cd475366",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5",
+    "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513",
+    "https://bcr.bazel.build/modules/rules_cc/0.1.5/MODULE.bazel": "88dfc9361e8b5ae1008ac38f7cdfd45ad738e4fa676a3ad67d19204f045a1fd8",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.0/MODULE.bazel": "b5c17f90458caae90d2ccd114c81970062946f49f355610ed89bebf954f5783c",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.13/MODULE.bazel": "eecdd666eda6be16a8d9dc15e44b5c75133405e820f620a234acc4b1fdc5aa37",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.14/source.json": "55d0a4587c5592fad350f6e698530f4faf0e7dd15e69d43f8d87e220c78bea54",
+    "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6",
+    "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8",
+    "https://bcr.bazel.build/modules/rules_go/0.41.0/MODULE.bazel": "55861d8e8bb0e62cbd2896f60ff303f62ffcb0eddb74ecb0e5c0cbe36fc292c8",
+    "https://bcr.bazel.build/modules/rules_go/0.42.0/MODULE.bazel": "8cfa875b9aa8c6fce2b2e5925e73c1388173ea3c32a0db4d2b4804b453c14270",
+    "https://bcr.bazel.build/modules/rules_go/0.46.0/MODULE.bazel": "3477df8bdcc49e698b9d25f734c4f3a9f5931ff34ee48a2c662be168f5f2d3fd",
+    "https://bcr.bazel.build/modules/rules_go/0.50.1/MODULE.bazel": "b91a308dc5782bb0a8021ad4330c81fea5bda77f96b9e4c117b9b9c8f6665ee0",
+    "https://bcr.bazel.build/modules/rules_go/0.51.0-rc2/MODULE.bazel": "edfc3a9cea7bedb0eaaff37b0d7817c1a4bf72b3c615580b0ffcee6c52690fd4",
+    "https://bcr.bazel.build/modules/rules_go/0.53.0/MODULE.bazel": "a4ed760d3ac0dbc0d7b967631a9a3fd9100d28f7d9fcf214b4df87d4bfff5f9a",
+    "https://bcr.bazel.build/modules/rules_go/0.59.0/MODULE.bazel": "b7e43e7414a3139a7547d1b4909b29085fbe5182b6c58cbe1ed4c6272815aeae",
+    "https://bcr.bazel.build/modules/rules_go/0.59.0/source.json": "1df17bb7865cfc029492c30163cee891d0dd8658ea0d5bfdf252c4b6db5c1ef6",
+    "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74",
+    "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86",
+    "https://bcr.bazel.build/modules/rules_java/6.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963",
+    "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31",
+    "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel": "30d9135a2b6561c761bd67bd4990da591e6bdc128790ce3e7afd6a3558b2fb64",
+    "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6",
+    "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab",
+    "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe",
+    "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615",
+    "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017",
+    "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939",
+    "https://bcr.bazel.build/modules/rules_java/8.6.0/MODULE.bazel": "9c064c434606d75a086f15ade5edb514308cccd1544c2b2a89bbac4310e41c71",
+    "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2",
+    "https://bcr.bazel.build/modules/rules_java/8.6.3/MODULE.bazel": "e90505b7a931d194245ffcfb6ff4ca8ef9d46b4e830d12e64817752e0198e2ed",
+    "https://bcr.bazel.build/modules/rules_java/8.9.0/MODULE.bazel": "e17c876cb53dcd817b7b7f0d2985b710610169729e8c371b2221cacdcd3dce4a",
+    "https://bcr.bazel.build/modules/rules_java/9.3.0/MODULE.bazel": "f657c72d65ac449caae9abf2e68e66c0d36f9416848c4c4903d0b3234229e7f2",
+    "https://bcr.bazel.build/modules/rules_java/9.3.0/source.json": "59ae7e662c3c7042b88bbb42ad12483523e234c65ebe4c51611baa43e85cb248",
+    "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3",
+    "https://bcr.bazel.build/modules/rules_kotlin/2.1.3/MODULE.bazel": "ce7def6d576aa8d3a9c6d10e13b4d157296229674371f67dbf788dae0afae3d5",
+    "https://bcr.bazel.build/modules/rules_kotlin/2.2.2/MODULE.bazel": "00d39c5e0fa78cd86193946265bb849e7878c24e44260f9525108428852b315c",
+    "https://bcr.bazel.build/modules/rules_kotlin/2.2.2/source.json": "7a32c2259c79ae0c9a036121f120de825e3ba5f0f3a209ffbbdccf4dc62489b9",
+    "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0",
+    "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d",
+    "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c",
+    "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb",
+    "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc",
+    "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff",
+    "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a",
+    "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06",
+    "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.0/MODULE.bazel": "b531d7f09f58dce456cd61b4579ce8c86b38544da75184eadaf0a7cb7966453f",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73",
+    "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2",
+    "https://bcr.bazel.build/modules/rules_proto/7.1.0/MODULE.bazel": "002d62d9108f75bb807cd56245d45648f38275cb3a99dcd45dfb864c5d74cb96",
+    "https://bcr.bazel.build/modules/rules_proto/7.1.0/source.json": "39f89066c12c24097854e8f57ab8558929f9c8d474d34b2c00ac04630ad8940e",
+    "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f",
+    "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300",
+    "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382",
+    "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed",
+    "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58",
+    "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937",
+    "https://bcr.bazel.build/modules/rules_python/0.37.1/MODULE.bazel": "3faeb2d9fa0a81f8980643ee33f212308f4d93eea4b9ce6f36d0b742e71e9500",
+    "https://bcr.bazel.build/modules/rules_python/0.37.2/MODULE.bazel": "b5ffde91410745750b6c13be1c5dc4555ef5bc50562af4a89fd77807fdde626a",
+    "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c",
+    "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7",
+    "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43",
+    "https://bcr.bazel.build/modules/rules_python/1.4.1/MODULE.bazel": "8991ad45bdc25018301d6b7e1d3626afc3c8af8aaf4bc04f23d0b99c938b73a6",
+    "https://bcr.bazel.build/modules/rules_python/1.6.0/MODULE.bazel": "7e04ad8f8d5bea40451cf80b1bd8262552aa73f841415d20db96b7241bd027d8",
+    "https://bcr.bazel.build/modules/rules_python/1.6.0/source.json": "e980f654cf66ec4928672f41fc66c4102b5ea54286acf4aecd23256c84211be6",
+    "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/MODULE.bazel": "d44fec647d0aeb67b9f3b980cf68ba634976f3ae7ccd6c07d790b59b87a4f251",
+    "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/source.json": "37c10335f2361c337c5c1f34ed36d2da70534c23088062b33a8bdaab68aa9dea",
+    "https://bcr.bazel.build/modules/rules_shell/0.1.2/MODULE.bazel": "66e4ca3ce084b04af0b9ff05ff14cab4e5df7503973818bb91cbc6cda08d32fc",
+    "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c",
+    "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b",
+    "https://bcr.bazel.build/modules/rules_shell/0.6.1/MODULE.bazel": "72e76b0eea4e81611ef5452aa82b3da34caca0c8b7b5c0c9584338aa93bae26b",
+    "https://bcr.bazel.build/modules/rules_shell/0.6.1/source.json": "20ec05cd5e592055e214b2da8ccb283c7f2a421ea0dc2acbf1aa792e11c03d0c",
+    "https://bcr.bazel.build/modules/rules_swift/1.16.0/MODULE.bazel": "4a09f199545a60d09895e8281362b1ff3bb08bbde69c6fc87aff5b92fcc916ca",
+    "https://bcr.bazel.build/modules/rules_swift/2.1.1/MODULE.bazel": "494900a80f944fc7aa61500c2073d9729dff0b764f0e89b824eb746959bc1046",
+    "https://bcr.bazel.build/modules/rules_swift/2.1.1/source.json": "40fc69dfaac64deddbb75bd99cdac55f4427d9ca0afbe408576a65428427a186",
+    "https://bcr.bazel.build/modules/stardoc/0.6.2/MODULE.bazel": "7060193196395f5dd668eda046ccbeacebfd98efc77fed418dbe2b82ffaa39fd",
+    "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c",
+    "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7",
+    "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5",
+    "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216",
+    "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91",
+    "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/source.json": "32bd87e5f4d7acc57c5b2ff7c325ae3061d5e242c0c4c214ae87e0f1c13e54cb",
+    "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43",
+    "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "c0df5e35ad55e264160417fd0875932ee3c9dda63d9fccace35ac62f45e1b6f9",
+    "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0",
+    "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27",
+    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca",
+    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806",
+    "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198"
   },
-  "localOverrideHashes": {
-    "bazel_tools": "922ea6752dc9105de5af957f7a99a6933c0a6a712d23df6aad16a9c399f7e787"
-  },
-  "moduleDepGraph": {
-    "<root>": {
-      "name": "",
-      "version": "",
-      "key": "<root>",
-      "repoName": "",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "rules_kotlin": "rules_kotlin@1.9.0",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
+  "selectedYankedVersions": {},
+  "moduleExtensions": {
+    "@@rules_android+//bzlmod_extensions:com_android_dex.bzl%com_android_dex_extension": {
+      "general": {
+        "bzlTransitiveDigest": "2icqERrdWnpamgt/akEgAtfBsjNG1/st+AAFRZx9aH4=",
+        "usagesDigest": "c1Y/KGGjUYCyd8zNIVTUh1bynVXRFz6xGKaSCBpQANM=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "com_android_dex": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://android.googlesource.com/platform/dalvik/+archive/5a81c499a569731e2395f7c8d13c0e0d4e17a2b6.tar.gz",
+              "build_file": "@@rules_android+//bzlmod_extensions:com_android_dex.BUILD"
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_android+",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
       }
     },
-    "rules_kotlin@1.9.0": {
-      "name": "rules_kotlin",
-      "version": "1.9.0",
-      "key": "rules_kotlin@1.9.0",
-      "repoName": "rules_kotlin",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "//kotlin/internal:default_toolchain"
-      ],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@rules_kotlin//src/main/starlark/core/repositories:bzlmod_setup.bzl",
-          "extensionName": "rules_kotlin_extensions",
-          "usingModule": "rules_kotlin@1.9.0",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel",
-            "line": 14,
-            "column": 40
-          },
-          "imports": {
-            "buildkite_config": "buildkite_config",
-            "com_github_google_ksp": "com_github_google_ksp",
-            "com_github_jetbrains_kotlin": "com_github_jetbrains_kotlin",
-            "com_github_pinterest_ktlint": "com_github_pinterest_ktlint",
-            "kt_java_stub_template": "kt_java_stub_template",
-            "rules_android": "rules_android"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
+    "@@rules_android+//rules/android_sdk_repository:rule.bzl%android_sdk_repository_extension": {
+      "general": {
+        "bzlTransitiveDigest": "+rMrzIrv7sImYmkbXJYv+gFpTJQ79X3MpwwMLI2A+oA=",
+        "usagesDigest": "QAyuLcpkGJyS2rkJJC7ifXUQ8o+OFbAmVaAOWbPXkaY=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "androidsdk": {
+            "repoRuleId": "@@rules_android+//rules/android_sdk_repository:rule.bzl%_android_sdk_repository",
+            "attributes": {}
+          }
         },
-        {
-          "extensionBzlFile": "@bazel_tools//tools/android:android_extensions.bzl",
-          "extensionName": "remote_android_tools_extensions",
-          "usingModule": "rules_kotlin@1.9.0",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel",
-            "line": 28,
-            "column": 42
-          },
-          "imports": {
-            "android_gmaven_r8": "android_gmaven_r8",
-            "android_tools": "android_tools"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": "@rules_jvm_external//:extensions.bzl",
-          "extensionName": "maven",
-          "usingModule": "rules_kotlin@1.9.0",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel",
-            "line": 37,
-            "column": 22
-          },
-          "imports": {
-            "kotlin_rules_maven": "kotlin_rules_maven"
-          },
-          "devImports": [],
-          "tags": [
-            {
-              "tagName": "install",
-              "attributeValues": {
-                "name": "kotlin_rules_maven",
-                "artifacts": [
-                  "com.google.code.findbugs:jsr305:3.0.2",
-                  "junit:junit:4.13-beta-3",
-                  "com.google.protobuf:protobuf-java:3.6.0",
-                  "com.google.protobuf:protobuf-java-util:3.6.0",
-                  "com.google.guava:guava:27.1-jre",
-                  "com.google.truth:truth:0.45",
-                  "com.google.auto.service:auto-service:1.0.1",
-                  "com.google.auto.service:auto-service-annotations:1.0.1",
-                  "com.google.auto.value:auto-value:1.10.1",
-                  "com.google.auto.value:auto-value-annotations:1.10.1",
-                  "com.google.dagger:dagger:2.43.2",
-                  "com.google.dagger:dagger-compiler:2.43.2",
-                  "com.google.dagger:dagger-producers:2.43.2",
-                  "javax.annotation:javax.annotation-api:1.3.2",
-                  "javax.inject:javax.inject:1",
-                  "org.pantsbuild:jarjar:1.7.2",
-                  "org.jetbrains.kotlinx:atomicfu-js:0.15.2",
-                  "org.jetbrains.kotlinx:kotlinx-serialization-runtime:1.0-M1-1.4.0-rc"
-                ],
-                "fetch_sources": true,
-                "repositories": [
-                  "https://maven-central.storage.googleapis.com/repos/central/data/",
-                  "https://maven.google.com",
-                  "https://repo1.maven.org/maven2"
+        "recordedRepoMappingEntries": []
+      }
+    },
+    "@@rules_python+//python/uv:uv.bzl%uv": {
+      "general": {
+        "bzlTransitiveDigest": "8vT1ddXtljNxYD0tJkksqzeKE6xqx4Ix+tXthAppjTI=",
+        "usagesDigest": "p80sy6cYQuWxx5jhV3fOTu+N9EyIUFG9+F7UC/nhXic=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "uv": {
+            "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo",
+            "attributes": {
+              "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'",
+              "toolchain_names": [
+                "none"
+              ],
+              "toolchain_implementations": {
+                "none": "'@@rules_python+//python:none'"
+              },
+              "toolchain_compatible_with": {
+                "none": [
+                  "@platforms//:incompatible"
                 ]
               },
-              "devDependency": false,
-              "location": {
-                "file": "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel",
-                "line": 38,
-                "column": 14
-              }
+              "toolchain_target_settings": {}
             }
-          ],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "bazel_skylib": "bazel_skylib@1.4.2",
-        "rules_java": "rules_java@7.1.0",
-        "rules_python": "rules_python@0.23.1",
-        "rules_cc": "rules_cc@0.0.9",
-        "rules_jvm_external": "rules_jvm_external@5.3",
-        "rules_pkg": "rules_pkg@0.7.0",
-        "io_bazel_stardoc": "stardoc@0.5.6",
-        "rules_proto": "rules_proto@5.3.0-21.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_kotlin~1.9.0",
-          "urls": [
-            "https://github.com/bazelbuild/rules_kotlin/releases/download/v1.9.0/rules_kotlin-v1.9.0.tar.gz"
-          ],
-          "integrity": "sha256-V2bx5Zms9VGqVvSdq5q5EIJpsDxVdJbFSsr0H5jiuNY=",
-          "strip_prefix": "",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/patches/module_dot_bazel_version.patch": "sha256-nDFDlp2ujd74k9mEF0Bh7pZqBt+CUCF2bZHIaFgM25g="
-          },
-          "remote_patch_strip": 1
-        }
-      }
-    },
-    "bazel_tools@_": {
-      "name": "bazel_tools",
-      "version": "",
-      "key": "bazel_tools@_",
-      "repoName": "bazel_tools",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "@local_config_cc_toolchains//:all",
-        "@local_config_sh//:local_sh_toolchain"
-      ],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@bazel_tools//tools/cpp:cc_configure.bzl",
-          "extensionName": "cc_configure_extension",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 17,
-            "column": 29
-          },
-          "imports": {
-            "local_config_cc": "local_config_cc",
-            "local_config_cc_toolchains": "local_config_cc_toolchains"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
+          }
         },
-        {
-          "extensionBzlFile": "@bazel_tools//tools/osx:xcode_configure.bzl",
-          "extensionName": "xcode_configure_extension",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 21,
-            "column": 32
-          },
-          "imports": {
-            "local_config_xcode": "local_config_xcode"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": "@rules_java//java:extensions.bzl",
-          "extensionName": "toolchains",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 24,
-            "column": 32
-          },
-          "imports": {
-            "local_jdk": "local_jdk",
-            "remote_java_tools": "remote_java_tools",
-            "remote_java_tools_linux": "remote_java_tools_linux",
-            "remote_java_tools_windows": "remote_java_tools_windows",
-            "remote_java_tools_darwin_x86_64": "remote_java_tools_darwin_x86_64",
-            "remote_java_tools_darwin_arm64": "remote_java_tools_darwin_arm64"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": "@bazel_tools//tools/sh:sh_configure.bzl",
-          "extensionName": "sh_configure_extension",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 35,
-            "column": 39
-          },
-          "imports": {
-            "local_config_sh": "local_config_sh"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": "@bazel_tools//tools/test:extensions.bzl",
-          "extensionName": "remote_coverage_tools_extension",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 39,
-            "column": 48
-          },
-          "imports": {
-            "remote_coverage_tools": "remote_coverage_tools"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": "@bazel_tools//tools/android:android_extensions.bzl",
-          "extensionName": "remote_android_tools_extensions",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 42,
-            "column": 42
-          },
-          "imports": {
-            "android_gmaven_r8": "android_gmaven_r8",
-            "android_tools": "android_tools"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "rules_cc": "rules_cc@0.0.9",
-        "rules_java": "rules_java@7.1.0",
-        "rules_license": "rules_license@0.0.7",
-        "rules_proto": "rules_proto@5.3.0-21.7",
-        "rules_python": "rules_python@0.23.1",
-        "platforms": "platforms@0.0.7",
-        "com_google_protobuf": "protobuf@21.7",
-        "zlib": "zlib@1.3",
-        "build_bazel_apple_support": "apple_support@1.5.0",
-        "local_config_platform": "local_config_platform@_"
-      }
-    },
-    "local_config_platform@_": {
-      "name": "local_config_platform",
-      "version": "",
-      "key": "local_config_platform@_",
-      "repoName": "local_config_platform",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "bazel_tools": "bazel_tools@_"
-      }
-    },
-    "platforms@0.0.7": {
-      "name": "platforms",
-      "version": "0.0.7",
-      "key": "platforms@0.0.7",
-      "repoName": "platforms",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "rules_license": "rules_license@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "platforms",
-          "urls": [
-            "https://github.com/bazelbuild/platforms/releases/download/0.0.7/platforms-0.0.7.tar.gz"
+        "recordedRepoMappingEntries": [
+          [
+            "rules_python+",
+            "bazel_tools",
+            "bazel_tools"
           ],
-          "integrity": "sha256-OlYcmee9vpFzqmU/1Xn+hJ8djWc5V4CrR3Cx84FDHVE=",
-          "strip_prefix": "",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "bazel_skylib@1.4.2": {
-      "name": "bazel_skylib",
-      "version": "1.4.2",
-      "key": "bazel_skylib@1.4.2",
-      "repoName": "bazel_skylib",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "//toolchains/unittest:cmd_toolchain",
-        "//toolchains/unittest:bash_toolchain"
-      ],
-      "extensionUsages": [],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "bazel_skylib~1.4.2",
-          "urls": [
-            "https://github.com/bazelbuild/bazel-skylib/releases/download/1.4.2/bazel-skylib-1.4.2.tar.gz"
-          ],
-          "integrity": "sha256-Zv/ZMVZlv6r8lrUiePV8fi3Qn17eJ56m05sr5HHn46o=",
-          "strip_prefix": "",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "rules_java@7.1.0": {
-      "name": "rules_java",
-      "version": "7.1.0",
-      "key": "rules_java@7.1.0",
-      "repoName": "rules_java",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "//toolchains:all",
-        "@local_jdk//:runtime_toolchain_definition",
-        "@local_jdk//:bootstrap_runtime_toolchain_definition",
-        "@remotejdk11_linux_toolchain_config_repo//:all",
-        "@remotejdk11_linux_aarch64_toolchain_config_repo//:all",
-        "@remotejdk11_linux_ppc64le_toolchain_config_repo//:all",
-        "@remotejdk11_linux_s390x_toolchain_config_repo//:all",
-        "@remotejdk11_macos_toolchain_config_repo//:all",
-        "@remotejdk11_macos_aarch64_toolchain_config_repo//:all",
-        "@remotejdk11_win_toolchain_config_repo//:all",
-        "@remotejdk11_win_arm64_toolchain_config_repo//:all",
-        "@remotejdk17_linux_toolchain_config_repo//:all",
-        "@remotejdk17_linux_aarch64_toolchain_config_repo//:all",
-        "@remotejdk17_linux_ppc64le_toolchain_config_repo//:all",
-        "@remotejdk17_linux_s390x_toolchain_config_repo//:all",
-        "@remotejdk17_macos_toolchain_config_repo//:all",
-        "@remotejdk17_macos_aarch64_toolchain_config_repo//:all",
-        "@remotejdk17_win_toolchain_config_repo//:all",
-        "@remotejdk17_win_arm64_toolchain_config_repo//:all",
-        "@remotejdk21_linux_toolchain_config_repo//:all",
-        "@remotejdk21_linux_aarch64_toolchain_config_repo//:all",
-        "@remotejdk21_macos_toolchain_config_repo//:all",
-        "@remotejdk21_macos_aarch64_toolchain_config_repo//:all",
-        "@remotejdk21_win_toolchain_config_repo//:all"
-      ],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@rules_java//java:extensions.bzl",
-          "extensionName": "toolchains",
-          "usingModule": "rules_java@7.1.0",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel",
-            "line": 19,
-            "column": 27
-          },
-          "imports": {
-            "remote_java_tools": "remote_java_tools",
-            "remote_java_tools_linux": "remote_java_tools_linux",
-            "remote_java_tools_windows": "remote_java_tools_windows",
-            "remote_java_tools_darwin_x86_64": "remote_java_tools_darwin_x86_64",
-            "remote_java_tools_darwin_arm64": "remote_java_tools_darwin_arm64",
-            "local_jdk": "local_jdk",
-            "remotejdk11_linux_toolchain_config_repo": "remotejdk11_linux_toolchain_config_repo",
-            "remotejdk11_linux_aarch64_toolchain_config_repo": "remotejdk11_linux_aarch64_toolchain_config_repo",
-            "remotejdk11_linux_ppc64le_toolchain_config_repo": "remotejdk11_linux_ppc64le_toolchain_config_repo",
-            "remotejdk11_linux_s390x_toolchain_config_repo": "remotejdk11_linux_s390x_toolchain_config_repo",
-            "remotejdk11_macos_toolchain_config_repo": "remotejdk11_macos_toolchain_config_repo",
-            "remotejdk11_macos_aarch64_toolchain_config_repo": "remotejdk11_macos_aarch64_toolchain_config_repo",
-            "remotejdk11_win_toolchain_config_repo": "remotejdk11_win_toolchain_config_repo",
-            "remotejdk11_win_arm64_toolchain_config_repo": "remotejdk11_win_arm64_toolchain_config_repo",
-            "remotejdk17_linux_toolchain_config_repo": "remotejdk17_linux_toolchain_config_repo",
-            "remotejdk17_linux_aarch64_toolchain_config_repo": "remotejdk17_linux_aarch64_toolchain_config_repo",
-            "remotejdk17_linux_ppc64le_toolchain_config_repo": "remotejdk17_linux_ppc64le_toolchain_config_repo",
-            "remotejdk17_linux_s390x_toolchain_config_repo": "remotejdk17_linux_s390x_toolchain_config_repo",
-            "remotejdk17_macos_toolchain_config_repo": "remotejdk17_macos_toolchain_config_repo",
-            "remotejdk17_macos_aarch64_toolchain_config_repo": "remotejdk17_macos_aarch64_toolchain_config_repo",
-            "remotejdk17_win_toolchain_config_repo": "remotejdk17_win_toolchain_config_repo",
-            "remotejdk17_win_arm64_toolchain_config_repo": "remotejdk17_win_arm64_toolchain_config_repo",
-            "remotejdk21_linux_toolchain_config_repo": "remotejdk21_linux_toolchain_config_repo",
-            "remotejdk21_linux_aarch64_toolchain_config_repo": "remotejdk21_linux_aarch64_toolchain_config_repo",
-            "remotejdk21_macos_toolchain_config_repo": "remotejdk21_macos_toolchain_config_repo",
-            "remotejdk21_macos_aarch64_toolchain_config_repo": "remotejdk21_macos_aarch64_toolchain_config_repo",
-            "remotejdk21_win_toolchain_config_repo": "remotejdk21_win_toolchain_config_repo"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "rules_cc": "rules_cc@0.0.9",
-        "bazel_skylib": "bazel_skylib@1.4.2",
-        "rules_proto": "rules_proto@5.3.0-21.7",
-        "rules_license": "rules_license@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_java~7.1.0",
-          "urls": [
-            "https://github.com/bazelbuild/rules_java/releases/download/7.1.0/rules_java-7.1.0.tar.gz"
-          ],
-          "integrity": "sha256-o3pOX2OrgnFuXdau75iO2EYcegC46TYnImKJn1h81OE=",
-          "strip_prefix": "",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "rules_python@0.23.1": {
-      "name": "rules_python",
-      "version": "0.23.1",
-      "key": "rules_python@0.23.1",
-      "repoName": "rules_python",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "@pythons_hub//:all"
-      ],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@rules_python//python/extensions/private:internal_deps.bzl",
-          "extensionName": "internal_deps",
-          "usingModule": "rules_python@0.23.1",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel",
-            "line": 14,
-            "column": 30
-          },
-          "imports": {
-            "pypi__build": "pypi__build",
-            "pypi__click": "pypi__click",
-            "pypi__colorama": "pypi__colorama",
-            "pypi__importlib_metadata": "pypi__importlib_metadata",
-            "pypi__installer": "pypi__installer",
-            "pypi__more_itertools": "pypi__more_itertools",
-            "pypi__packaging": "pypi__packaging",
-            "pypi__pep517": "pypi__pep517",
-            "pypi__pip": "pypi__pip",
-            "pypi__pip_tools": "pypi__pip_tools",
-            "pypi__setuptools": "pypi__setuptools",
-            "pypi__tomli": "pypi__tomli",
-            "pypi__wheel": "pypi__wheel",
-            "pypi__zipp": "pypi__zipp",
-            "pypi__coverage_cp310_aarch64-apple-darwin": "pypi__coverage_cp310_aarch64-apple-darwin",
-            "pypi__coverage_cp310_aarch64-unknown-linux-gnu": "pypi__coverage_cp310_aarch64-unknown-linux-gnu",
-            "pypi__coverage_cp310_x86_64-apple-darwin": "pypi__coverage_cp310_x86_64-apple-darwin",
-            "pypi__coverage_cp310_x86_64-unknown-linux-gnu": "pypi__coverage_cp310_x86_64-unknown-linux-gnu",
-            "pypi__coverage_cp311_aarch64-apple-darwin": "pypi__coverage_cp311_aarch64-apple-darwin",
-            "pypi__coverage_cp311_aarch64-unknown-linux-gnu": "pypi__coverage_cp311_aarch64-unknown-linux-gnu",
-            "pypi__coverage_cp311_x86_64-apple-darwin": "pypi__coverage_cp311_x86_64-apple-darwin",
-            "pypi__coverage_cp311_x86_64-unknown-linux-gnu": "pypi__coverage_cp311_x86_64-unknown-linux-gnu",
-            "pypi__coverage_cp38_aarch64-apple-darwin": "pypi__coverage_cp38_aarch64-apple-darwin",
-            "pypi__coverage_cp38_aarch64-unknown-linux-gnu": "pypi__coverage_cp38_aarch64-unknown-linux-gnu",
-            "pypi__coverage_cp38_x86_64-apple-darwin": "pypi__coverage_cp38_x86_64-apple-darwin",
-            "pypi__coverage_cp38_x86_64-unknown-linux-gnu": "pypi__coverage_cp38_x86_64-unknown-linux-gnu",
-            "pypi__coverage_cp39_aarch64-apple-darwin": "pypi__coverage_cp39_aarch64-apple-darwin",
-            "pypi__coverage_cp39_aarch64-unknown-linux-gnu": "pypi__coverage_cp39_aarch64-unknown-linux-gnu",
-            "pypi__coverage_cp39_x86_64-apple-darwin": "pypi__coverage_cp39_x86_64-apple-darwin",
-            "pypi__coverage_cp39_x86_64-unknown-linux-gnu": "pypi__coverage_cp39_x86_64-unknown-linux-gnu"
-          },
-          "devImports": [],
-          "tags": [
-            {
-              "tagName": "install",
-              "attributeValues": {},
-              "devDependency": false,
-              "location": {
-                "file": "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel",
-                "line": 15,
-                "column": 22
-              }
-            }
-          ],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": "@rules_python//python/extensions:python.bzl",
-          "extensionName": "python",
-          "usingModule": "rules_python@0.23.1",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel",
-            "line": 53,
-            "column": 23
-          },
-          "imports": {
-            "pythons_hub": "pythons_hub"
-          },
-          "devImports": [],
-          "tags": [
-            {
-              "tagName": "toolchain",
-              "attributeValues": {
-                "is_default": true,
-                "python_version": "3.11"
-              },
-              "devDependency": false,
-              "location": {
-                "file": "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel",
-                "line": 59,
-                "column": 17
-              }
-            }
-          ],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "bazel_skylib": "bazel_skylib@1.4.2",
-        "rules_proto": "rules_proto@5.3.0-21.7",
-        "com_google_protobuf": "protobuf@21.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_python~0.23.1",
-          "urls": [
-            "https://github.com/bazelbuild/rules_python/releases/download/0.23.1/rules_python-0.23.1.tar.gz"
-          ],
-          "integrity": "sha256-hK7J4hzFb7x/EzUDWnHIUNG5tcxv9Jcwb4TM7Zp2mEE=",
-          "strip_prefix": "rules_python-0.23.1",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/rules_python/0.23.1/patches/module_dot_bazel_version.patch": "sha256-Fb/omGfKlthLHMy1276rtIDI9k5sZQQhAeNsleX4y2k="
-          },
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "rules_cc@0.0.9": {
-      "name": "rules_cc",
-      "version": "0.0.9",
-      "key": "rules_cc@0.0.9",
-      "repoName": "rules_cc",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "@local_config_cc_toolchains//:all"
-      ],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@bazel_tools//tools/cpp:cc_configure.bzl",
-          "extensionName": "cc_configure_extension",
-          "usingModule": "rules_cc@0.0.9",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel",
-            "line": 9,
-            "column": 29
-          },
-          "imports": {
-            "local_config_cc_toolchains": "local_config_cc_toolchains"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_cc~0.0.9",
-          "urls": [
-            "https://github.com/bazelbuild/rules_cc/releases/download/0.0.9/rules_cc-0.0.9.tar.gz"
-          ],
-          "integrity": "sha256-IDeHW5pEVtzkp50RKorohbvEqtlo5lh9ym5k86CQDN8=",
-          "strip_prefix": "rules_cc-0.0.9",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/rules_cc/0.0.9/patches/module_dot_bazel_version.patch": "sha256-mM+qzOI0SgAdaJBlWOSMwMPKpaA9b7R37Hj/tp5bb4g="
-          },
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "rules_jvm_external@5.3": {
-      "name": "rules_jvm_external",
-      "version": "5.3",
-      "key": "rules_jvm_external@5.3",
-      "repoName": "rules_jvm_external",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@rules_jvm_external//:non-module-deps.bzl",
-          "extensionName": "non_module_deps",
-          "usingModule": "rules_jvm_external@5.3",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel",
-            "line": 9,
-            "column": 32
-          },
-          "imports": {
-            "io_bazel_rules_kotlin": "io_bazel_rules_kotlin"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": ":extensions.bzl",
-          "extensionName": "maven",
-          "usingModule": "rules_jvm_external@5.3",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel",
-            "line": 16,
-            "column": 22
-          },
-          "imports": {
-            "rules_jvm_external_deps": "rules_jvm_external_deps"
-          },
-          "devImports": [],
-          "tags": [
-            {
-              "tagName": "install",
-              "attributeValues": {
-                "name": "rules_jvm_external_deps",
-                "artifacts": [
-                  "com.google.auth:google-auth-library-credentials:1.17.0",
-                  "com.google.auth:google-auth-library-oauth2-http:1.17.0",
-                  "com.google.cloud:google-cloud-core:2.18.1",
-                  "com.google.cloud:google-cloud-storage:2.22.3",
-                  "com.google.code.gson:gson:2.10.1",
-                  "com.google.googlejavaformat:google-java-format:1.17.0",
-                  "com.google.guava:guava:32.0.0-jre",
-                  "org.apache.maven:maven-artifact:3.9.2",
-                  "software.amazon.awssdk:s3:2.20.78"
-                ],
-                "lock_file": "@rules_jvm_external//:rules_jvm_external_deps_install.json"
-              },
-              "devDependency": false,
-              "location": {
-                "file": "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel",
-                "line": 18,
-                "column": 14
-              }
-            }
-          ],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "bazel_skylib": "bazel_skylib@1.4.2",
-        "io_bazel_stardoc": "stardoc@0.5.6",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_jvm_external~5.3",
-          "urls": [
-            "https://github.com/bazelbuild/rules_jvm_external/releases/download/5.3/rules_jvm_external-5.3.tar.gz"
-          ],
-          "integrity": "sha256-0x42m4VDIspQmOoSxp1xdd7ZcUNeVcGN2d1fKcxSSaw=",
-          "strip_prefix": "rules_jvm_external-5.3",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "rules_pkg@0.7.0": {
-      "name": "rules_pkg",
-      "version": "0.7.0",
-      "key": "rules_pkg@0.7.0",
-      "repoName": "rules_pkg",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "rules_python": "rules_python@0.23.1",
-        "bazel_skylib": "bazel_skylib@1.4.2",
-        "rules_license": "rules_license@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_pkg~0.7.0",
-          "urls": [
-            "https://github.com/bazelbuild/rules_pkg/releases/download/0.7.0/rules_pkg-0.7.0.tar.gz"
-          ],
-          "integrity": "sha256-iimOgydi7aGDBZfWT+fbWBeKqEzVkm121bdE1lWJQcI=",
-          "strip_prefix": "",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/rules_pkg/0.7.0/patches/module_dot_bazel.patch": "sha256-4OaEPZwYF6iC71ZTDg6MJ7LLqX7ZA0/kK4mT+4xKqiE="
-          },
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "stardoc@0.5.6": {
-      "name": "stardoc",
-      "version": "0.5.6",
-      "key": "stardoc@0.5.6",
-      "repoName": "stardoc",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "bazel_skylib": "bazel_skylib@1.4.2",
-        "rules_java": "rules_java@7.1.0",
-        "rules_license": "rules_license@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "stardoc~0.5.6",
-          "urls": [
-            "https://github.com/bazelbuild/stardoc/releases/download/0.5.6/stardoc-0.5.6.tar.gz"
-          ],
-          "integrity": "sha256-37w2Sq7BQ99ebFL68fEWZ3WltECCQ/RF9EtmHP3DE08=",
-          "strip_prefix": "",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "rules_proto@5.3.0-21.7": {
-      "name": "rules_proto",
-      "version": "5.3.0-21.7",
-      "key": "rules_proto@5.3.0-21.7",
-      "repoName": "rules_proto",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "bazel_skylib": "bazel_skylib@1.4.2",
-        "com_google_protobuf": "protobuf@21.7",
-        "rules_cc": "rules_cc@0.0.9",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_proto~5.3.0-21.7",
-          "urls": [
-            "https://github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz"
-          ],
-          "integrity": "sha256-3D+yBqLLNEG0heseQjFlsjEjWh6psDG0Qzz3vB+kYN0=",
-          "strip_prefix": "rules_proto-5.3.0-21.7",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "rules_license@0.0.7": {
-      "name": "rules_license",
-      "version": "0.0.7",
-      "key": "rules_license@0.0.7",
-      "repoName": "rules_license",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_license~0.0.7",
-          "urls": [
-            "https://github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz"
-          ],
-          "integrity": "sha256-RTHezLkTY5ww5cdRKgVNXYdWmNrrddjPkPKEN1/nw2A=",
-          "strip_prefix": "",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "protobuf@21.7": {
-      "name": "protobuf",
-      "version": "21.7",
-      "key": "protobuf@21.7",
-      "repoName": "protobuf",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@rules_jvm_external//:extensions.bzl",
-          "extensionName": "maven",
-          "usingModule": "protobuf@21.7",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel",
-            "line": 22,
-            "column": 22
-          },
-          "imports": {
-            "maven": "maven"
-          },
-          "devImports": [],
-          "tags": [
-            {
-              "tagName": "install",
-              "attributeValues": {
-                "name": "maven",
-                "artifacts": [
-                  "com.google.code.findbugs:jsr305:3.0.2",
-                  "com.google.code.gson:gson:2.8.9",
-                  "com.google.errorprone:error_prone_annotations:2.3.2",
-                  "com.google.j2objc:j2objc-annotations:1.3",
-                  "com.google.guava:guava:31.1-jre",
-                  "com.google.guava:guava-testlib:31.1-jre",
-                  "com.google.truth:truth:1.1.2",
-                  "junit:junit:4.13.2",
-                  "org.mockito:mockito-core:4.3.1"
-                ]
-              },
-              "devDependency": false,
-              "location": {
-                "file": "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel",
-                "line": 24,
-                "column": 14
-              }
-            }
-          ],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "bazel_skylib": "bazel_skylib@1.4.2",
-        "rules_python": "rules_python@0.23.1",
-        "rules_cc": "rules_cc@0.0.9",
-        "rules_proto": "rules_proto@5.3.0-21.7",
-        "rules_java": "rules_java@7.1.0",
-        "rules_pkg": "rules_pkg@0.7.0",
-        "com_google_abseil": "abseil-cpp@20211102.0",
-        "zlib": "zlib@1.3",
-        "upb": "upb@0.0.0-20220923-a547704",
-        "rules_jvm_external": "rules_jvm_external@5.3",
-        "com_google_googletest": "googletest@1.11.0",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "protobuf~21.7",
-          "urls": [
-            "https://github.com/protocolbuffers/protobuf/releases/download/v21.7/protobuf-all-21.7.zip"
-          ],
-          "integrity": "sha256-VJOiH17T/FAuZv7GuUScBqVRztYwAvpIkDxA36jeeko=",
-          "strip_prefix": "protobuf-21.7",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/protobuf/21.7/patches/add_module_dot_bazel.patch": "sha256-q3V2+eq0v2XF0z8z+V+QF4cynD6JvHI1y3kI/+rzl5s=",
-            "https://bcr.bazel.build/modules/protobuf/21.7/patches/add_module_dot_bazel_for_examples.patch": "sha256-O7YP6s3lo/1opUiO0jqXYORNHdZ/2q3hjz1QGy8QdIU=",
-            "https://bcr.bazel.build/modules/protobuf/21.7/patches/relative_repo_names.patch": "sha256-RK9RjW8T5UJNG7flIrnFiNE9vKwWB+8uWWtJqXYT0w4=",
-            "https://bcr.bazel.build/modules/protobuf/21.7/patches/add_missing_files.patch": "sha256-Hyne4DG2u5bXcWHNxNMirA2QFAe/2Cl8oMm1XJdkQIY="
-          },
-          "remote_patch_strip": 1
-        }
-      }
-    },
-    "zlib@1.3": {
-      "name": "zlib",
-      "version": "1.3",
-      "key": "zlib@1.3",
-      "repoName": "zlib",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "rules_cc": "rules_cc@0.0.9",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "zlib~1.3",
-          "urls": [
-            "https://github.com/madler/zlib/releases/download/v1.3/zlib-1.3.tar.gz"
-          ],
-          "integrity": "sha256-/wukwpIBPbwnUws6geH5qBPNOd4Byl4Pi/NVcC76WT4=",
-          "strip_prefix": "zlib-1.3",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/zlib/1.3/patches/add_build_file.patch": "sha256-Ei+FYaaOo7A3jTKunMEodTI0Uw5NXQyZEcboMC8JskY=",
-            "https://bcr.bazel.build/modules/zlib/1.3/patches/module_dot_bazel.patch": "sha256-fPWLM+2xaF/kuy+kZc1YTfW6hNjrkG400Ho7gckuyJk="
-          },
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "apple_support@1.5.0": {
-      "name": "apple_support",
-      "version": "1.5.0",
-      "key": "apple_support@1.5.0",
-      "repoName": "build_bazel_apple_support",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "@local_config_apple_cc_toolchains//:all"
-      ],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@build_bazel_apple_support//crosstool:setup.bzl",
-          "extensionName": "apple_cc_configure_extension",
-          "usingModule": "apple_support@1.5.0",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel",
-            "line": 17,
-            "column": 35
-          },
-          "imports": {
-            "local_config_apple_cc": "local_config_apple_cc",
-            "local_config_apple_cc_toolchains": "local_config_apple_cc_toolchains"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "bazel_skylib": "bazel_skylib@1.4.2",
-        "platforms": "platforms@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "apple_support~1.5.0",
-          "urls": [
-            "https://github.com/bazelbuild/apple_support/releases/download/1.5.0/apple_support.1.5.0.tar.gz"
-          ],
-          "integrity": "sha256-miM41vja0yRPgj8txghKA+TQ+7J8qJLclw5okNW0gYQ=",
-          "strip_prefix": "",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "abseil-cpp@20211102.0": {
-      "name": "abseil-cpp",
-      "version": "20211102.0",
-      "key": "abseil-cpp@20211102.0",
-      "repoName": "abseil-cpp",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "rules_cc": "rules_cc@0.0.9",
-        "platforms": "platforms@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "abseil-cpp~20211102.0",
-          "urls": [
-            "https://github.com/abseil/abseil-cpp/archive/refs/tags/20211102.0.tar.gz"
-          ],
-          "integrity": "sha256-3PcbnLqNwMqZQMSzFqDHlr6Pq0KwcLtrfKtitI8OZsQ=",
-          "strip_prefix": "abseil-cpp-20211102.0",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/patches/module_dot_bazel.patch": "sha256-4izqopgGCey4jVZzl/w3M2GVPNohjh2B5TmbThZNvPY="
-          },
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "upb@0.0.0-20220923-a547704": {
-      "name": "upb",
-      "version": "0.0.0-20220923-a547704",
-      "key": "upb@0.0.0-20220923-a547704",
-      "repoName": "upb",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "bazel_skylib": "bazel_skylib@1.4.2",
-        "rules_proto": "rules_proto@5.3.0-21.7",
-        "com_google_protobuf": "protobuf@21.7",
-        "com_google_absl": "abseil-cpp@20211102.0",
-        "platforms": "platforms@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "upb~0.0.0-20220923-a547704",
-          "urls": [
-            "https://github.com/protocolbuffers/upb/archive/a5477045acaa34586420942098f5fecd3570f577.tar.gz"
-          ],
-          "integrity": "sha256-z39x6v+QskwaKLSWRan/A6mmwecTQpHOcJActj5zZLU=",
-          "strip_prefix": "upb-a5477045acaa34586420942098f5fecd3570f577",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/patches/module_dot_bazel.patch": "sha256-wH4mNS6ZYy+8uC0HoAft/c7SDsq2Kxf+J8dUakXhaB0="
-          },
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "googletest@1.11.0": {
-      "name": "googletest",
-      "version": "1.11.0",
-      "key": "googletest@1.11.0",
-      "repoName": "googletest",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "com_google_absl": "abseil-cpp@20211102.0",
-        "platforms": "platforms@0.0.7",
-        "rules_cc": "rules_cc@0.0.9",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "googletest~1.11.0",
-          "urls": [
-            "https://github.com/google/googletest/archive/refs/tags/release-1.11.0.tar.gz"
-          ],
-          "integrity": "sha256-tIcL8SH/d5W6INILzdhie44Ijy0dqymaAxwQNO3ck9U=",
-          "strip_prefix": "googletest-release-1.11.0",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/googletest/1.11.0/patches/module_dot_bazel.patch": "sha256-HuahEdI/n8KCI071sN3CEziX+7qP/Ec77IWayYunLP0="
-          },
-          "remote_patch_strip": 0
-        }
+          [
+            "rules_python+",
+            "platforms",
+            "platforms"
+          ]
+        ]
       }
     }
   },
-  "moduleExtensions": {
-    "@@apple_support~1.5.0//crosstool:setup.bzl%apple_cc_configure_extension": {
-      "general": {
-        "bzlTransitiveDigest": "pMLFCYaRPkgXPQ8vtuNkMfiHfPmRBy6QJfnid4sWfv0=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "local_config_apple_cc": {
-            "bzlFile": "@@apple_support~1.5.0//crosstool:setup.bzl",
-            "ruleClassName": "_apple_cc_autoconf",
-            "attributes": {
-              "name": "apple_support~1.5.0~apple_cc_configure_extension~local_config_apple_cc"
-            }
-          },
-          "local_config_apple_cc_toolchains": {
-            "bzlFile": "@@apple_support~1.5.0//crosstool:setup.bzl",
-            "ruleClassName": "_apple_cc_autoconf_toolchains",
-            "attributes": {
-              "name": "apple_support~1.5.0~apple_cc_configure_extension~local_config_apple_cc_toolchains"
-            }
-          }
-        }
-      }
-    },
-    "@@bazel_tools//tools/android:android_extensions.bzl%remote_android_tools_extensions": {
-      "general": {
-        "bzlTransitiveDigest": "iz3RFYDcsjupaT10sdSPAhA44WL3eDYkTEnYThllj1w=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "android_tools": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "bazel_tools~remote_android_tools_extensions~android_tools",
-              "sha256": "2b661a761a735b41c41b3a78089f4fc1982626c76ddb944604ae3ff8c545d3c2",
-              "url": "https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.30.0.tar"
-            }
-          },
-          "android_gmaven_r8": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_jar",
-            "attributes": {
-              "name": "bazel_tools~remote_android_tools_extensions~android_gmaven_r8",
-              "sha256": "57a696749695a09381a87bc2f08c3a8ed06a717a5caa3ef878a3077e0d3af19d",
-              "url": "https://maven.google.com/com/android/tools/r8/8.1.56/r8-8.1.56.jar"
-            }
-          }
-        }
-      }
-    },
-    "@@bazel_tools//tools/cpp:cc_configure.bzl%cc_configure_extension": {
-      "general": {
-        "bzlTransitiveDigest": "O9sf6ilKWU9Veed02jG9o2HM/xgV/UAyciuFBuxrFRY=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "local_config_cc": {
-            "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl",
-            "ruleClassName": "cc_autoconf",
-            "attributes": {
-              "name": "bazel_tools~cc_configure_extension~local_config_cc"
-            }
-          },
-          "local_config_cc_toolchains": {
-            "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl",
-            "ruleClassName": "cc_autoconf_toolchains",
-            "attributes": {
-              "name": "bazel_tools~cc_configure_extension~local_config_cc_toolchains"
-            }
-          }
-        }
-      }
-    },
-    "@@bazel_tools//tools/osx:xcode_configure.bzl%xcode_configure_extension": {
-      "general": {
-        "bzlTransitiveDigest": "Qh2bWTU6QW6wkrd87qrU4YeY+SG37Nvw3A0PR4Y0L2Y=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "local_config_xcode": {
-            "bzlFile": "@@bazel_tools//tools/osx:xcode_configure.bzl",
-            "ruleClassName": "xcode_autoconf",
-            "attributes": {
-              "name": "bazel_tools~xcode_configure_extension~local_config_xcode",
-              "xcode_locator": "@bazel_tools//tools/osx:xcode_locator.m",
-              "remote_xcode": ""
-            }
-          }
-        }
-      }
-    },
-    "@@bazel_tools//tools/sh:sh_configure.bzl%sh_configure_extension": {
-      "general": {
-        "bzlTransitiveDigest": "hp4NgmNjEg5+xgvzfh6L83bt9/aiiWETuNpwNuF1MSU=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "local_config_sh": {
-            "bzlFile": "@@bazel_tools//tools/sh:sh_configure.bzl",
-            "ruleClassName": "sh_config",
-            "attributes": {
-              "name": "bazel_tools~sh_configure_extension~local_config_sh"
-            }
-          }
-        }
-      }
-    },
-    "@@rules_java~7.1.0//java:extensions.bzl%toolchains": {
-      "general": {
-        "bzlTransitiveDigest": "iUIRqCK7tkhvcDJCAfPPqSd06IHG0a8HQD0xeQyVAqw=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "remotejdk21_linux_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_linux_s390x_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_s390x_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_s390x//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_s390x//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_macos_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk21_macos_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_linux_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk21_macos_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
-              "sha256": "2a7a99a3ea263dbd8d32a67d1e6e363ba8b25c645c826f5e167a02bbafaff1fa",
-              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-macosx_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk17_linux_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_macos_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "314b04568ec0ae9b36ba03c9cbd42adc9e1265f74678923b19297d66eb84dcca",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-macosx_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remote_java_tools_windows": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remote_java_tools_windows",
-              "sha256": "c5c70c214a350f12cbf52da8270fa43ba629b795f3dd328028a38f8f0d39c2a1",
-              "urls": [
-                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_windows-v13.1.zip",
-                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_windows-v13.1.zip"
-              ]
-            }
-          },
-          "remotejdk11_win": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_win",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "43408193ce2fa0862819495b5ae8541085b95660153f2adcf91a52d3a1710e83",
-              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-win_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-win_x64.zip",
-                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-win_x64.zip"
-              ]
-            }
-          },
-          "remotejdk11_win_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_win_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "54174439f2b3fddd11f1048c397fe7bb45d4c9d66d452d6889b013d04d21c4de",
-              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-linux_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk17_linux": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "b9482f2304a1a68a614dfacddcf29569a72f0fac32e6c74f83dc1b9a157b8340",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-linux_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_x64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk11_linux_s390x_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_s390x_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_s390x//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_s390x//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_macos": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "bcaab11cfe586fae7583c6d9d311c64384354fb2638eb9a012eca4c3f1a1d9fd",
-              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-macosx_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_x64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk11_win_arm64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_win_arm64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "b8a28e6e767d90acf793ea6f5bed0bb595ba0ba5ebdf8b99f395266161e53ec2",
-              "strip_prefix": "jdk-11.0.13+8",
-              "urls": [
-                "https://mirror.bazel.build/aka.ms/download-jdk/microsoft-jdk-11.0.13.8.1-windows-aarch64.zip"
-              ]
-            }
-          },
-          "remotejdk17_macos": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "640453e8afe8ffe0fb4dceb4535fb50db9c283c64665eebb0ba68b19e65f4b1f",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-macosx_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_x64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk21_macos": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
-              "sha256": "9639b87db586d0c89f7a9892ae47f421e442c64b97baebdff31788fbe23265bd",
-              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-macosx_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_x64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk21_macos_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_macos_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_win": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_win",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "192f2afca57701de6ec496234f7e45d971bf623ff66b8ee4a5c81582054e5637",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-win_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_x64.zip",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_x64.zip"
-              ]
-            }
-          },
-          "remotejdk11_macos_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux_ppc64le_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_ppc64le_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_ppc64le//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_ppc64le//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk21_linux": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
-              "sha256": "0c0eadfbdc47a7ca64aeab51b9c061f71b6e4d25d2d87674512e9b6387e9e3a6",
-              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-linux_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_x64.tar.gz"
-              ]
-            }
-          },
-          "remote_java_tools_linux": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remote_java_tools_linux",
-              "sha256": "d134da9b04c9023fb6e56a5d4bffccee73f7bc9572ddc4e747778dacccd7a5a7",
-              "urls": [
-                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_linux-v13.1.zip",
-                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_linux-v13.1.zip"
-              ]
-            }
-          },
-          "remotejdk21_win": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_win",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
-              "sha256": "e9959d500a0d9a7694ac243baf657761479da132f0f94720cbffd092150bd802",
-              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-win_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-win_x64.zip",
-                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-win_x64.zip"
-              ]
-            }
-          },
-          "remotejdk21_linux_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
-              "sha256": "1fb64b8036c5d463d8ab59af06bf5b6b006811e6012e3b0eb6bccf57f1c55835",
-              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-linux_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk11_linux_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux_s390x": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_s390x",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "a58fc0361966af0a5d5a31a2d8a208e3c9bb0f54f345596fd80b99ea9a39788b",
-              "strip_prefix": "jdk-11.0.15+10",
-              "urls": [
-                "https://mirror.bazel.build/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.15_10.tar.gz",
-                "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.15_10.tar.gz"
-              ]
-            }
-          },
-          "remotejdk17_linux_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "6531cef61e416d5a7b691555c8cf2bdff689201b8a001ff45ab6740062b44313",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-linux_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk17_win_arm64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_win_arm64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win_arm64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win_arm64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "a34b404f87a08a61148b38e1416d837189e1df7a040d949e743633daf4695a3c",
-              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-linux_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_x64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk11_macos_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_linux_ppc64le_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_ppc64le_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_ppc64le//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_ppc64le//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_win_arm64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_win_arm64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "6802c99eae0d788e21f52d03cab2e2b3bf42bc334ca03cbf19f71eb70ee19f85",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-win_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_aarch64.zip",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_aarch64.zip"
-              ]
-            }
-          },
-          "remote_java_tools_darwin_arm64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remote_java_tools_darwin_arm64",
-              "sha256": "dab5bb87ec43e980faea6e1cec14bafb217b8e2f5346f53aa784fd715929a930",
-              "urls": [
-                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_darwin_arm64-v13.1.zip",
-                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_darwin_arm64-v13.1.zip"
-              ]
-            }
-          },
-          "remotejdk17_linux_ppc64le": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_ppc64le",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "00a4c07603d0218cd678461b5b3b7e25b3253102da4022d31fc35907f21a2efd",
-              "strip_prefix": "jdk-17.0.8.1+1",
-              "urls": [
-                "https://mirror.bazel.build/github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.8.1_1.tar.gz",
-                "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.8.1_1.tar.gz"
-              ]
-            }
-          },
-          "remotejdk21_linux_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_win_arm64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_win_arm64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win_arm64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win_arm64//:jdk\",\n)\n"
-            }
-          },
-          "local_jdk": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:local_java_repository.bzl",
-            "ruleClassName": "_local_java_repository_rule",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~local_jdk",
-              "java_home": "",
-              "version": "",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = {RUNTIME_VERSION},\n)\n"
-            }
-          },
-          "remote_java_tools_darwin_x86_64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remote_java_tools_darwin_x86_64",
-              "sha256": "0db40d8505a2b65ef0ed46e4256757807db8162f7acff16225be57c1d5726dbc",
-              "urls": [
-                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_darwin_x86_64-v13.1.zip",
-                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_darwin_x86_64-v13.1.zip"
-              ]
-            }
-          },
-          "remote_java_tools": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remote_java_tools",
-              "sha256": "286bdbbd66e616fc4ed3f90101418729a73baa7e8c23a98ffbef558f74c0ad14",
-              "urls": [
-                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools-v13.1.zip",
-                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools-v13.1.zip"
-              ]
-            }
-          },
-          "remotejdk17_linux_s390x": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_s390x",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "ffacba69c6843d7ca70d572489d6cc7ab7ae52c60f0852cedf4cf0d248b6fc37",
-              "strip_prefix": "jdk-17.0.8.1+1",
-              "urls": [
-                "https://mirror.bazel.build/github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.8.1_1.tar.gz",
-                "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.8.1_1.tar.gz"
-              ]
-            }
-          },
-          "remotejdk17_win_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_win_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux_ppc64le": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_ppc64le",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "a8fba686f6eb8ae1d1a9566821dbd5a85a1108b96ad857fdbac5c1e4649fc56f",
-              "strip_prefix": "jdk-11.0.15+10",
-              "urls": [
-                "https://mirror.bazel.build/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.15_10.tar.gz",
-                "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.15_10.tar.gz"
-              ]
-            }
-          },
-          "remotejdk11_macos_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "7632bc29f8a4b7d492b93f3bc75a7b61630894db85d136456035ab2a24d38885",
-              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-macosx_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk21_win_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_win_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_win//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_win//:jdk\",\n)\n"
-            }
-          }
-        }
-      }
-    },
-    "@@rules_kotlin~1.9.0//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": {
-      "general": {
-        "bzlTransitiveDigest": "MsG2U6EBrhd0r5706CUJ4kLT+JfMB0uLaQnqfORzIF8=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "rules_android": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_kotlin~1.9.0~rules_kotlin_extensions~rules_android",
-              "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806",
-              "strip_prefix": "rules_android-0.1.1",
-              "urls": [
-                "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip"
-              ]
-            }
-          },
-          "com_github_pinterest_ktlint": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_file",
-            "attributes": {
-              "name": "rules_kotlin~1.9.0~rules_kotlin_extensions~com_github_pinterest_ktlint",
-              "sha256": "2b3f6f674a944d25bb8d283c3539947bbe86074793012909a55de4b771f74bcc",
-              "urls": [
-                "https://github.com/pinterest/ktlint/releases/download/0.49.1/ktlint"
-              ],
-              "executable": true
-            }
-          },
-          "buildkite_config": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_kotlin~1.9.0~rules_kotlin_extensions~buildkite_config",
-              "urls": [
-                "https://storage.googleapis.com/rbe-toolchain/bazel-configs/rbe-ubuntu1604/latest/rbe_default.tar"
-              ]
-            }
-          },
-          "com_github_jetbrains_kotlin": {
-            "bzlFile": "@@rules_kotlin~1.9.0//src/main/starlark/core/repositories:compiler.bzl",
-            "ruleClassName": "kotlin_compiler_repository",
-            "attributes": {
-              "name": "rules_kotlin~1.9.0~rules_kotlin_extensions~com_github_jetbrains_kotlin",
-              "urls": [
-                "https://github.com/JetBrains/kotlin/releases/download/v1.9.10/kotlin-compiler-1.9.10.zip"
-              ],
-              "sha256": "7d74863deecf8e0f28ea54c3735feab003d0eac67e8d3a791254b16889c20342",
-              "compiler_version": "1.9.10"
-            }
-          },
-          "com_github_google_ksp": {
-            "bzlFile": "@@rules_kotlin~1.9.0//src/main/starlark/core/repositories:ksp.bzl",
-            "ruleClassName": "ksp_compiler_plugin_repository",
-            "attributes": {
-              "name": "rules_kotlin~1.9.0~rules_kotlin_extensions~com_github_google_ksp",
-              "urls": [
-                "https://github.com/google/ksp/releases/download/1.9.10-1.0.13/artifacts.zip"
-              ],
-              "sha256": "5b0b1179e8af40877d9d5929ec0260afb104956eabf2f23bb5568cfd6c20b37b",
-              "strip_version": "1.9.10-1.0.13"
-            }
-          },
-          "kt_java_stub_template": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_file",
-            "attributes": {
-              "name": "rules_kotlin~1.9.0~rules_kotlin_extensions~kt_java_stub_template",
-              "urls": [
-                "https://raw.githubusercontent.com/bazelbuild/bazel/6.2.1/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt"
-              ],
-              "sha256": "78e29525872594ffc783c825f428b3e61d4f3e632f46eaa64f004b2814c4a612"
-            }
-          }
-        }
-      }
-    },
-    "@@rules_python~0.23.1//python/extensions:python.bzl%python": {
-      "general": {
-        "bzlTransitiveDigest": "Or2+91waIU36GKo0Eu4ACuYretljb/H/cO/nEBpXSvw=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "python_aliases": {
-            "bzlFile": "@@rules_python~0.23.1//python/private:toolchains_repo.bzl",
-            "ruleClassName": "multi_toolchain_aliases",
-            "attributes": {
-              "name": "rules_python~0.23.1~python~python_aliases",
-              "python_versions": {
-                "3.11": "python_3_11"
-              }
-            }
-          },
-          "python_3_11": {
-            "bzlFile": "@@rules_python~0.23.1//python/private:toolchains_repo.bzl",
-            "ruleClassName": "toolchain_aliases",
-            "attributes": {
-              "name": "rules_python~0.23.1~python~python_3_11",
-              "python_version": "3.11.1",
-              "user_repository_name": "python_3_11"
-            }
-          },
-          "python_3_11_aarch64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~0.23.1//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "name": "rules_python~0.23.1~python~python_3_11_aarch64-unknown-linux-gnu",
-              "sha256": "debf15783bdcb5530504f533d33fda75a7b905cec5361ae8f33da5ba6599f8b4",
-              "patches": [],
-              "platform": "aarch64-unknown-linux-gnu",
-              "python_version": "3.11.1",
-              "release_filename": "20230116/cpython-3.11.1+20230116-aarch64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-aarch64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_11_aarch64-apple-darwin": {
-            "bzlFile": "@@rules_python~0.23.1//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "name": "rules_python~0.23.1~python~python_3_11_aarch64-apple-darwin",
-              "sha256": "4918cdf1cab742a90f85318f88b8122aeaa2d04705803c7b6e78e81a3dd40f80",
-              "patches": [],
-              "platform": "aarch64-apple-darwin",
-              "python_version": "3.11.1",
-              "release_filename": "20230116/cpython-3.11.1+20230116-aarch64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-aarch64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_11_x86_64-apple-darwin": {
-            "bzlFile": "@@rules_python~0.23.1//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "name": "rules_python~0.23.1~python~python_3_11_x86_64-apple-darwin",
-              "sha256": "20a4203d069dc9b710f70b09e7da2ce6f473d6b1110f9535fb6f4c469ed54733",
-              "patches": [],
-              "platform": "x86_64-apple-darwin",
-              "python_version": "3.11.1",
-              "release_filename": "20230116/cpython-3.11.1+20230116-x86_64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-x86_64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "ignore_root_user_error": false
-            }
-          },
-          "pythons_hub": {
-            "bzlFile": "@@rules_python~0.23.1//python/extensions/private:pythons_hub.bzl",
-            "ruleClassName": "hub_repo",
-            "attributes": {
-              "name": "rules_python~0.23.1~python~pythons_hub",
-              "toolchain_prefixes": [
-                "_0000_python_3_11_"
-              ],
-              "toolchain_python_versions": [
-                "3.11"
-              ],
-              "toolchain_set_python_version_constraints": [
-                "False"
-              ],
-              "toolchain_user_repository_names": [
-                "python_3_11"
-              ]
-            }
-          },
-          "python_3_11_x86_64-pc-windows-msvc": {
-            "bzlFile": "@@rules_python~0.23.1//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "name": "rules_python~0.23.1~python~python_3_11_x86_64-pc-windows-msvc",
-              "sha256": "edc08979cb0666a597466176511529c049a6f0bba8adf70df441708f766de5bf",
-              "patches": [],
-              "platform": "x86_64-pc-windows-msvc",
-              "python_version": "3.11.1",
-              "release_filename": "20230116/cpython-3.11.1+20230116-x86_64-pc-windows-msvc-shared-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-x86_64-pc-windows-msvc-shared-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_11_x86_64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~0.23.1//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "name": "rules_python~0.23.1~python~python_3_11_x86_64-unknown-linux-gnu",
-              "sha256": "02a551fefab3750effd0e156c25446547c238688a32fabde2995c941c03a6423",
-              "patches": [],
-              "platform": "x86_64-unknown-linux-gnu",
-              "python_version": "3.11.1",
-              "release_filename": "20230116/cpython-3.11.1+20230116-x86_64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-x86_64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "ignore_root_user_error": false
-            }
-          }
-        }
+  "facts": {
+    "@@rules_go+//go:extensions.bzl%go_sdk": {
+      "1.22.4": {
+        "aix_ppc64": [
+          "go1.22.4.aix-ppc64.tar.gz",
+          "b9647fa9fc83a0cc5d4f092a19eaeaecf45f063a5aa7d4962fde65aeb7ae6ce1"
+        ],
+        "darwin_amd64": [
+          "go1.22.4.darwin-amd64.tar.gz",
+          "c95967f50aa4ace34af0c236cbdb49a9a3e80ee2ad09d85775cb4462a5c19ed3"
+        ],
+        "darwin_arm64": [
+          "go1.22.4.darwin-arm64.tar.gz",
+          "242b78dc4c8f3d5435d28a0d2cec9b4c1aa999b601fb8aa59fb4e5a1364bf827"
+        ],
+        "dragonfly_amd64": [
+          "go1.22.4.dragonfly-amd64.tar.gz",
+          "f2fbb51af4719d3616efb482d6ed2b96579b474156f85a7ddc6f126764feec4b"
+        ],
+        "freebsd_386": [
+          "go1.22.4.freebsd-386.tar.gz",
+          "7c54884bb9f274884651d41e61d1bc12738863ad1497e97ea19ad0e9aa6bf7b5"
+        ],
+        "freebsd_amd64": [
+          "go1.22.4.freebsd-amd64.tar.gz",
+          "88d44500e1701dd35797619774d6dd51bf60f45a8338b0a82ddc018e4e63fb78"
+        ],
+        "freebsd_arm64": [
+          "go1.22.4.freebsd-arm64.tar.gz",
+          "726dc093cf020277be45debf03c3b02b43c2efb3e2a5d4fba8f52579d65327dc"
+        ],
+        "freebsd_armv6l": [
+          "go1.22.4.freebsd-arm.tar.gz",
+          "3d9efe47db142a22679aba46b1772e3900b0d87ae13bd2b3bc80dbf2ac0b2cd6"
+        ],
+        "freebsd_riscv64": [
+          "go1.22.4.freebsd-riscv64.tar.gz",
+          "5f6b67e5e32f1d6ccb2d4dcb44934a5e2e870a877ba7443d86ec43cfc28afa71"
+        ],
+        "illumos_amd64": [
+          "go1.22.4.illumos-amd64.tar.gz",
+          "d56ecc2f85b6418a21ef83879594d0c42ab4f65391a676bb12254870e6690d63"
+        ],
+        "linux_386": [
+          "go1.22.4.linux-386.tar.gz",
+          "47a2a8d249a91eb8605c33bceec63aedda0441a43eac47b4721e3975ff916cec"
+        ],
+        "linux_amd64": [
+          "go1.22.4.linux-amd64.tar.gz",
+          "ba79d4526102575196273416239cca418a651e049c2b099f3159db85e7bade7d"
+        ],
+        "linux_arm64": [
+          "go1.22.4.linux-arm64.tar.gz",
+          "a8e177c354d2e4a1b61020aca3562e27ea3e8f8247eca3170e3fa1e0c2f9e771"
+        ],
+        "linux_armv6l": [
+          "go1.22.4.linux-armv6l.tar.gz",
+          "e2b143fbacbc9cbd448e9ef41ac3981f0488ce849af1cf37e2341d09670661de"
+        ],
+        "linux_loong64": [
+          "go1.22.4.linux-loong64.tar.gz",
+          "e2ff9436e4b34bf6926b06d97916e26d67a909a2effec17967245900f0816f1d"
+        ],
+        "linux_mips": [
+          "go1.22.4.linux-mips.tar.gz",
+          "73f0dcc60458c4770593b05a7bc01cc0d31fc98f948c0c2334812c7a1f2fc3f1"
+        ],
+        "linux_mips64": [
+          "go1.22.4.linux-mips64.tar.gz",
+          "417af97fc2630a647052375768be4c38adcc5af946352ea5b28613ea81ca5d45"
+        ],
+        "linux_mips64le": [
+          "go1.22.4.linux-mips64le.tar.gz",
+          "7486e2d7dd8c98eb44df815ace35a7fe7f30b7c02326e3741bd934077508139b"
+        ],
+        "linux_mipsle": [
+          "go1.22.4.linux-mipsle.tar.gz",
+          "69479c8aad301e459a8365b40cad1074a0dbba5defb9291669f94809c4c4be6e"
+        ],
+        "linux_ppc64": [
+          "go1.22.4.linux-ppc64.tar.gz",
+          "dd238847e65bc3e2745caca475a5db6522a2fcf85cf6c38fc36a06642b19efd7"
+        ],
+        "linux_ppc64le": [
+          "go1.22.4.linux-ppc64le.tar.gz",
+          "a3e5834657ef92523f570f798fed42f1f87bc18222a16815ec76b84169649ec4"
+        ],
+        "linux_riscv64": [
+          "go1.22.4.linux-riscv64.tar.gz",
+          "56a827ff7dc6245bcd7a1e9288dffaa1d8b0fd7468562264c1523daf3b4f1b4a"
+        ],
+        "linux_s390x": [
+          "go1.22.4.linux-s390x.tar.gz",
+          "7590c3e278e2dc6040aae0a39da3ca1eb2e3921673a7304cc34d588c45889eec"
+        ],
+        "netbsd_386": [
+          "go1.22.4.netbsd-386.tar.gz",
+          "ddd2eebe34471a2502de6c5dad04ab27c9fc80cbde7a9ad5b3c66ecec4504e1d"
+        ],
+        "netbsd_amd64": [
+          "go1.22.4.netbsd-amd64.tar.gz",
+          "33af79f6f935f6fbacc5d23876450b3567b79348fc065beef8e64081127dd234"
+        ],
+        "netbsd_arm64": [
+          "go1.22.4.netbsd-arm64.tar.gz",
+          "c9a2971dec9f6d320c6f2b049b2353c6d0a2d35e87b8a4b2d78a2f0d62545f8e"
+        ],
+        "netbsd_armv6l": [
+          "go1.22.4.netbsd-arm.tar.gz",
+          "fa3550ebd5375a70b3bcd342b5a71f4bd271dcbbfaf4eabefa2144ab5d8924b6"
+        ],
+        "openbsd_386": [
+          "go1.22.4.openbsd-386.tar.gz",
+          "d21af022331bfdc2b5b161d616c3a1a4573d33cf7a30416ee509a8f3641deb47"
+        ],
+        "openbsd_amd64": [
+          "go1.22.4.openbsd-amd64.tar.gz",
+          "72c0094c43f7e5722ec49c2a3e9dfa7a1123ac43a5f3a63eecf3e3795d3ff0ae"
+        ],
+        "openbsd_arm64": [
+          "go1.22.4.openbsd-arm64.tar.gz",
+          "a7ab8d4e0b02bf06ed144ba42c61c0e93ee00f2b433415dfd4ad4b6e79f31650"
+        ],
+        "openbsd_armv6l": [
+          "go1.22.4.openbsd-arm.tar.gz",
+          "1096831ea3c5ea3ca57d14251d9eda3786889531eb40d7d6775dcaa324d4b065"
+        ],
+        "openbsd_ppc64": [
+          "go1.22.4.openbsd-ppc64.tar.gz",
+          "9716327c8a628358798898dc5148c49dbbeb5196bf2cbf088e550721a6e4f60b"
+        ],
+        "plan9_386": [
+          "go1.22.4.plan9-386.tar.gz",
+          "a8dd4503c95c32a502a616ab78870a19889c9325fe9bd31eb16dd69346e4bfa8"
+        ],
+        "plan9_amd64": [
+          "go1.22.4.plan9-amd64.tar.gz",
+          "5423a25808d76fe5aca8607a2e5ac5673abf45446b168cb5e9d8519ee9fe39a1"
+        ],
+        "plan9_armv6l": [
+          "go1.22.4.plan9-arm.tar.gz",
+          "6af939ad583f5c85c09c53728ab7d38c3cc2b39167562d6c18a07c5c6608b370"
+        ],
+        "solaris_amd64": [
+          "go1.22.4.solaris-amd64.tar.gz",
+          "e8cabe69c03085725afdb32a6f9998191a3e55a747b270d835fd05000d56abba"
+        ],
+        "windows_386": [
+          "go1.22.4.windows-386.zip",
+          "aca4e2c37278a10f1c70dd0df142f7d66b50334fcee48978d409202d308d6d25"
+        ],
+        "windows_amd64": [
+          "go1.22.4.windows-amd64.zip",
+          "26321c4d945a0035d8a5bc4a1965b0df401ff8ceac66ce2daadabf9030419a98"
+        ],
+        "windows_arm64": [
+          "go1.22.4.windows-arm64.zip",
+          "8a2daa9ea28cbdafddc6171aefed384f4e5b6e714fb52116fe9ed25a132f37ed"
+        ],
+        "windows_armv6l": [
+          "go1.22.4.windows-arm.zip",
+          "5fcd0671a49cecf39b41021621ee1b6e7aa1370f37122b72e80d4fd4185833b6"
+        ]
+      },
+      "1.25.0": {
+        "aix_ppc64": [
+          "go1.25.0.aix-ppc64.tar.gz",
+          "e5234a7dac67bc86c528fe9752fc9d63557918627707a733ab4cac1a6faed2d4"
+        ],
+        "darwin_amd64": [
+          "go1.25.0.darwin-amd64.tar.gz",
+          "5bd60e823037062c2307c71e8111809865116714d6f6b410597cf5075dfd80ef"
+        ],
+        "darwin_arm64": [
+          "go1.25.0.darwin-arm64.tar.gz",
+          "544932844156d8172f7a28f77f2ac9c15a23046698b6243f633b0a0b00c0749c"
+        ],
+        "dragonfly_amd64": [
+          "go1.25.0.dragonfly-amd64.tar.gz",
+          "5ed3cf9a810a1483822538674f1336c06b51aa1b94d6d545a1a0319a48177120"
+        ],
+        "freebsd_386": [
+          "go1.25.0.freebsd-386.tar.gz",
+          "abea5d5c6697e6b5c224731f2158fe87c602996a2a233ac0c4730cd57bf8374e"
+        ],
+        "freebsd_amd64": [
+          "go1.25.0.freebsd-amd64.tar.gz",
+          "86e6fe0a29698d7601c4442052dac48bd58d532c51cccb8f1917df648138730b"
+        ],
+        "freebsd_arm": [
+          "go1.25.0.freebsd-arm.tar.gz",
+          "d90b78e41921f72f30e8bbc81d9dec2cff7ff384a33d8d8debb24053e4336bfe"
+        ],
+        "freebsd_arm64": [
+          "go1.25.0.freebsd-arm64.tar.gz",
+          "451d0da1affd886bfb291b7c63a6018527b269505db21ce6e14724f22ab0662e"
+        ],
+        "freebsd_riscv64": [
+          "go1.25.0.freebsd-riscv64.tar.gz",
+          "7b565f76bd8bda46549eeaaefe0e53b251e644c230577290c0f66b1ecdb3cdbe"
+        ],
+        "illumos_amd64": [
+          "go1.25.0.illumos-amd64.tar.gz",
+          "b1e1fdaab1ad25aa1c08d7a36c97d45d74b98b89c3f78c6d2145f77face54a2c"
+        ],
+        "linux_386": [
+          "go1.25.0.linux-386.tar.gz",
+          "8c602dd9d99bc9453b3995d20ce4baf382cc50855900a0ece5de9929df4a993a"
+        ],
+        "linux_amd64": [
+          "go1.25.0.linux-amd64.tar.gz",
+          "2852af0cb20a13139b3448992e69b868e50ed0f8a1e5940ee1de9e19a123b613"
+        ],
+        "linux_arm64": [
+          "go1.25.0.linux-arm64.tar.gz",
+          "05de75d6994a2783699815ee553bd5a9327d8b79991de36e38b66862782f54ae"
+        ],
+        "linux_armv6l": [
+          "go1.25.0.linux-armv6l.tar.gz",
+          "a5a8f8198fcf00e1e485b8ecef9ee020778bf32a408a4e8873371bfce458cd09"
+        ],
+        "linux_loong64": [
+          "go1.25.0.linux-loong64.tar.gz",
+          "cab86b1cf761b1cb3bac86a8877cfc92e7b036fc0d3084123d77013d61432afc"
+        ],
+        "linux_mips": [
+          "go1.25.0.linux-mips.tar.gz",
+          "d66b6fb74c3d91b9829dc95ec10ca1f047ef5e89332152f92e136cf0e2da5be1"
+        ],
+        "linux_mips64": [
+          "go1.25.0.linux-mips64.tar.gz",
+          "4082e4381a8661bc2a839ff94ba3daf4f6cde20f8fb771b5b3d4762dc84198a2"
+        ],
+        "linux_mips64le": [
+          "go1.25.0.linux-mips64le.tar.gz",
+          "70002c299ec7f7175ac2ef673b1b347eecfa54ae11f34416a6053c17f855afcc"
+        ],
+        "linux_mipsle": [
+          "go1.25.0.linux-mipsle.tar.gz",
+          "b00a3a39eff099f6df9f1c7355bf28e4589d0586f42d7d4a394efb763d145a73"
+        ],
+        "linux_ppc64": [
+          "go1.25.0.linux-ppc64.tar.gz",
+          "df166f33bd98160662560a72ff0b4ba731f969a80f088922bddcf566a88c1ec1"
+        ],
+        "linux_ppc64le": [
+          "go1.25.0.linux-ppc64le.tar.gz",
+          "0f18a89e7576cf2c5fa0b487a1635d9bcbf843df5f110e9982c64df52a983ad0"
+        ],
+        "linux_riscv64": [
+          "go1.25.0.linux-riscv64.tar.gz",
+          "c018ff74a2c48d55c8ca9b07c8e24163558ffec8bea08b326d6336905d956b67"
+        ],
+        "linux_s390x": [
+          "go1.25.0.linux-s390x.tar.gz",
+          "34e5a2e19f2292fbaf8783e3a241e6e49689276aef6510a8060ea5ef54eee408"
+        ],
+        "netbsd_386": [
+          "go1.25.0.netbsd-386.tar.gz",
+          "f8586cdb7aa855657609a5c5f6dbf523efa00c2bbd7c76d3936bec80aa6c0aba"
+        ],
+        "netbsd_amd64": [
+          "go1.25.0.netbsd-amd64.tar.gz",
+          "ae8dc1469385b86a157a423bb56304ba45730de8a897615874f57dd096db2c2a"
+        ],
+        "netbsd_arm": [
+          "go1.25.0.netbsd-arm.tar.gz",
+          "1ff7e4cc764425fc9dd6825eaee79d02b3c7cafffbb3691687c8d672ade76cb7"
+        ],
+        "netbsd_arm64": [
+          "go1.25.0.netbsd-arm64.tar.gz",
+          "e1b310739f26724216aa6d7d7208c4031f9ff54c9b5b9a796ddc8bebcb4a5f16"
+        ],
+        "openbsd_386": [
+          "go1.25.0.openbsd-386.tar.gz",
+          "4802a9b20e533da91adb84aab42e94aa56cfe3e5475d0550bed3385b182e69d8"
+        ],
+        "openbsd_amd64": [
+          "go1.25.0.openbsd-amd64.tar.gz",
+          "c016cd984bebe317b19a4f297c4f50def120dc9788490540c89f28e42f1dabe1"
+        ],
+        "openbsd_arm": [
+          "go1.25.0.openbsd-arm.tar.gz",
+          "a1e31d0bf22172ddde42edf5ec811ef81be43433df0948ece52fecb247ccfd8d"
+        ],
+        "openbsd_arm64": [
+          "go1.25.0.openbsd-arm64.tar.gz",
+          "343ea8edd8c218196e15a859c6072d0dd3246fbbb168481ab665eb4c4140458d"
+        ],
+        "openbsd_ppc64": [
+          "go1.25.0.openbsd-ppc64.tar.gz",
+          "694c14da1bcaeb5e3332d49bdc2b6d155067648f8fe1540c5de8f3cf8e157154"
+        ],
+        "openbsd_riscv64": [
+          "go1.25.0.openbsd-riscv64.tar.gz",
+          "aa510ad25cf54c06cd9c70b6d80ded69cb20188ac6e1735655eef29ff7e7885f"
+        ],
+        "plan9_386": [
+          "go1.25.0.plan9-386.tar.gz",
+          "46f8cef02086cf04bf186c5912776b56535178d4cb319cd19c9fdbdd29231986"
+        ],
+        "plan9_amd64": [
+          "go1.25.0.plan9-amd64.tar.gz",
+          "29b34391d84095e44608a228f63f2f88113a37b74a79781353ec043dfbcb427b"
+        ],
+        "plan9_arm": [
+          "go1.25.0.plan9-arm.tar.gz",
+          "0a047107d13ebe7943aaa6d54b1d7bbd2e45e68ce449b52915a818da715799c2"
+        ],
+        "solaris_amd64": [
+          "go1.25.0.solaris-amd64.tar.gz",
+          "9977f9e4351984364a3b2b78f8b88bfd1d339812356d5237678514594b7d3611"
+        ],
+        "windows_386": [
+          "go1.25.0.windows-386.zip",
+          "df9f39db82a803af0db639e3613a36681ab7a42866b1384b3f3a1045663961a7"
+        ],
+        "windows_amd64": [
+          "go1.25.0.windows-amd64.zip",
+          "89efb4f9b30812eee083cc1770fdd2913c14d301064f6454851428f9707d190b"
+        ],
+        "windows_arm64": [
+          "go1.25.0.windows-arm64.zip",
+          "27bab004c72b3d7bd05a69b6ec0fc54a309b4b78cc569dd963d8b3ec28bfdb8c"
+        ]
       }
     }
   }
diff --git a/examples/android_kotlin_app/WORKSPACE b/examples/android_kotlin_app/WORKSPACE
deleted file mode 100644
index 73d696a..0000000
--- a/examples/android_kotlin_app/WORKSPACE
+++ /dev/null
@@ -1,30 +0,0 @@
-android_sdk_repository(
-    name = "androidsdk",
-    api_level = 28,
-)
-
-local_repository(
-    name = "rules_jvm_external",
-    path = "../../",
-)
-
-load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
-
-rules_jvm_external_deps()
-
-load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
-
-load("@rules_jvm_external//:defs.bzl", "maven_install")
-
-maven_install(
-    artifacts = [
-        "androidx.appcompat:appcompat:1.0.2",
-        "androidx.core:core-ktx:1.0.1",
-    ],
-    repositories = [
-        "https://maven.google.com",
-        "https://repo1.maven.org/maven2",
-    ],
-)
diff --git a/examples/android_kotlin_app/maven_install.json b/examples/android_kotlin_app/maven_install.json
new file mode 100644
index 0000000..793f4f0
--- /dev/null
+++ b/examples/android_kotlin_app/maven_install.json
@@ -0,0 +1,691 @@
+{
+  "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
+  "__INPUT_ARTIFACTS_HASH": {
+    "androidx.appcompat:appcompat": 1316354216,
+    "androidx.core:core-ktx": -683834847,
+    "com.google.code.findbugs:jsr305": 495355163,
+    "com.google.code.gson:gson": 597770368,
+    "com.google.errorprone:error_prone_annotations": -1035138750,
+    "com.google.guava:guava": 1943808618,
+    "com.google.j2objc:j2objc-annotations": 2003271689,
+    "repositories": 1670674627
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "androidx.annotation:annotation": 808571803,
+    "androidx.appcompat:appcompat:aar": 1533488212,
+    "androidx.arch.core:core-common": 580308076,
+    "androidx.arch.core:core-runtime:aar": 647535550,
+    "androidx.asynclayoutinflater:asynclayoutinflater:aar": -647653630,
+    "androidx.collection:collection": 1670268651,
+    "androidx.coordinatorlayout:coordinatorlayout:aar": 1083667302,
+    "androidx.core:core-ktx:aar": 2043438210,
+    "androidx.core:core:aar": -1734322804,
+    "androidx.cursoradapter:cursoradapter:aar": 1085484025,
+    "androidx.customview:customview:aar": 628344476,
+    "androidx.documentfile:documentfile:aar": 224349855,
+    "androidx.drawerlayout:drawerlayout:aar": -143112650,
+    "androidx.fragment:fragment:aar": 2089845366,
+    "androidx.interpolator:interpolator:aar": 1700894761,
+    "androidx.legacy:legacy-support-core-ui:aar": 238943288,
+    "androidx.legacy:legacy-support-core-utils:aar": -1405673374,
+    "androidx.lifecycle:lifecycle-common": 295330694,
+    "androidx.lifecycle:lifecycle-livedata-core:aar": 1003415441,
+    "androidx.lifecycle:lifecycle-livedata:aar": 1699147216,
+    "androidx.lifecycle:lifecycle-runtime:aar": 1183949958,
+    "androidx.lifecycle:lifecycle-viewmodel:aar": 122525673,
+    "androidx.loader:loader:aar": 2067519474,
+    "androidx.localbroadcastmanager:localbroadcastmanager:aar": 1823826995,
+    "androidx.print:print:aar": -1680728597,
+    "androidx.slidingpanelayout:slidingpanelayout:aar": -1423009089,
+    "androidx.swiperefreshlayout:swiperefreshlayout:aar": 2073692565,
+    "androidx.vectordrawable:vectordrawable-animated:aar": 61047235,
+    "androidx.vectordrawable:vectordrawable:aar": -1895680191,
+    "androidx.versionedparcelable:versionedparcelable:aar": 447177431,
+    "androidx.viewpager:viewpager:aar": 1696281436,
+    "com.google.code.findbugs:jsr305": 870839855,
+    "com.google.code.gson:gson": -1575757252,
+    "com.google.errorprone:error_prone_annotations": 833623751,
+    "com.google.guava:failureaccess": -1890754729,
+    "com.google.guava:guava": -163533230,
+    "com.google.guava:listenablefuture": 1079558157,
+    "com.google.j2objc:j2objc-annotations": 248818742,
+    "org.checkerframework:checker-qual": -1533199059,
+    "org.jetbrains.kotlin:kotlin-stdlib": 435436552,
+    "org.jetbrains.kotlin:kotlin-stdlib-common": -356477475,
+    "org.jetbrains:annotations": 554168982
+  },
+  "conflict_resolution": {
+    "com.google.errorprone:error_prone_annotations:2.5.1": "com.google.errorprone:error_prone_annotations:2.18.0"
+  },
+  "artifacts": {
+    "androidx.annotation:annotation": {
+      "shasums": {
+        "jar": "0baae9755f7caf52aa80cd04324b91ba93af55d4d1d17dcc9a7b53d99ef7c016"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.appcompat:appcompat:aar": {
+      "shasums": {
+        "jar": "a3080cdd5e5c56cb72f9d428b1657d4380011ec211cfedf76e084b95f6bf0d03"
+      },
+      "version": "1.0.2"
+    },
+    "androidx.arch.core:core-common": {
+      "shasums": {
+        "jar": "4b80b337779b526e64b0ee0ca9e0df43b808344d145f8e9b1c42a134dac57ad8"
+      },
+      "version": "2.0.0"
+    },
+    "androidx.arch.core:core-runtime:aar": {
+      "shasums": {
+        "jar": "87e65fc767c712b437649c7cee2431ebb4bed6daef82e501d4125b3ed3f65f8e"
+      },
+      "version": "2.0.0"
+    },
+    "androidx.asynclayoutinflater:asynclayoutinflater:aar": {
+      "shasums": {
+        "jar": "f7eab60c57addd94bb06275832fe7600611beaaae1a1ec597c231956faf96c8b"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.collection:collection": {
+      "shasums": {
+        "jar": "9c8d117b5c2bc120a1cdfeb857e05b495b16c36013570372a708f7827e3ac9f9"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.coordinatorlayout:coordinatorlayout:aar": {
+      "shasums": {
+        "jar": "e508c695489493374d942bf7b4ee02abf7571d25aac4c622e57d6cd5cd29eb73"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.core:core-ktx:aar": {
+      "shasums": {
+        "jar": "a151b7e21acc3d272e1d397a2084e76ccce88e8542adcc4e0cf1e0655063255f"
+      },
+      "version": "1.0.1"
+    },
+    "androidx.core:core:aar": {
+      "shasums": {
+        "jar": "b1a90522c22cad8c5fb7a4f912493dbcde463c6a37b4148dfb9423763460f998"
+      },
+      "version": "1.0.1"
+    },
+    "androidx.cursoradapter:cursoradapter:aar": {
+      "shasums": {
+        "jar": "a81c8fe78815fa47df5b749deb52727ad11f9397da58b16017f4eb2c11e28564"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.customview:customview:aar": {
+      "shasums": {
+        "jar": "20e5b8f6526a34595a604f56718da81167c0b40a7a94a57daa355663f2594df2"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.documentfile:documentfile:aar": {
+      "shasums": {
+        "jar": "865a061ef2fad16522f8433536b8d47208c46ff7c7745197dfa1eeb481869487"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.drawerlayout:drawerlayout:aar": {
+      "shasums": {
+        "jar": "9402442cdc5a43cf62fb14f8cf98c63342d4d9d9b805c8033c6cf7e802749ac1"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.fragment:fragment:aar": {
+      "shasums": {
+        "jar": "65dd32d71fe65a32e77989a6cfb1ad09307038927f82a740c7611162d0b518f8"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.interpolator:interpolator:aar": {
+      "shasums": {
+        "jar": "33193135a64fe21fa2c35eec6688f1a76e512606c0fc83dc1b689e37add7732a"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.legacy:legacy-support-core-ui:aar": {
+      "shasums": {
+        "jar": "0d1260c6e7e6a337f875df71b516931e703f716e90889817cd3a20fa5ac3d947"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.legacy:legacy-support-core-utils:aar": {
+      "shasums": {
+        "jar": "a7edcf01d5b52b3034073027bc4775b78a4764bb6202bb91d61c829add8dd1c7"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.lifecycle:lifecycle-common": {
+      "shasums": {
+        "jar": "7bad7a188804adea6fa1f35d5ef99b705f20bd93ecadde484760ff86b535fefc"
+      },
+      "version": "2.0.0"
+    },
+    "androidx.lifecycle:lifecycle-livedata-core:aar": {
+      "shasums": {
+        "jar": "fde334ec7e22744c0f5bfe7caf1a84c9d717327044400577bdf9bd921ec4f7bc"
+      },
+      "version": "2.0.0"
+    },
+    "androidx.lifecycle:lifecycle-livedata:aar": {
+      "shasums": {
+        "jar": "c82609ced8c498f0a701a30fb6771bb7480860daee84d82e0a81ee86edf7ba39"
+      },
+      "version": "2.0.0"
+    },
+    "androidx.lifecycle:lifecycle-runtime:aar": {
+      "shasums": {
+        "jar": "e4afc9e636183f6f3e0edf1cf46121a492ffd2c673075bb07f55c7a99dd43cfb"
+      },
+      "version": "2.0.0"
+    },
+    "androidx.lifecycle:lifecycle-viewmodel:aar": {
+      "shasums": {
+        "jar": "d6460aea1b6bad80ab14cf88297e9e43bfde8d87c3e5c28f2c508233ffbcc062"
+      },
+      "version": "2.0.0"
+    },
+    "androidx.loader:loader:aar": {
+      "shasums": {
+        "jar": "11f735cb3b55c458d470bed9e25254375b518b4b1bad6926783a7026db0f5025"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.localbroadcastmanager:localbroadcastmanager:aar": {
+      "shasums": {
+        "jar": "e71c328ceef5c4a7d76f2d86df1b65d65fe2acf868b1a4efd84a3f34336186d8"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.print:print:aar": {
+      "shasums": {
+        "jar": "1d5c7f3135a1bba661fc373fd72e11eb0a4adbb3396787826dd8e4190d5d9edd"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.slidingpanelayout:slidingpanelayout:aar": {
+      "shasums": {
+        "jar": "76bffb7cefbf780794d8817002dad1562f3e27c0a9f746d62401c8edb30aeede"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.swiperefreshlayout:swiperefreshlayout:aar": {
+      "shasums": {
+        "jar": "9761b3a809c9b093fd06a3c4bbc645756dec0e95b5c9da419bc9f2a3f3026e8d"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.vectordrawable:vectordrawable-animated:aar": {
+      "shasums": {
+        "jar": "26c3a0cf0a9a9a7d235a0b00f2f37e431d52d9952751e3eb7c90b4b52c236cf1"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.vectordrawable:vectordrawable:aar": {
+      "shasums": {
+        "jar": "4ca358957b9510e52fc388e01c9d33c2d655d406bfe6e71984e9afea9f715ed2"
+      },
+      "version": "1.0.1"
+    },
+    "androidx.versionedparcelable:versionedparcelable:aar": {
+      "shasums": {
+        "jar": "f6438a93ed8016ccddca0e140a70be0b0110e0424edaa1472f84f98fed2e1ce3"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.viewpager:viewpager:aar": {
+      "shasums": {
+        "jar": "147af4e14a1984010d8f155e5e19d781f03c1d70dfed02a8e0d18428b8fc8682"
+      },
+      "version": "1.0.0"
+    },
+    "com.google.code.findbugs:jsr305": {
+      "shasums": {
+        "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7"
+      },
+      "version": "3.0.2"
+    },
+    "com.google.code.gson:gson": {
+      "shasums": {
+        "jar": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e"
+      },
+      "version": "2.8.9"
+    },
+    "com.google.errorprone:error_prone_annotations": {
+      "shasums": {
+        "jar": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae"
+      },
+      "version": "2.18.0"
+    },
+    "com.google.guava:failureaccess": {
+      "shasums": {
+        "jar": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26"
+      },
+      "version": "1.0.1"
+    },
+    "com.google.guava:guava": {
+      "shasums": {
+        "jar": "bd7fa227591fb8509677d0d1122cf95158f3b8a9f45653f58281d879f6dc48c5"
+      },
+      "version": "32.0.1-jre"
+    },
+    "com.google.guava:listenablefuture": {
+      "shasums": {
+        "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99"
+      },
+      "version": "9999.0-empty-to-avoid-conflict-with-guava"
+    },
+    "com.google.j2objc:j2objc-annotations": {
+      "shasums": {
+        "jar": "f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed"
+      },
+      "version": "2.8"
+    },
+    "org.checkerframework:checker-qual": {
+      "shasums": {
+        "jar": "e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1"
+      },
+      "version": "3.33.0"
+    },
+    "org.jetbrains.kotlin:kotlin-stdlib": {
+      "shasums": {
+        "jar": "620b79d2ed94273b73588747b543adfe89b37e5d7aa2e34bab13eb2b92a15714"
+      },
+      "version": "1.2.50"
+    },
+    "org.jetbrains.kotlin:kotlin-stdlib-common": {
+      "shasums": {
+        "jar": "77129af18d7fc2d3f19e4f2cb140fa47dd602e493c33bd02e79134a62a1bb000"
+      },
+      "version": "1.2.50"
+    },
+    "org.jetbrains:annotations": {
+      "shasums": {
+        "jar": "ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478"
+      },
+      "version": "13.0"
+    }
+  },
+  "dependencies": {
+    "androidx.appcompat:appcompat:aar": [
+      "androidx.annotation:annotation",
+      "androidx.collection:collection",
+      "androidx.core:core:aar",
+      "androidx.cursoradapter:cursoradapter:aar",
+      "androidx.fragment:fragment:aar",
+      "androidx.legacy:legacy-support-core-utils:aar",
+      "androidx.vectordrawable:vectordrawable-animated:aar",
+      "androidx.vectordrawable:vectordrawable:aar"
+    ],
+    "androidx.arch.core:core-common": [
+      "androidx.annotation:annotation"
+    ],
+    "androidx.arch.core:core-runtime:aar": [
+      "androidx.annotation:annotation",
+      "androidx.arch.core:core-common"
+    ],
+    "androidx.asynclayoutinflater:asynclayoutinflater:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar"
+    ],
+    "androidx.collection:collection": [
+      "androidx.annotation:annotation"
+    ],
+    "androidx.coordinatorlayout:coordinatorlayout:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar",
+      "androidx.customview:customview:aar"
+    ],
+    "androidx.core:core-ktx:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar",
+      "org.jetbrains.kotlin:kotlin-stdlib"
+    ],
+    "androidx.core:core:aar": [
+      "androidx.annotation:annotation",
+      "androidx.collection:collection",
+      "androidx.lifecycle:lifecycle-runtime:aar",
+      "androidx.versionedparcelable:versionedparcelable:aar"
+    ],
+    "androidx.cursoradapter:cursoradapter:aar": [
+      "androidx.annotation:annotation"
+    ],
+    "androidx.customview:customview:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar"
+    ],
+    "androidx.documentfile:documentfile:aar": [
+      "androidx.annotation:annotation"
+    ],
+    "androidx.drawerlayout:drawerlayout:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar",
+      "androidx.customview:customview:aar"
+    ],
+    "androidx.fragment:fragment:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar",
+      "androidx.legacy:legacy-support-core-ui:aar",
+      "androidx.legacy:legacy-support-core-utils:aar",
+      "androidx.lifecycle:lifecycle-viewmodel:aar",
+      "androidx.loader:loader:aar"
+    ],
+    "androidx.interpolator:interpolator:aar": [
+      "androidx.annotation:annotation"
+    ],
+    "androidx.legacy:legacy-support-core-ui:aar": [
+      "androidx.annotation:annotation",
+      "androidx.asynclayoutinflater:asynclayoutinflater:aar",
+      "androidx.coordinatorlayout:coordinatorlayout:aar",
+      "androidx.core:core:aar",
+      "androidx.cursoradapter:cursoradapter:aar",
+      "androidx.customview:customview:aar",
+      "androidx.drawerlayout:drawerlayout:aar",
+      "androidx.interpolator:interpolator:aar",
+      "androidx.legacy:legacy-support-core-utils:aar",
+      "androidx.slidingpanelayout:slidingpanelayout:aar",
+      "androidx.swiperefreshlayout:swiperefreshlayout:aar",
+      "androidx.viewpager:viewpager:aar"
+    ],
+    "androidx.legacy:legacy-support-core-utils:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar",
+      "androidx.documentfile:documentfile:aar",
+      "androidx.loader:loader:aar",
+      "androidx.localbroadcastmanager:localbroadcastmanager:aar",
+      "androidx.print:print:aar"
+    ],
+    "androidx.lifecycle:lifecycle-common": [
+      "androidx.annotation:annotation"
+    ],
+    "androidx.lifecycle:lifecycle-livedata-core:aar": [
+      "androidx.arch.core:core-common",
+      "androidx.arch.core:core-runtime:aar",
+      "androidx.lifecycle:lifecycle-common"
+    ],
+    "androidx.lifecycle:lifecycle-livedata:aar": [
+      "androidx.arch.core:core-common",
+      "androidx.arch.core:core-runtime:aar",
+      "androidx.lifecycle:lifecycle-livedata-core:aar"
+    ],
+    "androidx.lifecycle:lifecycle-runtime:aar": [
+      "androidx.annotation:annotation",
+      "androidx.arch.core:core-common",
+      "androidx.lifecycle:lifecycle-common"
+    ],
+    "androidx.lifecycle:lifecycle-viewmodel:aar": [
+      "androidx.annotation:annotation"
+    ],
+    "androidx.loader:loader:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar",
+      "androidx.lifecycle:lifecycle-livedata:aar",
+      "androidx.lifecycle:lifecycle-viewmodel:aar"
+    ],
+    "androidx.localbroadcastmanager:localbroadcastmanager:aar": [
+      "androidx.annotation:annotation"
+    ],
+    "androidx.print:print:aar": [
+      "androidx.annotation:annotation"
+    ],
+    "androidx.slidingpanelayout:slidingpanelayout:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar",
+      "androidx.customview:customview:aar"
+    ],
+    "androidx.swiperefreshlayout:swiperefreshlayout:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar",
+      "androidx.interpolator:interpolator:aar"
+    ],
+    "androidx.vectordrawable:vectordrawable-animated:aar": [
+      "androidx.legacy:legacy-support-core-ui:aar",
+      "androidx.vectordrawable:vectordrawable:aar"
+    ],
+    "androidx.vectordrawable:vectordrawable:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar"
+    ],
+    "androidx.versionedparcelable:versionedparcelable:aar": [
+      "androidx.annotation:annotation",
+      "androidx.collection:collection"
+    ],
+    "androidx.viewpager:viewpager:aar": [
+      "androidx.annotation:annotation",
+      "androidx.core:core:aar",
+      "androidx.customview:customview:aar"
+    ],
+    "com.google.guava:guava": [
+      "com.google.code.findbugs:jsr305",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:failureaccess",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "org.checkerframework:checker-qual"
+    ],
+    "org.jetbrains.kotlin:kotlin-stdlib": [
+      "org.jetbrains.kotlin:kotlin-stdlib-common",
+      "org.jetbrains:annotations"
+    ]
+  },
+  "packages": {
+    "androidx.annotation:annotation": [
+      "androidx.annotation"
+    ],
+    "androidx.arch.core:core-common": [
+      "androidx.arch.core.internal",
+      "androidx.arch.core.util"
+    ],
+    "androidx.collection:collection": [
+      "androidx.collection"
+    ],
+    "androidx.lifecycle:lifecycle-common": [
+      "androidx.lifecycle"
+    ],
+    "com.google.code.findbugs:jsr305": [
+      "javax.annotation",
+      "javax.annotation.concurrent",
+      "javax.annotation.meta"
+    ],
+    "com.google.code.gson:gson": [
+      "com.google.gson",
+      "com.google.gson.annotations",
+      "com.google.gson.internal",
+      "com.google.gson.internal.bind",
+      "com.google.gson.internal.bind.util",
+      "com.google.gson.internal.reflect",
+      "com.google.gson.internal.sql",
+      "com.google.gson.reflect",
+      "com.google.gson.stream"
+    ],
+    "com.google.errorprone:error_prone_annotations": [
+      "com.google.errorprone.annotations",
+      "com.google.errorprone.annotations.concurrent"
+    ],
+    "com.google.guava:failureaccess": [
+      "com.google.common.util.concurrent.internal"
+    ],
+    "com.google.guava:guava": [
+      "com.google.common.annotations",
+      "com.google.common.base",
+      "com.google.common.base.internal",
+      "com.google.common.cache",
+      "com.google.common.collect",
+      "com.google.common.escape",
+      "com.google.common.eventbus",
+      "com.google.common.graph",
+      "com.google.common.hash",
+      "com.google.common.html",
+      "com.google.common.io",
+      "com.google.common.math",
+      "com.google.common.net",
+      "com.google.common.primitives",
+      "com.google.common.reflect",
+      "com.google.common.util.concurrent",
+      "com.google.common.xml",
+      "com.google.thirdparty.publicsuffix"
+    ],
+    "com.google.j2objc:j2objc-annotations": [
+      "com.google.j2objc.annotations"
+    ],
+    "org.checkerframework:checker-qual": [
+      "org.checkerframework.checker.builder.qual",
+      "org.checkerframework.checker.calledmethods.qual",
+      "org.checkerframework.checker.compilermsgs.qual",
+      "org.checkerframework.checker.fenum.qual",
+      "org.checkerframework.checker.formatter.qual",
+      "org.checkerframework.checker.guieffect.qual",
+      "org.checkerframework.checker.i18n.qual",
+      "org.checkerframework.checker.i18nformatter.qual",
+      "org.checkerframework.checker.index.qual",
+      "org.checkerframework.checker.initialization.qual",
+      "org.checkerframework.checker.interning.qual",
+      "org.checkerframework.checker.lock.qual",
+      "org.checkerframework.checker.mustcall.qual",
+      "org.checkerframework.checker.nullness.qual",
+      "org.checkerframework.checker.optional.qual",
+      "org.checkerframework.checker.propkey.qual",
+      "org.checkerframework.checker.regex.qual",
+      "org.checkerframework.checker.signature.qual",
+      "org.checkerframework.checker.signedness.qual",
+      "org.checkerframework.checker.tainting.qual",
+      "org.checkerframework.checker.units.qual",
+      "org.checkerframework.common.aliasing.qual",
+      "org.checkerframework.common.initializedfields.qual",
+      "org.checkerframework.common.reflection.qual",
+      "org.checkerframework.common.returnsreceiver.qual",
+      "org.checkerframework.common.subtyping.qual",
+      "org.checkerframework.common.util.report.qual",
+      "org.checkerframework.common.value.qual",
+      "org.checkerframework.dataflow.qual",
+      "org.checkerframework.framework.qual"
+    ],
+    "org.jetbrains.kotlin:kotlin-stdlib": [
+      "kotlin",
+      "kotlin.annotation",
+      "kotlin.collections",
+      "kotlin.comparisons",
+      "kotlin.concurrent",
+      "kotlin.coroutines.experimental",
+      "kotlin.coroutines.experimental.intrinsics",
+      "kotlin.coroutines.experimental.jvm.internal",
+      "kotlin.experimental",
+      "kotlin.internal",
+      "kotlin.internal.contracts",
+      "kotlin.io",
+      "kotlin.jvm",
+      "kotlin.jvm.functions",
+      "kotlin.jvm.internal",
+      "kotlin.jvm.internal.markers",
+      "kotlin.jvm.internal.unsafe",
+      "kotlin.math",
+      "kotlin.properties",
+      "kotlin.ranges",
+      "kotlin.reflect",
+      "kotlin.sequences",
+      "kotlin.system",
+      "kotlin.text"
+    ],
+    "org.jetbrains:annotations": [
+      "org.intellij.lang.annotations",
+      "org.jetbrains.annotations"
+    ]
+  },
+  "repositories": {
+    "https://maven.google.com/": [
+      "androidx.annotation:annotation",
+      "androidx.appcompat:appcompat:aar",
+      "androidx.arch.core:core-common",
+      "androidx.arch.core:core-runtime:aar",
+      "androidx.asynclayoutinflater:asynclayoutinflater:aar",
+      "androidx.collection:collection",
+      "androidx.coordinatorlayout:coordinatorlayout:aar",
+      "androidx.core:core-ktx:aar",
+      "androidx.core:core:aar",
+      "androidx.cursoradapter:cursoradapter:aar",
+      "androidx.customview:customview:aar",
+      "androidx.documentfile:documentfile:aar",
+      "androidx.drawerlayout:drawerlayout:aar",
+      "androidx.fragment:fragment:aar",
+      "androidx.interpolator:interpolator:aar",
+      "androidx.legacy:legacy-support-core-ui:aar",
+      "androidx.legacy:legacy-support-core-utils:aar",
+      "androidx.lifecycle:lifecycle-common",
+      "androidx.lifecycle:lifecycle-livedata-core:aar",
+      "androidx.lifecycle:lifecycle-livedata:aar",
+      "androidx.lifecycle:lifecycle-runtime:aar",
+      "androidx.lifecycle:lifecycle-viewmodel:aar",
+      "androidx.loader:loader:aar",
+      "androidx.localbroadcastmanager:localbroadcastmanager:aar",
+      "androidx.print:print:aar",
+      "androidx.slidingpanelayout:slidingpanelayout:aar",
+      "androidx.swiperefreshlayout:swiperefreshlayout:aar",
+      "androidx.vectordrawable:vectordrawable-animated:aar",
+      "androidx.vectordrawable:vectordrawable:aar",
+      "androidx.versionedparcelable:versionedparcelable:aar",
+      "androidx.viewpager:viewpager:aar",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:failureaccess",
+      "com.google.guava:guava",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "org.checkerframework:checker-qual",
+      "org.jetbrains.kotlin:kotlin-stdlib",
+      "org.jetbrains.kotlin:kotlin-stdlib-common",
+      "org.jetbrains:annotations"
+    ],
+    "https://repo1.maven.org/maven2/": [
+      "androidx.annotation:annotation",
+      "androidx.appcompat:appcompat:aar",
+      "androidx.arch.core:core-common",
+      "androidx.arch.core:core-runtime:aar",
+      "androidx.asynclayoutinflater:asynclayoutinflater:aar",
+      "androidx.collection:collection",
+      "androidx.coordinatorlayout:coordinatorlayout:aar",
+      "androidx.core:core-ktx:aar",
+      "androidx.core:core:aar",
+      "androidx.cursoradapter:cursoradapter:aar",
+      "androidx.customview:customview:aar",
+      "androidx.documentfile:documentfile:aar",
+      "androidx.drawerlayout:drawerlayout:aar",
+      "androidx.fragment:fragment:aar",
+      "androidx.interpolator:interpolator:aar",
+      "androidx.legacy:legacy-support-core-ui:aar",
+      "androidx.legacy:legacy-support-core-utils:aar",
+      "androidx.lifecycle:lifecycle-common",
+      "androidx.lifecycle:lifecycle-livedata-core:aar",
+      "androidx.lifecycle:lifecycle-livedata:aar",
+      "androidx.lifecycle:lifecycle-runtime:aar",
+      "androidx.lifecycle:lifecycle-viewmodel:aar",
+      "androidx.loader:loader:aar",
+      "androidx.localbroadcastmanager:localbroadcastmanager:aar",
+      "androidx.print:print:aar",
+      "androidx.slidingpanelayout:slidingpanelayout:aar",
+      "androidx.swiperefreshlayout:swiperefreshlayout:aar",
+      "androidx.vectordrawable:vectordrawable-animated:aar",
+      "androidx.vectordrawable:vectordrawable:aar",
+      "androidx.versionedparcelable:versionedparcelable:aar",
+      "androidx.viewpager:viewpager:aar",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:failureaccess",
+      "com.google.guava:guava",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "org.checkerframework:checker-qual",
+      "org.jetbrains.kotlin:kotlin-stdlib",
+      "org.jetbrains.kotlin:kotlin-stdlib-common",
+      "org.jetbrains:annotations"
+    ]
+  },
+  "services": {},
+  "version": "3"
+}
diff --git a/examples/android_local_test/.bazelversion b/examples/android_local_test/.bazelversion
index 18bb418..f9c71a5 100644
--- a/examples/android_local_test/.bazelversion
+++ b/examples/android_local_test/.bazelversion
@@ -1 +1 @@
-7.5.0
+8.5.1
diff --git a/examples/android_local_test/MODULE.bazel b/examples/android_local_test/MODULE.bazel
index 00bb183..f41d3f1 100644
--- a/examples/android_local_test/MODULE.bazel
+++ b/examples/android_local_test/MODULE.bazel
@@ -1,6 +1,41 @@
-###############################################################################
-# Bazel now uses Bzlmod by default to manage external dependencies.
-# Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel.
-#
-# For more details, please check https://github.com/bazelbuild/bazel/issues/18958
-###############################################################################
+module(
+    name = "android_local_test_example",
+    version = "0.0.0",
+)
+
+bazel_dep(name = "rules_android", version = "0.7.1")
+bazel_dep(name = "rules_robolectric", version = "4.16.1")
+bazel_dep(name = "rules_jvm_external", version = "0.0.0")
+local_path_override(
+    module_name = "rules_jvm_external",
+    path = "../..",
+)
+
+# Android SDK and tools
+remote_android_extensions = use_extension("@bazel_tools//tools/android:android_extensions.bzl", "remote_android_tools_extensions")
+use_repo(remote_android_extensions, "android_gmaven_r8", "android_tools")
+
+android_sdk_repository_extension = use_extension("@rules_android//rules/android_sdk_repository:rule.bzl", "android_sdk_repository_extension")
+use_repo(android_sdk_repository_extension, "androidsdk")
+
+register_toolchains("@androidsdk//:sdk-toolchain", "@androidsdk//:all")
+
+# Maven dependencies
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+maven.install(
+    artifacts = [
+        "androidx.appcompat:appcompat:1.0.2",
+        "androidx.annotation:annotation:1.1.0",
+        "androidx.test.ext:junit:1.3.0",
+        "junit:junit:4.13.2",
+        "org.robolectric:robolectric:4.16.1",
+        "org.assertj:assertj-core:3.12.1",
+    ],
+    known_contributing_modules = ["protobuf"],
+    lock_file = "//:maven_install.json",
+    repositories = [
+        "https://maven.google.com",
+        "https://repo1.maven.org/maven2",
+    ],
+)
+use_repo(maven, "maven")
diff --git a/examples/android_local_test/WORKSPACE b/examples/android_local_test/WORKSPACE
deleted file mode 100644
index 68f8cbd..0000000
--- a/examples/android_local_test/WORKSPACE
+++ /dev/null
@@ -1,51 +0,0 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-android_sdk_repository(
-    name = "androidsdk",
-    api_level = 29,
-)
-
-http_archive(
-    name = "robolectric",
-    sha256 = "cf04b4206b9d21b385e8dbee478fac619fc1344e8e46935dcec2d64939dd0525",
-    strip_prefix = "robolectric-bazel-4.16",
-    urls = ["https://github.com/robolectric/robolectric-bazel/releases/download/4.16/robolectric-bazel-4.16.tar.gz"],
-)
-
-load("@robolectric//bazel:robolectric.bzl", "robolectric_repositories")
-
-robolectric_repositories()
-
-local_repository(
-    name = "rules_jvm_external",
-    path = "../../",
-)
-
-load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
-
-rules_jvm_external_deps()
-
-load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
-
-load("@rules_jvm_external//:defs.bzl", "maven_install")
-
-maven_install(
-    artifacts = [
-        "androidx.appcompat:appcompat:1.0.2",
-        "androidx.test.ext:junit:1.3.0",
-        "junit:junit:4.13.2",
-        "org.robolectric:robolectric:4.16",
-        "org.assertj:assertj-core:3.12.1",
-    ],
-    maven_install_json = "//:maven_install.json",
-    repositories = [
-        "https://maven.google.com",
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@maven//:defs.bzl", "pinned_maven_install")
-
-pinned_maven_install()
diff --git a/examples/android_local_test/maven_install.json b/examples/android_local_test/maven_install.json
index 423a581..591b0ed 100644
--- a/examples/android_local_test/maven_install.json
+++ b/examples/android_local_test/maven_install.json
@@ -1,7 +1,107 @@
 {
   "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": -603657905,
-  "__RESOLVED_ARTIFACTS_HASH": 1817292797,
+  "__INPUT_ARTIFACTS_HASH": {
+    "androidx.annotation:annotation": 207696415,
+    "androidx.appcompat:appcompat": 1316354216,
+    "androidx.test.ext:junit": 923457984,
+    "com.google.code.findbugs:jsr305": 495355163,
+    "com.google.code.gson:gson": 597770368,
+    "com.google.errorprone:error_prone_annotations": -1035138750,
+    "com.google.guava:guava": 1943808618,
+    "com.google.j2objc:j2objc-annotations": 2003271689,
+    "junit:junit": -744267592,
+    "org.assertj:assertj-core": 1375119163,
+    "org.robolectric:robolectric": -1784339344,
+    "repositories": 1670674627
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "androidx.annotation:annotation": -414663500,
+    "androidx.annotation:annotation-jvm": 1243979211,
+    "androidx.appcompat:appcompat:aar": 1613124952,
+    "androidx.arch.core:core-common": -2058968500,
+    "androidx.arch.core:core-runtime:aar": -1419281791,
+    "androidx.asynclayoutinflater:asynclayoutinflater:aar": 1769449139,
+    "androidx.collection:collection": 1665038253,
+    "androidx.concurrent:concurrent-futures": -2088477801,
+    "androidx.concurrent:concurrent-futures-ktx": 1963726172,
+    "androidx.coordinatorlayout:coordinatorlayout:aar": 178749157,
+    "androidx.core:core:aar": -470600750,
+    "androidx.cursoradapter:cursoradapter:aar": 716584031,
+    "androidx.customview:customview:aar": -1249520051,
+    "androidx.documentfile:documentfile:aar": -208771463,
+    "androidx.drawerlayout:drawerlayout:aar": -1935745611,
+    "androidx.fragment:fragment:aar": -1423157539,
+    "androidx.interpolator:interpolator:aar": -1680519633,
+    "androidx.legacy:legacy-support-core-ui:aar": -240163121,
+    "androidx.legacy:legacy-support-core-utils:aar": -374511622,
+    "androidx.lifecycle:lifecycle-common": -1021603081,
+    "androidx.lifecycle:lifecycle-livedata-core:aar": -514261746,
+    "androidx.lifecycle:lifecycle-livedata:aar": -1981725251,
+    "androidx.lifecycle:lifecycle-runtime:aar": -2058356099,
+    "androidx.lifecycle:lifecycle-viewmodel:aar": 929646191,
+    "androidx.loader:loader:aar": -391330749,
+    "androidx.localbroadcastmanager:localbroadcastmanager:aar": 2130379621,
+    "androidx.print:print:aar": 863338669,
+    "androidx.slidingpanelayout:slidingpanelayout:aar": 739390462,
+    "androidx.swiperefreshlayout:swiperefreshlayout:aar": -1690309406,
+    "androidx.test.espresso:espresso-idling-resource:aar": 541320167,
+    "androidx.test.ext:junit:aar": 554257047,
+    "androidx.test.services:storage:aar": 896877,
+    "androidx.test:core:aar": 1251758295,
+    "androidx.test:monitor:aar": -346802190,
+    "androidx.tracing:tracing:aar": 594416579,
+    "androidx.vectordrawable:vectordrawable-animated:aar": -559854832,
+    "androidx.vectordrawable:vectordrawable:aar": 521422578,
+    "androidx.versionedparcelable:versionedparcelable:aar": 1971405382,
+    "androidx.viewpager:viewpager:aar": 490412379,
+    "com.almworks.sqlite4java:sqlite4java": 1585971300,
+    "com.google.auto.value:auto-value-annotations": 641018093,
+    "com.google.code.findbugs:jsr305": 870839855,
+    "com.google.code.gson:gson": -1575757252,
+    "com.google.errorprone:error_prone_annotation": 124458949,
+    "com.google.errorprone:error_prone_annotations": 1014409728,
+    "com.google.guava:failureaccess": 1715931538,
+    "com.google.guava:guava": -2046459454,
+    "com.google.guava:listenablefuture": 1079558157,
+    "com.google.j2objc:j2objc-annotations": -404209759,
+    "com.google.testparameterinjector:test-parameter-injector": 1926198670,
+    "com.ibm.icu:icu4j": -738875849,
+    "javax.annotation:javax.annotation-api": -1009230154,
+    "javax.inject:javax.inject": 698155243,
+    "junit:junit": -1256429642,
+    "org.assertj:assertj-core": 818116720,
+    "org.bouncycastle:bcprov-jdk18on": 1168520784,
+    "org.conscrypt:conscrypt-openjdk-uber": 742580967,
+    "org.hamcrest:hamcrest-core": 649657847,
+    "org.jetbrains.kotlin:kotlin-stdlib": 932574059,
+    "org.jetbrains.kotlinx:kotlinx-coroutines-core": -1127334258,
+    "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": 308175000,
+    "org.jetbrains:annotations": -1663747638,
+    "org.jspecify:jspecify": 117231129,
+    "org.ow2.asm:asm": 611381606,
+    "org.ow2.asm:asm-commons": 1032323649,
+    "org.ow2.asm:asm-tree": -1593303232,
+    "org.robolectric:annotations": 1069464505,
+    "org.robolectric:junit": -2063134657,
+    "org.robolectric:nativeruntime": -880666400,
+    "org.robolectric:nativeruntime-dist-compat": 1636005702,
+    "org.robolectric:pluginapi": -367632063,
+    "org.robolectric:plugins-maven-dependency-resolver": -1332928211,
+    "org.robolectric:resources": -2110585508,
+    "org.robolectric:robolectric": 1365657543,
+    "org.robolectric:sandbox": -580197843,
+    "org.robolectric:shadowapi": 1198190506,
+    "org.robolectric:shadows-framework": 1280511961,
+    "org.robolectric:utils": 1605230956,
+    "org.robolectric:utils-reflector": 1438257772,
+    "org.yaml:snakeyaml": 1218201193
+  },
+  "conflict_resolution": {
+    "androidx.annotation:annotation:1.1.0": "androidx.annotation:annotation:1.7.0",
+    "com.google.errorprone:error_prone_annotations:2.5.1": "com.google.errorprone:error_prone_annotations:2.36.0",
+    "com.google.guava:guava:32.0.1-jre": "com.google.guava:guava:33.4.8-jre",
+    "com.google.j2objc:j2objc-annotations:2.8": "com.google.j2objc:j2objc-annotations:3.0.0"
+  },
   "artifacts": {
     "androidx.annotation:annotation": {
       "shasums": {
@@ -249,6 +349,18 @@
       },
       "version": "1.11.0"
     },
+    "com.google.code.findbugs:jsr305": {
+      "shasums": {
+        "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7"
+      },
+      "version": "3.0.2"
+    },
+    "com.google.code.gson:gson": {
+      "shasums": {
+        "jar": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e"
+      },
+      "version": "2.8.9"
+    },
     "com.google.errorprone:error_prone_annotation": {
       "shasums": {
         "jar": "192e99ad3be8a0a44fe210cdc9b0265601dcb446e521ba922c793e50add413c3"
@@ -389,21 +501,21 @@
     },
     "org.robolectric:annotations": {
       "shasums": {
-        "jar": "409f50354fc08b382a8fa8c42416438d3664d2cb4e63bf252022c875288fbf7a"
+        "jar": "65a55f0b3cbcfbfc675b0c9075a30edc3b95e6e772a911d874197cc528c9d7b1"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:junit": {
       "shasums": {
-        "jar": "2c9aca263f0c41b1f0452c88d28ad618e553325f0213ce75de42fb02dd5c0479"
+        "jar": "c5b1a61599347ab9a5dc692104b457cd3c31375cd6eecf9b956749309091b5e8"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:nativeruntime": {
       "shasums": {
-        "jar": "85c9c9763de195a166a2cfc88e8623b572bef92cb96f60342fcca3cbbd69ed25"
+        "jar": "55e339282dde0466dcfbce0fd861562bed59bc43f41012d21d750d07147c9e98"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:nativeruntime-dist-compat": {
       "shasums": {
@@ -413,57 +525,57 @@
     },
     "org.robolectric:pluginapi": {
       "shasums": {
-        "jar": "ffdb38f7d0a667e10d0609472ec13792018a69ccaf52c776166e03c61eae6428"
+        "jar": "ba72852745647202c40f1937ddca813bfa1be7707f84e3f65beae2c49d592174"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:plugins-maven-dependency-resolver": {
       "shasums": {
-        "jar": "60858ba0f8c21b2ca38aca7bf18b0fb39ebd10ddf80ef74777fac9ba8909880a"
+        "jar": "6643b0d9bfdf192a4b971f50e61aa93816b75b9a4334e693f0e2dcedc88b944a"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:resources": {
       "shasums": {
-        "jar": "0d6abfd274d3c853a564ea23ce1c52d31d075281ae0e7d64bbbc1477b2ed7679"
+        "jar": "fb16b2c000cc1b91c6f26b6f6c08459e5b1ee35d99cfb908f20a73a05f3f962c"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:robolectric": {
       "shasums": {
-        "jar": "d5b073aa051c88995a621e13c9c0d2afd1be835800d59c80d58c1dbfd8eca19b"
+        "jar": "ebfd48a0255689b0e58a3bbc6c794dc0c0d7b48ce31006fe2613cf7548cba229"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:sandbox": {
       "shasums": {
-        "jar": "78462f9987db60b24283eebdf31a7f4d11487197f8508a2ea262aa5ca4bb0b18"
+        "jar": "14a9bd67d4765c5d6c4ff57ddf339cb447e63df4a46bac650c093a15e2209bdf"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:shadowapi": {
       "shasums": {
-        "jar": "8502d044ab781668fc52eb8784dcacd50c54eaa819cf5cc5fbb1b8457c9931a6"
+        "jar": "6f997b1c0d169a01a967dff2661a95f4c2c2b5b008e8b9e1fba0b2682d6f8c6d"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:shadows-framework": {
       "shasums": {
-        "jar": "f3ddb731c95cb4663634355bed62932ec8f2c7a3daab876885a16b48e1530eda"
+        "jar": "a59802cffec783aa0e7df1489b0c2ce1126ef7cdedb940ffc378eb61e86958c8"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:utils": {
       "shasums": {
-        "jar": "51940c4668ed065101c8a932c6b8a7efa7b546fd5a8e98180f40ac3840b27428"
+        "jar": "8088e94dcaa5cd36251492b1e1155ea2b636756b2271dbbb2d325a012c8a30e2"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:utils-reflector": {
       "shasums": {
-        "jar": "efa21dcd2d68b8f3e202580a141b5f338a33e194a46bcd33b70ddb9e6d5ad63d"
+        "jar": "f1c49f95cb3a94ec6fcebfdf1753dd12a879ce5703b3b851f63fb8b412210eb9"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.yaml:snakeyaml": {
       "shasums": {
@@ -808,6 +920,22 @@
       "com.google.auto.value.extension.serializable",
       "com.google.auto.value.extension.toprettystring"
     ],
+    "com.google.code.findbugs:jsr305": [
+      "javax.annotation",
+      "javax.annotation.concurrent",
+      "javax.annotation.meta"
+    ],
+    "com.google.code.gson:gson": [
+      "com.google.gson",
+      "com.google.gson.annotations",
+      "com.google.gson.internal",
+      "com.google.gson.internal.bind",
+      "com.google.gson.internal.bind.util",
+      "com.google.gson.internal.reflect",
+      "com.google.gson.internal.sql",
+      "com.google.gson.reflect",
+      "com.google.gson.stream"
+    ],
     "com.google.errorprone:error_prone_annotation": [
       "com.google.errorprone"
     ],
@@ -1390,6 +1518,8 @@
       "androidx.viewpager:viewpager:aar",
       "com.almworks.sqlite4java:sqlite4java",
       "com.google.auto.value:auto-value-annotations",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
       "com.google.errorprone:error_prone_annotation",
       "com.google.errorprone:error_prone_annotations",
       "com.google.guava:failureaccess",
@@ -1470,6 +1600,8 @@
       "androidx.viewpager:viewpager:aar",
       "com.almworks.sqlite4java:sqlite4java",
       "com.google.auto.value:auto-value-annotations",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
       "com.google.errorprone:error_prone_annotation",
       "com.google.errorprone:error_prone_annotations",
       "com.google.guava:failureaccess",
@@ -1578,5 +1710,5 @@
       ]
     }
   },
-  "version": "2"
+  "version": "3"
 }
diff --git a/examples/android_local_test/src/test/AndroidManifest.xml b/examples/android_local_test/src/test/AndroidManifest.xml
index dee40ee..512636d 100644
--- a/examples/android_local_test/src/test/AndroidManifest.xml
+++ b/examples/android_local_test/src/test/AndroidManifest.xml
@@ -5,4 +5,8 @@
 
     <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
 
+    <application android:theme="@style/AppTheme">
+        <activity android:name=".MainActivity" />
+    </application>
+
 </manifest>
diff --git a/examples/android_local_test/src/test/BUILD b/examples/android_local_test/src/test/BUILD
index 6c2e214..09b2b1b 100644
--- a/examples/android_local_test/src/test/BUILD
+++ b/examples/android_local_test/src/test/BUILD
@@ -9,6 +9,6 @@
         "@maven//:org_assertj_assertj_core",
         "@maven//:org_robolectric_robolectric",
         "@maven//:org_robolectric_shadows_framework",
-        "@robolectric//bazel:android-all",
+        "@rules_robolectric//bazel:android-all",
     ],
 )
diff --git a/examples/bzlmod/.bazelrc b/examples/bzlmod/.bazelrc
deleted file mode 100644
index 45d7065..0000000
--- a/examples/bzlmod/.bazelrc
+++ /dev/null
@@ -1,12 +0,0 @@
-import ../../.bazelrc
-
-common --enable_bzlmod
-common --incompatible_use_plus_in_repo_names
-
-common --check_direct_dependencies=error
-
-build --java_language_version=11
-build --tool_java_language_version=11
-
-# Verify that we can share a lock file
-common:bazel5 --enable_bzlmod=false
diff --git a/examples/bzlmod/.bazelversion b/examples/bzlmod/.bazelversion
deleted file mode 100644
index 56b6be4..0000000
--- a/examples/bzlmod/.bazelversion
+++ /dev/null
@@ -1 +0,0 @@
-8.3.1
diff --git a/examples/bzlmod/BUILD b/examples/bzlmod/BUILD
deleted file mode 100644
index 5dee0ee..0000000
--- a/examples/bzlmod/BUILD
+++ /dev/null
@@ -1,11 +0,0 @@
-load("@rules_jvm_external//:defs.bzl", "artifact")
-
-# You can load artifacts from different `maven.install` tags by using the
-# `repository_name` parameter of the `artifact` macro.
-alias(
-    name = "junit-api",
-    actual = artifact(
-        "org.junit.jupiter:junit-jupiter-api",
-        repository_name = "alternative_resolver",
-    ),
-)
diff --git a/examples/bzlmod/MODULE.bazel b/examples/bzlmod/MODULE.bazel
deleted file mode 100644
index ffb675e..0000000
--- a/examples/bzlmod/MODULE.bazel
+++ /dev/null
@@ -1,50 +0,0 @@
-module(
-    name = "rules_jvm_external_examples_bzlmod",
-    version = "6.0",
-)
-
-# Required because `protobuf` contributes to the default namespace
-bazel_dep(name = "protobuf", version = "29.0", repo_name = None)
-bazel_dep(name = "rules_java", version = "8.13.0")
-bazel_dep(name = "rules_jvm_external", version = "0.0")
-local_path_override(
-    module_name = "rules_jvm_external",  # matches the name of the `bazel_dep`
-    path = "../..",
-)
-
-maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
-maven.artifact(
-    artifact = "guava",
-    exclusions = ["com.google.code.findbugs:jsr305"],
-    force_version = True,
-    group = "com.google.guava",
-    version = "31.1-jre",
-)
-maven.install(
-    artifacts = [
-        "org.seleniumhq.selenium:selenium-java:4.4.0",
-    ],
-    fetch_sources = True,
-    known_contributing_modules = [
-        "bazel_worker_java",
-        "rules_jvm_external_examples_bzlmod",
-    ],
-    lock_file = "//:maven_install.json",
-)
-
-# The default resolver cannot handle Maven BOMs, but the `maven`
-# resolver can. Demonstrate how to use it.
-maven.install(
-    name = "alternative_resolver",
-    artifacts = [
-        "org.junit.jupiter:junit-jupiter-api",
-    ],
-    boms = [
-        "org.junit:junit-bom:5.11.0",
-    ],
-    # Before the first pin, this file was completely empty. Running:
-    # `REPIN=1 bazel run @alternative_resolver//:pin` generated it.
-    lock_file = "//:alternative_maven_install.json",
-    resolver = "maven",
-)
-use_repo(maven, "alternative_resolver", "maven")
diff --git a/examples/bzlmod/WORKSPACE b/examples/bzlmod/WORKSPACE
deleted file mode 100644
index d565013..0000000
--- a/examples/bzlmod/WORKSPACE
+++ /dev/null
@@ -1,28 +0,0 @@
-workspace(name = "rules_jvm_bzlmod_example")
-
-local_repository(
-    name = "rules_jvm_external",
-    path = "../..",
-)
-
-load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
-
-rules_jvm_external_deps()
-
-load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
-
-load("@rules_jvm_external//:defs.bzl", "maven_install")
-
-maven_install(
-    artifacts = [
-        "com.google.guava:guava:31.1-jre",
-        "org.seleniumhq.selenium:selenium-java:4.4.0",
-    ],
-    maven_install_json = "//:maven_install.json",
-)
-
-load("@maven//:defs.bzl", "pinned_maven_install")
-
-pinned_maven_install()
diff --git a/examples/bzlmod/WORKSPACE.bzlmod b/examples/bzlmod/WORKSPACE.bzlmod
deleted file mode 100644
index 7828988..0000000
--- a/examples/bzlmod/WORKSPACE.bzlmod
+++ /dev/null
@@ -1 +0,0 @@
-workspace(name = "rules_jvm_bzlmod_example")
diff --git a/examples/bzlmod/alternative_maven_install.json b/examples/bzlmod/alternative_maven_install.json
deleted file mode 100644
index 8d37065..0000000
--- a/examples/bzlmod/alternative_maven_install.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": 126045399,
-  "__RESOLVED_ARTIFACTS_HASH": 246607592,
-  "artifacts": {
-    "org.apiguardian:apiguardian-api": {
-      "shasums": {
-        "jar": "b509448ac506d607319f182537f0b35d71007582ec741832a1f111e5b5b70b38"
-      },
-      "version": "1.1.2"
-    },
-    "org.junit.jupiter:junit-jupiter-api": {
-      "shasums": {
-        "jar": "42aa202fc862f76cc5af65b47b1c0b1961cdd79cd2216405a6dfa2bd20b20974"
-      },
-      "version": "5.11.0"
-    },
-    "org.junit.platform:junit-platform-commons": {
-      "shasums": {
-        "jar": "609333a4545f9018eb0c59071efd30663a9e9fdce528121b65a04c27e5fc26a7"
-      },
-      "version": "1.11.0"
-    },
-    "org.opentest4j:opentest4j": {
-      "shasums": {
-        "jar": "48e2df636cab6563ced64dcdff8abb2355627cb236ef0bf37598682ddf742f1b"
-      },
-      "version": "1.3.0"
-    }
-  },
-  "dependencies": {
-    "org.junit.jupiter:junit-jupiter-api": [
-      "org.apiguardian:apiguardian-api",
-      "org.junit.platform:junit-platform-commons",
-      "org.opentest4j:opentest4j"
-    ],
-    "org.junit.platform:junit-platform-commons": [
-      "org.apiguardian:apiguardian-api"
-    ]
-  },
-  "packages": {
-    "org.apiguardian:apiguardian-api": [
-      "org.apiguardian.api"
-    ],
-    "org.junit.jupiter:junit-jupiter-api": [
-      "org.junit.jupiter.api",
-      "org.junit.jupiter.api.condition",
-      "org.junit.jupiter.api.extension",
-      "org.junit.jupiter.api.extension.support",
-      "org.junit.jupiter.api.function",
-      "org.junit.jupiter.api.io",
-      "org.junit.jupiter.api.parallel"
-    ],
-    "org.junit.platform:junit-platform-commons": [
-      "org.junit.platform.commons",
-      "org.junit.platform.commons.annotation",
-      "org.junit.platform.commons.function",
-      "org.junit.platform.commons.logging",
-      "org.junit.platform.commons.support",
-      "org.junit.platform.commons.support.conversion",
-      "org.junit.platform.commons.util"
-    ],
-    "org.opentest4j:opentest4j": [
-      "org.opentest4j"
-    ]
-  },
-  "repositories": {
-    "https://repo1.maven.org/maven2/": [
-      "org.apiguardian:apiguardian-api",
-      "org.junit.jupiter:junit-jupiter-api",
-      "org.junit.platform:junit-platform-commons",
-      "org.opentest4j:opentest4j"
-    ]
-  },
-  "services": {},
-  "skipped": [],
-  "version": "2"
-}
diff --git a/examples/bzlmod/java/src/com/github/rules_jvm_external/examples/bzlmod/BUILD b/examples/bzlmod/java/src/com/github/rules_jvm_external/examples/bzlmod/BUILD
deleted file mode 100644
index d756431..0000000
--- a/examples/bzlmod/java/src/com/github/rules_jvm_external/examples/bzlmod/BUILD
+++ /dev/null
@@ -1,11 +0,0 @@
-load("@rules_java//java:java_binary.bzl", "java_binary")
-load("@rules_jvm_external//:defs.bzl", "artifact")
-
-java_binary(
-    name = "bzlmod_example",
-    srcs = glob(["*.java"]),
-    deps = [
-        artifact("com.google.guava:guava"),
-        artifact("org.seleniumhq.selenium:selenium-api"),
-    ],
-)
diff --git a/examples/bzlmod/java/src/com/github/rules_jvm_external/examples/bzlmod/Main.java b/examples/bzlmod/java/src/com/github/rules_jvm_external/examples/bzlmod/Main.java
deleted file mode 100644
index 32711fb..0000000
--- a/examples/bzlmod/java/src/com/github/rules_jvm_external/examples/bzlmod/Main.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.github.bazelbuild.rules_jvm_external.examples.bzlmod;
-
-import com.google.common.collect.ImmutableList;
-import java.util.List;
-import org.openqa.selenium.WebDriver;
-
-/** A basic class with nothing special about it. */
-public class Main {
-
-  public static void main(String[] args) {
-    var fromGuava = ImmutableList.of("Hello", "World!");
-    var fromJre = List.of("Hello", "World!");
-
-    if (!fromJre.equals(fromGuava)) {
-      throw new RuntimeException("This is less than ideal");
-    }
-
-    // Make sure we can import something from the selenium-api jar
-    // We don't want to fire up a full driver, because we might not
-    // have access to the binaries.
-    WebDriver driver = null;
-  }
-}
diff --git a/examples/bzlmod/maven_install.json b/examples/bzlmod/maven_install.json
deleted file mode 100644
index 5220245..0000000
--- a/examples/bzlmod/maven_install.json
+++ /dev/null
@@ -1,1898 +0,0 @@
-{
-  "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": 882700655,
-  "__RESOLVED_ARTIFACTS_HASH": -1576018610,
-  "artifacts": {
-    "com.beust:jcommander": {
-      "shasums": {
-        "jar": "deeac157c8de6822878d85d0c7bc8467a19cc8484d37788f7804f039dde280b1",
-        "sources": "cc39d22f3cf29c2033fb526e5600ae8fec36e316274b0c07fa14c1a4a38eca3b"
-      },
-      "version": "1.82"
-    },
-    "com.google.auto.service:auto-service": {
-      "shasums": {
-        "jar": "88d469a5392dc2a292dfa20432591a584c29fae417cfd88b72620f35ec795acf",
-        "sources": "704a261cdd500ac47636d09b92a3a2b75f3b9484a3ce8fc3b08f66574fc1fbb2"
-      },
-      "version": "1.0.1"
-    },
-    "com.google.auto.service:auto-service-annotations": {
-      "shasums": {
-        "jar": "c7bec54b7b5588b5967e870341091c5691181d954cf2039f1bf0a6eeb837473b",
-        "sources": "b013ca159b0fea3a0041d3d5fbb3b7e49a819da80a172a01fb17dd28fd98e72b"
-      },
-      "version": "1.0.1"
-    },
-    "com.google.auto:auto-common": {
-      "shasums": {
-        "jar": "326d674b411ea67505273f9ade5311c15bca50644b5211a6c309c9aee590a20a",
-        "sources": "5ed509e12f9bf2c90dc5c26e4e94eb97a7e747c59ad527b018b9567b398b56b1"
-      },
-      "version": "1.2"
-    },
-    "com.google.code.findbugs:jsr305": {
-      "shasums": {
-        "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7",
-        "sources": "1c9e85e272d0708c6a591dc74828c71603053b48cc75ae83cce56912a2aa063b"
-      },
-      "version": "3.0.2"
-    },
-    "com.google.code.gson:gson": {
-      "shasums": {
-        "jar": "4241c14a7727c34feea6507ec801318a3d4a90f070e4525681079fb94ee4c593",
-        "sources": "eee1cc5c1f4267ee194cc245777e68084738ef390acd763354ce0ff6bfb7bcc1"
-      },
-      "version": "2.10.1"
-    },
-    "com.google.errorprone:error_prone_annotations": {
-      "shasums": {
-        "jar": "ec6f39f068b6ff9ac323c68e28b9299f8c0a80ca512dccb1d4a70f40ac3ec054",
-        "sources": "5b4504609bb93d3c24b87cd839cf0bb7d878135d0a917a05081d0dc9b2a9973f"
-      },
-      "version": "2.23.0"
-    },
-    "com.google.guava:failureaccess": {
-      "shasums": {
-        "jar": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26",
-        "sources": "092346eebbb1657b51aa7485a246bf602bb464cc0b0e2e1c7e7201fadce1e98f"
-      },
-      "version": "1.0.1"
-    },
-    "com.google.guava:guava": {
-      "shasums": {
-        "jar": "a42edc9cab792e39fe39bb94f3fca655ed157ff87a8af78e1d6ba5b07c4a00ab",
-        "sources": "8ab1853cdaf936ec88be80c17302b7c20abafbd4f54d4fb54d7011c529e3a44a"
-      },
-      "version": "31.1-jre"
-    },
-    "com.google.guava:listenablefuture": {
-      "shasums": {
-        "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99"
-      },
-      "version": "9999.0-empty-to-avoid-conflict-with-guava"
-    },
-    "com.google.j2objc:j2objc-annotations": {
-      "shasums": {
-        "jar": "f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed",
-        "sources": "7413eed41f111453a08837f5ac680edded7faed466cbd35745e402e13f4cc3f5"
-      },
-      "version": "2.8"
-    },
-    "com.google.protobuf:protobuf-java": {
-      "shasums": {
-        "jar": "becb817df6e8a1a8de2bf5ff0157fa008f23ac037ab30b7ed5cd43662be145d5",
-        "sources": "b2d6164a8601c83c15edbd79f4967a39e065110111213561350663521ccf5bb4"
-      },
-      "version": "4.27.2"
-    },
-    "com.google.protobuf:protobuf-java-util": {
-      "shasums": {
-        "jar": "a2665294d3e4675482bde593df8283f8c965f0207785e8e9b223f790644f5b08",
-        "sources": "8f318bde0b3b68fb7df0760bf5d818dd7ebcd553155d9be93b4fed373e659847"
-      },
-      "version": "4.27.2"
-    },
-    "com.sun.activation:jakarta.activation": {
-      "shasums": {
-        "jar": "02156773e4ae9d048d14a56ad35d644bee9f1052a791d072df3ded3c656e6e1a",
-        "sources": "f8f52ce9df5d5d29c1778183d48214624caa36be202a7eff2cef5a0519f2aa53"
-      },
-      "version": "1.2.2"
-    },
-    "com.typesafe.netty:netty-reactive-streams": {
-      "shasums": {
-        "jar": "eafc52d500b49e891db095ee7baac0420aea8a97015ab7671ba1f1ccabf799d2",
-        "sources": "76df17cc7c4fac9c470e557b5cca224df51ba878ec9fd3fd8f0f89878cbf98ab"
-      },
-      "version": "2.0.4"
-    },
-    "dev.failsafe:failsafe": {
-      "shasums": {
-        "jar": "afa786e3e4191ca995838fbfa71d68fcc25ea6c3b3b125e001c96718108400c1",
-        "sources": "cac5bc2c38d5fa5ec82df58bf85318b8acb4a88d6f81cb6b776d7ea2e749b59c"
-      },
-      "version": "3.2.4"
-    },
-    "io.netty:netty-buffer": {
-      "shasums": {
-        "jar": "7730bbdb434b91b45474ae3c534948e42d1f1639bdab06a807d58019f56ca149",
-        "sources": "f242981c4ad40c53eb8cda44ba4e527f434585831bdf3751e5be8bc01fc0eb21"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.netty:netty-codec": {
-      "shasums": {
-        "jar": "e2c6491c204834906f46611c1570f703670b8a5c829514715d3f633e03978e1d",
-        "sources": "9f98018d4dcd4913511ec47a6e783417d29c722611047916ac32dd6b9959b6df"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.netty:netty-codec-http": {
-      "shasums": {
-        "jar": "1b57c80b67fe5777271acba052053fa679edb3600abf8610526306c88d04cb06",
-        "sources": "c895ccf57f27d267188184d34213083ce74a3ac2147583fa6102ca34f9da9ef7"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.netty:netty-codec-socks": {
-      "shasums": {
-        "jar": "76bfb4306c67fc25ce6a817ef5ffb0cebc9250506a685fa6ec06052848c14efd",
-        "sources": "d7bbdad28071cd6dca08cd26d517e4986e2a7225e0d413fd29d27fecba530501"
-      },
-      "version": "4.1.60.Final"
-    },
-    "io.netty:netty-common": {
-      "shasums": {
-        "jar": "84fe17e97335492a24d85e2da9f9bea996ab2c3c4d0fcfc1d997f9613393d917",
-        "sources": "766b51129b6b9622cc90d14a62976a98a71c678ed47eea670aea603be2b7f78f"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.netty:netty-handler": {
-      "shasums": {
-        "jar": "04f40a6159418397348d56a9c45343d4bbbfa1711d864a10a131d4373484f131",
-        "sources": "0d7afc3f4de41cb6a5f40e7af61c7cbd24bb589ab9556f24a7166b037199fc74"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.netty:netty-handler-proxy": {
-      "shasums": {
-        "jar": "7c797450f50a5bc549bade856e91f4bed95cc6396e85b720efbaab133b13b5d5",
-        "sources": "d671846dc1a2ae30fef6cfdecb877e7a4f92e29e101d173160b71f7c3980579a"
-      },
-      "version": "4.1.60.Final"
-    },
-    "io.netty:netty-resolver": {
-      "shasums": {
-        "jar": "4f592ceb0f5f72f1908a3d1c842ee583ab46fdb3133bf2bec3676fbe6a680bce",
-        "sources": "1f15d707f22db5abdda4cd43be0392baedfcc297c3f697e4a38df1d855ccc92b"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.netty:netty-transport": {
-      "shasums": {
-        "jar": "153ee99931f6d6ba8a6d66d74cbb73371bd46c546b0707d7d37af1264a3deaf2",
-        "sources": "290b68d280718f53ff8269ce47226df87456d79f3926768c4eeaa58be4d95e18"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.netty:netty-transport-classes-epoll": {
-      "shasums": {
-        "jar": "ddb9f8836810e1df196ede6ebfe2f86839160fc5021c386086e1bb659bcddd00",
-        "sources": "158b58bec686e850a812533934ac0d452289efa1845f5bbeb3eb52d12e78742e"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.netty:netty-transport-classes-kqueue": {
-      "shasums": {
-        "jar": "2c093e36268640ff6034328e4774a04069a1c2410200d76fb814aa74b7dc393d",
-        "sources": "015ba1a87b5d4310c6f66ddc0dc0479ab1fe60d355d373f313457c12cec0c43a"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.netty:netty-transport-native-epoll": {
-      "shasums": {
-        "jar": "0da0f9d60b7ee800bb3f2f8d66ac7f60ce661a2664bbdb894d1349637d73908a",
-        "sources": "f9772dae3cc064318c033b5b3c35856764ae0fe0617410c08869930676e65eaf"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.netty:netty-transport-native-kqueue": {
-      "shasums": {
-        "jar": "8f06a5af5f5c0564cba47fe65ae6e44675621732dadc7eff34d803f62e506aed",
-        "sources": "995c41576c68bd7f7335405a2e23a904ebdc1992a9bf79d0319225ac61e85771"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.netty:netty-transport-native-unix-common": {
-      "shasums": {
-        "jar": "75555605c23592223b10b157409c00c9127205dd7bee093c1ac244fc71fdcc06",
-        "sources": "897222e261968df5db35554e61d00a62c944f110f8c569eb8d211ddce1467f97"
-      },
-      "version": "4.1.78.Final"
-    },
-    "io.opentelemetry:opentelemetry-api": {
-      "shasums": {
-        "jar": "838d4373d43a130fd90effa17020482e18f95096d2de05b977910916061f3241",
-        "sources": "074788c49be9c3c2d080fc374abda3d2edaf44fd8628dbeb2029e5af37cc1e87"
-      },
-      "version": "1.16.0"
-    },
-    "io.opentelemetry:opentelemetry-context": {
-      "shasums": {
-        "jar": "875251e91f6cdc922021614ce245d2a0d8186797a9671994b2ec9f815cc77e82",
-        "sources": "e6c0f7c2a48a3a237662ba80cde207ecdd3d144c5289e9ada29707f9417c1b2c"
-      },
-      "version": "1.16.0"
-    },
-    "io.opentelemetry:opentelemetry-exporter-logging": {
-      "shasums": {
-        "jar": "35d92936eb2f3ee93f95588bd0d305cc53851b1ead4ffa0aa5c5a646adf70ebc",
-        "sources": "761020ece50e4799ab29f5d87cf54dd28059ceee7410af109dddf2cc4ac329f0"
-      },
-      "version": "1.16.0"
-    },
-    "io.opentelemetry:opentelemetry-sdk": {
-      "shasums": {
-        "jar": "f9be94953f682469d5a81db21a6f5abf3f4740ab77af503b5d3d2d3ef2406a11",
-        "sources": "6db02cc18e6cbda3d49e58bb370ec20755af12a90e53aa1aef3880cd4e147c76"
-      },
-      "version": "1.16.0"
-    },
-    "io.opentelemetry:opentelemetry-sdk-common": {
-      "shasums": {
-        "jar": "2c9c7e50a5b1dfb36b008173961aad8e0f03d2675d7b503fded09c0611e6d4e6",
-        "sources": "4ae838d10295663f2bb5808df0fc577c41f751dab9f9ceceb2119241c0a02d02"
-      },
-      "version": "1.16.0"
-    },
-    "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure": {
-      "shasums": {
-        "jar": "5bcdd5d48aa1e1328d628c5a93859b8667b75ee9bac8f75fb96ea343737b02f9",
-        "sources": "5efa8c757123403550105369abf99df3a1899c3caba021afc56d3e37eed256e7"
-      },
-      "version": "1.16.0-alpha"
-    },
-    "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi": {
-      "shasums": {
-        "jar": "f5ad13fbd4d074727e8897d3a2032bc8a22abafd5a383d7ee67074e19432f0bd",
-        "sources": "0c61a2c461bbb17d879e92e64227d2607fea6e09d4203cda2b40ab2c10f960b0"
-      },
-      "version": "1.16.0"
-    },
-    "io.opentelemetry:opentelemetry-sdk-logs": {
-      "shasums": {
-        "jar": "931528d51d8fbebadd69187ad305637caf1cf5d9271de26e4163feb24b120e57",
-        "sources": "d74bc2b936d3498309590ea1b2d7cd12f2ef5b664db5d9594f4e78a23b5d668b"
-      },
-      "version": "1.16.0-alpha"
-    },
-    "io.opentelemetry:opentelemetry-sdk-metrics": {
-      "shasums": {
-        "jar": "3ec0e293194c629ecde2822bcf01629daf5bc3f8465af53009b9c4fd8093e56d",
-        "sources": "0910193dc7ed491b081f84e00e5a5ab58b57922313482889e1d55cd4cdbcb70d"
-      },
-      "version": "1.16.0"
-    },
-    "io.opentelemetry:opentelemetry-sdk-trace": {
-      "shasums": {
-        "jar": "8bbbd0344286c137a535595f423e34f6e3bc02149f8d4dc12687d77466289886",
-        "sources": "386bc91732030c27ec7c296e5174094fa853daba97f31ab4bc9d5cf2f6037088"
-      },
-      "version": "1.16.0"
-    },
-    "io.opentelemetry:opentelemetry-semconv": {
-      "shasums": {
-        "jar": "a18eda726d99749e4fc43a6e8159cf4c55b8357bd354f2c3e8866692c3e165c1",
-        "sources": "4ac03c275aca2eae95d180a6aa28ecfb002bc0f585aae1a2e6ae88268beb88e7"
-      },
-      "version": "1.16.0-alpha"
-    },
-    "io.ous:jtoml": {
-      "shasums": {
-        "jar": "3cabdae2244c999addebb8c31ae452fbdc874b4f26a163539954b8eeb5d6acc6",
-        "sources": "f479f2acdf7a362dc86a5c9310ddaec7b34a87f0a8a6f46dde41c1069b2a2138"
-      },
-      "version": "2.0.0"
-    },
-    "net.bytebuddy:byte-buddy": {
-      "shasums": {
-        "jar": "1a1ac9ce65eddcea54ead958387bb0b3863d02a2ffe856ab6a57ac79737c19cf",
-        "sources": "6d2fc2af6c71077dc9fb097c8eb06023545a04b6839bcea0d8d388b1c5e65b61"
-      },
-      "version": "1.12.10"
-    },
-    "org.apache.commons:commons-exec": {
-      "shasums": {
-        "jar": "cb49812dc1bfb0ea4f20f398bcae1a88c6406e213e67f7524fb10d4f8ad9347b",
-        "sources": "c121d8e70010092bafc56f358e7259ac484653db595aafea1e67a040f51aea66"
-      },
-      "version": "1.3"
-    },
-    "org.asynchttpclient:async-http-client": {
-      "shasums": {
-        "jar": "107a4ace7a3586f8e8a027c6d7e9933c9ae56eeb1a6df347eed2e7b552e4e5ed",
-        "sources": "fd7d5e61cb6e5adbb06c14b72c10c88e18ebfaf22d401a521eae14123b537900"
-      },
-      "version": "2.12.3"
-    },
-    "org.asynchttpclient:async-http-client-netty-utils": {
-      "shasums": {
-        "jar": "e0bb76bbca0c85c68cab25dbed7989b00db5da8627cf69258f398d7d89bc9067",
-        "sources": "0b66a2867a3e4ea1e101e64d961d677bc6fbbbefa462b8fac461ef9101bec435"
-      },
-      "version": "2.12.3"
-    },
-    "org.checkerframework:checker-qual": {
-      "shasums": {
-        "jar": "ff10785ac2a357ec5de9c293cb982a2cbb605c0309ea4cc1cb9b9bc6dbe7f3cb",
-        "sources": "fd99a45195ed893803624d1030387056a96601013f5e61ccabd79abb4ddfa876"
-      },
-      "version": "3.12.0"
-    },
-    "org.reactivestreams:reactive-streams": {
-      "shasums": {
-        "jar": "1dee0481072d19c929b623e155e14d2f6085dc011529a0a0dbefc84cf571d865",
-        "sources": "d5b4070a22c9b1ca5b9b5aa668466bcca391dbe5d5fe8311c300765c1621feba"
-      },
-      "version": "1.0.3"
-    },
-    "org.seleniumhq.selenium:selenium-api": {
-      "shasums": {
-        "jar": "fc21a1f1cc98d67fd2f19624d7698e2580a56ec286e566a9966d7a3db65788b9",
-        "sources": "e60729118543c40b804f923b25f9ed17b202062eecc15bae2f09b447cdafc69c"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-chrome-driver": {
-      "shasums": {
-        "jar": "94413b68cbbd21baa84a45e2e09958bcbb11960fd65baa6a98b9146d4db2aa62",
-        "sources": "17911819e3bce264d38598e9b3df3e5f18a8b5d14d2878cd119933e313fbb6c0"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-chromium-driver": {
-      "shasums": {
-        "jar": "2fe69252fcf450e753252f3aad30cc75072ffc078337b2c3f4c973f8622d361b",
-        "sources": "a8033c135ceec1677d5d6b0f7eb291dfdbb216de6c3b2ff6f98a1930cc6fd77b"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-devtools-v102": {
-      "shasums": {
-        "jar": "e3d0ce51b9393cfe25204042926e6e955fe9edeaf33ef650296e443b6f238a36",
-        "sources": "0f32449e67ab32a16d4cbb3fdbe5b7ac7eab98b3dd8abc9746d3501f4c0f2377"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-devtools-v103": {
-      "shasums": {
-        "jar": "4a7e22a0d77cf2285f2eecd534eb8aa82e06529ce6aaf9c2e1c3eb3f1671ea92",
-        "sources": "d73102dac63ecb1fcf84a98c2bb49b66d2ca17a019fd7c6ef328f55260faeac2"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-devtools-v104": {
-      "shasums": {
-        "jar": "d72ff656c8a5093e08c079582e5fc1fcd8ddb9c517f44c08d8636c9b23bd3569",
-        "sources": "46e1f9d438aeb1f50fc0f01627153ed6dbc948d9c40176a6179b5480cdfca110"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-devtools-v85": {
-      "shasums": {
-        "jar": "6cdb960015e389187ec2fddc2643efccb7ee4e8bc133c772816e4cc58e36d43c",
-        "sources": "33ff578e341f2c7783e9b85e5240da3d6f6d32b4c82ad8d9ccd726ebdaa22690"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-edge-driver": {
-      "shasums": {
-        "jar": "e8059a40435520457f5f5c55b0aaa766f7e24c9177197ac78603f30cfc230666",
-        "sources": "f8ffef3aa0fea856e2ce5c736fc16012c7317c83491f0fab985e585b9f694f80"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-firefox-driver": {
-      "shasums": {
-        "jar": "4dd437c91534592d72493a4c3f043cb1945528271815e3ac41c41ad69f7f577d",
-        "sources": "8189c73c2286dda0559278ac2ab0cd9e24ae201b80810037c700467ec5dd9e06"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-http": {
-      "shasums": {
-        "jar": "30a3f24f3ebafa69ae64340929358a923c0ac1c83402e0c61035db8edb17d0a2",
-        "sources": "8904cf619591b254f1343d6678356188943cfff3cdf44e0ddae5cf88f2339e18"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-ie-driver": {
-      "shasums": {
-        "jar": "1c441419b9716075579ab6234e840df27dc92d8f7f77c6f347ff562379023bdd",
-        "sources": "79428aaca00847e4c98aed87da32f627c53a719524d6359296f787f481739774"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-java": {
-      "shasums": {
-        "jar": "1739a02cd204c4f7c80dfcbde47cffe751f9b8cb23f87779b4a3245e4e165b22",
-        "sources": "9f88405b3389a2fc675b5e209a463b62c9e10365dccd6caea3c6eac1c2e9d25b"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-json": {
-      "shasums": {
-        "jar": "9c281aa0f4ec8c763033a744bd880b879a8d6311a47e34ecb393363017b51efa",
-        "sources": "d8ae66f7a4c33d67fe27c11c85b140050309ee46259623387453c9008b7e97d5"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-opera-driver": {
-      "shasums": {
-        "jar": "7b26996264194706a4970955b43ad3474c70840984d4d14d58dbeda0d498a41b",
-        "sources": "f4219b3a69b4d7665f20717bacf0aecbb57d79f8fe7df58a0ea0248c8c71f91c"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-remote-driver": {
-      "shasums": {
-        "jar": "f535697ba551efd69ab4bf21ebf99b48dedd499992adc964aab742f9deaab370",
-        "sources": "9a70213a8205d328d498c2272cb1e027772fdf725fb7933e6030b6af4e45fc7e"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-safari-driver": {
-      "shasums": {
-        "jar": "bb5a7342e91577ad9736e32afd58ab0ee57e983b96f188bdf005b5425e90bbdf",
-        "sources": "f57b358a2151d9a7407622e84595e7145f27f4a3ae82fb406de63f12482a384e"
-      },
-      "version": "4.4.0"
-    },
-    "org.seleniumhq.selenium:selenium-support": {
-      "shasums": {
-        "jar": "7882d7a73c163804d8b49ffe1309d165fcb2bd914d5d3d2caa3fdcf95f4fc1e2",
-        "sources": "c47f65e77e674250b5b51f55a2a1743ebd587aa9fdc43064ca85b81d7d58b95e"
-      },
-      "version": "4.4.0"
-    },
-    "org.slf4j:slf4j-api": {
-      "shasums": {
-        "jar": "cdba07964d1bb40a0761485c6b1e8c2f8fd9eb1d19c53928ac0d7f9510105c57",
-        "sources": "9ee459644577590fed7ea94afae781fa3cc9311d4553faee8a3219ffbd7cc386"
-      },
-      "version": "1.7.30"
-    }
-  },
-  "dependencies": {
-    "com.google.auto.service:auto-service": [
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.auto:auto-common",
-      "com.google.guava:guava"
-    ],
-    "com.google.auto:auto-common": [
-      "com.google.guava:guava"
-    ],
-    "com.google.guava:guava": [
-      "com.google.errorprone:error_prone_annotations",
-      "com.google.guava:failureaccess",
-      "com.google.guava:listenablefuture",
-      "com.google.j2objc:j2objc-annotations",
-      "org.checkerframework:checker-qual"
-    ],
-    "com.google.protobuf:protobuf-java-util": [
-      "com.google.code.findbugs:jsr305",
-      "com.google.code.gson:gson",
-      "com.google.errorprone:error_prone_annotations",
-      "com.google.guava:guava",
-      "com.google.j2objc:j2objc-annotations",
-      "com.google.protobuf:protobuf-java"
-    ],
-    "com.typesafe.netty:netty-reactive-streams": [
-      "io.netty:netty-handler",
-      "org.reactivestreams:reactive-streams"
-    ],
-    "io.netty:netty-buffer": [
-      "io.netty:netty-common"
-    ],
-    "io.netty:netty-codec": [
-      "io.netty:netty-buffer",
-      "io.netty:netty-common",
-      "io.netty:netty-transport"
-    ],
-    "io.netty:netty-codec-http": [
-      "io.netty:netty-buffer",
-      "io.netty:netty-codec",
-      "io.netty:netty-common",
-      "io.netty:netty-handler",
-      "io.netty:netty-transport"
-    ],
-    "io.netty:netty-codec-socks": [
-      "io.netty:netty-buffer",
-      "io.netty:netty-codec",
-      "io.netty:netty-common",
-      "io.netty:netty-transport"
-    ],
-    "io.netty:netty-handler": [
-      "io.netty:netty-buffer",
-      "io.netty:netty-codec",
-      "io.netty:netty-common",
-      "io.netty:netty-resolver",
-      "io.netty:netty-transport",
-      "io.netty:netty-transport-native-unix-common"
-    ],
-    "io.netty:netty-handler-proxy": [
-      "io.netty:netty-buffer",
-      "io.netty:netty-codec",
-      "io.netty:netty-codec-http",
-      "io.netty:netty-codec-socks",
-      "io.netty:netty-common",
-      "io.netty:netty-transport"
-    ],
-    "io.netty:netty-resolver": [
-      "io.netty:netty-common"
-    ],
-    "io.netty:netty-transport": [
-      "io.netty:netty-buffer",
-      "io.netty:netty-common",
-      "io.netty:netty-resolver"
-    ],
-    "io.netty:netty-transport-classes-epoll": [
-      "io.netty:netty-buffer",
-      "io.netty:netty-common",
-      "io.netty:netty-transport",
-      "io.netty:netty-transport-native-unix-common"
-    ],
-    "io.netty:netty-transport-classes-kqueue": [
-      "io.netty:netty-buffer",
-      "io.netty:netty-common",
-      "io.netty:netty-transport",
-      "io.netty:netty-transport-native-unix-common"
-    ],
-    "io.netty:netty-transport-native-epoll": [
-      "io.netty:netty-buffer",
-      "io.netty:netty-common",
-      "io.netty:netty-transport",
-      "io.netty:netty-transport-classes-epoll",
-      "io.netty:netty-transport-native-unix-common"
-    ],
-    "io.netty:netty-transport-native-kqueue": [
-      "io.netty:netty-buffer",
-      "io.netty:netty-common",
-      "io.netty:netty-transport",
-      "io.netty:netty-transport-classes-kqueue",
-      "io.netty:netty-transport-native-unix-common"
-    ],
-    "io.netty:netty-transport-native-unix-common": [
-      "io.netty:netty-buffer",
-      "io.netty:netty-common",
-      "io.netty:netty-transport"
-    ],
-    "io.opentelemetry:opentelemetry-api": [
-      "io.opentelemetry:opentelemetry-context"
-    ],
-    "io.opentelemetry:opentelemetry-exporter-logging": [
-      "io.opentelemetry:opentelemetry-sdk",
-      "io.opentelemetry:opentelemetry-sdk-logs",
-      "io.opentelemetry:opentelemetry-sdk-metrics"
-    ],
-    "io.opentelemetry:opentelemetry-sdk": [
-      "io.opentelemetry:opentelemetry-api",
-      "io.opentelemetry:opentelemetry-sdk-common",
-      "io.opentelemetry:opentelemetry-sdk-logs",
-      "io.opentelemetry:opentelemetry-sdk-metrics",
-      "io.opentelemetry:opentelemetry-sdk-trace"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-common": [
-      "io.opentelemetry:opentelemetry-api",
-      "io.opentelemetry:opentelemetry-semconv"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure": [
-      "io.opentelemetry:opentelemetry-sdk",
-      "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi",
-      "io.opentelemetry:opentelemetry-sdk-logs",
-      "io.opentelemetry:opentelemetry-sdk-metrics",
-      "io.opentelemetry:opentelemetry-semconv"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi": [
-      "io.opentelemetry:opentelemetry-sdk",
-      "io.opentelemetry:opentelemetry-sdk-logs",
-      "io.opentelemetry:opentelemetry-sdk-metrics"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-logs": [
-      "io.opentelemetry:opentelemetry-sdk-common"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-metrics": [
-      "io.opentelemetry:opentelemetry-api",
-      "io.opentelemetry:opentelemetry-sdk-common"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-trace": [
-      "io.opentelemetry:opentelemetry-api",
-      "io.opentelemetry:opentelemetry-sdk-common",
-      "io.opentelemetry:opentelemetry-semconv"
-    ],
-    "io.opentelemetry:opentelemetry-semconv": [
-      "io.opentelemetry:opentelemetry-api"
-    ],
-    "org.asynchttpclient:async-http-client": [
-      "com.sun.activation:jakarta.activation",
-      "com.typesafe.netty:netty-reactive-streams",
-      "io.netty:netty-codec-http",
-      "io.netty:netty-codec-socks",
-      "io.netty:netty-handler",
-      "io.netty:netty-handler-proxy",
-      "org.asynchttpclient:async-http-client-netty-utils",
-      "org.reactivestreams:reactive-streams",
-      "org.slf4j:slf4j-api"
-    ],
-    "org.asynchttpclient:async-http-client-netty-utils": [
-      "com.sun.activation:jakarta.activation",
-      "io.netty:netty-buffer",
-      "org.slf4j:slf4j-api"
-    ],
-    "org.seleniumhq.selenium:selenium-chrome-driver": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.guava:guava",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-chromium-driver",
-      "org.seleniumhq.selenium:selenium-json",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ],
-    "org.seleniumhq.selenium:selenium-chromium-driver": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.guava:guava",
-      "org.seleniumhq.selenium:selenium-json",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ],
-    "org.seleniumhq.selenium:selenium-devtools-v102": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.guava:guava",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-json",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ],
-    "org.seleniumhq.selenium:selenium-devtools-v103": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.guava:guava",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-json",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ],
-    "org.seleniumhq.selenium:selenium-devtools-v104": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.guava:guava",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-json",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ],
-    "org.seleniumhq.selenium:selenium-devtools-v85": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.guava:guava",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-json",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ],
-    "org.seleniumhq.selenium:selenium-edge-driver": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.guava:guava",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-chromium-driver",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ],
-    "org.seleniumhq.selenium:selenium-firefox-driver": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.guava:guava",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-devtools-v85",
-      "org.seleniumhq.selenium:selenium-json",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ],
-    "org.seleniumhq.selenium:selenium-http": [
-      "com.google.guava:guava",
-      "dev.failsafe:failsafe",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-json"
-    ],
-    "org.seleniumhq.selenium:selenium-ie-driver": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ],
-    "org.seleniumhq.selenium:selenium-java": [
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-chrome-driver",
-      "org.seleniumhq.selenium:selenium-devtools-v102",
-      "org.seleniumhq.selenium:selenium-devtools-v103",
-      "org.seleniumhq.selenium:selenium-devtools-v104",
-      "org.seleniumhq.selenium:selenium-devtools-v85",
-      "org.seleniumhq.selenium:selenium-edge-driver",
-      "org.seleniumhq.selenium:selenium-firefox-driver",
-      "org.seleniumhq.selenium:selenium-ie-driver",
-      "org.seleniumhq.selenium:selenium-opera-driver",
-      "org.seleniumhq.selenium:selenium-remote-driver",
-      "org.seleniumhq.selenium:selenium-safari-driver",
-      "org.seleniumhq.selenium:selenium-support"
-    ],
-    "org.seleniumhq.selenium:selenium-json": [
-      "org.seleniumhq.selenium:selenium-api"
-    ],
-    "org.seleniumhq.selenium:selenium-opera-driver": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ],
-    "org.seleniumhq.selenium:selenium-remote-driver": [
-      "com.beust:jcommander",
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.guava:guava",
-      "io.netty:netty-buffer",
-      "io.netty:netty-codec-http",
-      "io.netty:netty-common",
-      "io.netty:netty-transport",
-      "io.netty:netty-transport-classes-epoll",
-      "io.netty:netty-transport-classes-kqueue",
-      "io.netty:netty-transport-native-epoll",
-      "io.netty:netty-transport-native-kqueue",
-      "io.netty:netty-transport-native-unix-common",
-      "io.opentelemetry:opentelemetry-api",
-      "io.opentelemetry:opentelemetry-context",
-      "io.opentelemetry:opentelemetry-exporter-logging",
-      "io.opentelemetry:opentelemetry-sdk",
-      "io.opentelemetry:opentelemetry-sdk-common",
-      "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure",
-      "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi",
-      "io.opentelemetry:opentelemetry-sdk-trace",
-      "io.opentelemetry:opentelemetry-semconv",
-      "io.ous:jtoml",
-      "net.bytebuddy:byte-buddy",
-      "org.apache.commons:commons-exec",
-      "org.asynchttpclient:async-http-client",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-http",
-      "org.seleniumhq.selenium:selenium-json"
-    ],
-    "org.seleniumhq.selenium:selenium-safari-driver": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.guava:guava",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ],
-    "org.seleniumhq.selenium:selenium-support": [
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.guava:guava",
-      "net.bytebuddy:byte-buddy",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-json",
-      "org.seleniumhq.selenium:selenium-remote-driver"
-    ]
-  },
-  "packages": {
-    "com.beust:jcommander": [
-      "com.beust.ah",
-      "com.beust.jcommander",
-      "com.beust.jcommander.converters",
-      "com.beust.jcommander.defaultprovider",
-      "com.beust.jcommander.internal",
-      "com.beust.jcommander.parser",
-      "com.beust.jcommander.validators"
-    ],
-    "com.google.auto.service:auto-service": [
-      "com.google.auto.service.processor"
-    ],
-    "com.google.auto.service:auto-service-annotations": [
-      "com.google.auto.service"
-    ],
-    "com.google.auto:auto-common": [
-      "com.google.auto.common"
-    ],
-    "com.google.code.findbugs:jsr305": [
-      "javax.annotation",
-      "javax.annotation.concurrent",
-      "javax.annotation.meta"
-    ],
-    "com.google.code.gson:gson": [
-      "com.google.gson",
-      "com.google.gson.annotations",
-      "com.google.gson.internal",
-      "com.google.gson.internal.bind",
-      "com.google.gson.internal.bind.util",
-      "com.google.gson.internal.reflect",
-      "com.google.gson.internal.sql",
-      "com.google.gson.reflect",
-      "com.google.gson.stream"
-    ],
-    "com.google.errorprone:error_prone_annotations": [
-      "com.google.errorprone.annotations",
-      "com.google.errorprone.annotations.concurrent"
-    ],
-    "com.google.guava:failureaccess": [
-      "com.google.common.util.concurrent.internal"
-    ],
-    "com.google.guava:guava": [
-      "com.google.common.annotations",
-      "com.google.common.base",
-      "com.google.common.base.internal",
-      "com.google.common.cache",
-      "com.google.common.collect",
-      "com.google.common.escape",
-      "com.google.common.eventbus",
-      "com.google.common.graph",
-      "com.google.common.hash",
-      "com.google.common.html",
-      "com.google.common.io",
-      "com.google.common.math",
-      "com.google.common.net",
-      "com.google.common.primitives",
-      "com.google.common.reflect",
-      "com.google.common.util.concurrent",
-      "com.google.common.xml",
-      "com.google.thirdparty.publicsuffix"
-    ],
-    "com.google.j2objc:j2objc-annotations": [
-      "com.google.j2objc.annotations"
-    ],
-    "com.google.protobuf:protobuf-java": [
-      "com.google.protobuf",
-      "com.google.protobuf.compiler"
-    ],
-    "com.google.protobuf:protobuf-java-util": [
-      "com.google.protobuf.util"
-    ],
-    "com.sun.activation:jakarta.activation": [
-      "com.sun.activation.registries",
-      "com.sun.activation.viewers",
-      "javax.activation"
-    ],
-    "com.typesafe.netty:netty-reactive-streams": [
-      "com.typesafe.netty"
-    ],
-    "dev.failsafe:failsafe": [
-      "dev.failsafe",
-      "dev.failsafe.event",
-      "dev.failsafe.function",
-      "dev.failsafe.internal",
-      "dev.failsafe.internal.util",
-      "dev.failsafe.spi"
-    ],
-    "io.netty:netty-buffer": [
-      "io.netty.buffer",
-      "io.netty.buffer.search"
-    ],
-    "io.netty:netty-codec": [
-      "io.netty.handler.codec",
-      "io.netty.handler.codec.base64",
-      "io.netty.handler.codec.bytes",
-      "io.netty.handler.codec.compression",
-      "io.netty.handler.codec.json",
-      "io.netty.handler.codec.marshalling",
-      "io.netty.handler.codec.protobuf",
-      "io.netty.handler.codec.serialization",
-      "io.netty.handler.codec.string",
-      "io.netty.handler.codec.xml"
-    ],
-    "io.netty:netty-codec-http": [
-      "io.netty.handler.codec.http",
-      "io.netty.handler.codec.http.cookie",
-      "io.netty.handler.codec.http.cors",
-      "io.netty.handler.codec.http.multipart",
-      "io.netty.handler.codec.http.websocketx",
-      "io.netty.handler.codec.http.websocketx.extensions",
-      "io.netty.handler.codec.http.websocketx.extensions.compression",
-      "io.netty.handler.codec.rtsp",
-      "io.netty.handler.codec.spdy"
-    ],
-    "io.netty:netty-codec-socks": [
-      "io.netty.handler.codec.socks",
-      "io.netty.handler.codec.socksx",
-      "io.netty.handler.codec.socksx.v4",
-      "io.netty.handler.codec.socksx.v5"
-    ],
-    "io.netty:netty-common": [
-      "io.netty.util",
-      "io.netty.util.collection",
-      "io.netty.util.concurrent",
-      "io.netty.util.internal",
-      "io.netty.util.internal.logging",
-      "io.netty.util.internal.shaded.org.jctools.queues",
-      "io.netty.util.internal.shaded.org.jctools.queues.atomic",
-      "io.netty.util.internal.shaded.org.jctools.util",
-      "io.netty.util.internal.svm"
-    ],
-    "io.netty:netty-handler": [
-      "io.netty.handler.address",
-      "io.netty.handler.flow",
-      "io.netty.handler.flush",
-      "io.netty.handler.ipfilter",
-      "io.netty.handler.logging",
-      "io.netty.handler.pcap",
-      "io.netty.handler.ssl",
-      "io.netty.handler.ssl.ocsp",
-      "io.netty.handler.ssl.util",
-      "io.netty.handler.stream",
-      "io.netty.handler.timeout",
-      "io.netty.handler.traffic"
-    ],
-    "io.netty:netty-handler-proxy": [
-      "io.netty.handler.proxy"
-    ],
-    "io.netty:netty-resolver": [
-      "io.netty.resolver"
-    ],
-    "io.netty:netty-transport": [
-      "io.netty.bootstrap",
-      "io.netty.channel",
-      "io.netty.channel.embedded",
-      "io.netty.channel.group",
-      "io.netty.channel.internal",
-      "io.netty.channel.local",
-      "io.netty.channel.nio",
-      "io.netty.channel.oio",
-      "io.netty.channel.pool",
-      "io.netty.channel.socket",
-      "io.netty.channel.socket.nio",
-      "io.netty.channel.socket.oio"
-    ],
-    "io.netty:netty-transport-classes-epoll": [
-      "io.netty.channel.epoll"
-    ],
-    "io.netty:netty-transport-classes-kqueue": [
-      "io.netty.channel.kqueue"
-    ],
-    "io.netty:netty-transport-native-unix-common": [
-      "io.netty.channel.unix"
-    ],
-    "io.opentelemetry:opentelemetry-api": [
-      "io.opentelemetry.api",
-      "io.opentelemetry.api.baggage",
-      "io.opentelemetry.api.baggage.propagation",
-      "io.opentelemetry.api.common",
-      "io.opentelemetry.api.internal",
-      "io.opentelemetry.api.metrics",
-      "io.opentelemetry.api.trace",
-      "io.opentelemetry.api.trace.propagation",
-      "io.opentelemetry.api.trace.propagation.internal"
-    ],
-    "io.opentelemetry:opentelemetry-context": [
-      "io.opentelemetry.context",
-      "io.opentelemetry.context.internal.shaded",
-      "io.opentelemetry.context.propagation"
-    ],
-    "io.opentelemetry:opentelemetry-exporter-logging": [
-      "io.opentelemetry.exporter.logging"
-    ],
-    "io.opentelemetry:opentelemetry-sdk": [
-      "io.opentelemetry.sdk"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-common": [
-      "io.opentelemetry.sdk.common",
-      "io.opentelemetry.sdk.common.export",
-      "io.opentelemetry.sdk.internal",
-      "io.opentelemetry.sdk.resources"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-common:jar:sources": [
-      "io.opentelemetry.sdk.internal"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure": [
-      "io.opentelemetry.sdk.autoconfigure"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi": [
-      "io.opentelemetry.sdk.autoconfigure.spi",
-      "io.opentelemetry.sdk.autoconfigure.spi.metrics",
-      "io.opentelemetry.sdk.autoconfigure.spi.traces"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-logs": [
-      "io.opentelemetry.sdk.logs",
-      "io.opentelemetry.sdk.logs.data",
-      "io.opentelemetry.sdk.logs.export"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-metrics": [
-      "io.opentelemetry.sdk.metrics",
-      "io.opentelemetry.sdk.metrics.data",
-      "io.opentelemetry.sdk.metrics.export",
-      "io.opentelemetry.sdk.metrics.internal",
-      "io.opentelemetry.sdk.metrics.internal.aggregator",
-      "io.opentelemetry.sdk.metrics.internal.concurrent",
-      "io.opentelemetry.sdk.metrics.internal.data",
-      "io.opentelemetry.sdk.metrics.internal.data.exponentialhistogram",
-      "io.opentelemetry.sdk.metrics.internal.debug",
-      "io.opentelemetry.sdk.metrics.internal.descriptor",
-      "io.opentelemetry.sdk.metrics.internal.exemplar",
-      "io.opentelemetry.sdk.metrics.internal.export",
-      "io.opentelemetry.sdk.metrics.internal.instrument",
-      "io.opentelemetry.sdk.metrics.internal.state",
-      "io.opentelemetry.sdk.metrics.internal.view"
-    ],
-    "io.opentelemetry:opentelemetry-sdk-trace": [
-      "io.opentelemetry.internal.shaded.jctools.queues",
-      "io.opentelemetry.internal.shaded.jctools.util",
-      "io.opentelemetry.sdk.trace",
-      "io.opentelemetry.sdk.trace.data",
-      "io.opentelemetry.sdk.trace.export",
-      "io.opentelemetry.sdk.trace.internal",
-      "io.opentelemetry.sdk.trace.internal.data",
-      "io.opentelemetry.sdk.trace.samplers"
-    ],
-    "io.opentelemetry:opentelemetry-semconv": [
-      "io.opentelemetry.semconv.resource.attributes",
-      "io.opentelemetry.semconv.trace.attributes"
-    ],
-    "io.ous:jtoml": [
-      "io.ous.jtoml",
-      "io.ous.jtoml.impl"
-    ],
-    "net.bytebuddy:byte-buddy": [
-      "net.bytebuddy",
-      "net.bytebuddy.agent.builder",
-      "net.bytebuddy.asm",
-      "net.bytebuddy.build",
-      "net.bytebuddy.description",
-      "net.bytebuddy.description.annotation",
-      "net.bytebuddy.description.enumeration",
-      "net.bytebuddy.description.field",
-      "net.bytebuddy.description.method",
-      "net.bytebuddy.description.modifier",
-      "net.bytebuddy.description.type",
-      "net.bytebuddy.dynamic",
-      "net.bytebuddy.dynamic.loading",
-      "net.bytebuddy.dynamic.scaffold",
-      "net.bytebuddy.dynamic.scaffold.inline",
-      "net.bytebuddy.dynamic.scaffold.subclass",
-      "net.bytebuddy.implementation",
-      "net.bytebuddy.implementation.attribute",
-      "net.bytebuddy.implementation.auxiliary",
-      "net.bytebuddy.implementation.bind",
-      "net.bytebuddy.implementation.bind.annotation",
-      "net.bytebuddy.implementation.bytecode",
-      "net.bytebuddy.implementation.bytecode.assign",
-      "net.bytebuddy.implementation.bytecode.assign.primitive",
-      "net.bytebuddy.implementation.bytecode.assign.reference",
-      "net.bytebuddy.implementation.bytecode.collection",
-      "net.bytebuddy.implementation.bytecode.constant",
-      "net.bytebuddy.implementation.bytecode.member",
-      "net.bytebuddy.jar.asm",
-      "net.bytebuddy.jar.asm.commons",
-      "net.bytebuddy.jar.asm.signature",
-      "net.bytebuddy.matcher",
-      "net.bytebuddy.pool",
-      "net.bytebuddy.utility",
-      "net.bytebuddy.utility.dispatcher",
-      "net.bytebuddy.utility.nullability",
-      "net.bytebuddy.utility.privilege",
-      "net.bytebuddy.utility.visitor"
-    ],
-    "net.bytebuddy:byte-buddy:jar:sources": [
-      "net.bytebuddy.build"
-    ],
-    "org.apache.commons:commons-exec": [
-      "org.apache.commons.exec",
-      "org.apache.commons.exec.environment",
-      "org.apache.commons.exec.launcher",
-      "org.apache.commons.exec.util"
-    ],
-    "org.asynchttpclient:async-http-client": [
-      "org.asynchttpclient",
-      "org.asynchttpclient.channel",
-      "org.asynchttpclient.config",
-      "org.asynchttpclient.cookie",
-      "org.asynchttpclient.exception",
-      "org.asynchttpclient.filter",
-      "org.asynchttpclient.handler",
-      "org.asynchttpclient.handler.resumable",
-      "org.asynchttpclient.netty",
-      "org.asynchttpclient.netty.channel",
-      "org.asynchttpclient.netty.future",
-      "org.asynchttpclient.netty.handler",
-      "org.asynchttpclient.netty.handler.intercept",
-      "org.asynchttpclient.netty.request",
-      "org.asynchttpclient.netty.request.body",
-      "org.asynchttpclient.netty.ssl",
-      "org.asynchttpclient.netty.timeout",
-      "org.asynchttpclient.netty.ws",
-      "org.asynchttpclient.ntlm",
-      "org.asynchttpclient.oauth",
-      "org.asynchttpclient.proxy",
-      "org.asynchttpclient.request.body",
-      "org.asynchttpclient.request.body.generator",
-      "org.asynchttpclient.request.body.multipart",
-      "org.asynchttpclient.request.body.multipart.part",
-      "org.asynchttpclient.resolver",
-      "org.asynchttpclient.spnego",
-      "org.asynchttpclient.uri",
-      "org.asynchttpclient.util",
-      "org.asynchttpclient.webdav",
-      "org.asynchttpclient.ws"
-    ],
-    "org.asynchttpclient:async-http-client-netty-utils": [
-      "org.asynchttpclient.netty.util"
-    ],
-    "org.checkerframework:checker-qual": [
-      "org.checkerframework.checker.builder.qual",
-      "org.checkerframework.checker.calledmethods.qual",
-      "org.checkerframework.checker.compilermsgs.qual",
-      "org.checkerframework.checker.fenum.qual",
-      "org.checkerframework.checker.formatter.qual",
-      "org.checkerframework.checker.guieffect.qual",
-      "org.checkerframework.checker.i18n.qual",
-      "org.checkerframework.checker.i18nformatter.qual",
-      "org.checkerframework.checker.index.qual",
-      "org.checkerframework.checker.initialization.qual",
-      "org.checkerframework.checker.interning.qual",
-      "org.checkerframework.checker.lock.qual",
-      "org.checkerframework.checker.nullness.qual",
-      "org.checkerframework.checker.optional.qual",
-      "org.checkerframework.checker.propkey.qual",
-      "org.checkerframework.checker.regex.qual",
-      "org.checkerframework.checker.signature.qual",
-      "org.checkerframework.checker.signedness.qual",
-      "org.checkerframework.checker.tainting.qual",
-      "org.checkerframework.checker.units.qual",
-      "org.checkerframework.common.aliasing.qual",
-      "org.checkerframework.common.initializedfields.qual",
-      "org.checkerframework.common.reflection.qual",
-      "org.checkerframework.common.returnsreceiver.qual",
-      "org.checkerframework.common.subtyping.qual",
-      "org.checkerframework.common.util.report.qual",
-      "org.checkerframework.common.value.qual",
-      "org.checkerframework.dataflow.qual",
-      "org.checkerframework.framework.qual"
-    ],
-    "org.reactivestreams:reactive-streams": [
-      "org.reactivestreams"
-    ],
-    "org.seleniumhq.selenium:selenium-api": [
-      "org.openqa.selenium",
-      "org.openqa.selenium.html5",
-      "org.openqa.selenium.interactions",
-      "org.openqa.selenium.internal",
-      "org.openqa.selenium.logging",
-      "org.openqa.selenium.logging.profiler",
-      "org.openqa.selenium.mobile",
-      "org.openqa.selenium.net",
-      "org.openqa.selenium.print",
-      "org.openqa.selenium.virtualauthenticator"
-    ],
-    "org.seleniumhq.selenium:selenium-chrome-driver": [
-      "org.openqa.selenium.chrome"
-    ],
-    "org.seleniumhq.selenium:selenium-chromium-driver": [
-      "org.openqa.selenium.chromium"
-    ],
-    "org.seleniumhq.selenium:selenium-devtools-v102": [
-      "org.openqa.selenium.devtools.v102",
-      "org.openqa.selenium.devtools.v102.accessibility",
-      "org.openqa.selenium.devtools.v102.accessibility.model",
-      "org.openqa.selenium.devtools.v102.animation",
-      "org.openqa.selenium.devtools.v102.animation.model",
-      "org.openqa.selenium.devtools.v102.audits",
-      "org.openqa.selenium.devtools.v102.audits.model",
-      "org.openqa.selenium.devtools.v102.backgroundservice",
-      "org.openqa.selenium.devtools.v102.backgroundservice.model",
-      "org.openqa.selenium.devtools.v102.browser",
-      "org.openqa.selenium.devtools.v102.browser.model",
-      "org.openqa.selenium.devtools.v102.cachestorage",
-      "org.openqa.selenium.devtools.v102.cachestorage.model",
-      "org.openqa.selenium.devtools.v102.cast",
-      "org.openqa.selenium.devtools.v102.cast.model",
-      "org.openqa.selenium.devtools.v102.console",
-      "org.openqa.selenium.devtools.v102.console.model",
-      "org.openqa.selenium.devtools.v102.css",
-      "org.openqa.selenium.devtools.v102.css.model",
-      "org.openqa.selenium.devtools.v102.database",
-      "org.openqa.selenium.devtools.v102.database.model",
-      "org.openqa.selenium.devtools.v102.debugger",
-      "org.openqa.selenium.devtools.v102.debugger.model",
-      "org.openqa.selenium.devtools.v102.deviceorientation",
-      "org.openqa.selenium.devtools.v102.dom",
-      "org.openqa.selenium.devtools.v102.dom.model",
-      "org.openqa.selenium.devtools.v102.domdebugger",
-      "org.openqa.selenium.devtools.v102.domdebugger.model",
-      "org.openqa.selenium.devtools.v102.domsnapshot",
-      "org.openqa.selenium.devtools.v102.domsnapshot.model",
-      "org.openqa.selenium.devtools.v102.domstorage",
-      "org.openqa.selenium.devtools.v102.domstorage.model",
-      "org.openqa.selenium.devtools.v102.emulation",
-      "org.openqa.selenium.devtools.v102.emulation.model",
-      "org.openqa.selenium.devtools.v102.eventbreakpoints",
-      "org.openqa.selenium.devtools.v102.fetch",
-      "org.openqa.selenium.devtools.v102.fetch.model",
-      "org.openqa.selenium.devtools.v102.headlessexperimental",
-      "org.openqa.selenium.devtools.v102.headlessexperimental.model",
-      "org.openqa.selenium.devtools.v102.heapprofiler",
-      "org.openqa.selenium.devtools.v102.heapprofiler.model",
-      "org.openqa.selenium.devtools.v102.indexeddb",
-      "org.openqa.selenium.devtools.v102.indexeddb.model",
-      "org.openqa.selenium.devtools.v102.input",
-      "org.openqa.selenium.devtools.v102.input.model",
-      "org.openqa.selenium.devtools.v102.inspector",
-      "org.openqa.selenium.devtools.v102.io",
-      "org.openqa.selenium.devtools.v102.io.model",
-      "org.openqa.selenium.devtools.v102.layertree",
-      "org.openqa.selenium.devtools.v102.layertree.model",
-      "org.openqa.selenium.devtools.v102.log",
-      "org.openqa.selenium.devtools.v102.log.model",
-      "org.openqa.selenium.devtools.v102.media",
-      "org.openqa.selenium.devtools.v102.media.model",
-      "org.openqa.selenium.devtools.v102.memory",
-      "org.openqa.selenium.devtools.v102.memory.model",
-      "org.openqa.selenium.devtools.v102.network",
-      "org.openqa.selenium.devtools.v102.network.model",
-      "org.openqa.selenium.devtools.v102.overlay",
-      "org.openqa.selenium.devtools.v102.overlay.model",
-      "org.openqa.selenium.devtools.v102.page",
-      "org.openqa.selenium.devtools.v102.page.model",
-      "org.openqa.selenium.devtools.v102.performance",
-      "org.openqa.selenium.devtools.v102.performance.model",
-      "org.openqa.selenium.devtools.v102.performancetimeline",
-      "org.openqa.selenium.devtools.v102.performancetimeline.model",
-      "org.openqa.selenium.devtools.v102.profiler",
-      "org.openqa.selenium.devtools.v102.profiler.model",
-      "org.openqa.selenium.devtools.v102.runtime",
-      "org.openqa.selenium.devtools.v102.runtime.model",
-      "org.openqa.selenium.devtools.v102.schema",
-      "org.openqa.selenium.devtools.v102.schema.model",
-      "org.openqa.selenium.devtools.v102.security",
-      "org.openqa.selenium.devtools.v102.security.model",
-      "org.openqa.selenium.devtools.v102.serviceworker",
-      "org.openqa.selenium.devtools.v102.serviceworker.model",
-      "org.openqa.selenium.devtools.v102.storage",
-      "org.openqa.selenium.devtools.v102.storage.model",
-      "org.openqa.selenium.devtools.v102.systeminfo",
-      "org.openqa.selenium.devtools.v102.systeminfo.model",
-      "org.openqa.selenium.devtools.v102.target",
-      "org.openqa.selenium.devtools.v102.target.model",
-      "org.openqa.selenium.devtools.v102.tethering",
-      "org.openqa.selenium.devtools.v102.tethering.model",
-      "org.openqa.selenium.devtools.v102.tracing",
-      "org.openqa.selenium.devtools.v102.tracing.model",
-      "org.openqa.selenium.devtools.v102.webaudio",
-      "org.openqa.selenium.devtools.v102.webaudio.model",
-      "org.openqa.selenium.devtools.v102.webauthn",
-      "org.openqa.selenium.devtools.v102.webauthn.model"
-    ],
-    "org.seleniumhq.selenium:selenium-devtools-v103": [
-      "org.openqa.selenium.devtools.v103",
-      "org.openqa.selenium.devtools.v103.accessibility",
-      "org.openqa.selenium.devtools.v103.accessibility.model",
-      "org.openqa.selenium.devtools.v103.animation",
-      "org.openqa.selenium.devtools.v103.animation.model",
-      "org.openqa.selenium.devtools.v103.audits",
-      "org.openqa.selenium.devtools.v103.audits.model",
-      "org.openqa.selenium.devtools.v103.backgroundservice",
-      "org.openqa.selenium.devtools.v103.backgroundservice.model",
-      "org.openqa.selenium.devtools.v103.browser",
-      "org.openqa.selenium.devtools.v103.browser.model",
-      "org.openqa.selenium.devtools.v103.cachestorage",
-      "org.openqa.selenium.devtools.v103.cachestorage.model",
-      "org.openqa.selenium.devtools.v103.cast",
-      "org.openqa.selenium.devtools.v103.cast.model",
-      "org.openqa.selenium.devtools.v103.console",
-      "org.openqa.selenium.devtools.v103.console.model",
-      "org.openqa.selenium.devtools.v103.css",
-      "org.openqa.selenium.devtools.v103.css.model",
-      "org.openqa.selenium.devtools.v103.database",
-      "org.openqa.selenium.devtools.v103.database.model",
-      "org.openqa.selenium.devtools.v103.debugger",
-      "org.openqa.selenium.devtools.v103.debugger.model",
-      "org.openqa.selenium.devtools.v103.deviceorientation",
-      "org.openqa.selenium.devtools.v103.dom",
-      "org.openqa.selenium.devtools.v103.dom.model",
-      "org.openqa.selenium.devtools.v103.domdebugger",
-      "org.openqa.selenium.devtools.v103.domdebugger.model",
-      "org.openqa.selenium.devtools.v103.domsnapshot",
-      "org.openqa.selenium.devtools.v103.domsnapshot.model",
-      "org.openqa.selenium.devtools.v103.domstorage",
-      "org.openqa.selenium.devtools.v103.domstorage.model",
-      "org.openqa.selenium.devtools.v103.emulation",
-      "org.openqa.selenium.devtools.v103.emulation.model",
-      "org.openqa.selenium.devtools.v103.eventbreakpoints",
-      "org.openqa.selenium.devtools.v103.fetch",
-      "org.openqa.selenium.devtools.v103.fetch.model",
-      "org.openqa.selenium.devtools.v103.headlessexperimental",
-      "org.openqa.selenium.devtools.v103.headlessexperimental.model",
-      "org.openqa.selenium.devtools.v103.heapprofiler",
-      "org.openqa.selenium.devtools.v103.heapprofiler.model",
-      "org.openqa.selenium.devtools.v103.indexeddb",
-      "org.openqa.selenium.devtools.v103.indexeddb.model",
-      "org.openqa.selenium.devtools.v103.input",
-      "org.openqa.selenium.devtools.v103.input.model",
-      "org.openqa.selenium.devtools.v103.inspector",
-      "org.openqa.selenium.devtools.v103.io",
-      "org.openqa.selenium.devtools.v103.io.model",
-      "org.openqa.selenium.devtools.v103.layertree",
-      "org.openqa.selenium.devtools.v103.layertree.model",
-      "org.openqa.selenium.devtools.v103.log",
-      "org.openqa.selenium.devtools.v103.log.model",
-      "org.openqa.selenium.devtools.v103.media",
-      "org.openqa.selenium.devtools.v103.media.model",
-      "org.openqa.selenium.devtools.v103.memory",
-      "org.openqa.selenium.devtools.v103.memory.model",
-      "org.openqa.selenium.devtools.v103.network",
-      "org.openqa.selenium.devtools.v103.network.model",
-      "org.openqa.selenium.devtools.v103.overlay",
-      "org.openqa.selenium.devtools.v103.overlay.model",
-      "org.openqa.selenium.devtools.v103.page",
-      "org.openqa.selenium.devtools.v103.page.model",
-      "org.openqa.selenium.devtools.v103.performance",
-      "org.openqa.selenium.devtools.v103.performance.model",
-      "org.openqa.selenium.devtools.v103.performancetimeline",
-      "org.openqa.selenium.devtools.v103.performancetimeline.model",
-      "org.openqa.selenium.devtools.v103.profiler",
-      "org.openqa.selenium.devtools.v103.profiler.model",
-      "org.openqa.selenium.devtools.v103.runtime",
-      "org.openqa.selenium.devtools.v103.runtime.model",
-      "org.openqa.selenium.devtools.v103.schema",
-      "org.openqa.selenium.devtools.v103.schema.model",
-      "org.openqa.selenium.devtools.v103.security",
-      "org.openqa.selenium.devtools.v103.security.model",
-      "org.openqa.selenium.devtools.v103.serviceworker",
-      "org.openqa.selenium.devtools.v103.serviceworker.model",
-      "org.openqa.selenium.devtools.v103.storage",
-      "org.openqa.selenium.devtools.v103.storage.model",
-      "org.openqa.selenium.devtools.v103.systeminfo",
-      "org.openqa.selenium.devtools.v103.systeminfo.model",
-      "org.openqa.selenium.devtools.v103.target",
-      "org.openqa.selenium.devtools.v103.target.model",
-      "org.openqa.selenium.devtools.v103.tethering",
-      "org.openqa.selenium.devtools.v103.tethering.model",
-      "org.openqa.selenium.devtools.v103.tracing",
-      "org.openqa.selenium.devtools.v103.tracing.model",
-      "org.openqa.selenium.devtools.v103.webaudio",
-      "org.openqa.selenium.devtools.v103.webaudio.model",
-      "org.openqa.selenium.devtools.v103.webauthn",
-      "org.openqa.selenium.devtools.v103.webauthn.model"
-    ],
-    "org.seleniumhq.selenium:selenium-devtools-v104": [
-      "org.openqa.selenium.devtools.v104",
-      "org.openqa.selenium.devtools.v104.accessibility",
-      "org.openqa.selenium.devtools.v104.accessibility.model",
-      "org.openqa.selenium.devtools.v104.animation",
-      "org.openqa.selenium.devtools.v104.animation.model",
-      "org.openqa.selenium.devtools.v104.audits",
-      "org.openqa.selenium.devtools.v104.audits.model",
-      "org.openqa.selenium.devtools.v104.backgroundservice",
-      "org.openqa.selenium.devtools.v104.backgroundservice.model",
-      "org.openqa.selenium.devtools.v104.browser",
-      "org.openqa.selenium.devtools.v104.browser.model",
-      "org.openqa.selenium.devtools.v104.cachestorage",
-      "org.openqa.selenium.devtools.v104.cachestorage.model",
-      "org.openqa.selenium.devtools.v104.cast",
-      "org.openqa.selenium.devtools.v104.cast.model",
-      "org.openqa.selenium.devtools.v104.console",
-      "org.openqa.selenium.devtools.v104.console.model",
-      "org.openqa.selenium.devtools.v104.css",
-      "org.openqa.selenium.devtools.v104.css.model",
-      "org.openqa.selenium.devtools.v104.database",
-      "org.openqa.selenium.devtools.v104.database.model",
-      "org.openqa.selenium.devtools.v104.debugger",
-      "org.openqa.selenium.devtools.v104.debugger.model",
-      "org.openqa.selenium.devtools.v104.deviceorientation",
-      "org.openqa.selenium.devtools.v104.dom",
-      "org.openqa.selenium.devtools.v104.dom.model",
-      "org.openqa.selenium.devtools.v104.domdebugger",
-      "org.openqa.selenium.devtools.v104.domdebugger.model",
-      "org.openqa.selenium.devtools.v104.domsnapshot",
-      "org.openqa.selenium.devtools.v104.domsnapshot.model",
-      "org.openqa.selenium.devtools.v104.domstorage",
-      "org.openqa.selenium.devtools.v104.domstorage.model",
-      "org.openqa.selenium.devtools.v104.emulation",
-      "org.openqa.selenium.devtools.v104.emulation.model",
-      "org.openqa.selenium.devtools.v104.eventbreakpoints",
-      "org.openqa.selenium.devtools.v104.fetch",
-      "org.openqa.selenium.devtools.v104.fetch.model",
-      "org.openqa.selenium.devtools.v104.headlessexperimental",
-      "org.openqa.selenium.devtools.v104.headlessexperimental.model",
-      "org.openqa.selenium.devtools.v104.heapprofiler",
-      "org.openqa.selenium.devtools.v104.heapprofiler.model",
-      "org.openqa.selenium.devtools.v104.indexeddb",
-      "org.openqa.selenium.devtools.v104.indexeddb.model",
-      "org.openqa.selenium.devtools.v104.input",
-      "org.openqa.selenium.devtools.v104.input.model",
-      "org.openqa.selenium.devtools.v104.inspector",
-      "org.openqa.selenium.devtools.v104.io",
-      "org.openqa.selenium.devtools.v104.io.model",
-      "org.openqa.selenium.devtools.v104.layertree",
-      "org.openqa.selenium.devtools.v104.layertree.model",
-      "org.openqa.selenium.devtools.v104.log",
-      "org.openqa.selenium.devtools.v104.log.model",
-      "org.openqa.selenium.devtools.v104.media",
-      "org.openqa.selenium.devtools.v104.media.model",
-      "org.openqa.selenium.devtools.v104.memory",
-      "org.openqa.selenium.devtools.v104.memory.model",
-      "org.openqa.selenium.devtools.v104.network",
-      "org.openqa.selenium.devtools.v104.network.model",
-      "org.openqa.selenium.devtools.v104.overlay",
-      "org.openqa.selenium.devtools.v104.overlay.model",
-      "org.openqa.selenium.devtools.v104.page",
-      "org.openqa.selenium.devtools.v104.page.model",
-      "org.openqa.selenium.devtools.v104.performance",
-      "org.openqa.selenium.devtools.v104.performance.model",
-      "org.openqa.selenium.devtools.v104.performancetimeline",
-      "org.openqa.selenium.devtools.v104.performancetimeline.model",
-      "org.openqa.selenium.devtools.v104.profiler",
-      "org.openqa.selenium.devtools.v104.profiler.model",
-      "org.openqa.selenium.devtools.v104.runtime",
-      "org.openqa.selenium.devtools.v104.runtime.model",
-      "org.openqa.selenium.devtools.v104.schema",
-      "org.openqa.selenium.devtools.v104.schema.model",
-      "org.openqa.selenium.devtools.v104.security",
-      "org.openqa.selenium.devtools.v104.security.model",
-      "org.openqa.selenium.devtools.v104.serviceworker",
-      "org.openqa.selenium.devtools.v104.serviceworker.model",
-      "org.openqa.selenium.devtools.v104.storage",
-      "org.openqa.selenium.devtools.v104.storage.model",
-      "org.openqa.selenium.devtools.v104.systeminfo",
-      "org.openqa.selenium.devtools.v104.systeminfo.model",
-      "org.openqa.selenium.devtools.v104.target",
-      "org.openqa.selenium.devtools.v104.target.model",
-      "org.openqa.selenium.devtools.v104.tethering",
-      "org.openqa.selenium.devtools.v104.tethering.model",
-      "org.openqa.selenium.devtools.v104.tracing",
-      "org.openqa.selenium.devtools.v104.tracing.model",
-      "org.openqa.selenium.devtools.v104.webaudio",
-      "org.openqa.selenium.devtools.v104.webaudio.model",
-      "org.openqa.selenium.devtools.v104.webauthn",
-      "org.openqa.selenium.devtools.v104.webauthn.model"
-    ],
-    "org.seleniumhq.selenium:selenium-devtools-v85": [
-      "org.openqa.selenium.devtools.v85",
-      "org.openqa.selenium.devtools.v85.accessibility",
-      "org.openqa.selenium.devtools.v85.accessibility.model",
-      "org.openqa.selenium.devtools.v85.animation",
-      "org.openqa.selenium.devtools.v85.animation.model",
-      "org.openqa.selenium.devtools.v85.applicationcache",
-      "org.openqa.selenium.devtools.v85.applicationcache.model",
-      "org.openqa.selenium.devtools.v85.audits",
-      "org.openqa.selenium.devtools.v85.audits.model",
-      "org.openqa.selenium.devtools.v85.backgroundservice",
-      "org.openqa.selenium.devtools.v85.backgroundservice.model",
-      "org.openqa.selenium.devtools.v85.browser",
-      "org.openqa.selenium.devtools.v85.browser.model",
-      "org.openqa.selenium.devtools.v85.cachestorage",
-      "org.openqa.selenium.devtools.v85.cachestorage.model",
-      "org.openqa.selenium.devtools.v85.cast",
-      "org.openqa.selenium.devtools.v85.cast.model",
-      "org.openqa.selenium.devtools.v85.console",
-      "org.openqa.selenium.devtools.v85.console.model",
-      "org.openqa.selenium.devtools.v85.css",
-      "org.openqa.selenium.devtools.v85.css.model",
-      "org.openqa.selenium.devtools.v85.database",
-      "org.openqa.selenium.devtools.v85.database.model",
-      "org.openqa.selenium.devtools.v85.debugger",
-      "org.openqa.selenium.devtools.v85.debugger.model",
-      "org.openqa.selenium.devtools.v85.deviceorientation",
-      "org.openqa.selenium.devtools.v85.dom",
-      "org.openqa.selenium.devtools.v85.dom.model",
-      "org.openqa.selenium.devtools.v85.domdebugger",
-      "org.openqa.selenium.devtools.v85.domdebugger.model",
-      "org.openqa.selenium.devtools.v85.domsnapshot",
-      "org.openqa.selenium.devtools.v85.domsnapshot.model",
-      "org.openqa.selenium.devtools.v85.domstorage",
-      "org.openqa.selenium.devtools.v85.domstorage.model",
-      "org.openqa.selenium.devtools.v85.emulation",
-      "org.openqa.selenium.devtools.v85.emulation.model",
-      "org.openqa.selenium.devtools.v85.fetch",
-      "org.openqa.selenium.devtools.v85.fetch.model",
-      "org.openqa.selenium.devtools.v85.headlessexperimental",
-      "org.openqa.selenium.devtools.v85.headlessexperimental.model",
-      "org.openqa.selenium.devtools.v85.heapprofiler",
-      "org.openqa.selenium.devtools.v85.heapprofiler.model",
-      "org.openqa.selenium.devtools.v85.indexeddb",
-      "org.openqa.selenium.devtools.v85.indexeddb.model",
-      "org.openqa.selenium.devtools.v85.input",
-      "org.openqa.selenium.devtools.v85.input.model",
-      "org.openqa.selenium.devtools.v85.inspector",
-      "org.openqa.selenium.devtools.v85.io",
-      "org.openqa.selenium.devtools.v85.io.model",
-      "org.openqa.selenium.devtools.v85.layertree",
-      "org.openqa.selenium.devtools.v85.layertree.model",
-      "org.openqa.selenium.devtools.v85.log",
-      "org.openqa.selenium.devtools.v85.log.model",
-      "org.openqa.selenium.devtools.v85.media",
-      "org.openqa.selenium.devtools.v85.media.model",
-      "org.openqa.selenium.devtools.v85.memory",
-      "org.openqa.selenium.devtools.v85.memory.model",
-      "org.openqa.selenium.devtools.v85.network",
-      "org.openqa.selenium.devtools.v85.network.model",
-      "org.openqa.selenium.devtools.v85.overlay",
-      "org.openqa.selenium.devtools.v85.overlay.model",
-      "org.openqa.selenium.devtools.v85.page",
-      "org.openqa.selenium.devtools.v85.page.model",
-      "org.openqa.selenium.devtools.v85.performance",
-      "org.openqa.selenium.devtools.v85.performance.model",
-      "org.openqa.selenium.devtools.v85.profiler",
-      "org.openqa.selenium.devtools.v85.profiler.model",
-      "org.openqa.selenium.devtools.v85.runtime",
-      "org.openqa.selenium.devtools.v85.runtime.model",
-      "org.openqa.selenium.devtools.v85.schema",
-      "org.openqa.selenium.devtools.v85.schema.model",
-      "org.openqa.selenium.devtools.v85.security",
-      "org.openqa.selenium.devtools.v85.security.model",
-      "org.openqa.selenium.devtools.v85.serviceworker",
-      "org.openqa.selenium.devtools.v85.serviceworker.model",
-      "org.openqa.selenium.devtools.v85.storage",
-      "org.openqa.selenium.devtools.v85.storage.model",
-      "org.openqa.selenium.devtools.v85.systeminfo",
-      "org.openqa.selenium.devtools.v85.systeminfo.model",
-      "org.openqa.selenium.devtools.v85.target",
-      "org.openqa.selenium.devtools.v85.target.model",
-      "org.openqa.selenium.devtools.v85.tethering",
-      "org.openqa.selenium.devtools.v85.tethering.model",
-      "org.openqa.selenium.devtools.v85.tracing",
-      "org.openqa.selenium.devtools.v85.tracing.model",
-      "org.openqa.selenium.devtools.v85.webaudio",
-      "org.openqa.selenium.devtools.v85.webaudio.model",
-      "org.openqa.selenium.devtools.v85.webauthn",
-      "org.openqa.selenium.devtools.v85.webauthn.model"
-    ],
-    "org.seleniumhq.selenium:selenium-edge-driver": [
-      "org.openqa.selenium.edge"
-    ],
-    "org.seleniumhq.selenium:selenium-firefox-driver": [
-      "org.openqa.selenium.bidi",
-      "org.openqa.selenium.bidi.log",
-      "org.openqa.selenium.firefox"
-    ],
-    "org.seleniumhq.selenium:selenium-http": [
-      "org.openqa.selenium.remote.http"
-    ],
-    "org.seleniumhq.selenium:selenium-ie-driver": [
-      "org.openqa.selenium.ie"
-    ],
-    "org.seleniumhq.selenium:selenium-json": [
-      "org.openqa.selenium.json"
-    ],
-    "org.seleniumhq.selenium:selenium-opera-driver": [
-      "org.openqa.selenium.opera"
-    ],
-    "org.seleniumhq.selenium:selenium-remote-driver": [
-      "org.openqa.selenium.concurrent",
-      "org.openqa.selenium.devtools",
-      "org.openqa.selenium.devtools.events",
-      "org.openqa.selenium.devtools.idealized",
-      "org.openqa.selenium.devtools.idealized.browser.model",
-      "org.openqa.selenium.devtools.idealized.log",
-      "org.openqa.selenium.devtools.idealized.log.model",
-      "org.openqa.selenium.devtools.idealized.runtime.model",
-      "org.openqa.selenium.devtools.idealized.target",
-      "org.openqa.selenium.devtools.idealized.target.model",
-      "org.openqa.selenium.devtools.noop",
-      "org.openqa.selenium.grid.config",
-      "org.openqa.selenium.io",
-      "org.openqa.selenium.os",
-      "org.openqa.selenium.remote",
-      "org.openqa.selenium.remote.codec",
-      "org.openqa.selenium.remote.codec.jwp",
-      "org.openqa.selenium.remote.codec.w3c",
-      "org.openqa.selenium.remote.html5",
-      "org.openqa.selenium.remote.http.netty",
-      "org.openqa.selenium.remote.internal",
-      "org.openqa.selenium.remote.locators",
-      "org.openqa.selenium.remote.mobile",
-      "org.openqa.selenium.remote.service",
-      "org.openqa.selenium.remote.session",
-      "org.openqa.selenium.remote.tracing",
-      "org.openqa.selenium.remote.tracing.empty",
-      "org.openqa.selenium.remote.tracing.opentelemetry"
-    ],
-    "org.seleniumhq.selenium:selenium-safari-driver": [
-      "org.openqa.selenium.safari"
-    ],
-    "org.seleniumhq.selenium:selenium-support": [
-      "org.openqa.selenium.support",
-      "org.openqa.selenium.support.decorators",
-      "org.openqa.selenium.support.events",
-      "org.openqa.selenium.support.locators",
-      "org.openqa.selenium.support.pagefactory",
-      "org.openqa.selenium.support.pagefactory.internal",
-      "org.openqa.selenium.support.ui"
-    ],
-    "org.slf4j:slf4j-api": [
-      "org.slf4j",
-      "org.slf4j.event",
-      "org.slf4j.helpers",
-      "org.slf4j.spi"
-    ]
-  },
-  "repositories": {
-    "https://repo1.maven.org/maven2/": [
-      "com.beust:jcommander",
-      "com.beust:jcommander:jar:sources",
-      "com.google.auto.service:auto-service",
-      "com.google.auto.service:auto-service-annotations",
-      "com.google.auto.service:auto-service-annotations:jar:sources",
-      "com.google.auto.service:auto-service:jar:sources",
-      "com.google.auto:auto-common",
-      "com.google.auto:auto-common:jar:sources",
-      "com.google.code.findbugs:jsr305",
-      "com.google.code.findbugs:jsr305:jar:sources",
-      "com.google.code.gson:gson",
-      "com.google.code.gson:gson:jar:sources",
-      "com.google.errorprone:error_prone_annotations",
-      "com.google.errorprone:error_prone_annotations:jar:sources",
-      "com.google.guava:failureaccess",
-      "com.google.guava:failureaccess:jar:sources",
-      "com.google.guava:guava",
-      "com.google.guava:guava:jar:sources",
-      "com.google.guava:listenablefuture",
-      "com.google.j2objc:j2objc-annotations",
-      "com.google.j2objc:j2objc-annotations:jar:sources",
-      "com.google.protobuf:protobuf-java",
-      "com.google.protobuf:protobuf-java-util",
-      "com.google.protobuf:protobuf-java-util:jar:sources",
-      "com.google.protobuf:protobuf-java:jar:sources",
-      "com.sun.activation:jakarta.activation",
-      "com.sun.activation:jakarta.activation:jar:sources",
-      "com.typesafe.netty:netty-reactive-streams",
-      "com.typesafe.netty:netty-reactive-streams:jar:sources",
-      "dev.failsafe:failsafe",
-      "dev.failsafe:failsafe:jar:sources",
-      "io.netty:netty-buffer",
-      "io.netty:netty-buffer:jar:sources",
-      "io.netty:netty-codec",
-      "io.netty:netty-codec-http",
-      "io.netty:netty-codec-http:jar:sources",
-      "io.netty:netty-codec-socks",
-      "io.netty:netty-codec-socks:jar:sources",
-      "io.netty:netty-codec:jar:sources",
-      "io.netty:netty-common",
-      "io.netty:netty-common:jar:sources",
-      "io.netty:netty-handler",
-      "io.netty:netty-handler-proxy",
-      "io.netty:netty-handler-proxy:jar:sources",
-      "io.netty:netty-handler:jar:sources",
-      "io.netty:netty-resolver",
-      "io.netty:netty-resolver:jar:sources",
-      "io.netty:netty-transport",
-      "io.netty:netty-transport-classes-epoll",
-      "io.netty:netty-transport-classes-epoll:jar:sources",
-      "io.netty:netty-transport-classes-kqueue",
-      "io.netty:netty-transport-classes-kqueue:jar:sources",
-      "io.netty:netty-transport-native-epoll",
-      "io.netty:netty-transport-native-epoll:jar:sources",
-      "io.netty:netty-transport-native-kqueue",
-      "io.netty:netty-transport-native-kqueue:jar:sources",
-      "io.netty:netty-transport-native-unix-common",
-      "io.netty:netty-transport-native-unix-common:jar:sources",
-      "io.netty:netty-transport:jar:sources",
-      "io.opentelemetry:opentelemetry-api",
-      "io.opentelemetry:opentelemetry-api:jar:sources",
-      "io.opentelemetry:opentelemetry-context",
-      "io.opentelemetry:opentelemetry-context:jar:sources",
-      "io.opentelemetry:opentelemetry-exporter-logging",
-      "io.opentelemetry:opentelemetry-exporter-logging:jar:sources",
-      "io.opentelemetry:opentelemetry-sdk",
-      "io.opentelemetry:opentelemetry-sdk-common",
-      "io.opentelemetry:opentelemetry-sdk-common:jar:sources",
-      "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure",
-      "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi",
-      "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:jar:sources",
-      "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:jar:sources",
-      "io.opentelemetry:opentelemetry-sdk-logs",
-      "io.opentelemetry:opentelemetry-sdk-logs:jar:sources",
-      "io.opentelemetry:opentelemetry-sdk-metrics",
-      "io.opentelemetry:opentelemetry-sdk-metrics:jar:sources",
-      "io.opentelemetry:opentelemetry-sdk-trace",
-      "io.opentelemetry:opentelemetry-sdk-trace:jar:sources",
-      "io.opentelemetry:opentelemetry-sdk:jar:sources",
-      "io.opentelemetry:opentelemetry-semconv",
-      "io.opentelemetry:opentelemetry-semconv:jar:sources",
-      "io.ous:jtoml",
-      "io.ous:jtoml:jar:sources",
-      "net.bytebuddy:byte-buddy",
-      "net.bytebuddy:byte-buddy:jar:sources",
-      "org.apache.commons:commons-exec",
-      "org.apache.commons:commons-exec:jar:sources",
-      "org.asynchttpclient:async-http-client",
-      "org.asynchttpclient:async-http-client-netty-utils",
-      "org.asynchttpclient:async-http-client-netty-utils:jar:sources",
-      "org.asynchttpclient:async-http-client:jar:sources",
-      "org.checkerframework:checker-qual",
-      "org.checkerframework:checker-qual:jar:sources",
-      "org.reactivestreams:reactive-streams",
-      "org.reactivestreams:reactive-streams:jar:sources",
-      "org.seleniumhq.selenium:selenium-api",
-      "org.seleniumhq.selenium:selenium-api:jar:sources",
-      "org.seleniumhq.selenium:selenium-chrome-driver",
-      "org.seleniumhq.selenium:selenium-chrome-driver:jar:sources",
-      "org.seleniumhq.selenium:selenium-chromium-driver",
-      "org.seleniumhq.selenium:selenium-chromium-driver:jar:sources",
-      "org.seleniumhq.selenium:selenium-devtools-v102",
-      "org.seleniumhq.selenium:selenium-devtools-v102:jar:sources",
-      "org.seleniumhq.selenium:selenium-devtools-v103",
-      "org.seleniumhq.selenium:selenium-devtools-v103:jar:sources",
-      "org.seleniumhq.selenium:selenium-devtools-v104",
-      "org.seleniumhq.selenium:selenium-devtools-v104:jar:sources",
-      "org.seleniumhq.selenium:selenium-devtools-v85",
-      "org.seleniumhq.selenium:selenium-devtools-v85:jar:sources",
-      "org.seleniumhq.selenium:selenium-edge-driver",
-      "org.seleniumhq.selenium:selenium-edge-driver:jar:sources",
-      "org.seleniumhq.selenium:selenium-firefox-driver",
-      "org.seleniumhq.selenium:selenium-firefox-driver:jar:sources",
-      "org.seleniumhq.selenium:selenium-http",
-      "org.seleniumhq.selenium:selenium-http:jar:sources",
-      "org.seleniumhq.selenium:selenium-ie-driver",
-      "org.seleniumhq.selenium:selenium-ie-driver:jar:sources",
-      "org.seleniumhq.selenium:selenium-java",
-      "org.seleniumhq.selenium:selenium-java:jar:sources",
-      "org.seleniumhq.selenium:selenium-json",
-      "org.seleniumhq.selenium:selenium-json:jar:sources",
-      "org.seleniumhq.selenium:selenium-opera-driver",
-      "org.seleniumhq.selenium:selenium-opera-driver:jar:sources",
-      "org.seleniumhq.selenium:selenium-remote-driver",
-      "org.seleniumhq.selenium:selenium-remote-driver:jar:sources",
-      "org.seleniumhq.selenium:selenium-safari-driver",
-      "org.seleniumhq.selenium:selenium-safari-driver:jar:sources",
-      "org.seleniumhq.selenium:selenium-support",
-      "org.seleniumhq.selenium:selenium-support:jar:sources",
-      "org.slf4j:slf4j-api",
-      "org.slf4j:slf4j-api:jar:sources"
-    ]
-  },
-  "services": {
-    "com.google.auto.service:auto-service": {
-      "javax.annotation.processing.Processor": [
-        "com.google.auto.service.processor.AutoServiceProcessor"
-      ]
-    },
-    "com.google.auto.service:auto-service:jar:sources": {
-      "javax.annotation.processing.Processor": [
-        "com.google.auto.service.processor.AutoServiceProcessor"
-      ]
-    },
-    "io.netty:netty-common": {
-      "reactor.blockhound.integration.BlockHoundIntegration": [
-        "io.netty.util.internal.Hidden$NettyBlockHoundIntegration"
-      ]
-    },
-    "io.netty:netty-common:jar:sources": {
-      "reactor.blockhound.integration.BlockHoundIntegration": [
-        "io.netty.util.internal.Hidden$NettyBlockHoundIntegration"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-chrome-driver": {
-      "org.openqa.selenium.WebDriverInfo": [
-        "org.openqa.selenium.chrome.ChromeDriverInfo"
-      ],
-      "org.openqa.selenium.remote.AdditionalHttpCommands": [
-        "org.openqa.selenium.chrome.AddHasCasting",
-        "org.openqa.selenium.chrome.AddHasCdp"
-      ],
-      "org.openqa.selenium.remote.AugmenterProvider": [
-        "org.openqa.selenium.chrome.AddHasCasting",
-        "org.openqa.selenium.chrome.AddHasCdp"
-      ],
-      "org.openqa.selenium.remote.service.DriverService$Builder": [
-        "org.openqa.selenium.chrome.ChromeDriverService$Builder"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-chromium-driver": {
-      "org.openqa.selenium.remote.AdditionalHttpCommands": [
-        "org.openqa.selenium.chromium.AddHasLaunchApp",
-        "org.openqa.selenium.chromium.AddHasNetworkConditions",
-        "org.openqa.selenium.chromium.AddHasPermissions"
-      ],
-      "org.openqa.selenium.remote.AugmenterProvider": [
-        "org.openqa.selenium.chromium.AddHasLaunchApp",
-        "org.openqa.selenium.chromium.AddHasNetworkConditions",
-        "org.openqa.selenium.chromium.AddHasPermissions"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-devtools-v102": {
-      "org.openqa.selenium.devtools.CdpInfo": [
-        "org.openqa.selenium.devtools.v102.V102CdpInfo"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-devtools-v103": {
-      "org.openqa.selenium.devtools.CdpInfo": [
-        "org.openqa.selenium.devtools.v103.V103CdpInfo"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-devtools-v104": {
-      "org.openqa.selenium.devtools.CdpInfo": [
-        "org.openqa.selenium.devtools.v104.V104CdpInfo"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-devtools-v85": {
-      "org.openqa.selenium.devtools.CdpInfo": [
-        "org.openqa.selenium.devtools.v85.V85CdpInfo"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-edge-driver": {
-      "org.openqa.selenium.WebDriverInfo": [
-        "org.openqa.selenium.edge.EdgeDriverInfo"
-      ],
-      "org.openqa.selenium.remote.AdditionalHttpCommands": [
-        "org.openqa.selenium.edge.AddHasCasting",
-        "org.openqa.selenium.edge.AddHasCdp"
-      ],
-      "org.openqa.selenium.remote.AugmenterProvider": [
-        "org.openqa.selenium.edge.AddHasCasting",
-        "org.openqa.selenium.edge.AddHasCdp"
-      ],
-      "org.openqa.selenium.remote.service.DriverService$Builder": [
-        "org.openqa.selenium.edge.EdgeDriverService$Builder"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-firefox-driver": {
-      "org.openqa.selenium.WebDriverInfo": [
-        "org.openqa.selenium.firefox.GeckoDriverInfo"
-      ],
-      "org.openqa.selenium.remote.AdditionalHttpCommands": [
-        "org.openqa.selenium.firefox.AddHasContext",
-        "org.openqa.selenium.firefox.AddHasExtensions",
-        "org.openqa.selenium.firefox.AddHasFullPageScreenshot"
-      ],
-      "org.openqa.selenium.remote.AugmenterProvider": [
-        "org.openqa.selenium.bidi.BiDiProvider",
-        "org.openqa.selenium.firefox.AddHasContext",
-        "org.openqa.selenium.firefox.AddHasExtensions",
-        "org.openqa.selenium.firefox.AddHasFullPageScreenshot"
-      ],
-      "org.openqa.selenium.remote.service.DriverService$Builder": [
-        "org.openqa.selenium.firefox.GeckoDriverService$Builder"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-ie-driver": {
-      "org.openqa.selenium.WebDriverInfo": [
-        "org.openqa.selenium.ie.InternetExplorerDriverInfo"
-      ],
-      "org.openqa.selenium.remote.service.DriverService$Builder": [
-        "org.openqa.selenium.ie.InternetExplorerDriverService$Builder"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-opera-driver": {
-      "org.openqa.selenium.WebDriverInfo": [
-        "org.openqa.selenium.opera.OperaDriverInfo"
-      ],
-      "org.openqa.selenium.remote.service.DriverService$Builder": [
-        "org.openqa.selenium.opera.OperaDriverService$Builder"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-remote-driver": {
-      "org.openqa.selenium.remote.AugmenterProvider": [
-        "org.openqa.selenium.devtools.DevToolsProvider"
-      ],
-      "org.openqa.selenium.remote.http.HttpClient$Factory": [
-        "org.openqa.selenium.remote.http.netty.NettyClient$Factory"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-safari-driver": {
-      "org.openqa.selenium.WebDriverInfo": [
-        "org.openqa.selenium.safari.SafariDriverInfo",
-        "org.openqa.selenium.safari.SafariTechPreviewDriverInfo"
-      ],
-      "org.openqa.selenium.remote.AdditionalHttpCommands": [
-        "org.openqa.selenium.safari.AddHasDebugger",
-        "org.openqa.selenium.safari.AddHasPermissions"
-      ],
-      "org.openqa.selenium.remote.AugmenterProvider": [
-        "org.openqa.selenium.safari.AddHasDebugger",
-        "org.openqa.selenium.safari.AddHasPermissions"
-      ],
-      "org.openqa.selenium.remote.service.DriverService$Builder": [
-        "org.openqa.selenium.safari.SafariDriverService$Builder",
-        "org.openqa.selenium.safari.SafariTechPreviewDriverService$Builder"
-      ]
-    },
-    "org.seleniumhq.selenium:selenium-support": {
-      "org.openqa.selenium.remote.locators.CustomLocator": [
-        "org.openqa.selenium.support.locators.RelativeLocatorServerSide"
-      ]
-    }
-  },
-  "version": "2"
-}
diff --git a/examples/java-export/.bazelversion b/examples/java-export/.bazelversion
index 18bb418..f9c71a5 100644
--- a/examples/java-export/.bazelversion
+++ b/examples/java-export/.bazelversion
@@ -1 +1 @@
-7.5.0
+8.5.1
diff --git a/examples/java-export/MODULE.bazel b/examples/java-export/MODULE.bazel
index 81c1c1b..03215ae 100644
--- a/examples/java-export/MODULE.bazel
+++ b/examples/java-export/MODULE.bazel
@@ -1,8 +1,8 @@
 module(name = "rules_jvm_external_example_java_export")
 
-protobuf_version = "31.1"
+protobuf_version = "33.4"
 
-bazel_dep(name = "protobuf", version = protobuf_version, repo_name = "com_google_protobuf")
+bazel_dep(name = "protobuf", version = protobuf_version)
 bazel_dep(name = "rules_jvm_external", version = "ignored")
 bazel_dep(name = "rules_proto", version = "7.1.0")
 
@@ -18,10 +18,7 @@
         "com.google.protobuf:protobuf-java:4.%s" % protobuf_version,
     ],
     fetch_sources = True,
-    known_contributing_modules = [
-        "bazel_worker_java",
-        "rules_jvm_external_example_java_export",
-    ],
+    known_contributing_modules = ["protobuf"],
     lock_file = "//:maven_install.json",
 )
 use_repo(maven, "maven")
diff --git a/examples/java-export/WORKSPACE b/examples/java-export/WORKSPACE
deleted file mode 100644
index e69de29..0000000
--- a/examples/java-export/WORKSPACE
+++ /dev/null
diff --git a/examples/java-export/WORKSPACE.bzlmod b/examples/java-export/WORKSPACE.bzlmod
deleted file mode 100644
index e69de29..0000000
--- a/examples/java-export/WORKSPACE.bzlmod
+++ /dev/null
diff --git a/examples/java-export/maven_install.json b/examples/java-export/maven_install.json
index 6258a16..0146199 100644
--- a/examples/java-export/maven_install.json
+++ b/examples/java-export/maven_install.json
@@ -1,9 +1,36 @@
 {
   "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": 686997265,
-  "__RESOLVED_ARTIFACTS_HASH": -8035072,
+  "__INPUT_ARTIFACTS_HASH": {
+    "com.google.code.findbugs:jsr305": 495355163,
+    "com.google.code.gson:gson": 597770368,
+    "com.google.errorprone:error_prone_annotations": -1035138750,
+    "com.google.guava:guava": 1270066095,
+    "com.google.j2objc:j2objc-annotations": 2003271689,
+    "com.google.protobuf:protobuf-java": 1906581597,
+    "repositories": -1949687017
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "com.google.code.findbugs:jsr305": 870839855,
+    "com.google.code.findbugs:jsr305:jar:sources": -935881202,
+    "com.google.code.gson:gson": -1575757252,
+    "com.google.code.gson:gson:jar:sources": -350708227,
+    "com.google.errorprone:error_prone_annotations": 833623751,
+    "com.google.errorprone:error_prone_annotations:jar:sources": 231035411,
+    "com.google.guava:failureaccess": -1890754729,
+    "com.google.guava:failureaccess:jar:sources": 1500322647,
+    "com.google.guava:guava": -163533230,
+    "com.google.guava:guava:jar:sources": 2103972560,
+    "com.google.guava:listenablefuture": 1079558157,
+    "com.google.j2objc:j2objc-annotations": 248818742,
+    "com.google.j2objc:j2objc-annotations:jar:sources": -378364028,
+    "com.google.protobuf:protobuf-java": 1957269082,
+    "com.google.protobuf:protobuf-java:jar:sources": 1812626912,
+    "org.checkerframework:checker-qual": -1533199059,
+    "org.checkerframework:checker-qual:jar:sources": -1750922234
+  },
   "conflict_resolution": {
-    "com.google.guava:guava:29.0-jre": "com.google.guava:guava:33.0.0-jre"
+    "com.google.errorprone:error_prone_annotations:2.5.1": "com.google.errorprone:error_prone_annotations:2.18.0",
+    "com.google.guava:guava:29.0-jre": "com.google.guava:guava:32.0.1-jre"
   },
   "artifacts": {
     "com.google.code.findbugs:jsr305": {
@@ -15,31 +42,31 @@
     },
     "com.google.code.gson:gson": {
       "shasums": {
-        "jar": "4241c14a7727c34feea6507ec801318a3d4a90f070e4525681079fb94ee4c593",
-        "sources": "eee1cc5c1f4267ee194cc245777e68084738ef390acd763354ce0ff6bfb7bcc1"
+        "jar": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e",
+        "sources": "ba5bddb1a89eb721fcca39f3b34294532060f851e2407a82d82134a41eec4719"
       },
-      "version": "2.10.1"
+      "version": "2.8.9"
     },
     "com.google.errorprone:error_prone_annotations": {
       "shasums": {
-        "jar": "ec6f39f068b6ff9ac323c68e28b9299f8c0a80ca512dccb1d4a70f40ac3ec054",
-        "sources": "5b4504609bb93d3c24b87cd839cf0bb7d878135d0a917a05081d0dc9b2a9973f"
+        "jar": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae",
+        "sources": "a2c0783981c8ad48faaa6ea8de6f1926d8e87c125f5df5ce531a9810b943e032"
       },
-      "version": "2.23.0"
+      "version": "2.18.0"
     },
     "com.google.guava:failureaccess": {
       "shasums": {
-        "jar": "8a8f81cf9b359e3f6dfa691a1e776985c061ef2f223c9b2c80753e1b458e8064",
-        "sources": "dd3bfa5e2ec5bc5397efb2c3cef044c192313ff77089573667ff97a60c6978e0"
+        "jar": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26",
+        "sources": "092346eebbb1657b51aa7485a246bf602bb464cc0b0e2e1c7e7201fadce1e98f"
       },
-      "version": "1.0.2"
+      "version": "1.0.1"
     },
     "com.google.guava:guava": {
       "shasums": {
-        "jar": "f4d85c3e4d411694337cb873abea09b242b664bb013320be6105327c45991537",
-        "sources": "0c17d911785e8a606d091aa6740d6d520f307749c2bddf6e35066d52fe0036e5"
+        "jar": "bd7fa227591fb8509677d0d1122cf95158f3b8a9f45653f58281d879f6dc48c5",
+        "sources": "9105dfc522fb440b39ff8da07cc56aacf65a9f765044c7803a9f32e36e05a22b"
       },
-      "version": "33.0.0-jre"
+      "version": "32.0.1-jre"
     },
     "com.google.guava:listenablefuture": {
       "shasums": {
@@ -56,24 +83,17 @@
     },
     "com.google.protobuf:protobuf-java": {
       "shasums": {
-        "jar": "d60dfe7c68a0d38a248cca96924f289dc7e1966a887ee7cae397701af08575ae",
-        "sources": "0c1f6ecb409099c008358866086ea6e39f0f4b88e783ebb4c876ec0bbcee0e41"
+        "jar": "3ca892fd6ea8b37d01bb6917dbc0bf2637548b756753f65a28d4f1d4d982347f",
+        "sources": "ed30fe6a51c7c15a6f123448304c97185f2039f2aeca9d5e3b4f53de3a4c813c"
       },
-      "version": "4.31.1"
-    },
-    "com.google.protobuf:protobuf-java-util": {
-      "shasums": {
-        "jar": "a2665294d3e4675482bde593df8283f8c965f0207785e8e9b223f790644f5b08",
-        "sources": "8f318bde0b3b68fb7df0760bf5d818dd7ebcd553155d9be93b4fed373e659847"
-      },
-      "version": "4.27.2"
+      "version": "4.33.4"
     },
     "org.checkerframework:checker-qual": {
       "shasums": {
-        "jar": "2f9f245bf68e4259d610894f2406dc1f6363dc639302bd566e8272e4f4541172",
-        "sources": "8308220bbdd4e12b49fa06a91de685faf9cc1a376464478c80845be3e87b7d4f"
+        "jar": "e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1",
+        "sources": "443fa6151982bb4c6ce62e2938f53660085b13a7dceb517202777b87d0dea2c7"
       },
-      "version": "3.41.0"
+      "version": "3.33.0"
     }
   },
   "dependencies": {
@@ -84,14 +104,6 @@
       "com.google.guava:listenablefuture",
       "com.google.j2objc:j2objc-annotations",
       "org.checkerframework:checker-qual"
-    ],
-    "com.google.protobuf:protobuf-java-util": [
-      "com.google.code.findbugs:jsr305",
-      "com.google.code.gson:gson",
-      "com.google.errorprone:error_prone_annotations",
-      "com.google.guava:guava",
-      "com.google.j2objc:j2objc-annotations",
-      "com.google.protobuf:protobuf-java"
     ]
   },
   "packages": {
@@ -145,9 +157,6 @@
       "com.google.protobuf",
       "com.google.protobuf.compiler"
     ],
-    "com.google.protobuf:protobuf-java-util": [
-      "com.google.protobuf.util"
-    ],
     "org.checkerframework:checker-qual": [
       "org.checkerframework.checker.builder.qual",
       "org.checkerframework.checker.calledmethods.qual",
@@ -197,13 +206,11 @@
       "com.google.j2objc:j2objc-annotations",
       "com.google.j2objc:j2objc-annotations:jar:sources",
       "com.google.protobuf:protobuf-java",
-      "com.google.protobuf:protobuf-java-util",
-      "com.google.protobuf:protobuf-java-util:jar:sources",
       "com.google.protobuf:protobuf-java:jar:sources",
       "org.checkerframework:checker-qual",
       "org.checkerframework:checker-qual:jar:sources"
     ]
   },
   "services": {},
-  "version": "2"
+  "version": "3"
 }
diff --git a/examples/java-export/src/main/proto/BUILD b/examples/java-export/src/main/proto/BUILD
index c4153c0..64ac2e8 100644
--- a/examples/java-export/src/main/proto/BUILD
+++ b/examples/java-export/src/main/proto/BUILD
@@ -25,6 +25,6 @@
         ":example.proto",
     ],
     deps = [
-        "@com_google_protobuf//:duration_proto",
+        "@protobuf//:duration_proto",
     ],
 )
diff --git a/examples/kt_android_local_test/.bazelversion b/examples/kt_android_local_test/.bazelversion
index 18bb418..f9c71a5 100644
--- a/examples/kt_android_local_test/.bazelversion
+++ b/examples/kt_android_local_test/.bazelversion
@@ -1 +1 @@
-7.5.0
+8.5.1
diff --git a/examples/kt_android_local_test/MODULE.bazel b/examples/kt_android_local_test/MODULE.bazel
index aacb84f..e73e503 100644
--- a/examples/kt_android_local_test/MODULE.bazel
+++ b/examples/kt_android_local_test/MODULE.bazel
@@ -1 +1,44 @@
-bazel_dep(name = "rules_kotlin", version = "1.9.0")
+module(
+    name = "kt_android_local_test_example",
+    version = "0.0.0",
+)
+
+bazel_dep(name = "rules_kotlin", version = "2.2.2")
+bazel_dep(name = "rules_android", version = "0.7.1")
+bazel_dep(name = "rules_robolectric", version = "4.16.1")
+bazel_dep(name = "rules_jvm_external", version = "0.0.0")
+bazel_dep(name = "rules_java", version = "9.3.0")
+
+local_path_override(
+    module_name = "rules_jvm_external",
+    path = "../..",
+)
+
+# Android SDK and tools
+remote_android_extensions = use_extension("@bazel_tools//tools/android:android_extensions.bzl", "remote_android_tools_extensions")
+use_repo(remote_android_extensions, "android_gmaven_r8", "android_tools")
+
+android_sdk_repository_extension = use_extension("@rules_android//rules/android_sdk_repository:rule.bzl", "android_sdk_repository_extension")
+use_repo(android_sdk_repository_extension, "androidsdk")
+
+register_toolchains("@androidsdk//:sdk-toolchain", "@androidsdk//:all")
+
+# Maven dependencies
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+maven.install(
+    artifacts = [
+        "androidx.appcompat:appcompat:1.0.2",
+        "androidx.annotation:annotation:1.1.0",
+        "androidx.test.ext:junit:1.3.0",
+        "junit:junit:4.13.2",
+        "org.robolectric:robolectric:4.16.1",
+        "org.assertj:assertj-core:3.12.1",
+    ],
+    known_contributing_modules = ["protobuf"],
+    lock_file = "//:maven_install.json",
+    repositories = [
+        "https://maven.google.com",
+        "https://repo1.maven.org/maven2",
+    ],
+)
+use_repo(maven, "maven")
diff --git a/examples/kt_android_local_test/WORKSPACE b/examples/kt_android_local_test/WORKSPACE
deleted file mode 100644
index a723580..0000000
--- a/examples/kt_android_local_test/WORKSPACE
+++ /dev/null
@@ -1,54 +0,0 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-android_sdk_repository(
-    name = "androidsdk",
-    api_level = 29,
-)
-
-# BEGIN Robolectric
-http_archive(
-    name = "robolectric",
-    sha256 = "cf04b4206b9d21b385e8dbee478fac619fc1344e8e46935dcec2d64939dd0525",
-    strip_prefix = "robolectric-bazel-4.16",
-    urls = ["https://github.com/robolectric/robolectric-bazel/releases/download/4.16/robolectric-bazel-4.16.tar.gz"],
-)
-
-load("@robolectric//bazel:robolectric.bzl", "robolectric_repositories")
-
-robolectric_repositories()
-# END Robolectric
-
-local_repository(
-    name = "rules_jvm_external",
-    path = "../../",
-)
-
-load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
-
-rules_jvm_external_deps()
-
-load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
-
-load("@rules_jvm_external//:defs.bzl", "maven_install")
-
-maven_install(
-    artifacts = [
-        "androidx.appcompat:appcompat:1.0.2",
-        "androidx.annotation:annotation:1.1.0",
-        "androidx.test.ext:junit:1.3.0",
-        "junit:junit:4.13.2",
-        "org.robolectric:robolectric:4.16",
-        "org.assertj:assertj-core:3.12.1",
-    ],
-    maven_install_json = "//:maven_install.json",
-    repositories = [
-        "https://maven.google.com",
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@maven//:defs.bzl", "pinned_maven_install")
-
-pinned_maven_install()
diff --git a/examples/kt_android_local_test/maven_install.json b/examples/kt_android_local_test/maven_install.json
index 54e9f82..591b0ed 100644
--- a/examples/kt_android_local_test/maven_install.json
+++ b/examples/kt_android_local_test/maven_install.json
@@ -1,9 +1,106 @@
 {
   "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": 1470460354,
-  "__RESOLVED_ARTIFACTS_HASH": 1817292797,
+  "__INPUT_ARTIFACTS_HASH": {
+    "androidx.annotation:annotation": 207696415,
+    "androidx.appcompat:appcompat": 1316354216,
+    "androidx.test.ext:junit": 923457984,
+    "com.google.code.findbugs:jsr305": 495355163,
+    "com.google.code.gson:gson": 597770368,
+    "com.google.errorprone:error_prone_annotations": -1035138750,
+    "com.google.guava:guava": 1943808618,
+    "com.google.j2objc:j2objc-annotations": 2003271689,
+    "junit:junit": -744267592,
+    "org.assertj:assertj-core": 1375119163,
+    "org.robolectric:robolectric": -1784339344,
+    "repositories": 1670674627
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "androidx.annotation:annotation": -414663500,
+    "androidx.annotation:annotation-jvm": 1243979211,
+    "androidx.appcompat:appcompat:aar": 1613124952,
+    "androidx.arch.core:core-common": -2058968500,
+    "androidx.arch.core:core-runtime:aar": -1419281791,
+    "androidx.asynclayoutinflater:asynclayoutinflater:aar": 1769449139,
+    "androidx.collection:collection": 1665038253,
+    "androidx.concurrent:concurrent-futures": -2088477801,
+    "androidx.concurrent:concurrent-futures-ktx": 1963726172,
+    "androidx.coordinatorlayout:coordinatorlayout:aar": 178749157,
+    "androidx.core:core:aar": -470600750,
+    "androidx.cursoradapter:cursoradapter:aar": 716584031,
+    "androidx.customview:customview:aar": -1249520051,
+    "androidx.documentfile:documentfile:aar": -208771463,
+    "androidx.drawerlayout:drawerlayout:aar": -1935745611,
+    "androidx.fragment:fragment:aar": -1423157539,
+    "androidx.interpolator:interpolator:aar": -1680519633,
+    "androidx.legacy:legacy-support-core-ui:aar": -240163121,
+    "androidx.legacy:legacy-support-core-utils:aar": -374511622,
+    "androidx.lifecycle:lifecycle-common": -1021603081,
+    "androidx.lifecycle:lifecycle-livedata-core:aar": -514261746,
+    "androidx.lifecycle:lifecycle-livedata:aar": -1981725251,
+    "androidx.lifecycle:lifecycle-runtime:aar": -2058356099,
+    "androidx.lifecycle:lifecycle-viewmodel:aar": 929646191,
+    "androidx.loader:loader:aar": -391330749,
+    "androidx.localbroadcastmanager:localbroadcastmanager:aar": 2130379621,
+    "androidx.print:print:aar": 863338669,
+    "androidx.slidingpanelayout:slidingpanelayout:aar": 739390462,
+    "androidx.swiperefreshlayout:swiperefreshlayout:aar": -1690309406,
+    "androidx.test.espresso:espresso-idling-resource:aar": 541320167,
+    "androidx.test.ext:junit:aar": 554257047,
+    "androidx.test.services:storage:aar": 896877,
+    "androidx.test:core:aar": 1251758295,
+    "androidx.test:monitor:aar": -346802190,
+    "androidx.tracing:tracing:aar": 594416579,
+    "androidx.vectordrawable:vectordrawable-animated:aar": -559854832,
+    "androidx.vectordrawable:vectordrawable:aar": 521422578,
+    "androidx.versionedparcelable:versionedparcelable:aar": 1971405382,
+    "androidx.viewpager:viewpager:aar": 490412379,
+    "com.almworks.sqlite4java:sqlite4java": 1585971300,
+    "com.google.auto.value:auto-value-annotations": 641018093,
+    "com.google.code.findbugs:jsr305": 870839855,
+    "com.google.code.gson:gson": -1575757252,
+    "com.google.errorprone:error_prone_annotation": 124458949,
+    "com.google.errorprone:error_prone_annotations": 1014409728,
+    "com.google.guava:failureaccess": 1715931538,
+    "com.google.guava:guava": -2046459454,
+    "com.google.guava:listenablefuture": 1079558157,
+    "com.google.j2objc:j2objc-annotations": -404209759,
+    "com.google.testparameterinjector:test-parameter-injector": 1926198670,
+    "com.ibm.icu:icu4j": -738875849,
+    "javax.annotation:javax.annotation-api": -1009230154,
+    "javax.inject:javax.inject": 698155243,
+    "junit:junit": -1256429642,
+    "org.assertj:assertj-core": 818116720,
+    "org.bouncycastle:bcprov-jdk18on": 1168520784,
+    "org.conscrypt:conscrypt-openjdk-uber": 742580967,
+    "org.hamcrest:hamcrest-core": 649657847,
+    "org.jetbrains.kotlin:kotlin-stdlib": 932574059,
+    "org.jetbrains.kotlinx:kotlinx-coroutines-core": -1127334258,
+    "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": 308175000,
+    "org.jetbrains:annotations": -1663747638,
+    "org.jspecify:jspecify": 117231129,
+    "org.ow2.asm:asm": 611381606,
+    "org.ow2.asm:asm-commons": 1032323649,
+    "org.ow2.asm:asm-tree": -1593303232,
+    "org.robolectric:annotations": 1069464505,
+    "org.robolectric:junit": -2063134657,
+    "org.robolectric:nativeruntime": -880666400,
+    "org.robolectric:nativeruntime-dist-compat": 1636005702,
+    "org.robolectric:pluginapi": -367632063,
+    "org.robolectric:plugins-maven-dependency-resolver": -1332928211,
+    "org.robolectric:resources": -2110585508,
+    "org.robolectric:robolectric": 1365657543,
+    "org.robolectric:sandbox": -580197843,
+    "org.robolectric:shadowapi": 1198190506,
+    "org.robolectric:shadows-framework": 1280511961,
+    "org.robolectric:utils": 1605230956,
+    "org.robolectric:utils-reflector": 1438257772,
+    "org.yaml:snakeyaml": 1218201193
+  },
   "conflict_resolution": {
-    "androidx.annotation:annotation:1.1.0": "androidx.annotation:annotation:1.7.0"
+    "androidx.annotation:annotation:1.1.0": "androidx.annotation:annotation:1.7.0",
+    "com.google.errorprone:error_prone_annotations:2.5.1": "com.google.errorprone:error_prone_annotations:2.36.0",
+    "com.google.guava:guava:32.0.1-jre": "com.google.guava:guava:33.4.8-jre",
+    "com.google.j2objc:j2objc-annotations:2.8": "com.google.j2objc:j2objc-annotations:3.0.0"
   },
   "artifacts": {
     "androidx.annotation:annotation": {
@@ -252,6 +349,18 @@
       },
       "version": "1.11.0"
     },
+    "com.google.code.findbugs:jsr305": {
+      "shasums": {
+        "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7"
+      },
+      "version": "3.0.2"
+    },
+    "com.google.code.gson:gson": {
+      "shasums": {
+        "jar": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e"
+      },
+      "version": "2.8.9"
+    },
     "com.google.errorprone:error_prone_annotation": {
       "shasums": {
         "jar": "192e99ad3be8a0a44fe210cdc9b0265601dcb446e521ba922c793e50add413c3"
@@ -392,21 +501,21 @@
     },
     "org.robolectric:annotations": {
       "shasums": {
-        "jar": "409f50354fc08b382a8fa8c42416438d3664d2cb4e63bf252022c875288fbf7a"
+        "jar": "65a55f0b3cbcfbfc675b0c9075a30edc3b95e6e772a911d874197cc528c9d7b1"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:junit": {
       "shasums": {
-        "jar": "2c9aca263f0c41b1f0452c88d28ad618e553325f0213ce75de42fb02dd5c0479"
+        "jar": "c5b1a61599347ab9a5dc692104b457cd3c31375cd6eecf9b956749309091b5e8"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:nativeruntime": {
       "shasums": {
-        "jar": "85c9c9763de195a166a2cfc88e8623b572bef92cb96f60342fcca3cbbd69ed25"
+        "jar": "55e339282dde0466dcfbce0fd861562bed59bc43f41012d21d750d07147c9e98"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:nativeruntime-dist-compat": {
       "shasums": {
@@ -416,57 +525,57 @@
     },
     "org.robolectric:pluginapi": {
       "shasums": {
-        "jar": "ffdb38f7d0a667e10d0609472ec13792018a69ccaf52c776166e03c61eae6428"
+        "jar": "ba72852745647202c40f1937ddca813bfa1be7707f84e3f65beae2c49d592174"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:plugins-maven-dependency-resolver": {
       "shasums": {
-        "jar": "60858ba0f8c21b2ca38aca7bf18b0fb39ebd10ddf80ef74777fac9ba8909880a"
+        "jar": "6643b0d9bfdf192a4b971f50e61aa93816b75b9a4334e693f0e2dcedc88b944a"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:resources": {
       "shasums": {
-        "jar": "0d6abfd274d3c853a564ea23ce1c52d31d075281ae0e7d64bbbc1477b2ed7679"
+        "jar": "fb16b2c000cc1b91c6f26b6f6c08459e5b1ee35d99cfb908f20a73a05f3f962c"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:robolectric": {
       "shasums": {
-        "jar": "d5b073aa051c88995a621e13c9c0d2afd1be835800d59c80d58c1dbfd8eca19b"
+        "jar": "ebfd48a0255689b0e58a3bbc6c794dc0c0d7b48ce31006fe2613cf7548cba229"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:sandbox": {
       "shasums": {
-        "jar": "78462f9987db60b24283eebdf31a7f4d11487197f8508a2ea262aa5ca4bb0b18"
+        "jar": "14a9bd67d4765c5d6c4ff57ddf339cb447e63df4a46bac650c093a15e2209bdf"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:shadowapi": {
       "shasums": {
-        "jar": "8502d044ab781668fc52eb8784dcacd50c54eaa819cf5cc5fbb1b8457c9931a6"
+        "jar": "6f997b1c0d169a01a967dff2661a95f4c2c2b5b008e8b9e1fba0b2682d6f8c6d"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:shadows-framework": {
       "shasums": {
-        "jar": "f3ddb731c95cb4663634355bed62932ec8f2c7a3daab876885a16b48e1530eda"
+        "jar": "a59802cffec783aa0e7df1489b0c2ce1126ef7cdedb940ffc378eb61e86958c8"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:utils": {
       "shasums": {
-        "jar": "51940c4668ed065101c8a932c6b8a7efa7b546fd5a8e98180f40ac3840b27428"
+        "jar": "8088e94dcaa5cd36251492b1e1155ea2b636756b2271dbbb2d325a012c8a30e2"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.robolectric:utils-reflector": {
       "shasums": {
-        "jar": "efa21dcd2d68b8f3e202580a141b5f338a33e194a46bcd33b70ddb9e6d5ad63d"
+        "jar": "f1c49f95cb3a94ec6fcebfdf1753dd12a879ce5703b3b851f63fb8b412210eb9"
       },
-      "version": "4.16"
+      "version": "4.16.1"
     },
     "org.yaml:snakeyaml": {
       "shasums": {
@@ -811,6 +920,22 @@
       "com.google.auto.value.extension.serializable",
       "com.google.auto.value.extension.toprettystring"
     ],
+    "com.google.code.findbugs:jsr305": [
+      "javax.annotation",
+      "javax.annotation.concurrent",
+      "javax.annotation.meta"
+    ],
+    "com.google.code.gson:gson": [
+      "com.google.gson",
+      "com.google.gson.annotations",
+      "com.google.gson.internal",
+      "com.google.gson.internal.bind",
+      "com.google.gson.internal.bind.util",
+      "com.google.gson.internal.reflect",
+      "com.google.gson.internal.sql",
+      "com.google.gson.reflect",
+      "com.google.gson.stream"
+    ],
     "com.google.errorprone:error_prone_annotation": [
       "com.google.errorprone"
     ],
@@ -1393,6 +1518,8 @@
       "androidx.viewpager:viewpager:aar",
       "com.almworks.sqlite4java:sqlite4java",
       "com.google.auto.value:auto-value-annotations",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
       "com.google.errorprone:error_prone_annotation",
       "com.google.errorprone:error_prone_annotations",
       "com.google.guava:failureaccess",
@@ -1473,6 +1600,8 @@
       "androidx.viewpager:viewpager:aar",
       "com.almworks.sqlite4java:sqlite4java",
       "com.google.auto.value:auto-value-annotations",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
       "com.google.errorprone:error_prone_annotation",
       "com.google.errorprone:error_prone_annotations",
       "com.google.guava:failureaccess",
@@ -1581,5 +1710,5 @@
       ]
     }
   },
-  "version": "2"
+  "version": "3"
 }
diff --git a/examples/kt_android_local_test/src/test/AndroidManifest.xml b/examples/kt_android_local_test/src/test/AndroidManifest.xml
index dee40ee..512636d 100644
--- a/examples/kt_android_local_test/src/test/AndroidManifest.xml
+++ b/examples/kt_android_local_test/src/test/AndroidManifest.xml
@@ -5,4 +5,8 @@
 
     <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
 
+    <application android:theme="@style/AppTheme">
+        <activity android:name=".MainActivity" />
+    </application>
+
 </manifest>
diff --git a/examples/kt_android_local_test/src/test/BUILD b/examples/kt_android_local_test/src/test/BUILD
index dea3e58..8b85ce5 100644
--- a/examples/kt_android_local_test/src/test/BUILD
+++ b/examples/kt_android_local_test/src/test/BUILD
@@ -11,6 +11,6 @@
         "@maven//:org_assertj_assertj_core",
         "@maven//:org_robolectric_robolectric",
         "@maven//:org_robolectric_shadows_framework",
-        "@robolectric//bazel:android-all",
+        "@rules_robolectric//bazel:android-all",
     ],
 )
diff --git a/examples/kt_jvm_export/.bazelversion b/examples/kt_jvm_export/.bazelversion
index 18bb418..f9c71a5 100644
--- a/examples/kt_jvm_export/.bazelversion
+++ b/examples/kt_jvm_export/.bazelversion
@@ -1 +1 @@
-7.5.0
+8.5.1
diff --git a/examples/kt_jvm_export/MODULE.bazel b/examples/kt_jvm_export/MODULE.bazel
index ec8db18..323d615 100644
--- a/examples/kt_jvm_export/MODULE.bazel
+++ b/examples/kt_jvm_export/MODULE.bazel
@@ -1,6 +1,6 @@
 module(name = "rules_jvm_external_examples_kt_jvm_export")
 
-bazel_dep(name = "rules_kotlin", version = "2.1.0")
+bazel_dep(name = "rules_kotlin", version = "2.2.2")
 bazel_dep(name = "rules_jvm_external", version = "ignored")
 local_path_override(
     module_name = "rules_jvm_external",
diff --git a/examples/kt_jvm_export/WORKSPACE b/examples/kt_jvm_export/WORKSPACE
deleted file mode 100644
index 3c0eac7..0000000
--- a/examples/kt_jvm_export/WORKSPACE
+++ /dev/null
@@ -1,12 +0,0 @@
-local_repository(
-    name = "rules_jvm_external",
-    path = "../../",
-)
-
-load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
-
-rules_jvm_external_deps()
-
-load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
diff --git a/examples/pom_file_generation/.bazelversion b/examples/pom_file_generation/.bazelversion
index 18bb418..f9c71a5 100644
--- a/examples/pom_file_generation/.bazelversion
+++ b/examples/pom_file_generation/.bazelversion
@@ -1 +1 @@
-7.5.0
+8.5.1
diff --git a/examples/pom_file_generation/BUILD b/examples/pom_file_generation/BUILD
index c3c5087..3169515 100644
--- a/examples/pom_file_generation/BUILD
+++ b/examples/pom_file_generation/BUILD
@@ -1,8 +1,9 @@
-load("@bazel_common//tools/maven:pom_file.bzl", "pom_file")
+load("@rules_jvm_external//:defs.bzl", "pom_file")
 
 java_library(
     name = "my_library",
     srcs = ["java/com/example/bazel/Main.java"],
+    tags = ["maven_coordinates=com.example:my-library:1.0.0"],
     deps = [
         "@maven//:com_google_guava_guava",
         "@maven//:com_google_inject_guice",
@@ -11,8 +12,6 @@
 
 pom_file(
     name = "my_library_pom",
-    targets = [
-        "//:my_library",
-    ],
-    template_file = "pom_template.xml",
+    pom_template = "pom_template.xml",
+    target = "//:my_library",
 )
diff --git a/examples/pom_file_generation/MODULE.bazel b/examples/pom_file_generation/MODULE.bazel
new file mode 100644
index 0000000..16bc81a
--- /dev/null
+++ b/examples/pom_file_generation/MODULE.bazel
@@ -0,0 +1,25 @@
+module(
+    name = "pom_file_generation_example",
+    version = "0.0.0",
+)
+
+bazel_dep(name = "rules_jvm_external", version = "0.0.0")
+local_path_override(
+    module_name = "rules_jvm_external",
+    path = "../..",
+)
+
+# Maven dependencies
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+maven.install(
+    artifacts = [
+        "com.google.inject:guice:4.0",
+        "com.google.guava:guava:27.1-jre",
+    ],
+    known_contributing_modules = ["protobuf"],
+    lock_file = "//:maven_install.json",
+    repositories = [
+        "https://repo1.maven.org/maven2",
+    ],
+)
+use_repo(maven, "maven")
diff --git a/examples/pom_file_generation/WORKSPACE b/examples/pom_file_generation/WORKSPACE
deleted file mode 100644
index d06d50f..0000000
--- a/examples/pom_file_generation/WORKSPACE
+++ /dev/null
@@ -1,46 +0,0 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-local_repository(
-    name = "rules_jvm_external",
-    path = "../../",
-)
-
-load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
-
-rules_jvm_external_deps()
-
-load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
-
-load("@rules_jvm_external//:defs.bzl", "maven_install")
-
-maven_install(
-    artifacts = [
-        "com.google.inject:guice:4.0",
-        "com.google.guava:guava:27.1-jre",
-    ],
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-http_archive(
-    name = "bazel_common",
-    sha256 = "d8c9586b24ce4a5513d972668f94b62eb7d705b92405d4bc102131f294751f1d",
-    strip_prefix = "bazel-common-413b433b91f26dbe39cdbc20f742ad6555dd1e27",
-    url = "https://github.com/google/bazel-common/archive/413b433b91f26dbe39cdbc20f742ad6555dd1e27.zip",
-)
-
-http_archive(
-    name = "bazel_skylib",
-    sha256 = "f7be3474d42aae265405a592bb7da8e171919d74c16f082a5457840f06054728",
-    urls = [
-        "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz",
-        "https://github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz",
-    ],
-)
-
-load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
-
-bazel_skylib_workspace()
diff --git a/examples/pom_file_generation/maven_install.json b/examples/pom_file_generation/maven_install.json
new file mode 100644
index 0000000..c09b0c2
--- /dev/null
+++ b/examples/pom_file_generation/maven_install.json
@@ -0,0 +1,226 @@
+{
+  "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
+  "__INPUT_ARTIFACTS_HASH": {
+    "com.google.code.findbugs:jsr305": 495355163,
+    "com.google.code.gson:gson": 597770368,
+    "com.google.errorprone:error_prone_annotations": -1035138750,
+    "com.google.guava:guava": -2011605912,
+    "com.google.inject:guice": -2121129924,
+    "com.google.j2objc:j2objc-annotations": 2003271689,
+    "repositories": -1949687017
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "aopalliance:aopalliance": 1403132272,
+    "com.google.code.findbugs:jsr305": 870839855,
+    "com.google.code.gson:gson": -1575757252,
+    "com.google.errorprone:error_prone_annotations": 833623751,
+    "com.google.guava:failureaccess": -1890754729,
+    "com.google.guava:guava": -163533230,
+    "com.google.guava:listenablefuture": 1079558157,
+    "com.google.inject:guice": 200231344,
+    "com.google.j2objc:j2objc-annotations": 248818742,
+    "javax.inject:javax.inject": 698155243,
+    "org.checkerframework:checker-qual": -1533199059
+  },
+  "conflict_resolution": {
+    "com.google.errorprone:error_prone_annotations:2.5.1": "com.google.errorprone:error_prone_annotations:2.18.0",
+    "com.google.guava:guava:27.1-jre": "com.google.guava:guava:32.0.1-jre"
+  },
+  "artifacts": {
+    "aopalliance:aopalliance": {
+      "shasums": {
+        "jar": "0addec670fedcd3f113c5c8091d783280d23f75e3acb841b61a9cdb079376a08"
+      },
+      "version": "1.0"
+    },
+    "com.google.code.findbugs:jsr305": {
+      "shasums": {
+        "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7"
+      },
+      "version": "3.0.2"
+    },
+    "com.google.code.gson:gson": {
+      "shasums": {
+        "jar": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e"
+      },
+      "version": "2.8.9"
+    },
+    "com.google.errorprone:error_prone_annotations": {
+      "shasums": {
+        "jar": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae"
+      },
+      "version": "2.18.0"
+    },
+    "com.google.guava:failureaccess": {
+      "shasums": {
+        "jar": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26"
+      },
+      "version": "1.0.1"
+    },
+    "com.google.guava:guava": {
+      "shasums": {
+        "jar": "bd7fa227591fb8509677d0d1122cf95158f3b8a9f45653f58281d879f6dc48c5"
+      },
+      "version": "32.0.1-jre"
+    },
+    "com.google.guava:listenablefuture": {
+      "shasums": {
+        "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99"
+      },
+      "version": "9999.0-empty-to-avoid-conflict-with-guava"
+    },
+    "com.google.inject:guice": {
+      "shasums": {
+        "jar": "b378ffc35e7f7125b3c5f3a461d4591ae1685e3c781392f0c854ed7b7581d6d2"
+      },
+      "version": "4.0"
+    },
+    "com.google.j2objc:j2objc-annotations": {
+      "shasums": {
+        "jar": "f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed"
+      },
+      "version": "2.8"
+    },
+    "javax.inject:javax.inject": {
+      "shasums": {
+        "jar": "91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff"
+      },
+      "version": "1"
+    },
+    "org.checkerframework:checker-qual": {
+      "shasums": {
+        "jar": "e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1"
+      },
+      "version": "3.33.0"
+    }
+  },
+  "dependencies": {
+    "com.google.guava:guava": [
+      "com.google.code.findbugs:jsr305",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:failureaccess",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "org.checkerframework:checker-qual"
+    ],
+    "com.google.inject:guice": [
+      "aopalliance:aopalliance",
+      "com.google.guava:guava",
+      "javax.inject:javax.inject"
+    ]
+  },
+  "packages": {
+    "aopalliance:aopalliance": [
+      "org.aopalliance.aop",
+      "org.aopalliance.intercept"
+    ],
+    "com.google.code.findbugs:jsr305": [
+      "javax.annotation",
+      "javax.annotation.concurrent",
+      "javax.annotation.meta"
+    ],
+    "com.google.code.gson:gson": [
+      "com.google.gson",
+      "com.google.gson.annotations",
+      "com.google.gson.internal",
+      "com.google.gson.internal.bind",
+      "com.google.gson.internal.bind.util",
+      "com.google.gson.internal.reflect",
+      "com.google.gson.internal.sql",
+      "com.google.gson.reflect",
+      "com.google.gson.stream"
+    ],
+    "com.google.errorprone:error_prone_annotations": [
+      "com.google.errorprone.annotations",
+      "com.google.errorprone.annotations.concurrent"
+    ],
+    "com.google.guava:failureaccess": [
+      "com.google.common.util.concurrent.internal"
+    ],
+    "com.google.guava:guava": [
+      "com.google.common.annotations",
+      "com.google.common.base",
+      "com.google.common.base.internal",
+      "com.google.common.cache",
+      "com.google.common.collect",
+      "com.google.common.escape",
+      "com.google.common.eventbus",
+      "com.google.common.graph",
+      "com.google.common.hash",
+      "com.google.common.html",
+      "com.google.common.io",
+      "com.google.common.math",
+      "com.google.common.net",
+      "com.google.common.primitives",
+      "com.google.common.reflect",
+      "com.google.common.util.concurrent",
+      "com.google.common.xml",
+      "com.google.thirdparty.publicsuffix"
+    ],
+    "com.google.inject:guice": [
+      "com.google.inject",
+      "com.google.inject.binder",
+      "com.google.inject.internal",
+      "com.google.inject.internal.util",
+      "com.google.inject.matcher",
+      "com.google.inject.name",
+      "com.google.inject.spi",
+      "com.google.inject.util"
+    ],
+    "com.google.j2objc:j2objc-annotations": [
+      "com.google.j2objc.annotations"
+    ],
+    "javax.inject:javax.inject": [
+      "javax.inject"
+    ],
+    "org.checkerframework:checker-qual": [
+      "org.checkerframework.checker.builder.qual",
+      "org.checkerframework.checker.calledmethods.qual",
+      "org.checkerframework.checker.compilermsgs.qual",
+      "org.checkerframework.checker.fenum.qual",
+      "org.checkerframework.checker.formatter.qual",
+      "org.checkerframework.checker.guieffect.qual",
+      "org.checkerframework.checker.i18n.qual",
+      "org.checkerframework.checker.i18nformatter.qual",
+      "org.checkerframework.checker.index.qual",
+      "org.checkerframework.checker.initialization.qual",
+      "org.checkerframework.checker.interning.qual",
+      "org.checkerframework.checker.lock.qual",
+      "org.checkerframework.checker.mustcall.qual",
+      "org.checkerframework.checker.nullness.qual",
+      "org.checkerframework.checker.optional.qual",
+      "org.checkerframework.checker.propkey.qual",
+      "org.checkerframework.checker.regex.qual",
+      "org.checkerframework.checker.signature.qual",
+      "org.checkerframework.checker.signedness.qual",
+      "org.checkerframework.checker.tainting.qual",
+      "org.checkerframework.checker.units.qual",
+      "org.checkerframework.common.aliasing.qual",
+      "org.checkerframework.common.initializedfields.qual",
+      "org.checkerframework.common.reflection.qual",
+      "org.checkerframework.common.returnsreceiver.qual",
+      "org.checkerframework.common.subtyping.qual",
+      "org.checkerframework.common.util.report.qual",
+      "org.checkerframework.common.value.qual",
+      "org.checkerframework.dataflow.qual",
+      "org.checkerframework.framework.qual"
+    ]
+  },
+  "repositories": {
+    "https://repo1.maven.org/maven2/": [
+      "aopalliance:aopalliance",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:failureaccess",
+      "com.google.guava:guava",
+      "com.google.guava:listenablefuture",
+      "com.google.inject:guice",
+      "com.google.j2objc:j2objc-annotations",
+      "javax.inject:javax.inject",
+      "org.checkerframework:checker-qual"
+    ]
+  },
+  "services": {},
+  "version": "3"
+}
diff --git a/examples/pom_file_generation/pom_template.xml b/examples/pom_file_generation/pom_template.xml
index d0a906b..1028295 100644
--- a/examples/pom_file_generation/pom_template.xml
+++ b/examples/pom_file_generation/pom_template.xml
@@ -1 +1,13 @@
-{generated_bzl_deps}
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>{groupId}</groupId>
+    <artifactId>{artifactId}</artifactId>
+    <version>{version}</version>
+
+    <dependencies>
+{dependencies}
+    </dependencies>
+</project>
diff --git a/examples/protobuf-java/.bazelversion b/examples/protobuf-java/.bazelversion
index 18bb418..f9c71a5 100644
--- a/examples/protobuf-java/.bazelversion
+++ b/examples/protobuf-java/.bazelversion
@@ -1 +1 @@
-7.5.0
+8.5.1
diff --git a/examples/protobuf-java/BUILD b/examples/protobuf-java/BUILD
new file mode 100644
index 0000000..127e2b8
--- /dev/null
+++ b/examples/protobuf-java/BUILD
@@ -0,0 +1 @@
+# Marker file for Bazel package
diff --git a/examples/protobuf-java/MODULE.bazel b/examples/protobuf-java/MODULE.bazel
index 746e548..a5f709c 100644
--- a/examples/protobuf-java/MODULE.bazel
+++ b/examples/protobuf-java/MODULE.bazel
@@ -1,6 +1,6 @@
 module(name = "rules_jvm_external_example_protobuf_java")
 
-protobuf_version = "31.1"
+protobuf_version = "33.4"
 
 bazel_dep(name = "bazel_skylib", version = "1.7.1")
 bazel_dep(name = "protobuf", version = protobuf_version, repo_name = "com_google_protobuf")
@@ -22,6 +22,7 @@
         "bazel_worker_java",
         "rules_jvm_external_example_protobuf_java",
     ],
+    lock_file = "//:maven_install.json",
     repositories = [
         "https://repo1.maven.org/maven2",
     ],
diff --git a/examples/protobuf-java/MODULE.bazel.lock b/examples/protobuf-java/MODULE.bazel.lock
index d5a1318..1426e8c 100644
--- a/examples/protobuf-java/MODULE.bazel.lock
+++ b/examples/protobuf-java/MODULE.bazel.lock
@@ -1,5 +1,5 @@
 {
-  "lockFileVersion": 13,
+  "lockFileVersion": 24,
   "registryFileHashes": {
     "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497",
     "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2",
@@ -11,13 +11,16 @@
     "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed",
     "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16",
     "https://bcr.bazel.build/modules/abseil-cpp/20250127.0/MODULE.bazel": "d1086e248cda6576862b4b3fe9ad76a214e08c189af5b42557a6e1888812c5d5",
-    "https://bcr.bazel.build/modules/abseil-cpp/20250127.0/source.json": "1b996859f840d8efc7c720efc61dcf2a84b1261cb3974cbbe9b6666ebf567775",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/MODULE.bazel": "51f2312901470cdab0dbdf3b88c40cd21c62a7ed58a3de45b365ddc5b11bcab2",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/source.json": "cea3901d7e299da7320700abbaafe57a65d039f10d0d7ea601c4a66938ea4b0c",
     "https://bcr.bazel.build/modules/abseil-py/2.1.0/MODULE.bazel": "5ebe5bf853769c65707e5c28f216798f7a4b1042015e6a36e6d03094d94bec8a",
     "https://bcr.bazel.build/modules/abseil-py/2.1.0/source.json": "0e8fc4f088ce07099c1cd6594c20c7ddbb48b4b3c0849b7d94ba94be88ff042b",
     "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896",
     "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85",
-    "https://bcr.bazel.build/modules/apple_support/1.15.1/source.json": "517f2b77430084c541bc9be2db63fdcbb7102938c5f64c17ee60ffda2e5cf07b",
-    "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef",
+    "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442",
+    "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2",
     "https://bcr.bazel.build/modules/bazel_features/1.1.0/MODULE.bazel": "cfd42ff3b815a5f39554d97182657f8c4b9719568eb7fded2b9135f084bf760b",
     "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd",
     "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8",
@@ -26,9 +29,12 @@
     "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58",
     "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b",
     "https://bcr.bazel.build/modules/bazel_features/1.23.0/MODULE.bazel": "fd1ac84bc4e97a5a0816b7fd7d4d4f6d837b0047cf4cbd81652d616af3a6591a",
+    "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65",
+    "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d",
     "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9",
     "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87",
-    "https://bcr.bazel.build/modules/bazel_features/1.30.0/source.json": "b07e17f067fe4f69f90b03b36ef1e08fe0d1f3cac254c1241a1818773e3423bc",
+    "https://bcr.bazel.build/modules/bazel_features/1.33.0/MODULE.bazel": "8b8dc9d2a4c88609409c3191165bccec0e4cb044cd7a72ccbe826583303459f6",
+    "https://bcr.bazel.build/modules/bazel_features/1.33.0/source.json": "13617db3930328c2cd2807a0f13d52ca870ac05f96db9668655113265147b2a6",
     "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7",
     "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a",
     "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8",
@@ -41,57 +47,64 @@
     "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917",
     "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d",
     "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b",
-    "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953",
-    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.1/MODULE.bazel": "02a13b77321773b2042e70ee5e4c5e099c8ddee4cf2da9cd420442c36938d4bd",
-    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.4/MODULE.bazel": "460aa12d01231a80cce03c548287b433b321d205b0028ae596728c35e5ee442e",
-    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.4/source.json": "d353c410d47a8b65d09fa98e83d57ebec257a2c2b9c6e42d6fda1cb25e5464a5",
-    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.4/MODULE.bazel": "82494a01018bb7ef06d4a17ec4cd7a758721f10eb8b6c820a818e70d669500db",
-    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.4/source.json": "a2d30458fd86cf022c2b6331e652526fa08e17573b2f5034a9dbcacdf9c2583c",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/source.json": "7ebaefba0b03efe59cac88ed5bbc67bcf59a3eff33af937345ede2a38b2d368a",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.8/MODULE.bazel": "396c1ef53835aafe3d42ce6619080531ee770648303731f16cfaa33fa056bf0c",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.8/source.json": "abaf8ac9d2ab2f47bda9af4c0c080ff7907378888e1f4bc62a0539dd13ba61e8",
+    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.8/MODULE.bazel": "e76479eae70bd4e8f5f4c2dfc5d03ab971cfb18750246c7b3f3454c5c2ee6629",
+    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.8/source.json": "9395c4679444bc47bf7e51a710366a4480aa371c6f6bed01868e2fabcf11acec",
     "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84",
     "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8",
     "https://bcr.bazel.build/modules/gazelle/0.32.0/MODULE.bazel": "b499f58a5d0d3537f3cf5b76d8ada18242f64ec474d8391247438bf04f58c7b8",
     "https://bcr.bazel.build/modules/gazelle/0.33.0/MODULE.bazel": "a13a0f279b462b784fb8dd52a4074526c4a2afe70e114c7d09066097a46b3350",
     "https://bcr.bazel.build/modules/gazelle/0.34.0/MODULE.bazel": "abdd8ce4d70978933209db92e436deb3a8b737859e9354fb5fd11fb5c2004c8a",
     "https://bcr.bazel.build/modules/gazelle/0.36.0/MODULE.bazel": "e375d5d6e9a6ca59b0cb38b0540bc9a05b6aa926d322f2de268ad267a2ee74c0",
-    "https://bcr.bazel.build/modules/gazelle/0.40.0/MODULE.bazel": "42ba5378ebe845fca43989a53186ab436d956db498acde790685fe0e8f9c6146",
-    "https://bcr.bazel.build/modules/gazelle/0.40.0/source.json": "1e5ef6e4d8b9b6836d93273c781e78ff829ea2e077afef7a57298040fa4f010a",
+    "https://bcr.bazel.build/modules/gazelle/0.47.0/MODULE.bazel": "b61bb007c4efad134aa30ee7f4a8e2a39b22aa5685f005edaa022fbd1de43ebc",
+    "https://bcr.bazel.build/modules/gazelle/0.47.0/source.json": "aeb2e5df14b7fb298625d75d08b9c65bdb0b56014c5eb89da9e5dd0572280ae6",
     "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb",
     "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4",
     "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6",
     "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f",
     "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108",
-    "https://bcr.bazel.build/modules/googletest/1.15.2/source.json": "dbdda654dcb3a0d7a8bc5d0ac5fc7e150b58c2a986025ae5bc634bb2cb61f470",
+    "https://bcr.bazel.build/modules/googletest/1.17.0/MODULE.bazel": "dbec758171594a705933a29fcf69293d2468c49ec1f2ebca65c36f504d72df46",
+    "https://bcr.bazel.build/modules/googletest/1.17.0/source.json": "38e4454b25fc30f15439c0378e57909ab1fd0a443158aa35aec685da727cd713",
     "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075",
     "https://bcr.bazel.build/modules/jsoncpp/1.9.6/MODULE.bazel": "2f8d20d3b7d54143213c4dfc3d98225c42de7d666011528dc8fe91591e2e17b0",
     "https://bcr.bazel.build/modules/jsoncpp/1.9.6/source.json": "a04756d367a2126c3541682864ecec52f92cdee80a35735a3cb249ce015ca000",
     "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902",
     "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74",
     "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/source.json": "f448c6e8963fdfa7eb831457df83ad63d3d6355018f6574fb017e8169deb43a9",
-    "https://bcr.bazel.build/modules/package_metadata/0.0.3/MODULE.bazel": "77890552ecea9e284b5424c9de827a58099348763a4359e975c359a83d4faa83",
-    "https://bcr.bazel.build/modules/package_metadata/0.0.3/source.json": "742075a428ad12a3fa18a69014c2f57f01af910c6d9d18646c990200853e641a",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.5/MODULE.bazel": "ef4f9439e3270fdd6b9fd4dbc3d2f29d13888e44c529a1b243f7a31dfbc2e8e4",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.7/MODULE.bazel": "7adb03933fc8401f495800cf4eafcff0edc6da0ff55c7db223ef69d19f689486",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.7/source.json": "50639625e937b56115012674c797cca7a05a96b4878c87d803c13dc2b31de8a0",
     "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5",
     "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f",
-    "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29",
     "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee",
     "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37",
     "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615",
     "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814",
     "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d",
     "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc",
+    "https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580",
+    "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96",
     "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7",
     "https://bcr.bazel.build/modules/protobuf/23.1/MODULE.bazel": "88b393b3eb4101d18129e5db51847cd40a5517a53e81216144a8c32dfeeca52a",
     "https://bcr.bazel.build/modules/protobuf/24.4/MODULE.bazel": "7bc7ce5f2abf36b3b7b7c8218d3acdebb9426aeb35c2257c96445756f970eb12",
     "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c",
     "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d",
     "https://bcr.bazel.build/modules/protobuf/27.2/MODULE.bazel": "32450b50673882e4c8c3d10a83f3bc82161b213ed2f80d17e38bece8f165c295",
+    "https://bcr.bazel.build/modules/protobuf/29.0-rc2.bcr.1/MODULE.bazel": "52f4126f63a2f0bbf36b99c2a87648f08467a4eaf92ba726bc7d6a500bbf770c",
     "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df",
     "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92",
+    "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e",
     "https://bcr.bazel.build/modules/protobuf/29.1/MODULE.bazel": "557c3457560ff49e122ed76c0bc3397a64af9574691cb8201b4e46d4ab2ecb95",
     "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0",
     "https://bcr.bazel.build/modules/protobuf/3.19.2/MODULE.bazel": "532ffe5f2186b69fdde039efe6df13ba726ff338c6bc82275ad433013fa10573",
     "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858",
     "https://bcr.bazel.build/modules/protobuf/31.1/MODULE.bazel": "379a389bb330b7b8c1cdf331cc90bf3e13de5614799b3b52cdb7c6f389f6b38e",
-    "https://bcr.bazel.build/modules/protobuf/31.1/source.json": "25af5d0219da0c0fc4d1191a24ce438e6ca7f49d2e1a94f354efeba6ef10426f",
+    "https://bcr.bazel.build/modules/protobuf/32.1/MODULE.bazel": "89cd2866a9cb07fee9ff74c41ceace11554f32e0d849de4e23ac55515cfada4d",
+    "https://bcr.bazel.build/modules/protobuf/33.4/MODULE.bazel": "114775b816b38b6d0ca620450d6b02550c60ceedfdc8d9a229833b34a223dc42",
+    "https://bcr.bazel.build/modules/protobuf/33.4/source.json": "555f8686b4c7d6b5ba731fbea13bf656b4bfd9a7ff629c1d9d3f6e1d6155de79",
     "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e",
     "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34",
     "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680",
@@ -99,13 +112,15 @@
     "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a",
     "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/source.json": "2ff292be6ef3340325ce8a045ecc326e92cbfab47c7cbab4bd85d28971b97ac4",
     "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa",
-    "https://bcr.bazel.build/modules/rules_android/0.6.6/MODULE.bazel": "b0fb569752aab65ab1a9db0a8f6cfaf5aa1754965e17e95dcf0e4d88e192a68d",
-    "https://bcr.bazel.build/modules/rules_android/0.6.6/source.json": "a9d8dc2d5a102dc03269a94acc886a4cab82cdcb9ccbc77b0f665d6d17a6ae09",
+    "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8",
+    "https://bcr.bazel.build/modules/rules_android/0.7.1/MODULE.bazel": "a806fc382a774252f228a40e3b11b9fcc6276f8778c7fb33e9f72937c6258363",
+    "https://bcr.bazel.build/modules/rules_android/0.7.1/source.json": "151440aed3f0f73a00d4ed5cec5d31f63a6fef9b95d8fab1eb1810150fa525f2",
     "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a",
     "https://bcr.bazel.build/modules/rules_apple/3.16.0/source.json": "d8b5fe461272018cc07cfafce11fe369c7525330804c37eec5a82f84cd475366",
     "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647",
     "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002",
     "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac",
     "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc",
     "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87",
     "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a",
@@ -114,15 +129,19 @@
     "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e",
     "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5",
     "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513",
-    "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c",
+    "https://bcr.bazel.build/modules/rules_cc/0.1.5/MODULE.bazel": "88dfc9361e8b5ae1008ac38f7cdfd45ad738e4fa676a3ad67d19204f045a1fd8",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.0/MODULE.bazel": "b5c17f90458caae90d2ccd114c81970062946f49f355610ed89bebf954f5783c",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.13/MODULE.bazel": "eecdd666eda6be16a8d9dc15e44b5c75133405e820f620a234acc4b1fdc5aa37",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.14/source.json": "55d0a4587c5592fad350f6e698530f4faf0e7dd15e69d43f8d87e220c78bea54",
     "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6",
     "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8",
     "https://bcr.bazel.build/modules/rules_go/0.41.0/MODULE.bazel": "55861d8e8bb0e62cbd2896f60ff303f62ffcb0eddb74ecb0e5c0cbe36fc292c8",
     "https://bcr.bazel.build/modules/rules_go/0.42.0/MODULE.bazel": "8cfa875b9aa8c6fce2b2e5925e73c1388173ea3c32a0db4d2b4804b453c14270",
     "https://bcr.bazel.build/modules/rules_go/0.46.0/MODULE.bazel": "3477df8bdcc49e698b9d25f734c4f3a9f5931ff34ee48a2c662be168f5f2d3fd",
-    "https://bcr.bazel.build/modules/rules_go/0.50.1/MODULE.bazel": "b91a308dc5782bb0a8021ad4330c81fea5bda77f96b9e4c117b9b9c8f6665ee0",
-    "https://bcr.bazel.build/modules/rules_go/0.51.0-rc2/MODULE.bazel": "edfc3a9cea7bedb0eaaff37b0d7817c1a4bf72b3c615580b0ffcee6c52690fd4",
-    "https://bcr.bazel.build/modules/rules_go/0.51.0-rc2/source.json": "6b5cd0b3da2bd0e6949580851db990a04af0a285f072b9a0f059424457cd8cc9",
+    "https://bcr.bazel.build/modules/rules_go/0.53.0/MODULE.bazel": "a4ed760d3ac0dbc0d7b967631a9a3fd9100d28f7d9fcf214b4df87d4bfff5f9a",
+    "https://bcr.bazel.build/modules/rules_go/0.59.0/MODULE.bazel": "b7e43e7414a3139a7547d1b4909b29085fbe5182b6c58cbe1ed4c6272815aeae",
+    "https://bcr.bazel.build/modules/rules_go/0.59.0/source.json": "1df17bb7865cfc029492c30163cee891d0dd8658ea0d5bfdf252c4b6db5c1ef6",
     "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74",
     "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86",
     "https://bcr.bazel.build/modules/rules_java/6.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963",
@@ -131,15 +150,16 @@
     "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6",
     "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab",
     "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe",
-    "https://bcr.bazel.build/modules/rules_java/7.6.5/MODULE.bazel": "481164be5e02e4cab6e77a36927683263be56b7e36fef918b458d7a8a1ebadb1",
-    "https://bcr.bazel.build/modules/rules_java/8.13.0/MODULE.bazel": "0444ebf737d144cf2bb2ccb368e7f1cce735264285f2a3711785827c1686625e",
-    "https://bcr.bazel.build/modules/rules_java/8.13.0/source.json": "4605c0f676b87dd9d1fabd4d743b71f04d97503bd1a79aad53f87399fb5396de",
+    "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615",
     "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017",
     "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939",
     "https://bcr.bazel.build/modules/rules_java/8.6.0/MODULE.bazel": "9c064c434606d75a086f15ade5edb514308cccd1544c2b2a89bbac4310e41c71",
     "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2",
+    "https://bcr.bazel.build/modules/rules_java/9.3.0/MODULE.bazel": "f657c72d65ac449caae9abf2e68e66c0d36f9416848c4c4903d0b3234229e7f2",
+    "https://bcr.bazel.build/modules/rules_java/9.3.0/source.json": "59ae7e662c3c7042b88bbb42ad12483523e234c65ebe4c51611baa43e85cb248",
     "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3",
-    "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5",
+    "https://bcr.bazel.build/modules/rules_kotlin/2.1.3/MODULE.bazel": "ce7def6d576aa8d3a9c6d10e13b4d157296229674371f67dbf788dae0afae3d5",
+    "https://bcr.bazel.build/modules/rules_kotlin/2.1.3/source.json": "0b0dc9400f14b5fbb13d278ad3bf0413cdbaf0da0db337e055b855e35b878a3b",
     "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0",
     "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d",
     "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c",
@@ -156,29 +176,30 @@
     "https://bcr.bazel.build/modules/rules_proto/7.1.0/MODULE.bazel": "002d62d9108f75bb807cd56245d45648f38275cb3a99dcd45dfb864c5d74cb96",
     "https://bcr.bazel.build/modules/rules_proto/7.1.0/source.json": "39f89066c12c24097854e8f57ab8558929f9c8d474d34b2c00ac04630ad8940e",
     "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f",
-    "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7",
     "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300",
     "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382",
     "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed",
     "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58",
     "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937",
-    "https://bcr.bazel.build/modules/rules_python/0.37.1/MODULE.bazel": "3faeb2d9fa0a81f8980643ee33f212308f4d93eea4b9ce6f36d0b742e71e9500",
     "https://bcr.bazel.build/modules/rules_python/0.37.2/MODULE.bazel": "b5ffde91410745750b6c13be1c5dc4555ef5bc50562af4a89fd77807fdde626a",
     "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c",
+    "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7",
     "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43",
-    "https://bcr.bazel.build/modules/rules_python/1.0.0/source.json": "b0162a65c6312e45e7912e39abd1a7f8856c2c7e41ecc9b6dc688a6f6400a917",
+    "https://bcr.bazel.build/modules/rules_python/1.4.1/MODULE.bazel": "8991ad45bdc25018301d6b7e1d3626afc3c8af8aaf4bc04f23d0b99c938b73a6",
+    "https://bcr.bazel.build/modules/rules_python/1.6.0/MODULE.bazel": "7e04ad8f8d5bea40451cf80b1bd8262552aa73f841415d20db96b7241bd027d8",
+    "https://bcr.bazel.build/modules/rules_python/1.6.0/source.json": "e980f654cf66ec4928672f41fc66c4102b5ea54286acf4aecd23256c84211be6",
     "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/MODULE.bazel": "d44fec647d0aeb67b9f3b980cf68ba634976f3ae7ccd6c07d790b59b87a4f251",
     "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/source.json": "37c10335f2361c337c5c1f34ed36d2da70534c23088062b33a8bdaab68aa9dea",
-    "https://bcr.bazel.build/modules/rules_shell/0.1.2/MODULE.bazel": "66e4ca3ce084b04af0b9ff05ff14cab4e5df7503973818bb91cbc6cda08d32fc",
     "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c",
     "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b",
-    "https://bcr.bazel.build/modules/rules_shell/0.4.1/MODULE.bazel": "00e501db01bbf4e3e1dd1595959092c2fadf2087b2852d3f553b5370f5633592",
-    "https://bcr.bazel.build/modules/rules_shell/0.4.1/source.json": "4757bd277fe1567763991c4425b483477bb82e35e777a56fd846eb5cceda324a",
+    "https://bcr.bazel.build/modules/rules_shell/0.6.1/MODULE.bazel": "72e76b0eea4e81611ef5452aa82b3da34caca0c8b7b5c0c9584338aa93bae26b",
+    "https://bcr.bazel.build/modules/rules_shell/0.6.1/source.json": "20ec05cd5e592055e214b2da8ccb283c7f2a421ea0dc2acbf1aa792e11c03d0c",
     "https://bcr.bazel.build/modules/rules_swift/1.16.0/MODULE.bazel": "4a09f199545a60d09895e8281362b1ff3bb08bbde69c6fc87aff5b92fcc916ca",
     "https://bcr.bazel.build/modules/rules_swift/2.1.1/MODULE.bazel": "494900a80f944fc7aa61500c2073d9729dff0b764f0e89b824eb746959bc1046",
     "https://bcr.bazel.build/modules/rules_swift/2.1.1/source.json": "40fc69dfaac64deddbb75bd99cdac55f4427d9ca0afbe408576a65428427a186",
     "https://bcr.bazel.build/modules/stardoc/0.6.2/MODULE.bazel": "7060193196395f5dd668eda046ccbeacebfd98efc77fed418dbe2b82ffaa39fd",
     "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c",
+    "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7",
     "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5",
     "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216",
     "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91",
@@ -187,126 +208,477 @@
     "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "c0df5e35ad55e264160417fd0875932ee3c9dda63d9fccace35ac62f45e1b6f9",
     "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0",
     "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27",
-    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79",
     "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca",
     "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806",
     "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198"
   },
   "selectedYankedVersions": {},
   "moduleExtensions": {
-    "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": {
+    "@@rules_android+//rules/android_sdk_repository:rule.bzl%android_sdk_repository_extension": {
       "general": {
-        "bzlTransitiveDigest": "ltCGFbl/LQQZXn/LEMXfKX7pGwyqNiOCHcmiQW0tmjM=",
-        "usagesDigest": "0sv83SRsyI6lGvOdlpRn0tc9RjvaEXPpa1yYtUlWLWk=",
-        "recordedFileInputs": {},
-        "recordedDirentsInputs": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "local_config_apple_cc_toolchains": {
-            "bzlFile": "@@apple_support~//crosstool:setup.bzl",
-            "ruleClassName": "_apple_cc_autoconf_toolchains",
-            "attributes": {}
-          },
-          "local_config_apple_cc": {
-            "bzlFile": "@@apple_support~//crosstool:setup.bzl",
-            "ruleClassName": "_apple_cc_autoconf",
-            "attributes": {}
-          }
-        },
-        "recordedRepoMappingEntries": [
-          [
-            "apple_support~",
-            "bazel_tools",
-            "bazel_tools"
-          ]
-        ]
-      }
-    },
-    "@@rules_android~//rules/android_sdk_repository:rule.bzl%android_sdk_repository_extension": {
-      "general": {
-        "bzlTransitiveDigest": "NAy+0M15JNVEBb8Tny6t7j3lKqTnsAMjoBB6LJ+C370=",
-        "usagesDigest": "weZLGEpNa+fTJZ9CEljWxpN3/kuPzj/ULgebzOt2h4g=",
+        "bzlTransitiveDigest": "+rMrzIrv7sImYmkbXJYv+gFpTJQ79X3MpwwMLI2A+oA=",
+        "usagesDigest": "iEGI2aNDMkHt9LXCdViLNUUOslpiVj2DrevWWXZEFnU=",
         "recordedFileInputs": {},
         "recordedDirentsInputs": {},
         "envVariables": {},
         "generatedRepoSpecs": {
           "androidsdk": {
-            "bzlFile": "@@rules_android~//rules/android_sdk_repository:rule.bzl",
-            "ruleClassName": "_android_sdk_repository",
+            "repoRuleId": "@@rules_android+//rules/android_sdk_repository:rule.bzl%_android_sdk_repository",
             "attributes": {}
           }
         },
         "recordedRepoMappingEntries": []
       }
     },
-    "@@rules_kotlin~//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": {
+    "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": {
       "general": {
-        "bzlTransitiveDigest": "fus14IFJ/1LGWWGKPH/U18VnJCoMjfDt1ckahqCnM0A=",
-        "usagesDigest": "aJF6fLy82rR95Ff5CZPAqxNoFgOMLMN5ImfBS0nhnkg=",
+        "bzlTransitiveDigest": "HvXhEL0WNqUp+2pT097fVvbrOlpsvNusX/M+Z0aTXhk=",
+        "usagesDigest": "qTwqmKKUfWcPdvM0waG+CPWrxsbeAWVeUxavm7tEk9E=",
         "recordedFileInputs": {},
         "recordedDirentsInputs": {},
         "envVariables": {},
         "generatedRepoSpecs": {
           "com_github_jetbrains_kotlin_git": {
-            "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl",
-            "ruleClassName": "kotlin_compiler_git_repository",
+            "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository",
             "attributes": {
               "urls": [
-                "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip"
+                "https://github.com/JetBrains/kotlin/releases/download/v2.1.0/kotlin-compiler-2.1.0.zip"
               ],
-              "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88"
+              "sha256": "b6698d5728ad8f9edcdd01617d638073191d8a03139cc538a391b4e3759ad297"
             }
           },
           "com_github_jetbrains_kotlin": {
-            "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl",
-            "ruleClassName": "kotlin_capabilities_repository",
+            "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository",
             "attributes": {
               "git_repository_name": "com_github_jetbrains_kotlin_git",
-              "compiler_version": "1.9.23"
+              "compiler_version": "2.1.0"
             }
           },
           "com_github_google_ksp": {
-            "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:ksp.bzl",
-            "ruleClassName": "ksp_compiler_plugin_repository",
+            "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository",
             "attributes": {
               "urls": [
-                "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip"
+                "https://github.com/google/ksp/releases/download/2.1.0-1.0.28/artifacts.zip"
               ],
-              "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d",
-              "strip_version": "1.9.23-1.0.20"
+              "sha256": "fc27b08cadc061a4a989af01cbeccb613feef1995f4aad68f2be0f886a3ee251",
+              "strip_version": "2.1.0-1.0.28"
             }
           },
           "com_github_pinterest_ktlint": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_file",
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file",
             "attributes": {
-              "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985",
+              "sha256": "a9f923be58fbd32670a17f0b729b1df804af882fa57402165741cb26e5440ca1",
               "urls": [
-                "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint"
+                "https://github.com/pinterest/ktlint/releases/download/1.3.1/ktlint"
               ],
               "executable": true
             }
           },
-          "rules_android": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
+          "kotlinx_serialization_core_jvm": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar",
             "attributes": {
-              "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806",
-              "strip_prefix": "rules_android-0.1.1",
+              "sha256": "29c821a8d4e25cbfe4f2ce96cdd4526f61f8f4e69a135f9612a34a81d93b65f1",
               "urls": [
-                "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip"
+                "https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.jar"
+              ]
+            }
+          },
+          "kotlinx_serialization_json": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar",
+            "attributes": {
+              "sha256": "8c0016890a79ab5980dd520a5ab1a6738023c29aa3b6437c482e0e5fdc06dab1",
+              "urls": [
+                "https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.jar"
+              ]
+            }
+          },
+          "kotlinx_serialization_json_jvm": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar",
+            "attributes": {
+              "sha256": "d3234179bcff1886d53d67c11eca47f7f3cf7b63c349d16965f6db51b7f3dd9a",
+              "urls": [
+                "https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.jar"
               ]
             }
           }
         },
         "recordedRepoMappingEntries": [
           [
-            "rules_kotlin~",
+            "rules_kotlin+",
             "bazel_tools",
             "bazel_tools"
           ]
         ]
       }
+    },
+    "@@rules_python+//python/uv:uv.bzl%uv": {
+      "general": {
+        "bzlTransitiveDigest": "8vT1ddXtljNxYD0tJkksqzeKE6xqx4Ix+tXthAppjTI=",
+        "usagesDigest": "p80sy6cYQuWxx5jhV3fOTu+N9EyIUFG9+F7UC/nhXic=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "uv": {
+            "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo",
+            "attributes": {
+              "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'",
+              "toolchain_names": [
+                "none"
+              ],
+              "toolchain_implementations": {
+                "none": "'@@rules_python+//python:none'"
+              },
+              "toolchain_compatible_with": {
+                "none": [
+                  "@platforms//:incompatible"
+                ]
+              },
+              "toolchain_target_settings": {}
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_python+",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_python+",
+            "platforms",
+            "platforms"
+          ]
+        ]
+      }
+    }
+  },
+  "facts": {
+    "@@rules_go+//go:extensions.bzl%go_sdk": {
+      "1.22.4": {
+        "aix_ppc64": [
+          "go1.22.4.aix-ppc64.tar.gz",
+          "b9647fa9fc83a0cc5d4f092a19eaeaecf45f063a5aa7d4962fde65aeb7ae6ce1"
+        ],
+        "darwin_amd64": [
+          "go1.22.4.darwin-amd64.tar.gz",
+          "c95967f50aa4ace34af0c236cbdb49a9a3e80ee2ad09d85775cb4462a5c19ed3"
+        ],
+        "darwin_arm64": [
+          "go1.22.4.darwin-arm64.tar.gz",
+          "242b78dc4c8f3d5435d28a0d2cec9b4c1aa999b601fb8aa59fb4e5a1364bf827"
+        ],
+        "dragonfly_amd64": [
+          "go1.22.4.dragonfly-amd64.tar.gz",
+          "f2fbb51af4719d3616efb482d6ed2b96579b474156f85a7ddc6f126764feec4b"
+        ],
+        "freebsd_386": [
+          "go1.22.4.freebsd-386.tar.gz",
+          "7c54884bb9f274884651d41e61d1bc12738863ad1497e97ea19ad0e9aa6bf7b5"
+        ],
+        "freebsd_amd64": [
+          "go1.22.4.freebsd-amd64.tar.gz",
+          "88d44500e1701dd35797619774d6dd51bf60f45a8338b0a82ddc018e4e63fb78"
+        ],
+        "freebsd_arm64": [
+          "go1.22.4.freebsd-arm64.tar.gz",
+          "726dc093cf020277be45debf03c3b02b43c2efb3e2a5d4fba8f52579d65327dc"
+        ],
+        "freebsd_armv6l": [
+          "go1.22.4.freebsd-arm.tar.gz",
+          "3d9efe47db142a22679aba46b1772e3900b0d87ae13bd2b3bc80dbf2ac0b2cd6"
+        ],
+        "freebsd_riscv64": [
+          "go1.22.4.freebsd-riscv64.tar.gz",
+          "5f6b67e5e32f1d6ccb2d4dcb44934a5e2e870a877ba7443d86ec43cfc28afa71"
+        ],
+        "illumos_amd64": [
+          "go1.22.4.illumos-amd64.tar.gz",
+          "d56ecc2f85b6418a21ef83879594d0c42ab4f65391a676bb12254870e6690d63"
+        ],
+        "linux_386": [
+          "go1.22.4.linux-386.tar.gz",
+          "47a2a8d249a91eb8605c33bceec63aedda0441a43eac47b4721e3975ff916cec"
+        ],
+        "linux_amd64": [
+          "go1.22.4.linux-amd64.tar.gz",
+          "ba79d4526102575196273416239cca418a651e049c2b099f3159db85e7bade7d"
+        ],
+        "linux_arm64": [
+          "go1.22.4.linux-arm64.tar.gz",
+          "a8e177c354d2e4a1b61020aca3562e27ea3e8f8247eca3170e3fa1e0c2f9e771"
+        ],
+        "linux_armv6l": [
+          "go1.22.4.linux-armv6l.tar.gz",
+          "e2b143fbacbc9cbd448e9ef41ac3981f0488ce849af1cf37e2341d09670661de"
+        ],
+        "linux_loong64": [
+          "go1.22.4.linux-loong64.tar.gz",
+          "e2ff9436e4b34bf6926b06d97916e26d67a909a2effec17967245900f0816f1d"
+        ],
+        "linux_mips": [
+          "go1.22.4.linux-mips.tar.gz",
+          "73f0dcc60458c4770593b05a7bc01cc0d31fc98f948c0c2334812c7a1f2fc3f1"
+        ],
+        "linux_mips64": [
+          "go1.22.4.linux-mips64.tar.gz",
+          "417af97fc2630a647052375768be4c38adcc5af946352ea5b28613ea81ca5d45"
+        ],
+        "linux_mips64le": [
+          "go1.22.4.linux-mips64le.tar.gz",
+          "7486e2d7dd8c98eb44df815ace35a7fe7f30b7c02326e3741bd934077508139b"
+        ],
+        "linux_mipsle": [
+          "go1.22.4.linux-mipsle.tar.gz",
+          "69479c8aad301e459a8365b40cad1074a0dbba5defb9291669f94809c4c4be6e"
+        ],
+        "linux_ppc64": [
+          "go1.22.4.linux-ppc64.tar.gz",
+          "dd238847e65bc3e2745caca475a5db6522a2fcf85cf6c38fc36a06642b19efd7"
+        ],
+        "linux_ppc64le": [
+          "go1.22.4.linux-ppc64le.tar.gz",
+          "a3e5834657ef92523f570f798fed42f1f87bc18222a16815ec76b84169649ec4"
+        ],
+        "linux_riscv64": [
+          "go1.22.4.linux-riscv64.tar.gz",
+          "56a827ff7dc6245bcd7a1e9288dffaa1d8b0fd7468562264c1523daf3b4f1b4a"
+        ],
+        "linux_s390x": [
+          "go1.22.4.linux-s390x.tar.gz",
+          "7590c3e278e2dc6040aae0a39da3ca1eb2e3921673a7304cc34d588c45889eec"
+        ],
+        "netbsd_386": [
+          "go1.22.4.netbsd-386.tar.gz",
+          "ddd2eebe34471a2502de6c5dad04ab27c9fc80cbde7a9ad5b3c66ecec4504e1d"
+        ],
+        "netbsd_amd64": [
+          "go1.22.4.netbsd-amd64.tar.gz",
+          "33af79f6f935f6fbacc5d23876450b3567b79348fc065beef8e64081127dd234"
+        ],
+        "netbsd_arm64": [
+          "go1.22.4.netbsd-arm64.tar.gz",
+          "c9a2971dec9f6d320c6f2b049b2353c6d0a2d35e87b8a4b2d78a2f0d62545f8e"
+        ],
+        "netbsd_armv6l": [
+          "go1.22.4.netbsd-arm.tar.gz",
+          "fa3550ebd5375a70b3bcd342b5a71f4bd271dcbbfaf4eabefa2144ab5d8924b6"
+        ],
+        "openbsd_386": [
+          "go1.22.4.openbsd-386.tar.gz",
+          "d21af022331bfdc2b5b161d616c3a1a4573d33cf7a30416ee509a8f3641deb47"
+        ],
+        "openbsd_amd64": [
+          "go1.22.4.openbsd-amd64.tar.gz",
+          "72c0094c43f7e5722ec49c2a3e9dfa7a1123ac43a5f3a63eecf3e3795d3ff0ae"
+        ],
+        "openbsd_arm64": [
+          "go1.22.4.openbsd-arm64.tar.gz",
+          "a7ab8d4e0b02bf06ed144ba42c61c0e93ee00f2b433415dfd4ad4b6e79f31650"
+        ],
+        "openbsd_armv6l": [
+          "go1.22.4.openbsd-arm.tar.gz",
+          "1096831ea3c5ea3ca57d14251d9eda3786889531eb40d7d6775dcaa324d4b065"
+        ],
+        "openbsd_ppc64": [
+          "go1.22.4.openbsd-ppc64.tar.gz",
+          "9716327c8a628358798898dc5148c49dbbeb5196bf2cbf088e550721a6e4f60b"
+        ],
+        "plan9_386": [
+          "go1.22.4.plan9-386.tar.gz",
+          "a8dd4503c95c32a502a616ab78870a19889c9325fe9bd31eb16dd69346e4bfa8"
+        ],
+        "plan9_amd64": [
+          "go1.22.4.plan9-amd64.tar.gz",
+          "5423a25808d76fe5aca8607a2e5ac5673abf45446b168cb5e9d8519ee9fe39a1"
+        ],
+        "plan9_armv6l": [
+          "go1.22.4.plan9-arm.tar.gz",
+          "6af939ad583f5c85c09c53728ab7d38c3cc2b39167562d6c18a07c5c6608b370"
+        ],
+        "solaris_amd64": [
+          "go1.22.4.solaris-amd64.tar.gz",
+          "e8cabe69c03085725afdb32a6f9998191a3e55a747b270d835fd05000d56abba"
+        ],
+        "windows_386": [
+          "go1.22.4.windows-386.zip",
+          "aca4e2c37278a10f1c70dd0df142f7d66b50334fcee48978d409202d308d6d25"
+        ],
+        "windows_amd64": [
+          "go1.22.4.windows-amd64.zip",
+          "26321c4d945a0035d8a5bc4a1965b0df401ff8ceac66ce2daadabf9030419a98"
+        ],
+        "windows_arm64": [
+          "go1.22.4.windows-arm64.zip",
+          "8a2daa9ea28cbdafddc6171aefed384f4e5b6e714fb52116fe9ed25a132f37ed"
+        ],
+        "windows_armv6l": [
+          "go1.22.4.windows-arm.zip",
+          "5fcd0671a49cecf39b41021621ee1b6e7aa1370f37122b72e80d4fd4185833b6"
+        ]
+      },
+      "1.25.0": {
+        "aix_ppc64": [
+          "go1.25.0.aix-ppc64.tar.gz",
+          "e5234a7dac67bc86c528fe9752fc9d63557918627707a733ab4cac1a6faed2d4"
+        ],
+        "darwin_amd64": [
+          "go1.25.0.darwin-amd64.tar.gz",
+          "5bd60e823037062c2307c71e8111809865116714d6f6b410597cf5075dfd80ef"
+        ],
+        "darwin_arm64": [
+          "go1.25.0.darwin-arm64.tar.gz",
+          "544932844156d8172f7a28f77f2ac9c15a23046698b6243f633b0a0b00c0749c"
+        ],
+        "dragonfly_amd64": [
+          "go1.25.0.dragonfly-amd64.tar.gz",
+          "5ed3cf9a810a1483822538674f1336c06b51aa1b94d6d545a1a0319a48177120"
+        ],
+        "freebsd_386": [
+          "go1.25.0.freebsd-386.tar.gz",
+          "abea5d5c6697e6b5c224731f2158fe87c602996a2a233ac0c4730cd57bf8374e"
+        ],
+        "freebsd_amd64": [
+          "go1.25.0.freebsd-amd64.tar.gz",
+          "86e6fe0a29698d7601c4442052dac48bd58d532c51cccb8f1917df648138730b"
+        ],
+        "freebsd_arm": [
+          "go1.25.0.freebsd-arm.tar.gz",
+          "d90b78e41921f72f30e8bbc81d9dec2cff7ff384a33d8d8debb24053e4336bfe"
+        ],
+        "freebsd_arm64": [
+          "go1.25.0.freebsd-arm64.tar.gz",
+          "451d0da1affd886bfb291b7c63a6018527b269505db21ce6e14724f22ab0662e"
+        ],
+        "freebsd_riscv64": [
+          "go1.25.0.freebsd-riscv64.tar.gz",
+          "7b565f76bd8bda46549eeaaefe0e53b251e644c230577290c0f66b1ecdb3cdbe"
+        ],
+        "illumos_amd64": [
+          "go1.25.0.illumos-amd64.tar.gz",
+          "b1e1fdaab1ad25aa1c08d7a36c97d45d74b98b89c3f78c6d2145f77face54a2c"
+        ],
+        "linux_386": [
+          "go1.25.0.linux-386.tar.gz",
+          "8c602dd9d99bc9453b3995d20ce4baf382cc50855900a0ece5de9929df4a993a"
+        ],
+        "linux_amd64": [
+          "go1.25.0.linux-amd64.tar.gz",
+          "2852af0cb20a13139b3448992e69b868e50ed0f8a1e5940ee1de9e19a123b613"
+        ],
+        "linux_arm64": [
+          "go1.25.0.linux-arm64.tar.gz",
+          "05de75d6994a2783699815ee553bd5a9327d8b79991de36e38b66862782f54ae"
+        ],
+        "linux_armv6l": [
+          "go1.25.0.linux-armv6l.tar.gz",
+          "a5a8f8198fcf00e1e485b8ecef9ee020778bf32a408a4e8873371bfce458cd09"
+        ],
+        "linux_loong64": [
+          "go1.25.0.linux-loong64.tar.gz",
+          "cab86b1cf761b1cb3bac86a8877cfc92e7b036fc0d3084123d77013d61432afc"
+        ],
+        "linux_mips": [
+          "go1.25.0.linux-mips.tar.gz",
+          "d66b6fb74c3d91b9829dc95ec10ca1f047ef5e89332152f92e136cf0e2da5be1"
+        ],
+        "linux_mips64": [
+          "go1.25.0.linux-mips64.tar.gz",
+          "4082e4381a8661bc2a839ff94ba3daf4f6cde20f8fb771b5b3d4762dc84198a2"
+        ],
+        "linux_mips64le": [
+          "go1.25.0.linux-mips64le.tar.gz",
+          "70002c299ec7f7175ac2ef673b1b347eecfa54ae11f34416a6053c17f855afcc"
+        ],
+        "linux_mipsle": [
+          "go1.25.0.linux-mipsle.tar.gz",
+          "b00a3a39eff099f6df9f1c7355bf28e4589d0586f42d7d4a394efb763d145a73"
+        ],
+        "linux_ppc64": [
+          "go1.25.0.linux-ppc64.tar.gz",
+          "df166f33bd98160662560a72ff0b4ba731f969a80f088922bddcf566a88c1ec1"
+        ],
+        "linux_ppc64le": [
+          "go1.25.0.linux-ppc64le.tar.gz",
+          "0f18a89e7576cf2c5fa0b487a1635d9bcbf843df5f110e9982c64df52a983ad0"
+        ],
+        "linux_riscv64": [
+          "go1.25.0.linux-riscv64.tar.gz",
+          "c018ff74a2c48d55c8ca9b07c8e24163558ffec8bea08b326d6336905d956b67"
+        ],
+        "linux_s390x": [
+          "go1.25.0.linux-s390x.tar.gz",
+          "34e5a2e19f2292fbaf8783e3a241e6e49689276aef6510a8060ea5ef54eee408"
+        ],
+        "netbsd_386": [
+          "go1.25.0.netbsd-386.tar.gz",
+          "f8586cdb7aa855657609a5c5f6dbf523efa00c2bbd7c76d3936bec80aa6c0aba"
+        ],
+        "netbsd_amd64": [
+          "go1.25.0.netbsd-amd64.tar.gz",
+          "ae8dc1469385b86a157a423bb56304ba45730de8a897615874f57dd096db2c2a"
+        ],
+        "netbsd_arm": [
+          "go1.25.0.netbsd-arm.tar.gz",
+          "1ff7e4cc764425fc9dd6825eaee79d02b3c7cafffbb3691687c8d672ade76cb7"
+        ],
+        "netbsd_arm64": [
+          "go1.25.0.netbsd-arm64.tar.gz",
+          "e1b310739f26724216aa6d7d7208c4031f9ff54c9b5b9a796ddc8bebcb4a5f16"
+        ],
+        "openbsd_386": [
+          "go1.25.0.openbsd-386.tar.gz",
+          "4802a9b20e533da91adb84aab42e94aa56cfe3e5475d0550bed3385b182e69d8"
+        ],
+        "openbsd_amd64": [
+          "go1.25.0.openbsd-amd64.tar.gz",
+          "c016cd984bebe317b19a4f297c4f50def120dc9788490540c89f28e42f1dabe1"
+        ],
+        "openbsd_arm": [
+          "go1.25.0.openbsd-arm.tar.gz",
+          "a1e31d0bf22172ddde42edf5ec811ef81be43433df0948ece52fecb247ccfd8d"
+        ],
+        "openbsd_arm64": [
+          "go1.25.0.openbsd-arm64.tar.gz",
+          "343ea8edd8c218196e15a859c6072d0dd3246fbbb168481ab665eb4c4140458d"
+        ],
+        "openbsd_ppc64": [
+          "go1.25.0.openbsd-ppc64.tar.gz",
+          "694c14da1bcaeb5e3332d49bdc2b6d155067648f8fe1540c5de8f3cf8e157154"
+        ],
+        "openbsd_riscv64": [
+          "go1.25.0.openbsd-riscv64.tar.gz",
+          "aa510ad25cf54c06cd9c70b6d80ded69cb20188ac6e1735655eef29ff7e7885f"
+        ],
+        "plan9_386": [
+          "go1.25.0.plan9-386.tar.gz",
+          "46f8cef02086cf04bf186c5912776b56535178d4cb319cd19c9fdbdd29231986"
+        ],
+        "plan9_amd64": [
+          "go1.25.0.plan9-amd64.tar.gz",
+          "29b34391d84095e44608a228f63f2f88113a37b74a79781353ec043dfbcb427b"
+        ],
+        "plan9_arm": [
+          "go1.25.0.plan9-arm.tar.gz",
+          "0a047107d13ebe7943aaa6d54b1d7bbd2e45e68ce449b52915a818da715799c2"
+        ],
+        "solaris_amd64": [
+          "go1.25.0.solaris-amd64.tar.gz",
+          "9977f9e4351984364a3b2b78f8b88bfd1d339812356d5237678514594b7d3611"
+        ],
+        "windows_386": [
+          "go1.25.0.windows-386.zip",
+          "df9f39db82a803af0db639e3613a36681ab7a42866b1384b3f3a1045663961a7"
+        ],
+        "windows_amd64": [
+          "go1.25.0.windows-amd64.zip",
+          "89efb4f9b30812eee083cc1770fdd2913c14d301064f6454851428f9707d190b"
+        ],
+        "windows_arm64": [
+          "go1.25.0.windows-arm64.zip",
+          "27bab004c72b3d7bd05a69b6ec0fc54a309b4b78cc569dd963d8b3ec28bfdb8c"
+        ]
+      }
     }
   }
 }
diff --git a/examples/protobuf-java/WORKSPACE b/examples/protobuf-java/WORKSPACE
deleted file mode 100644
index 59be41a..0000000
--- a/examples/protobuf-java/WORKSPACE
+++ /dev/null
@@ -1,30 +0,0 @@
-# WORKSPACE
-
-local_repository(
-    name = "rules_jvm_external",
-    path = "../..",
-)
-
-load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
-
-rules_jvm_external_deps()
-
-load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
-
-load("@rules_jvm_external//:defs.bzl", "maven_install")
-
-maven_install(
-    artifacts = [
-        "com.google.protobuf:protobuf-java:3.25.5",
-        "com.google.protobuf:protobuf-java-util:3.25.5",
-    ],
-    override_targets = {
-        "com.google.protobuf:protobuf-java": "@protobuf//:protobuf_java",
-    },
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-    strict_visibility = True,
-)
diff --git a/examples/protobuf-java/maven_install.json b/examples/protobuf-java/maven_install.json
new file mode 100644
index 0000000..594237e
--- /dev/null
+++ b/examples/protobuf-java/maven_install.json
@@ -0,0 +1,95 @@
+{
+  "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
+  "__INPUT_ARTIFACTS_HASH": {
+    "com.google.protobuf:protobuf-java": 1906581597,
+    "com.google.protobuf:protobuf-java-util": -1626074784,
+    "repositories": -1949687017
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "com.google.code.findbugs:jsr305": 870839855,
+    "com.google.code.gson:gson": -1575757252,
+    "com.google.errorprone:error_prone_annotations": 833623751,
+    "com.google.protobuf:protobuf-java": 1957269082,
+    "com.google.protobuf:protobuf-java-util": -1160481360
+  },
+  "artifacts": {
+    "com.google.code.findbugs:jsr305": {
+      "shasums": {
+        "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7"
+      },
+      "version": "3.0.2"
+    },
+    "com.google.code.gson:gson": {
+      "shasums": {
+        "jar": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e"
+      },
+      "version": "2.8.9"
+    },
+    "com.google.errorprone:error_prone_annotations": {
+      "shasums": {
+        "jar": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae"
+      },
+      "version": "2.18.0"
+    },
+    "com.google.protobuf:protobuf-java": {
+      "shasums": {
+        "jar": "3ca892fd6ea8b37d01bb6917dbc0bf2637548b756753f65a28d4f1d4d982347f"
+      },
+      "version": "4.33.4"
+    },
+    "com.google.protobuf:protobuf-java-util": {
+      "shasums": {
+        "jar": "6f02f04c5ca088e74b68dbbaf118f1ffa9d587958e637f893e0f8a1899a61342"
+      },
+      "version": "4.33.4"
+    }
+  },
+  "dependencies": {
+    "com.google.protobuf:protobuf-java-util": [
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.protobuf:protobuf-java"
+    ]
+  },
+  "packages": {
+    "com.google.code.findbugs:jsr305": [
+      "javax.annotation",
+      "javax.annotation.concurrent",
+      "javax.annotation.meta"
+    ],
+    "com.google.code.gson:gson": [
+      "com.google.gson",
+      "com.google.gson.annotations",
+      "com.google.gson.internal",
+      "com.google.gson.internal.bind",
+      "com.google.gson.internal.bind.util",
+      "com.google.gson.internal.reflect",
+      "com.google.gson.internal.sql",
+      "com.google.gson.reflect",
+      "com.google.gson.stream"
+    ],
+    "com.google.errorprone:error_prone_annotations": [
+      "com.google.errorprone.annotations",
+      "com.google.errorprone.annotations.concurrent"
+    ],
+    "com.google.protobuf:protobuf-java": [
+      "com.google.protobuf",
+      "com.google.protobuf.compiler"
+    ],
+    "com.google.protobuf:protobuf-java-util": [
+      "com.google.protobuf.util"
+    ]
+  },
+  "repositories": {
+    "https://repo1.maven.org/maven2/": [
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.protobuf:protobuf-java",
+      "com.google.protobuf:protobuf-java-util"
+    ]
+  },
+  "services": {},
+  "version": "3"
+}
diff --git a/examples/scala_akka/.bazelversion b/examples/scala_akka/.bazelversion
index 18bb418..f9c71a5 100644
--- a/examples/scala_akka/.bazelversion
+++ b/examples/scala_akka/.bazelversion
@@ -1 +1 @@
-7.5.0
+8.5.1
diff --git a/examples/scala_akka/BUILD b/examples/scala_akka/BUILD
index 23b5331..cc49e25 100644
--- a/examples/scala_akka/BUILD
+++ b/examples/scala_akka/BUILD
@@ -1,4 +1,4 @@
-load("@io_bazel_rules_scala//scala:scala.bzl", "scala_binary", "scala_library", "scala_test_suite")
+load("@rules_scala//scala:scala.bzl", "scala_binary", "scala_library", "scala_test_suite")
 
 lib_dependencies = [
     "@maven//:com_chuusai_shapeless_2_12",
diff --git a/examples/scala_akka/MODULE.bazel b/examples/scala_akka/MODULE.bazel
new file mode 100644
index 0000000..c3d9fde
--- /dev/null
+++ b/examples/scala_akka/MODULE.bazel
@@ -0,0 +1,54 @@
+module(
+    name = "scala_akka_example",
+    version = "0.0.0",
+)
+
+bazel_dep(name = "rules_scala", version = "7.2.1")
+bazel_dep(name = "rules_jvm_external", version = "0.0.0")
+local_path_override(
+    module_name = "rules_jvm_external",
+    path = "../..",
+)
+
+# Scala configuration
+scala_config = use_extension(
+    "@rules_scala//scala/extensions:config.bzl",
+    "scala_config",
+)
+scala_config.settings(scala_version = "2.12.20")
+
+# Scala dependencies (toolchains)
+scala_deps = use_extension(
+    "@rules_scala//scala/extensions:deps.bzl",
+    "scala_deps",
+)
+scala_deps.scala()
+scala_deps.scalatest()
+
+# Maven dependencies
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+maven.install(
+    artifacts = [
+        "com.github.pureconfig:pureconfig_2.12:0.10.2",
+        "com.typesafe.akka:akka-actor_2.12:2.5.22",
+        "com.typesafe.akka:akka-http_2.12:10.1.8",
+        "com.typesafe.akka:akka-http-testkit_2.12:10.1.8",
+        "com.typesafe.akka:akka-stream_2.12:2.5.22",
+        "com.typesafe.akka:akka-stream-testkit_2.12:2.5.22",
+        "com.typesafe.akka:akka-testkit_2.12:2.5.22",
+        "com.typesafe.scala-logging:scala-logging_2.12:3.9.2",
+        "org.mockito:mockito-core:2.26.0",
+        "org.scalaz:scalaz-core_2.12:7.2.27",
+        "org.scalaz:scalaz-concurrent_2.12:7.2.27",
+        "org.slf4j:slf4j-api:1.7.26",
+        "org.slf4j:slf4j-simple:1.7.26",
+        "org.scalatest:scalatest-wordspec_2.12:3.2.9",
+    ],
+    fetch_sources = True,
+    known_contributing_modules = ["protobuf"],
+    lock_file = "//:maven_install.json",
+    repositories = [
+        "https://repo1.maven.org/maven2",
+    ],
+)
+use_repo(maven, "maven")
diff --git a/examples/scala_akka/WORKSPACE b/examples/scala_akka/WORKSPACE
deleted file mode 100644
index 3bb5a94..0000000
--- a/examples/scala_akka/WORKSPACE
+++ /dev/null
@@ -1,95 +0,0 @@
-local_repository(
-    name = "rules_jvm_external",
-    path = "../../",
-)
-
-load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
-
-rules_jvm_external_deps()
-
-load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-http_archive(
-    name = "com_google_protobuf",
-    sha256 = "b07772d38ab07e55eca4d50f4b53da2d998bb221575c60a4f81100242d4b4889",
-    strip_prefix = "protobuf-3.20.0",
-    urls = ["https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.20.0.tar.gz"],
-)
-
-load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
-
-protobuf_deps()
-
-http_archive(
-    name = "io_bazel_rules_scala",
-    sha256 = "cc590e644b2d5c6a87344af5e2c683017fdc85516d9d64b37f15d33badf2e84c",
-    strip_prefix = "rules_scala-6.1.0",
-    url = "https://github.com/bazelbuild/rules_scala/releases/download/v6.1.0/rules_scala-v6.1.0.tar.gz",
-)
-
-load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config")
-
-scala_config()
-
-load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories")
-
-scala_repositories(
-    overriden_artifacts = {
-        "io_bazel_rules_scala_scala_compiler": {
-            "artifact": "org.scala-lang:scala-compiler:2.12.8",
-            "sha256": "f34e9119f45abd41e85b9e121ba19dd9288b3b4af7f7047e86dc70236708d170",
-        },
-        "io_bazel_rules_scala_scala_library": {
-            "artifact": "org.scala-lang:scala-library:2.12.8",
-            "sha256": "321fb55685635c931eba4bc0d7668349da3f2c09aee2de93a70566066ff25c28",
-        },
-        "io_bazel_rules_scala_scala_reflect": {
-            "artifact": "org.scala-lang:scala-reflect:2.12.8",
-            "sha256": "4d6405395c4599ce04cea08ba082339e3e42135de9aae2923c9f5367e957315a",
-        },
-    },
-)
-
-load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
-
-scala_register_toolchains()
-
-load("@io_bazel_rules_scala//testing:scalatest.bzl", "scalatest_repositories", "scalatest_toolchain")
-
-scalatest_repositories()
-
-scalatest_toolchain()
-
-load("@rules_jvm_external//:defs.bzl", "maven_install")
-
-maven_install(
-    artifacts = [
-        "com.github.pureconfig:pureconfig_2.12:0.10.2",
-        "com.typesafe.akka:akka-actor_2.12:2.5.22",
-        "com.typesafe.akka:akka-http_2.12:10.1.8",
-        "com.typesafe.akka:akka-http-testkit_2.12:10.1.8",
-        "com.typesafe.akka:akka-stream_2.12:2.5.22",
-        "com.typesafe.akka:akka-stream-testkit_2.12:2.5.22",
-        "com.typesafe.akka:akka-testkit_2.12:2.5.22",
-        "com.typesafe.scala-logging:scala-logging_2.12:3.9.2",
-        "org.mockito:mockito-core:2.26.0",
-        "org.scalaz:scalaz-core_2.12:7.2.27",
-        "org.scalaz:scalaz-concurrent_2.12:7.2.27",
-        "org.slf4j:slf4j-api:1.7.26",
-        "org.slf4j:slf4j-simple:1.7.26",
-        "org.scalatest:scalatest-wordspec_2.12:3.2.9",
-    ],
-    fetch_sources = True,
-    maven_install_json = "//:maven_install.json",
-    repositories = [
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@maven//:defs.bzl", "pinned_maven_install")
-
-pinned_maven_install()
diff --git a/examples/scala_akka/maven_install.json b/examples/scala_akka/maven_install.json
index df9d7ba..4f3a056 100644
--- a/examples/scala_akka/maven_install.json
+++ b/examples/scala_akka/maven_install.json
@@ -1,7 +1,121 @@
 {
   "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": -1363590001,
-  "__RESOLVED_ARTIFACTS_HASH": -1912981286,
+  "__INPUT_ARTIFACTS_HASH": {
+    "com.github.pureconfig:pureconfig_2.12": -2074100197,
+    "com.google.code.findbugs:jsr305": 495355163,
+    "com.google.code.gson:gson": 597770368,
+    "com.google.errorprone:error_prone_annotations": -1035138750,
+    "com.google.guava:guava": 1943808618,
+    "com.google.j2objc:j2objc-annotations": 2003271689,
+    "com.typesafe.akka:akka-actor_2.12": 106665115,
+    "com.typesafe.akka:akka-http-testkit_2.12": 974866048,
+    "com.typesafe.akka:akka-http_2.12": 444109257,
+    "com.typesafe.akka:akka-stream-testkit_2.12": 94244193,
+    "com.typesafe.akka:akka-stream_2.12": 2012303530,
+    "com.typesafe.akka:akka-testkit_2.12": 1160432298,
+    "com.typesafe.scala-logging:scala-logging_2.12": 245306812,
+    "org.mockito:mockito-core": 1750952894,
+    "org.scalatest:scalatest-wordspec_2.12": -1910567198,
+    "org.scalaz:scalaz-concurrent_2.12": -349178838,
+    "org.scalaz:scalaz-core_2.12": 586184898,
+    "org.slf4j:slf4j-api": -1472597245,
+    "org.slf4j:slf4j-simple": -1762836447,
+    "repositories": -1949687017
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "com.chuusai:shapeless_2.12": 494519819,
+    "com.chuusai:shapeless_2.12:jar:sources": 1496762573,
+    "com.github.pureconfig:pureconfig-core_2.12": 2003110288,
+    "com.github.pureconfig:pureconfig-core_2.12:jar:sources": 1520345346,
+    "com.github.pureconfig:pureconfig-generic_2.12": -1612683233,
+    "com.github.pureconfig:pureconfig-generic_2.12:jar:sources": -2013047190,
+    "com.github.pureconfig:pureconfig-macros_2.12": -1708203669,
+    "com.github.pureconfig:pureconfig-macros_2.12:jar:sources": -1925318113,
+    "com.github.pureconfig:pureconfig_2.12": 1118541525,
+    "com.github.pureconfig:pureconfig_2.12:jar:sources": 1883421033,
+    "com.google.code.findbugs:jsr305": 870839855,
+    "com.google.code.findbugs:jsr305:jar:sources": -935881202,
+    "com.google.code.gson:gson": -1575757252,
+    "com.google.code.gson:gson:jar:sources": -350708227,
+    "com.google.errorprone:error_prone_annotations": 833623751,
+    "com.google.errorprone:error_prone_annotations:jar:sources": 231035411,
+    "com.google.guava:failureaccess": -1890754729,
+    "com.google.guava:failureaccess:jar:sources": 1500322647,
+    "com.google.guava:guava": -163533230,
+    "com.google.guava:guava:jar:sources": 2103972560,
+    "com.google.guava:listenablefuture": 1079558157,
+    "com.google.j2objc:j2objc-annotations": 248818742,
+    "com.google.j2objc:j2objc-annotations:jar:sources": -378364028,
+    "com.typesafe.akka:akka-actor_2.12": 1718237190,
+    "com.typesafe.akka:akka-actor_2.12:jar:sources": -1904355227,
+    "com.typesafe.akka:akka-http-core_2.12": -237545852,
+    "com.typesafe.akka:akka-http-core_2.12:jar:sources": -2104417934,
+    "com.typesafe.akka:akka-http-testkit_2.12": 1761830972,
+    "com.typesafe.akka:akka-http-testkit_2.12:jar:sources": -1190957652,
+    "com.typesafe.akka:akka-http_2.12": 1102837115,
+    "com.typesafe.akka:akka-http_2.12:jar:sources": -1694932266,
+    "com.typesafe.akka:akka-parsing_2.12": -709058463,
+    "com.typesafe.akka:akka-parsing_2.12:jar:sources": -242585261,
+    "com.typesafe.akka:akka-protobuf_2.12": 1425978443,
+    "com.typesafe.akka:akka-protobuf_2.12:jar:sources": -1278731558,
+    "com.typesafe.akka:akka-stream-testkit_2.12": 1473746138,
+    "com.typesafe.akka:akka-stream-testkit_2.12:jar:sources": -1285012173,
+    "com.typesafe.akka:akka-stream_2.12": -33655900,
+    "com.typesafe.akka:akka-stream_2.12:jar:sources": -632162276,
+    "com.typesafe.akka:akka-testkit_2.12": -413284073,
+    "com.typesafe.akka:akka-testkit_2.12:jar:sources": -282386611,
+    "com.typesafe.scala-logging:scala-logging_2.12": -368952281,
+    "com.typesafe.scala-logging:scala-logging_2.12:jar:sources": -185266458,
+    "com.typesafe:config": -536766452,
+    "com.typesafe:config:jar:sources": -1301135157,
+    "com.typesafe:ssl-config-core_2.12": -1964662879,
+    "com.typesafe:ssl-config-core_2.12:jar:sources": -1359637113,
+    "net.bytebuddy:byte-buddy": -923613294,
+    "net.bytebuddy:byte-buddy-agent": 1369255044,
+    "net.bytebuddy:byte-buddy-agent:jar:sources": 891456196,
+    "net.bytebuddy:byte-buddy:jar:sources": 472742907,
+    "org.checkerframework:checker-qual": -1533199059,
+    "org.checkerframework:checker-qual:jar:sources": -1750922234,
+    "org.mockito:mockito-core": -836959111,
+    "org.mockito:mockito-core:jar:sources": -1046259042,
+    "org.objenesis:objenesis": 942053971,
+    "org.objenesis:objenesis:jar:sources": 565472125,
+    "org.reactivestreams:reactive-streams": -1213709076,
+    "org.reactivestreams:reactive-streams:jar:sources": -683229771,
+    "org.scala-lang.modules:scala-java8-compat_2.12": 1307097734,
+    "org.scala-lang.modules:scala-java8-compat_2.12:jar:sources": 361540645,
+    "org.scala-lang.modules:scala-parser-combinators_2.12": -392130779,
+    "org.scala-lang.modules:scala-parser-combinators_2.12:jar:sources": -1506507763,
+    "org.scala-lang.modules:scala-xml_2.12": 848111085,
+    "org.scala-lang.modules:scala-xml_2.12:jar:sources": -756418229,
+    "org.scala-lang:scala-library": 19296832,
+    "org.scala-lang:scala-library:jar:sources": -1484209318,
+    "org.scala-lang:scala-reflect": 2072885300,
+    "org.scala-lang:scala-reflect:jar:sources": -375716754,
+    "org.scalactic:scalactic_2.12": -1448794326,
+    "org.scalactic:scalactic_2.12:jar:sources": 32025748,
+    "org.scalatest:scalatest-compatible": 473322977,
+    "org.scalatest:scalatest-compatible:jar:sources": -1320500181,
+    "org.scalatest:scalatest-core_2.12": 397385166,
+    "org.scalatest:scalatest-core_2.12:jar:sources": 1559950511,
+    "org.scalatest:scalatest-wordspec_2.12": -719047456,
+    "org.scalatest:scalatest-wordspec_2.12:jar:sources": 1718677819,
+    "org.scalaz:scalaz-concurrent_2.12": -1731029453,
+    "org.scalaz:scalaz-concurrent_2.12:jar:sources": -26033445,
+    "org.scalaz:scalaz-core_2.12": 1226790717,
+    "org.scalaz:scalaz-core_2.12:jar:sources": 1147594094,
+    "org.scalaz:scalaz-effect_2.12": -1899207341,
+    "org.scalaz:scalaz-effect_2.12:jar:sources": -440592236,
+    "org.slf4j:slf4j-api": -1206342160,
+    "org.slf4j:slf4j-api:jar:sources": 771455380,
+    "org.slf4j:slf4j-simple": -2033857648,
+    "org.slf4j:slf4j-simple:jar:sources": -365928876,
+    "org.typelevel:macro-compat_2.12": 265059341,
+    "org.typelevel:macro-compat_2.12:jar:sources": -754563436
+  },
+  "conflict_resolution": {
+    "com.google.errorprone:error_prone_annotations:2.5.1": "com.google.errorprone:error_prone_annotations:2.18.0"
+  },
   "artifacts": {
     "com.chuusai:shapeless_2.12": {
       "shasums": {
@@ -38,6 +152,54 @@
       },
       "version": "0.10.2"
     },
+    "com.google.code.findbugs:jsr305": {
+      "shasums": {
+        "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7",
+        "sources": "1c9e85e272d0708c6a591dc74828c71603053b48cc75ae83cce56912a2aa063b"
+      },
+      "version": "3.0.2"
+    },
+    "com.google.code.gson:gson": {
+      "shasums": {
+        "jar": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e",
+        "sources": "ba5bddb1a89eb721fcca39f3b34294532060f851e2407a82d82134a41eec4719"
+      },
+      "version": "2.8.9"
+    },
+    "com.google.errorprone:error_prone_annotations": {
+      "shasums": {
+        "jar": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae",
+        "sources": "a2c0783981c8ad48faaa6ea8de6f1926d8e87c125f5df5ce531a9810b943e032"
+      },
+      "version": "2.18.0"
+    },
+    "com.google.guava:failureaccess": {
+      "shasums": {
+        "jar": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26",
+        "sources": "092346eebbb1657b51aa7485a246bf602bb464cc0b0e2e1c7e7201fadce1e98f"
+      },
+      "version": "1.0.1"
+    },
+    "com.google.guava:guava": {
+      "shasums": {
+        "jar": "bd7fa227591fb8509677d0d1122cf95158f3b8a9f45653f58281d879f6dc48c5",
+        "sources": "9105dfc522fb440b39ff8da07cc56aacf65a9f765044c7803a9f32e36e05a22b"
+      },
+      "version": "32.0.1-jre"
+    },
+    "com.google.guava:listenablefuture": {
+      "shasums": {
+        "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99"
+      },
+      "version": "9999.0-empty-to-avoid-conflict-with-guava"
+    },
+    "com.google.j2objc:j2objc-annotations": {
+      "shasums": {
+        "jar": "f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed",
+        "sources": "7413eed41f111453a08837f5ac680edded7faed466cbd35745e402e13f4cc3f5"
+      },
+      "version": "2.8"
+    },
     "com.typesafe.akka:akka-actor_2.12": {
       "shasums": {
         "jar": "579c8c53f552b1578d30d6905ce7264394e6ef72de782e41683a8b4e060d74ec",
@@ -136,6 +298,13 @@
       },
       "version": "1.9.10"
     },
+    "org.checkerframework:checker-qual": {
+      "shasums": {
+        "jar": "e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1",
+        "sources": "443fa6151982bb4c6ce62e2938f53660085b13a7dceb517202777b87d0dea2c7"
+      },
+      "version": "3.33.0"
+    },
     "org.mockito:mockito-core": {
       "shasums": {
         "jar": "4c6f5033d07e52c5f238f359a25a4898114f0de973a2acf1db67abb4742f5c17",
@@ -286,6 +455,14 @@
       "com.github.pureconfig:pureconfig-generic_2.12",
       "org.scala-lang:scala-library"
     ],
+    "com.google.guava:guava": [
+      "com.google.code.findbugs:jsr305",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:failureaccess",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "org.checkerframework:checker-qual"
+    ],
     "com.typesafe.akka:akka-actor_2.12": [
       "com.typesafe:config",
       "org.scala-lang.modules:scala-java8-compat_2.12",
@@ -411,6 +588,52 @@
       "pureconfig",
       "pureconfig.derivation"
     ],
+    "com.google.code.findbugs:jsr305": [
+      "javax.annotation",
+      "javax.annotation.concurrent",
+      "javax.annotation.meta"
+    ],
+    "com.google.code.gson:gson": [
+      "com.google.gson",
+      "com.google.gson.annotations",
+      "com.google.gson.internal",
+      "com.google.gson.internal.bind",
+      "com.google.gson.internal.bind.util",
+      "com.google.gson.internal.reflect",
+      "com.google.gson.internal.sql",
+      "com.google.gson.reflect",
+      "com.google.gson.stream"
+    ],
+    "com.google.errorprone:error_prone_annotations": [
+      "com.google.errorprone.annotations",
+      "com.google.errorprone.annotations.concurrent"
+    ],
+    "com.google.guava:failureaccess": [
+      "com.google.common.util.concurrent.internal"
+    ],
+    "com.google.guava:guava": [
+      "com.google.common.annotations",
+      "com.google.common.base",
+      "com.google.common.base.internal",
+      "com.google.common.cache",
+      "com.google.common.collect",
+      "com.google.common.escape",
+      "com.google.common.eventbus",
+      "com.google.common.graph",
+      "com.google.common.hash",
+      "com.google.common.html",
+      "com.google.common.io",
+      "com.google.common.math",
+      "com.google.common.net",
+      "com.google.common.primitives",
+      "com.google.common.reflect",
+      "com.google.common.util.concurrent",
+      "com.google.common.xml",
+      "com.google.thirdparty.publicsuffix"
+    ],
+    "com.google.j2objc:j2objc-annotations": [
+      "com.google.j2objc.annotations"
+    ],
     "com.typesafe.akka:akka-actor_2.12": [
       "akka",
       "akka.actor",
@@ -590,8 +813,37 @@
     "net.bytebuddy:byte-buddy-agent": [
       "net.bytebuddy.agent"
     ],
-    "net.bytebuddy:byte-buddy:jar:sources": [
-      "net.bytebuddy.build"
+    "org.checkerframework:checker-qual": [
+      "org.checkerframework.checker.builder.qual",
+      "org.checkerframework.checker.calledmethods.qual",
+      "org.checkerframework.checker.compilermsgs.qual",
+      "org.checkerframework.checker.fenum.qual",
+      "org.checkerframework.checker.formatter.qual",
+      "org.checkerframework.checker.guieffect.qual",
+      "org.checkerframework.checker.i18n.qual",
+      "org.checkerframework.checker.i18nformatter.qual",
+      "org.checkerframework.checker.index.qual",
+      "org.checkerframework.checker.initialization.qual",
+      "org.checkerframework.checker.interning.qual",
+      "org.checkerframework.checker.lock.qual",
+      "org.checkerframework.checker.mustcall.qual",
+      "org.checkerframework.checker.nullness.qual",
+      "org.checkerframework.checker.optional.qual",
+      "org.checkerframework.checker.propkey.qual",
+      "org.checkerframework.checker.regex.qual",
+      "org.checkerframework.checker.signature.qual",
+      "org.checkerframework.checker.signedness.qual",
+      "org.checkerframework.checker.tainting.qual",
+      "org.checkerframework.checker.units.qual",
+      "org.checkerframework.common.aliasing.qual",
+      "org.checkerframework.common.initializedfields.qual",
+      "org.checkerframework.common.reflection.qual",
+      "org.checkerframework.common.returnsreceiver.qual",
+      "org.checkerframework.common.subtyping.qual",
+      "org.checkerframework.common.util.report.qual",
+      "org.checkerframework.common.value.qual",
+      "org.checkerframework.dataflow.qual",
+      "org.checkerframework.framework.qual"
     ],
     "org.mockito:mockito-core": [
       "org.mockito",
@@ -733,7 +985,6 @@
       "scala.reflect",
       "scala.reflect.macros.internal",
       "scala.runtime",
-      "scala.runtime.java8",
       "scala.sys",
       "scala.sys.process",
       "scala.text",
@@ -828,6 +1079,19 @@
       "com.github.pureconfig:pureconfig-macros_2.12:jar:sources",
       "com.github.pureconfig:pureconfig_2.12",
       "com.github.pureconfig:pureconfig_2.12:jar:sources",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.findbugs:jsr305:jar:sources",
+      "com.google.code.gson:gson",
+      "com.google.code.gson:gson:jar:sources",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.errorprone:error_prone_annotations:jar:sources",
+      "com.google.guava:failureaccess",
+      "com.google.guava:failureaccess:jar:sources",
+      "com.google.guava:guava",
+      "com.google.guava:guava:jar:sources",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "com.google.j2objc:j2objc-annotations:jar:sources",
       "com.typesafe.akka:akka-actor_2.12",
       "com.typesafe.akka:akka-actor_2.12:jar:sources",
       "com.typesafe.akka:akka-http-core_2.12",
@@ -856,6 +1120,8 @@
       "net.bytebuddy:byte-buddy-agent",
       "net.bytebuddy:byte-buddy-agent:jar:sources",
       "net.bytebuddy:byte-buddy:jar:sources",
+      "org.checkerframework:checker-qual",
+      "org.checkerframework:checker-qual:jar:sources",
       "org.mockito:mockito-core",
       "org.mockito:mockito-core:jar:sources",
       "org.objenesis:objenesis",
@@ -895,5 +1161,5 @@
     ]
   },
   "services": {},
-  "version": "2"
+  "version": "3"
 }
diff --git a/examples/simple/.bazelversion b/examples/simple/.bazelversion
index 18bb418..f7ee066 100644
--- a/examples/simple/.bazelversion
+++ b/examples/simple/.bazelversion
@@ -1 +1 @@
-7.5.0
+9.0.0
diff --git a/examples/simple/BUILD b/examples/simple/BUILD
index 6666396..e2f4f5c 100644
--- a/examples/simple/BUILD
+++ b/examples/simple/BUILD
@@ -1,11 +1,13 @@
+load("@rules_android//android:rules.bzl", "android_binary", "android_library")
+
 android_library(
     name = "my_lib",
     exports = [
-        "@junit_junit//jar",  # alias to @maven//:junit_junit
         "@maven//:android_arch_lifecycle_common",
         "@maven//:android_arch_lifecycle_viewmodel",
         "@maven//:androidx_test_espresso_espresso_web",
         "@maven//:com_android_support_design",
+        "@maven//:junit_junit",
     ],
 )
 
diff --git a/examples/simple/MODULE.bazel b/examples/simple/MODULE.bazel
new file mode 100644
index 0000000..61a8f3a
--- /dev/null
+++ b/examples/simple/MODULE.bazel
@@ -0,0 +1,39 @@
+module(
+    name = "simple_example",
+    version = "0.0.0",
+)
+
+bazel_dep(name = "rules_android", version = "0.7.1")
+bazel_dep(name = "rules_jvm_external", version = "0.0.0")
+local_path_override(
+    module_name = "rules_jvm_external",
+    path = "../..",
+)
+
+# Android SDK and tools
+remote_android_extensions = use_extension("@bazel_tools//tools/android:android_extensions.bzl", "remote_android_tools_extensions")
+use_repo(remote_android_extensions, "android_gmaven_r8", "android_tools")
+
+android_sdk_repository_extension = use_extension("@rules_android//rules/android_sdk_repository:rule.bzl", "android_sdk_repository_extension")
+use_repo(android_sdk_repository_extension, "androidsdk")
+
+register_toolchains("@androidsdk//:sdk-toolchain", "@androidsdk//:all")
+
+# Maven dependencies
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+maven.install(
+    artifacts = [
+        "junit:junit:4.12",
+        "android.arch.lifecycle:common:1.1.1",
+        "android.arch.lifecycle:viewmodel:1.1.1",
+        "androidx.test.espresso:espresso-web:3.1.1",
+        "com.android.support:design:27.0.2",
+    ],
+    known_contributing_modules = ["protobuf"],
+    lock_file = "//:maven_install.json",
+    repositories = [
+        "https://maven.google.com",
+        "https://repo1.maven.org/maven2",
+    ],
+)
+use_repo(maven, "maven")
diff --git a/examples/simple/WORKSPACE b/examples/simple/WORKSPACE
deleted file mode 100644
index ff6ffa1..0000000
--- a/examples/simple/WORKSPACE
+++ /dev/null
@@ -1,38 +0,0 @@
-android_sdk_repository(
-    name = "androidsdk",
-    api_level = 28,
-)
-
-local_repository(
-    name = "rules_jvm_external",
-    path = "../../",
-)
-
-load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
-
-rules_jvm_external_deps()
-
-load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
-
-load("@rules_jvm_external//:defs.bzl", "maven_install")
-
-maven_install(
-    artifacts = [
-        "junit:junit:4.12",
-        "android.arch.lifecycle:common:1.1.1",
-        "android.arch.lifecycle:viewmodel:1.1.1",
-        "androidx.test.espresso:espresso-web:3.1.1",
-        "com.android.support:design:27.0.2",
-    ],
-    generate_compat_repositories = True,
-    repositories = [
-        "https://maven.google.com",
-        "https://repo1.maven.org/maven2",
-    ],
-)
-
-load("@maven//:compat.bzl", "compat_repositories")
-
-compat_repositories()
diff --git a/examples/simple/maven_install.json b/examples/simple/maven_install.json
new file mode 100644
index 0000000..515d0b5
--- /dev/null
+++ b/examples/simple/maven_install.json
@@ -0,0 +1,660 @@
+{
+  "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
+  "__INPUT_ARTIFACTS_HASH": {
+    "android.arch.lifecycle:common": 1809131965,
+    "android.arch.lifecycle:viewmodel": -980299814,
+    "androidx.test.espresso:espresso-web": -1507257975,
+    "com.android.support:design": 1325293832,
+    "com.google.code.findbugs:jsr305": 495355163,
+    "com.google.code.gson:gson": 597770368,
+    "com.google.errorprone:error_prone_annotations": -1035138750,
+    "com.google.guava:guava": 1943808618,
+    "com.google.j2objc:j2objc-annotations": 2003271689,
+    "junit:junit": 1849086067,
+    "repositories": 1670674627
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "android.arch.core:common": -976528634,
+    "android.arch.lifecycle:common": 707001926,
+    "android.arch.lifecycle:runtime:aar": 1390964162,
+    "android.arch.lifecycle:viewmodel:aar": 195642462,
+    "androidx.annotation:annotation": 808571803,
+    "androidx.test.espresso:espresso-core:aar": -1040991892,
+    "androidx.test.espresso:espresso-idling-resource:aar": 890144342,
+    "androidx.test.espresso:espresso-web:aar": 606773095,
+    "androidx.test:monitor:aar": 1858952985,
+    "androidx.test:runner:aar": -1539381054,
+    "com.android.support:animated-vector-drawable:aar": 330787247,
+    "com.android.support:appcompat-v7:aar": 901013038,
+    "com.android.support:design:aar": 2053560356,
+    "com.android.support:recyclerview-v7:aar": -346852359,
+    "com.android.support:support-annotations": -1743457866,
+    "com.android.support:support-compat:aar": 346390762,
+    "com.android.support:support-core-ui:aar": -1111579085,
+    "com.android.support:support-core-utils:aar": 790561591,
+    "com.android.support:support-fragment:aar": 126265076,
+    "com.android.support:support-media-compat:aar": -1220971572,
+    "com.android.support:support-v4:aar": 952747372,
+    "com.android.support:support-vector-drawable:aar": 311034736,
+    "com.android.support:transition:aar": -1334190491,
+    "com.google.code.findbugs:jsr305": 870839855,
+    "com.google.code.gson:gson": -1575757252,
+    "com.google.errorprone:error_prone_annotations": 833623751,
+    "com.google.guava:failureaccess": -1890754729,
+    "com.google.guava:guava": -163533230,
+    "com.google.guava:listenablefuture": 1079558157,
+    "com.google.j2objc:j2objc-annotations": 248818742,
+    "com.squareup:javawriter": -119987150,
+    "javax.inject:javax.inject": 698155243,
+    "junit:junit": -643342642,
+    "net.sf.kxml:kxml2": 181311874,
+    "org.ccil.cowan.tagsoup:tagsoup": -1422481173,
+    "org.checkerframework:checker-qual": -1533199059,
+    "org.hamcrest:hamcrest-core": 649657847,
+    "org.hamcrest:hamcrest-integration": 1444716520,
+    "org.hamcrest:hamcrest-library": 1747207502
+  },
+  "conflict_resolution": {
+    "com.google.errorprone:error_prone_annotations:2.5.1": "com.google.errorprone:error_prone_annotations:2.18.0"
+  },
+  "artifacts": {
+    "android.arch.core:common": {
+      "shasums": {
+        "jar": "5192934cd73df32e2c15722ed7fc488dde90baaec9ae030010dd1a80fb4e74e1"
+      },
+      "version": "1.0.0"
+    },
+    "android.arch.lifecycle:common": {
+      "shasums": {
+        "jar": "8d378e88ebd5189e09eef623414812c868fd90aa519d6160e2311fb8b81cff56"
+      },
+      "version": "1.1.1"
+    },
+    "android.arch.lifecycle:runtime:aar": {
+      "shasums": {
+        "jar": "d0b36278878c82b838acc4308595bec61a3b5f6e7f2acc34172d7e071b2cf26d"
+      },
+      "version": "1.0.3"
+    },
+    "android.arch.lifecycle:viewmodel:aar": {
+      "shasums": {
+        "jar": "7de29cfaba77d6b5d5be234c57f6812d0150d087e63941af22ba1d1f8e2bc96a"
+      },
+      "version": "1.1.1"
+    },
+    "androidx.annotation:annotation": {
+      "shasums": {
+        "jar": "0baae9755f7caf52aa80cd04324b91ba93af55d4d1d17dcc9a7b53d99ef7c016"
+      },
+      "version": "1.0.0"
+    },
+    "androidx.test.espresso:espresso-core:aar": {
+      "shasums": {
+        "jar": "5d5467544014b331299c7e6b21986096a43a8d88f7dde59d09171328c689e92c"
+      },
+      "version": "3.1.1"
+    },
+    "androidx.test.espresso:espresso-idling-resource:aar": {
+      "shasums": {
+        "jar": "624cfcf4321792bafab3d0b60f07283e8e0b0f50663bfa5d6e56c21225231e4e"
+      },
+      "version": "3.1.1"
+    },
+    "androidx.test.espresso:espresso-web:aar": {
+      "shasums": {
+        "jar": "f6483b9e36109ab4f6d1ed3e47279deacd2ecaab73ca5e869c1761d2272590e4"
+      },
+      "version": "3.1.1"
+    },
+    "androidx.test:monitor:aar": {
+      "shasums": {
+        "jar": "ecbc74d5eb4a004a676cc26b550ae94bd685a9088b84f6eea42bf320558af237"
+      },
+      "version": "1.1.1"
+    },
+    "androidx.test:runner:aar": {
+      "shasums": {
+        "jar": "b16842932ce0d59c57f6d809f84326acdf2386e1d69dbb4473f2e92bc49e185c"
+      },
+      "version": "1.1.1"
+    },
+    "com.android.support:animated-vector-drawable:aar": {
+      "shasums": {
+        "jar": "5b117a2c13a898c2a3c84c480d64edcfac2ef720aa9b742c29249fac774ffc48"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:appcompat-v7:aar": {
+      "shasums": {
+        "jar": "b2825e8b47f665d3362d8481c8d147d1af9230d16f23a2b94f6ccbc53c68cec1"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:design:aar": {
+      "shasums": {
+        "jar": "fa5c27a705310e95a8f4099c98777132ed901a0d69178942306bb34cd76f0d57"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:recyclerview-v7:aar": {
+      "shasums": {
+        "jar": "3eb953930f10941f2b0447ec123a9b03d2746a42a99c523e82c3ece3308ca70b"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:support-annotations": {
+      "shasums": {
+        "jar": "af05330d997eb92a066534dbe0a3ea24347d26d7001221092113ae02a8f233da"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:support-compat:aar": {
+      "shasums": {
+        "jar": "ed4d25d91a0b13d8b9def1c0de69ed03d7fb89d50fb37eb0e9b63b0cf7a42357"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:support-core-ui:aar": {
+      "shasums": {
+        "jar": "2284072511a95d504c074de80c82cd33724c6d2754117833b98ba3a09994163e"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:support-core-utils:aar": {
+      "shasums": {
+        "jar": "b69c6e1e7731b876b910fc7100bcadf40a57f27b32ca26b91400995542112c96"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:support-fragment:aar": {
+      "shasums": {
+        "jar": "e4358388022a2205777575a7251fe357334658e4123d5d6e3b082f5899d9b011"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:support-media-compat:aar": {
+      "shasums": {
+        "jar": "6dd9327ee9aa467cab479aad97df375072b2b6ba61eadffdaa5a88de3843c457"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:support-v4:aar": {
+      "shasums": {
+        "jar": "1b2b37169fcccfef5e563d273749e3792decdce9818bc17932403a2363f537b4"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:support-vector-drawable:aar": {
+      "shasums": {
+        "jar": "bf4f4fcbf58b1380616581224e6487c230bfdb3434ec353d4adaa4b1f4865cfa"
+      },
+      "version": "27.0.2"
+    },
+    "com.android.support:transition:aar": {
+      "shasums": {
+        "jar": "1a7db0453c1467fc8fd815e6d50ca6bb475a7a9ba6b5f3b307329688a7c62a68"
+      },
+      "version": "27.0.2"
+    },
+    "com.google.code.findbugs:jsr305": {
+      "shasums": {
+        "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7"
+      },
+      "version": "3.0.2"
+    },
+    "com.google.code.gson:gson": {
+      "shasums": {
+        "jar": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e"
+      },
+      "version": "2.8.9"
+    },
+    "com.google.errorprone:error_prone_annotations": {
+      "shasums": {
+        "jar": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae"
+      },
+      "version": "2.18.0"
+    },
+    "com.google.guava:failureaccess": {
+      "shasums": {
+        "jar": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26"
+      },
+      "version": "1.0.1"
+    },
+    "com.google.guava:guava": {
+      "shasums": {
+        "jar": "bd7fa227591fb8509677d0d1122cf95158f3b8a9f45653f58281d879f6dc48c5"
+      },
+      "version": "32.0.1-jre"
+    },
+    "com.google.guava:listenablefuture": {
+      "shasums": {
+        "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99"
+      },
+      "version": "9999.0-empty-to-avoid-conflict-with-guava"
+    },
+    "com.google.j2objc:j2objc-annotations": {
+      "shasums": {
+        "jar": "f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed"
+      },
+      "version": "2.8"
+    },
+    "com.squareup:javawriter": {
+      "shasums": {
+        "jar": "f699823d0081f69cbb676c1845ea222e0ada79bc88a53e5d22d8bd02d328f57e"
+      },
+      "version": "2.1.1"
+    },
+    "javax.inject:javax.inject": {
+      "shasums": {
+        "jar": "91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff"
+      },
+      "version": "1"
+    },
+    "junit:junit": {
+      "shasums": {
+        "jar": "59721f0805e223d84b90677887d9ff567dc534d7c502ca903c0c2b17f05c116a"
+      },
+      "version": "4.12"
+    },
+    "net.sf.kxml:kxml2": {
+      "shasums": {
+        "jar": "f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2"
+      },
+      "version": "2.3.0"
+    },
+    "org.ccil.cowan.tagsoup:tagsoup": {
+      "shasums": {
+        "jar": "10d12b82c9a58a7842765a1152a56fbbd11eac9122a621f5a86a087503297266"
+      },
+      "version": "1.2"
+    },
+    "org.checkerframework:checker-qual": {
+      "shasums": {
+        "jar": "e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1"
+      },
+      "version": "3.33.0"
+    },
+    "org.hamcrest:hamcrest-core": {
+      "shasums": {
+        "jar": "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9"
+      },
+      "version": "1.3"
+    },
+    "org.hamcrest:hamcrest-integration": {
+      "shasums": {
+        "jar": "70f418efbb506c5155da5f9a5a33262ea08a9e4d7fea186aa9015c41a7224ac2"
+      },
+      "version": "1.3"
+    },
+    "org.hamcrest:hamcrest-library": {
+      "shasums": {
+        "jar": "711d64522f9ec410983bd310934296da134be4254a125080a0416ec178dfad1c"
+      },
+      "version": "1.3"
+    }
+  },
+  "dependencies": {
+    "android.arch.lifecycle:common": [
+      "com.android.support:support-annotations"
+    ],
+    "android.arch.lifecycle:runtime:aar": [
+      "android.arch.core:common",
+      "android.arch.lifecycle:common"
+    ],
+    "android.arch.lifecycle:viewmodel:aar": [
+      "com.android.support:support-annotations"
+    ],
+    "androidx.test.espresso:espresso-core:aar": [
+      "androidx.test.espresso:espresso-idling-resource:aar",
+      "androidx.test:runner:aar",
+      "com.google.code.findbugs:jsr305",
+      "com.squareup:javawriter",
+      "javax.inject:javax.inject",
+      "org.hamcrest:hamcrest-integration",
+      "org.hamcrest:hamcrest-library"
+    ],
+    "androidx.test.espresso:espresso-web:aar": [
+      "androidx.annotation:annotation",
+      "androidx.test.espresso:espresso-core:aar",
+      "org.ccil.cowan.tagsoup:tagsoup"
+    ],
+    "androidx.test:monitor:aar": [
+      "androidx.annotation:annotation"
+    ],
+    "androidx.test:runner:aar": [
+      "androidx.annotation:annotation",
+      "androidx.test:monitor:aar",
+      "junit:junit",
+      "net.sf.kxml:kxml2"
+    ],
+    "com.android.support:animated-vector-drawable:aar": [
+      "com.android.support:support-core-ui:aar",
+      "com.android.support:support-vector-drawable:aar"
+    ],
+    "com.android.support:appcompat-v7:aar": [
+      "com.android.support:animated-vector-drawable:aar",
+      "com.android.support:support-annotations",
+      "com.android.support:support-core-utils:aar",
+      "com.android.support:support-fragment:aar",
+      "com.android.support:support-vector-drawable:aar"
+    ],
+    "com.android.support:design:aar": [
+      "com.android.support:appcompat-v7:aar",
+      "com.android.support:recyclerview-v7:aar",
+      "com.android.support:support-v4:aar",
+      "com.android.support:transition:aar"
+    ],
+    "com.android.support:recyclerview-v7:aar": [
+      "com.android.support:support-annotations",
+      "com.android.support:support-compat:aar",
+      "com.android.support:support-core-ui:aar"
+    ],
+    "com.android.support:support-compat:aar": [
+      "android.arch.lifecycle:runtime:aar",
+      "com.android.support:support-annotations"
+    ],
+    "com.android.support:support-core-ui:aar": [
+      "com.android.support:support-annotations",
+      "com.android.support:support-compat:aar"
+    ],
+    "com.android.support:support-core-utils:aar": [
+      "com.android.support:support-annotations",
+      "com.android.support:support-compat:aar"
+    ],
+    "com.android.support:support-fragment:aar": [
+      "com.android.support:support-annotations",
+      "com.android.support:support-compat:aar",
+      "com.android.support:support-core-ui:aar",
+      "com.android.support:support-core-utils:aar"
+    ],
+    "com.android.support:support-media-compat:aar": [
+      "com.android.support:support-annotations",
+      "com.android.support:support-compat:aar"
+    ],
+    "com.android.support:support-v4:aar": [
+      "com.android.support:support-compat:aar",
+      "com.android.support:support-core-ui:aar",
+      "com.android.support:support-core-utils:aar",
+      "com.android.support:support-fragment:aar",
+      "com.android.support:support-media-compat:aar"
+    ],
+    "com.android.support:support-vector-drawable:aar": [
+      "com.android.support:support-annotations",
+      "com.android.support:support-compat:aar"
+    ],
+    "com.android.support:transition:aar": [
+      "com.android.support:support-annotations",
+      "com.android.support:support-compat:aar"
+    ],
+    "com.google.guava:guava": [
+      "com.google.code.findbugs:jsr305",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:failureaccess",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "org.checkerframework:checker-qual"
+    ],
+    "junit:junit": [
+      "org.hamcrest:hamcrest-core"
+    ],
+    "org.hamcrest:hamcrest-integration": [
+      "org.hamcrest:hamcrest-library"
+    ],
+    "org.hamcrest:hamcrest-library": [
+      "org.hamcrest:hamcrest-core"
+    ]
+  },
+  "packages": {
+    "android.arch.core:common": [
+      "android.arch.core.internal"
+    ],
+    "android.arch.lifecycle:common": [
+      "android.arch.lifecycle"
+    ],
+    "androidx.annotation:annotation": [
+      "androidx.annotation"
+    ],
+    "com.android.support:support-annotations": [
+      "android.support.annotation"
+    ],
+    "com.google.code.findbugs:jsr305": [
+      "javax.annotation",
+      "javax.annotation.concurrent",
+      "javax.annotation.meta"
+    ],
+    "com.google.code.gson:gson": [
+      "com.google.gson",
+      "com.google.gson.annotations",
+      "com.google.gson.internal",
+      "com.google.gson.internal.bind",
+      "com.google.gson.internal.bind.util",
+      "com.google.gson.internal.reflect",
+      "com.google.gson.internal.sql",
+      "com.google.gson.reflect",
+      "com.google.gson.stream"
+    ],
+    "com.google.errorprone:error_prone_annotations": [
+      "com.google.errorprone.annotations",
+      "com.google.errorprone.annotations.concurrent"
+    ],
+    "com.google.guava:failureaccess": [
+      "com.google.common.util.concurrent.internal"
+    ],
+    "com.google.guava:guava": [
+      "com.google.common.annotations",
+      "com.google.common.base",
+      "com.google.common.base.internal",
+      "com.google.common.cache",
+      "com.google.common.collect",
+      "com.google.common.escape",
+      "com.google.common.eventbus",
+      "com.google.common.graph",
+      "com.google.common.hash",
+      "com.google.common.html",
+      "com.google.common.io",
+      "com.google.common.math",
+      "com.google.common.net",
+      "com.google.common.primitives",
+      "com.google.common.reflect",
+      "com.google.common.util.concurrent",
+      "com.google.common.xml",
+      "com.google.thirdparty.publicsuffix"
+    ],
+    "com.google.j2objc:j2objc-annotations": [
+      "com.google.j2objc.annotations"
+    ],
+    "com.squareup:javawriter": [
+      "com.squareup.javawriter"
+    ],
+    "javax.inject:javax.inject": [
+      "javax.inject"
+    ],
+    "junit:junit": [
+      "junit.extensions",
+      "junit.framework",
+      "junit.runner",
+      "junit.textui",
+      "org.junit",
+      "org.junit.experimental",
+      "org.junit.experimental.categories",
+      "org.junit.experimental.max",
+      "org.junit.experimental.results",
+      "org.junit.experimental.runners",
+      "org.junit.experimental.theories",
+      "org.junit.experimental.theories.internal",
+      "org.junit.experimental.theories.suppliers",
+      "org.junit.internal",
+      "org.junit.internal.builders",
+      "org.junit.internal.matchers",
+      "org.junit.internal.requests",
+      "org.junit.internal.runners",
+      "org.junit.internal.runners.model",
+      "org.junit.internal.runners.rules",
+      "org.junit.internal.runners.statements",
+      "org.junit.matchers",
+      "org.junit.rules",
+      "org.junit.runner",
+      "org.junit.runner.manipulation",
+      "org.junit.runner.notification",
+      "org.junit.runners",
+      "org.junit.runners.model",
+      "org.junit.runners.parameterized",
+      "org.junit.validator"
+    ],
+    "net.sf.kxml:kxml2": [
+      "org.kxml2.io",
+      "org.kxml2.kdom",
+      "org.kxml2.wap",
+      "org.kxml2.wap.syncml",
+      "org.kxml2.wap.wml",
+      "org.kxml2.wap.wv",
+      "org.xmlpull.v1"
+    ],
+    "org.ccil.cowan.tagsoup:tagsoup": [
+      "org.ccil.cowan.tagsoup",
+      "org.ccil.cowan.tagsoup.jaxp"
+    ],
+    "org.checkerframework:checker-qual": [
+      "org.checkerframework.checker.builder.qual",
+      "org.checkerframework.checker.calledmethods.qual",
+      "org.checkerframework.checker.compilermsgs.qual",
+      "org.checkerframework.checker.fenum.qual",
+      "org.checkerframework.checker.formatter.qual",
+      "org.checkerframework.checker.guieffect.qual",
+      "org.checkerframework.checker.i18n.qual",
+      "org.checkerframework.checker.i18nformatter.qual",
+      "org.checkerframework.checker.index.qual",
+      "org.checkerframework.checker.initialization.qual",
+      "org.checkerframework.checker.interning.qual",
+      "org.checkerframework.checker.lock.qual",
+      "org.checkerframework.checker.mustcall.qual",
+      "org.checkerframework.checker.nullness.qual",
+      "org.checkerframework.checker.optional.qual",
+      "org.checkerframework.checker.propkey.qual",
+      "org.checkerframework.checker.regex.qual",
+      "org.checkerframework.checker.signature.qual",
+      "org.checkerframework.checker.signedness.qual",
+      "org.checkerframework.checker.tainting.qual",
+      "org.checkerframework.checker.units.qual",
+      "org.checkerframework.common.aliasing.qual",
+      "org.checkerframework.common.initializedfields.qual",
+      "org.checkerframework.common.reflection.qual",
+      "org.checkerframework.common.returnsreceiver.qual",
+      "org.checkerframework.common.subtyping.qual",
+      "org.checkerframework.common.util.report.qual",
+      "org.checkerframework.common.value.qual",
+      "org.checkerframework.dataflow.qual",
+      "org.checkerframework.framework.qual"
+    ],
+    "org.hamcrest:hamcrest-core": [
+      "org.hamcrest",
+      "org.hamcrest.core",
+      "org.hamcrest.internal"
+    ],
+    "org.hamcrest:hamcrest-integration": [
+      "org.hamcrest",
+      "org.hamcrest.integration"
+    ],
+    "org.hamcrest:hamcrest-library": [
+      "org.hamcrest",
+      "org.hamcrest.beans",
+      "org.hamcrest.collection",
+      "org.hamcrest.number",
+      "org.hamcrest.object",
+      "org.hamcrest.text",
+      "org.hamcrest.xml"
+    ]
+  },
+  "repositories": {
+    "https://maven.google.com/": [
+      "android.arch.core:common",
+      "android.arch.lifecycle:common",
+      "android.arch.lifecycle:runtime:aar",
+      "android.arch.lifecycle:viewmodel:aar",
+      "androidx.annotation:annotation",
+      "androidx.test.espresso:espresso-core:aar",
+      "androidx.test.espresso:espresso-idling-resource:aar",
+      "androidx.test.espresso:espresso-web:aar",
+      "androidx.test:monitor:aar",
+      "androidx.test:runner:aar",
+      "com.android.support:animated-vector-drawable:aar",
+      "com.android.support:appcompat-v7:aar",
+      "com.android.support:design:aar",
+      "com.android.support:recyclerview-v7:aar",
+      "com.android.support:support-annotations",
+      "com.android.support:support-compat:aar",
+      "com.android.support:support-core-ui:aar",
+      "com.android.support:support-core-utils:aar",
+      "com.android.support:support-fragment:aar",
+      "com.android.support:support-media-compat:aar",
+      "com.android.support:support-v4:aar",
+      "com.android.support:support-vector-drawable:aar",
+      "com.android.support:transition:aar",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:failureaccess",
+      "com.google.guava:guava",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "com.squareup:javawriter",
+      "javax.inject:javax.inject",
+      "junit:junit",
+      "net.sf.kxml:kxml2",
+      "org.ccil.cowan.tagsoup:tagsoup",
+      "org.checkerframework:checker-qual",
+      "org.hamcrest:hamcrest-core",
+      "org.hamcrest:hamcrest-integration",
+      "org.hamcrest:hamcrest-library"
+    ],
+    "https://repo1.maven.org/maven2/": [
+      "android.arch.core:common",
+      "android.arch.lifecycle:common",
+      "android.arch.lifecycle:runtime:aar",
+      "android.arch.lifecycle:viewmodel:aar",
+      "androidx.annotation:annotation",
+      "androidx.test.espresso:espresso-core:aar",
+      "androidx.test.espresso:espresso-idling-resource:aar",
+      "androidx.test.espresso:espresso-web:aar",
+      "androidx.test:monitor:aar",
+      "androidx.test:runner:aar",
+      "com.android.support:animated-vector-drawable:aar",
+      "com.android.support:appcompat-v7:aar",
+      "com.android.support:design:aar",
+      "com.android.support:recyclerview-v7:aar",
+      "com.android.support:support-annotations",
+      "com.android.support:support-compat:aar",
+      "com.android.support:support-core-ui:aar",
+      "com.android.support:support-core-utils:aar",
+      "com.android.support:support-fragment:aar",
+      "com.android.support:support-media-compat:aar",
+      "com.android.support:support-v4:aar",
+      "com.android.support:support-vector-drawable:aar",
+      "com.android.support:transition:aar",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:failureaccess",
+      "com.google.guava:guava",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "com.squareup:javawriter",
+      "javax.inject:javax.inject",
+      "junit:junit",
+      "net.sf.kxml:kxml2",
+      "org.ccil.cowan.tagsoup:tagsoup",
+      "org.checkerframework:checker-qual",
+      "org.hamcrest:hamcrest-core",
+      "org.hamcrest:hamcrest-integration",
+      "org.hamcrest:hamcrest-library"
+    ]
+  },
+  "services": {
+    "net.sf.kxml:kxml2": {
+      "org.xmlpull.v1.XmlPullParserFactory": [
+        "org.kxml2.io.KXmlParser,org.kxml2.io.KXmlSerializer"
+      ]
+    }
+  },
+  "version": "3"
+}
diff --git a/examples/spring_boot/.bazelversion b/examples/spring_boot/.bazelversion
index 18bb418..f7ee066 100644
--- a/examples/spring_boot/.bazelversion
+++ b/examples/spring_boot/.bazelversion
@@ -1 +1 @@
-7.5.0
+9.0.0
diff --git a/examples/spring_boot/WORKSPACE b/examples/spring_boot/MODULE.bazel
similarity index 67%
rename from examples/spring_boot/WORKSPACE
rename to examples/spring_boot/MODULE.bazel
index d2e3bc4..f655ce6 100644
--- a/examples/spring_boot/WORKSPACE
+++ b/examples/spring_boot/MODULE.bazel
@@ -1,19 +1,18 @@
-local_repository(
-    name = "rules_jvm_external",
-    path = "../../",
+module(
+    name = "spring_boot_example",
+    version = "0.0.0",
 )
 
-load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
+bazel_dep(name = "rules_java", version = "9.3.0")
+bazel_dep(name = "rules_jvm_external", version = "0.0.0")
+local_path_override(
+    module_name = "rules_jvm_external",
+    path = "../..",
+)
 
-rules_jvm_external_deps()
-
-load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
-
-rules_jvm_external_setup()
-
-load("@rules_jvm_external//:defs.bzl", "maven_install")
-
-maven_install(
+# Maven dependencies
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+maven.install(
     artifacts = [
         # log4j deps are added only for https://github.com/bazelbuild/rules_jvm_external/issues/630
         "org.apache.logging.log4j:log4j-api:2.16.0",
@@ -30,13 +29,11 @@
         "org.springframework:spring-web:5.1.5.RELEASE",
     ],
     fetch_sources = True,
-    maven_install_json = "//:maven_install.json",
+    known_contributing_modules = ["protobuf"],
+    lock_file = "//:maven_install.json",
     repositories = [
         "https://repo1.maven.org/maven2",
     ],
     version_conflict_policy = "pinned",
 )
-
-load("@maven//:defs.bzl", "pinned_maven_install")
-
-pinned_maven_install()
+use_repo(maven, "maven")
diff --git a/examples/spring_boot/maven_install.json b/examples/spring_boot/maven_install.json
index 6811b7c..1335d0c 100644
--- a/examples/spring_boot/maven_install.json
+++ b/examples/spring_boot/maven_install.json
@@ -1,7 +1,121 @@
 {
   "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": -835810547,
-  "__RESOLVED_ARTIFACTS_HASH": 1956461926,
+  "__INPUT_ARTIFACTS_HASH": {
+    "com.google.code.findbugs:jsr305": 495355163,
+    "com.google.code.gson:gson": 597770368,
+    "com.google.errorprone:error_prone_annotations": -1035138750,
+    "com.google.guava:guava": 1943808618,
+    "com.google.j2objc:j2objc-annotations": 2003271689,
+    "org.apache.logging.log4j:log4j-api": 673673923,
+    "org.apache.logging.log4j:log4j-to-slf4j": 1273794486,
+    "org.hamcrest:hamcrest-library": -1383845358,
+    "org.springframework.boot:spring-boot": 326110032,
+    "org.springframework.boot:spring-boot-autoconfigure": 278070470,
+    "org.springframework.boot:spring-boot-starter-web": -1061245017,
+    "org.springframework.boot:spring-boot-test": -2011098977,
+    "org.springframework.boot:spring-boot-test-autoconfigure": -11725867,
+    "org.springframework:spring-beans": 1068430120,
+    "org.springframework:spring-context": 405791572,
+    "org.springframework:spring-test": -1597230143,
+    "org.springframework:spring-web": 114709369,
+    "repositories": -1949687017
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "ch.qos.logback:logback-classic": 1705611486,
+    "ch.qos.logback:logback-classic:jar:sources": 563614625,
+    "ch.qos.logback:logback-core": -421451688,
+    "ch.qos.logback:logback-core:jar:sources": -178309376,
+    "com.fasterxml.jackson.core:jackson-annotations": 1723324878,
+    "com.fasterxml.jackson.core:jackson-annotations:jar:sources": -910305735,
+    "com.fasterxml.jackson.core:jackson-core": 216667274,
+    "com.fasterxml.jackson.core:jackson-core:jar:sources": -1700413540,
+    "com.fasterxml.jackson.core:jackson-databind": -1534251498,
+    "com.fasterxml.jackson.core:jackson-databind:jar:sources": 1381922396,
+    "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": -1863378728,
+    "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:sources": 720455295,
+    "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": 1398002482,
+    "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:sources": 1978591429,
+    "com.fasterxml.jackson.module:jackson-module-parameter-names": 1117035400,
+    "com.fasterxml.jackson.module:jackson-module-parameter-names:jar:sources": 88141176,
+    "com.fasterxml:classmate": -1773139206,
+    "com.fasterxml:classmate:jar:sources": 846259226,
+    "com.google.code.findbugs:jsr305": 870839855,
+    "com.google.code.findbugs:jsr305:jar:sources": -935881202,
+    "com.google.code.gson:gson": -1575757252,
+    "com.google.code.gson:gson:jar:sources": -350708227,
+    "com.google.errorprone:error_prone_annotations": 967586345,
+    "com.google.errorprone:error_prone_annotations:jar:sources": -1304692732,
+    "com.google.guava:failureaccess": -1890754729,
+    "com.google.guava:failureaccess:jar:sources": 1500322647,
+    "com.google.guava:guava": -2035578005,
+    "com.google.guava:guava:jar:sources": 2103972560,
+    "com.google.guava:listenablefuture": 1079558157,
+    "com.google.j2objc:j2objc-annotations": 248818742,
+    "com.google.j2objc:j2objc-annotations:jar:sources": -378364028,
+    "javax.annotation:javax.annotation-api": -1009230154,
+    "javax.annotation:javax.annotation-api:jar:sources": -1912277688,
+    "javax.validation:validation-api": -1925989691,
+    "javax.validation:validation-api:jar:sources": -1632205829,
+    "org.apache.logging.log4j:log4j-api": 1938301611,
+    "org.apache.logging.log4j:log4j-api:jar:sources": -1814445120,
+    "org.apache.logging.log4j:log4j-to-slf4j": -1286339471,
+    "org.apache.logging.log4j:log4j-to-slf4j:jar:sources": -792217426,
+    "org.apache.tomcat.embed:tomcat-embed-core": 1571674223,
+    "org.apache.tomcat.embed:tomcat-embed-core:jar:sources": -591232648,
+    "org.apache.tomcat.embed:tomcat-embed-el": 1869592561,
+    "org.apache.tomcat.embed:tomcat-embed-el:jar:sources": -65765420,
+    "org.apache.tomcat.embed:tomcat-embed-websocket": -1584940697,
+    "org.apache.tomcat.embed:tomcat-embed-websocket:jar:sources": 923653276,
+    "org.apache.tomcat:tomcat-annotations-api": 1224758162,
+    "org.apache.tomcat:tomcat-annotations-api:jar:sources": 1180986566,
+    "org.checkerframework:checker-qual": -1533199059,
+    "org.checkerframework:checker-qual:jar:sources": -1750922234,
+    "org.hamcrest:hamcrest-core": 649657847,
+    "org.hamcrest:hamcrest-core:jar:sources": -1646511374,
+    "org.hamcrest:hamcrest-library": 1747207502,
+    "org.hamcrest:hamcrest-library:jar:sources": 896267254,
+    "org.hibernate.validator:hibernate-validator": 449533163,
+    "org.hibernate.validator:hibernate-validator:jar:sources": 625182784,
+    "org.jboss.logging:jboss-logging": -983550463,
+    "org.jboss.logging:jboss-logging:jar:sources": 708347488,
+    "org.slf4j:jul-to-slf4j": 33525118,
+    "org.slf4j:jul-to-slf4j:jar:sources": -1699967259,
+    "org.slf4j:slf4j-api": 78054556,
+    "org.slf4j:slf4j-api:jar:sources": 423020734,
+    "org.springframework.boot:spring-boot": -494831200,
+    "org.springframework.boot:spring-boot-autoconfigure": -735375751,
+    "org.springframework.boot:spring-boot-autoconfigure:jar:sources": 2037480413,
+    "org.springframework.boot:spring-boot-starter": -522590840,
+    "org.springframework.boot:spring-boot-starter-json": -1480710212,
+    "org.springframework.boot:spring-boot-starter-logging": 1421244493,
+    "org.springframework.boot:spring-boot-starter-tomcat": -538700186,
+    "org.springframework.boot:spring-boot-starter-web": -148719678,
+    "org.springframework.boot:spring-boot-test": 1462672623,
+    "org.springframework.boot:spring-boot-test-autoconfigure": 2112143108,
+    "org.springframework.boot:spring-boot-test-autoconfigure:jar:sources": -327607113,
+    "org.springframework.boot:spring-boot-test:jar:sources": -59323559,
+    "org.springframework.boot:spring-boot:jar:sources": 976203026,
+    "org.springframework:spring-aop": 1756513033,
+    "org.springframework:spring-aop:jar:sources": -1679234963,
+    "org.springframework:spring-beans": 584730626,
+    "org.springframework:spring-beans:jar:sources": -1014524861,
+    "org.springframework:spring-context": -1362134068,
+    "org.springframework:spring-context:jar:sources": 1725853779,
+    "org.springframework:spring-core": -997258323,
+    "org.springframework:spring-core:jar:sources": 563828419,
+    "org.springframework:spring-expression": 443765561,
+    "org.springframework:spring-expression:jar:sources": 250986934,
+    "org.springframework:spring-jcl": 1589093230,
+    "org.springframework:spring-jcl:jar:sources": -297914141,
+    "org.springframework:spring-test": -1436056067,
+    "org.springframework:spring-test:jar:sources": 939402491,
+    "org.springframework:spring-web": 1712508267,
+    "org.springframework:spring-web:jar:sources": 971167044,
+    "org.springframework:spring-webmvc": -1705907438,
+    "org.springframework:spring-webmvc:jar:sources": 1743624303,
+    "org.yaml:snakeyaml": -694097727,
+    "org.yaml:snakeyaml:jar:sources": -976574534
+  },
   "artifacts": {
     "ch.qos.logback:logback-classic": {
       "shasums": {
@@ -66,6 +180,54 @@
       },
       "version": "1.4.0"
     },
+    "com.google.code.findbugs:jsr305": {
+      "shasums": {
+        "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7",
+        "sources": "1c9e85e272d0708c6a591dc74828c71603053b48cc75ae83cce56912a2aa063b"
+      },
+      "version": "3.0.2"
+    },
+    "com.google.code.gson:gson": {
+      "shasums": {
+        "jar": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e",
+        "sources": "ba5bddb1a89eb721fcca39f3b34294532060f851e2407a82d82134a41eec4719"
+      },
+      "version": "2.8.9"
+    },
+    "com.google.errorprone:error_prone_annotations": {
+      "shasums": {
+        "jar": "ff80626baaf12a09342befd4e84cba9d50662f5fcd7f7a9b3490a6b7cf87e66c",
+        "sources": "bf08616e340f5e2ef50aaa84aea8baa086fd7bb2ad310501ff4e88ec77f8f31a"
+      },
+      "version": "2.5.1"
+    },
+    "com.google.guava:failureaccess": {
+      "shasums": {
+        "jar": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26",
+        "sources": "092346eebbb1657b51aa7485a246bf602bb464cc0b0e2e1c7e7201fadce1e98f"
+      },
+      "version": "1.0.1"
+    },
+    "com.google.guava:guava": {
+      "shasums": {
+        "jar": "bd7fa227591fb8509677d0d1122cf95158f3b8a9f45653f58281d879f6dc48c5",
+        "sources": "9105dfc522fb440b39ff8da07cc56aacf65a9f765044c7803a9f32e36e05a22b"
+      },
+      "version": "32.0.1-jre"
+    },
+    "com.google.guava:listenablefuture": {
+      "shasums": {
+        "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99"
+      },
+      "version": "9999.0-empty-to-avoid-conflict-with-guava"
+    },
+    "com.google.j2objc:j2objc-annotations": {
+      "shasums": {
+        "jar": "f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed",
+        "sources": "7413eed41f111453a08837f5ac680edded7faed466cbd35745e402e13f4cc3f5"
+      },
+      "version": "2.8"
+    },
     "javax.annotation:javax.annotation-api": {
       "shasums": {
         "jar": "e04ba5195bcd555dc95650f7cc614d151e4bcd52d29a10b8aa2197f3ab89ab9b",
@@ -122,6 +284,13 @@
       },
       "version": "9.0.16"
     },
+    "org.checkerframework:checker-qual": {
+      "shasums": {
+        "jar": "e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1",
+        "sources": "443fa6151982bb4c6ce62e2938f53660085b13a7dceb517202777b87d0dea2c7"
+      },
+      "version": "3.33.0"
+    },
     "org.hamcrest:hamcrest-core": {
       "shasums": {
         "jar": "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9",
@@ -315,6 +484,14 @@
       "com.fasterxml.jackson.core:jackson-core",
       "com.fasterxml.jackson.core:jackson-databind"
     ],
+    "com.google.guava:guava": [
+      "com.google.code.findbugs:jsr305",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:failureaccess",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "org.checkerframework:checker-qual"
+    ],
     "org.apache.logging.log4j:log4j-to-slf4j": [
       "org.apache.logging.log4j:log4j-api",
       "org.slf4j:slf4j-api"
@@ -545,6 +722,52 @@
       "com.fasterxml.classmate.types",
       "com.fasterxml.classmate.util"
     ],
+    "com.google.code.findbugs:jsr305": [
+      "javax.annotation",
+      "javax.annotation.concurrent",
+      "javax.annotation.meta"
+    ],
+    "com.google.code.gson:gson": [
+      "com.google.gson",
+      "com.google.gson.annotations",
+      "com.google.gson.internal",
+      "com.google.gson.internal.bind",
+      "com.google.gson.internal.bind.util",
+      "com.google.gson.internal.reflect",
+      "com.google.gson.internal.sql",
+      "com.google.gson.reflect",
+      "com.google.gson.stream"
+    ],
+    "com.google.errorprone:error_prone_annotations": [
+      "com.google.errorprone.annotations",
+      "com.google.errorprone.annotations.concurrent"
+    ],
+    "com.google.guava:failureaccess": [
+      "com.google.common.util.concurrent.internal"
+    ],
+    "com.google.guava:guava": [
+      "com.google.common.annotations",
+      "com.google.common.base",
+      "com.google.common.base.internal",
+      "com.google.common.cache",
+      "com.google.common.collect",
+      "com.google.common.escape",
+      "com.google.common.eventbus",
+      "com.google.common.graph",
+      "com.google.common.hash",
+      "com.google.common.html",
+      "com.google.common.io",
+      "com.google.common.math",
+      "com.google.common.net",
+      "com.google.common.primitives",
+      "com.google.common.reflect",
+      "com.google.common.util.concurrent",
+      "com.google.common.xml",
+      "com.google.thirdparty.publicsuffix"
+    ],
+    "com.google.j2objc:j2objc-annotations": [
+      "com.google.j2objc.annotations"
+    ],
     "javax.annotation:javax.annotation-api": [
       "javax.annotation",
       "javax.annotation.security",
@@ -675,6 +898,38 @@
       "javax.annotation.security",
       "javax.annotation.sql"
     ],
+    "org.checkerframework:checker-qual": [
+      "org.checkerframework.checker.builder.qual",
+      "org.checkerframework.checker.calledmethods.qual",
+      "org.checkerframework.checker.compilermsgs.qual",
+      "org.checkerframework.checker.fenum.qual",
+      "org.checkerframework.checker.formatter.qual",
+      "org.checkerframework.checker.guieffect.qual",
+      "org.checkerframework.checker.i18n.qual",
+      "org.checkerframework.checker.i18nformatter.qual",
+      "org.checkerframework.checker.index.qual",
+      "org.checkerframework.checker.initialization.qual",
+      "org.checkerframework.checker.interning.qual",
+      "org.checkerframework.checker.lock.qual",
+      "org.checkerframework.checker.mustcall.qual",
+      "org.checkerframework.checker.nullness.qual",
+      "org.checkerframework.checker.optional.qual",
+      "org.checkerframework.checker.propkey.qual",
+      "org.checkerframework.checker.regex.qual",
+      "org.checkerframework.checker.signature.qual",
+      "org.checkerframework.checker.signedness.qual",
+      "org.checkerframework.checker.tainting.qual",
+      "org.checkerframework.checker.units.qual",
+      "org.checkerframework.common.aliasing.qual",
+      "org.checkerframework.common.initializedfields.qual",
+      "org.checkerframework.common.reflection.qual",
+      "org.checkerframework.common.returnsreceiver.qual",
+      "org.checkerframework.common.subtyping.qual",
+      "org.checkerframework.common.util.report.qual",
+      "org.checkerframework.common.value.qual",
+      "org.checkerframework.dataflow.qual",
+      "org.checkerframework.framework.qual"
+    ],
     "org.hamcrest:hamcrest-core": [
       "org.hamcrest",
       "org.hamcrest.core",
@@ -1299,6 +1554,19 @@
       "com.fasterxml.jackson.module:jackson-module-parameter-names:jar:sources",
       "com.fasterxml:classmate",
       "com.fasterxml:classmate:jar:sources",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.findbugs:jsr305:jar:sources",
+      "com.google.code.gson:gson",
+      "com.google.code.gson:gson:jar:sources",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.errorprone:error_prone_annotations:jar:sources",
+      "com.google.guava:failureaccess",
+      "com.google.guava:failureaccess:jar:sources",
+      "com.google.guava:guava",
+      "com.google.guava:guava:jar:sources",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "com.google.j2objc:j2objc-annotations:jar:sources",
       "javax.annotation:javax.annotation-api",
       "javax.annotation:javax.annotation-api:jar:sources",
       "javax.validation:validation-api",
@@ -1315,6 +1583,8 @@
       "org.apache.tomcat.embed:tomcat-embed-websocket:jar:sources",
       "org.apache.tomcat:tomcat-annotations-api",
       "org.apache.tomcat:tomcat-annotations-api:jar:sources",
+      "org.checkerframework:checker-qual",
+      "org.checkerframework:checker-qual:jar:sources",
       "org.hamcrest:hamcrest-core",
       "org.hamcrest:hamcrest-core:jar:sources",
       "org.hamcrest:hamcrest-library",
@@ -1487,5 +1757,5 @@
       ]
     }
   },
-  "version": "2"
+  "version": "3"
 }
diff --git a/examples/spring_boot/src/main/java/hello/BUILD b/examples/spring_boot/src/main/java/hello/BUILD
index 81b321d..ab9595b 100644
--- a/examples/spring_boot/src/main/java/hello/BUILD
+++ b/examples/spring_boot/src/main/java/hello/BUILD
@@ -1,3 +1,5 @@
+load("@rules_java//java:defs.bzl", "java_binary", "java_library")
+
 java_library(
     name = "lib",
     srcs = glob(["*.java"]),
diff --git a/examples/spring_boot/src/test/java/hello/BUILD b/examples/spring_boot/src/test/java/hello/BUILD
index 17e2d8c..70e65b8 100644
--- a/examples/spring_boot/src/test/java/hello/BUILD
+++ b/examples/spring_boot/src/test/java/hello/BUILD
@@ -1,3 +1,5 @@
+load("@rules_java//java:defs.bzl", "java_test")
+
 java_test(
     name = "HelloControllerTest",
     srcs = ["HelloControllerTest.java"],
diff --git a/maven_install.json b/maven_install.json
index 31717d8..437a5e4 100644
--- a/maven_install.json
+++ b/maven_install.json
@@ -1,25 +1,19 @@
 {
   "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
   "__INPUT_ARTIFACTS_HASH": {
-    "com.google.code.gson:gson": -1146526807,
-    "com.google.errorprone:error_prone_annotations": -571311395,
     "com.google.guava:guava": -1756621521,
-    "com.google.protobuf:protobuf-java": -154599721,
-    "com.google.protobuf:protobuf-java-util": -1033086717,
+    "com.google.protobuf:protobuf-java": 1906581597,
     "io.netty:netty-tcnative-boringssl-static": -1979050407,
     "org.hamcrest:hamcrest-core": 466791695,
     "repositories": -1949687017
   },
   "__RESOLVED_ARTIFACTS_HASH": {
-    "com.google.code.findbugs:jsr305": 870839855,
-    "com.google.code.gson:gson": 50257904,
     "com.google.errorprone:error_prone_annotations": 1527418394,
     "com.google.guava:failureaccess": 1715931538,
     "com.google.guava:guava": -1587873388,
     "com.google.guava:listenablefuture": 1079558157,
     "com.google.j2objc:j2objc-annotations": -1008747351,
-    "com.google.protobuf:protobuf-java": 657144169,
-    "com.google.protobuf:protobuf-java-util": 291568724,
+    "com.google.protobuf:protobuf-java": 1957269082,
     "io.netty:netty-tcnative-boringssl-static": 786460467,
     "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64": -151974322,
     "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64": -1831640381,
@@ -31,22 +25,7 @@
     "org.hamcrest:hamcrest-core": 511008887,
     "org.jspecify:jspecify": 117231129
   },
-  "conflict_resolution": {
-    "com.google.errorprone:error_prone_annotations:2.23.0": "com.google.errorprone:error_prone_annotations:2.41.0"
-  },
   "artifacts": {
-    "com.google.code.findbugs:jsr305": {
-      "shasums": {
-        "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7"
-      },
-      "version": "3.0.2"
-    },
-    "com.google.code.gson:gson": {
-      "shasums": {
-        "jar": "4241c14a7727c34feea6507ec801318a3d4a90f070e4525681079fb94ee4c593"
-      },
-      "version": "2.10.1"
-    },
     "com.google.errorprone:error_prone_annotations": {
       "shasums": {
         "jar": "a56e782b5b50811ac204073a355a21d915a2107fce13ec711331ad036f660fcc"
@@ -79,15 +58,9 @@
     },
     "com.google.protobuf:protobuf-java": {
       "shasums": {
-        "jar": "68773dccd6cc5835af7a748759cecf5ea20ff083136e3847fbe94572b8e0ed6a"
+        "jar": "3ca892fd6ea8b37d01bb6917dbc0bf2637548b756753f65a28d4f1d4d982347f"
       },
-      "version": "4.31.0"
-    },
-    "com.google.protobuf:protobuf-java-util": {
-      "shasums": {
-        "jar": "a2665294d3e4675482bde593df8283f8c965f0207785e8e9b223f790644f5b08"
-      },
-      "version": "4.27.2"
+      "version": "4.33.4"
     },
     "io.netty:netty-tcnative-boringssl-static": {
       "shasums": {
@@ -133,14 +106,6 @@
       "com.google.j2objc:j2objc-annotations",
       "org.jspecify:jspecify"
     ],
-    "com.google.protobuf:protobuf-java-util": [
-      "com.google.code.findbugs:jsr305",
-      "com.google.code.gson:gson",
-      "com.google.errorprone:error_prone_annotations",
-      "com.google.guava:guava",
-      "com.google.j2objc:j2objc-annotations",
-      "com.google.protobuf:protobuf-java"
-    ],
     "io.netty:netty-tcnative-boringssl-static": [
       "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64",
       "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64",
@@ -189,22 +154,6 @@
     ]
   },
   "packages": {
-    "com.google.code.findbugs:jsr305": [
-      "javax.annotation",
-      "javax.annotation.concurrent",
-      "javax.annotation.meta"
-    ],
-    "com.google.code.gson:gson": [
-      "com.google.gson",
-      "com.google.gson.annotations",
-      "com.google.gson.internal",
-      "com.google.gson.internal.bind",
-      "com.google.gson.internal.bind.util",
-      "com.google.gson.internal.reflect",
-      "com.google.gson.internal.sql",
-      "com.google.gson.reflect",
-      "com.google.gson.stream"
-    ],
     "com.google.errorprone:error_prone_annotations": [
       "com.google.errorprone.annotations",
       "com.google.errorprone.annotations.concurrent"
@@ -239,9 +188,6 @@
       "com.google.protobuf",
       "com.google.protobuf.compiler"
     ],
-    "com.google.protobuf:protobuf-java-util": [
-      "com.google.protobuf.util"
-    ],
     "io.netty:netty-tcnative-classes": [
       "io.netty.internal.tcnative"
     ],
@@ -267,15 +213,12 @@
   },
   "repositories": {
     "https://repo1.maven.org/maven2/": [
-      "com.google.code.findbugs:jsr305",
-      "com.google.code.gson:gson",
       "com.google.errorprone:error_prone_annotations",
       "com.google.guava:failureaccess",
       "com.google.guava:guava",
       "com.google.guava:listenablefuture",
       "com.google.j2objc:j2objc-annotations",
       "com.google.protobuf:protobuf-java",
-      "com.google.protobuf:protobuf-java-util",
       "io.netty:netty-tcnative-boringssl-static",
       "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64",
       "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64",
diff --git a/private/coursier_utilities.bzl b/private/coursier_utilities.bzl
index 169ee88..2113f28 100644
--- a/private/coursier_utilities.bzl
+++ b/private/coursier_utilities.bzl
@@ -15,9 +15,6 @@
 # For example, some jars have the type "eclipse-plugin", and Coursier would not
 # download them if it's not asked to to resolve "eclipse-plugin".
 
-# Do not load from external dependencies since this is called from the `repositories.bzl` file
-# TODO: lift this restriction once we drop workspace-based build support
-
 load("//private/lib:coordinates.bzl", "unpack_coordinates", _SUPPORTED_PACKAGING_TYPES = "SUPPORTED_PACKAGING_TYPES")
 
 SUPPORTED_PACKAGING_TYPES = _SUPPORTED_PACKAGING_TYPES
diff --git a/private/extensions/maven.bzl b/private/extensions/maven.bzl
index 67e6b1c..96d726f 100644
--- a/private/extensions/maven.bzl
+++ b/private/extensions/maven.bzl
@@ -757,7 +757,7 @@
                 additional_coursier_options = repo.get("additional_coursier_options"),
             )
         else:
-            workspace_prefix = "@@" if bazel_features.external_deps.is_bzlmod_enabled else "@"
+            workspace_prefix = "@@"
 
             # Only the coursier resolver allows the lock file to be omitted.
             unpinned_maven_pin_command_alias(
diff --git a/private/rules/coursier.bzl b/private/rules/coursier.bzl
index 26c18cc..78d623b 100644
--- a/private/rules/coursier.bzl
+++ b/private/rules/coursier.bzl
@@ -42,9 +42,7 @@
 load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
 load("@package_metadata//rules:package_metadata.bzl", "package_metadata")
 load("@rules_license//rules:package_info.bzl", "package_info")
-load("@rules_java//java:java_binary.bzl", "java_binary")
-load("@rules_java//java:java_library.bzl", "java_library")
-load("@rules_java//java:java_plugin.bzl", "java_plugin")
+load("@compatibility_proxy//:proxy.bzl", "java_binary", "java_library", "java_plugin")
 load("@rules_jvm_external//private/rules:pin_dependencies.bzl", "pin_dependencies")
 load("@rules_jvm_external//private/rules:jvm_import.bzl", "jvm_import")
 load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
@@ -707,10 +705,7 @@
             )
 
     # Create the list of http_file repositories for each of the artifacts
-    # in maven_install.json. This will be loaded additionally like so:
-    #
-    # load("@maven//:defs.bzl", "pinned_maven_install")
-    # pinned_maven_install()
+    # in maven_install.json.
     http_files = [
         "load(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_file\")",
         "load(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")",
@@ -1159,13 +1154,8 @@
                 amended_deps.append(dep)
             continue
 
-        # You'd think we could use skylib here to do the heavy lifting, but
-        # this is a dependency of `maven_install`, which is loaded in the
-        # `repositories.bzl` file. That means we can't rely on anything that
-        # comes from skylib yet, since the repo isn't loaded. If we could
-        # call `maven_install` from `setup.bzl`, we'd be fine, but we can't
-        # do that because then there'd be nowhere to call the
-        # `pinned_maven_install`. Oh well, let's just do this the manual way.
+        # We avoid loading skylib here to keep this file's dependency
+        # footprint minimal.
         if dep["file"].endswith(".pom"):
             jar_path = dep["file"].removesuffix(".pom") + ".jar"
 
@@ -1531,8 +1521,8 @@
     )
 
     # If maven_install.json has already been used in maven_install,
-    # we don't need to instruct user to update WORKSPACE and load pinned_maven_install.
-    # If maven_install.json is not used yet, provide complete instructions.
+    # we already know the lock file location. If it's not used yet,
+    # provide the default location.
     #
     # Also support custom locations for maven_install.json and update the pin.sh script
     # accordingly.
diff --git a/private/rules/has_maven_deps.bzl b/private/rules/has_maven_deps.bzl
index 8af6e09..86d1e73 100644
--- a/private/rules/has_maven_deps.bzl
+++ b/private/rules/has_maven_deps.bzl
@@ -1,4 +1,4 @@
-load("@rules_java//java/common:java_info.bzl", "JavaInfo")
+load("@compatibility_proxy//:proxy.bzl", "JavaInfo")
 
 MavenInfo = provider(
     fields = {
diff --git a/private/rules/java_export.bzl b/private/rules/java_export.bzl
index 4fcd6f2..d0ac499 100644
--- a/private/rules/java_export.bzl
+++ b/private/rules/java_export.bzl
@@ -1,4 +1,4 @@
-load("@rules_java//java:java_library.bzl", "java_library")
+load("@compatibility_proxy//:proxy.bzl", "java_library")
 load("//:specs.bzl", "parse", _json = "json")
 load(":javadoc.bzl", "javadoc")
 load(":maven_bom_fragment.bzl", "maven_bom_fragment")
diff --git a/private/rules/javadoc.bzl b/private/rules/javadoc.bzl
index 7041264..cd0a012 100644
--- a/private/rules/javadoc.bzl
+++ b/private/rules/javadoc.bzl
@@ -1,4 +1,4 @@
-load("@rules_java//java/common:java_info.bzl", "JavaInfo")
+load("@compatibility_proxy//:proxy.bzl", "JavaInfo")
 load(":maven_project_jar.bzl", "DEFAULT_EXCLUDED_WORKSPACES")
 
 _JavadocInfo = provider(
diff --git a/private/rules/jvm_import.bzl b/private/rules/jvm_import.bzl
index aff1a46..e314c25 100644
--- a/private/rules/jvm_import.bzl
+++ b/private/rules/jvm_import.bzl
@@ -7,7 +7,7 @@
 # [0]: https://github.com/square/bazel_maven_repository/pull/48
 # [1]: https://github.com/bazelbuild/bazel/issues/4549
 
-load("@rules_java//java/common:java_info.bzl", "JavaInfo")
+load("@compatibility_proxy//:proxy.bzl", "JavaInfo")
 load("@rules_license//rules:providers.bzl", "PackageInfo")
 load("//private/lib:coordinates.bzl", "to_external_form", "to_purl", "unpack_coordinates")
 load("//private/lib:urls.bzl", "scheme_and_host")
diff --git a/private/rules/maven_bom.bzl b/private/rules/maven_bom.bzl
index 6ebf832..44ceddb 100644
--- a/private/rules/maven_bom.bzl
+++ b/private/rules/maven_bom.bzl
@@ -1,4 +1,3 @@
-load("@bazel_features//:features.bzl", "bazel_features")
 load("//private/lib:coordinates.bzl", "unpack_coordinates")
 load(":maven_bom_fragment.bzl", "MavenBomFragmentInfo")
 load(":maven_publish.bzl", "maven_publish")
@@ -14,7 +13,7 @@
     if type(label_or_string) == "Label":
         return label_or_string
 
-    workspace_prefix = "@@" if bazel_features.external_deps.is_bzlmod_enabled else "@"
+    workspace_prefix = "@@"
 
     if type(label_or_string) == "string":
         # We may have a target of the form: `@bar//foo`, `//foo`, `//foo:foo`, `:foo`, `foo`
@@ -200,15 +199,7 @@
     fragments = []
     labels = [_label(je) for je in java_exports]
 
-    # `same_package_label` doesn't exist in Bazel 5, but we still support it
-    # so we check the version here to call a non-deprecated API in recent
-    # Bazel versions, or the older (deprecated) API in Bazel 5.
-    feature_check_label = Label("//:doesnotexistinrulesjvmexternal")
-    if hasattr(feature_check_label, "same_package_label"):
-        fragments = [l.same_package_label("%s.bom-fragment" % l.name) for l in labels]
-    else:
-        # TODO: Drop this branch once we drop Bazel 5 support
-        fragments = [l.relative(":%s.bom-fragment" % l.name) for l in labels]
+    fragments = [l.same_package_label("%s.bom-fragment" % l.name) for l in labels]
 
     _maven_bom(
         name = name,
diff --git a/private/rules/maven_bom_fragment.bzl b/private/rules/maven_bom_fragment.bzl
index 3e83820..af81ab6 100644
--- a/private/rules/maven_bom_fragment.bzl
+++ b/private/rules/maven_bom_fragment.bzl
@@ -1,4 +1,4 @@
-load("@rules_java//java/common:java_info.bzl", "JavaInfo")
+load("@compatibility_proxy//:proxy.bzl", "JavaInfo")
 load(":has_maven_deps.bzl", "MavenInfo", "has_maven_deps")
 load(":maven_utils.bzl", "process_label_keyed_exclusions")
 
diff --git a/private/rules/maven_project_jar.bzl b/private/rules/maven_project_jar.bzl
index d648b3f..0750123 100644
--- a/private/rules/maven_project_jar.bzl
+++ b/private/rules/maven_project_jar.bzl
@@ -1,6 +1,5 @@
 load("@bazel_skylib//lib:new_sets.bzl", "sets")
-load("@rules_java//java/common:java_common.bzl", "java_common")
-load("@rules_java//java/common:java_info.bzl", "JavaInfo")
+load("@compatibility_proxy//:proxy.bzl", "JavaInfo", "java_common")
 load("@rules_license//rules:providers.bzl", "PackageInfo")
 load("//private/lib:bzlmod.bzl", "get_module_name_of_owner_of_repo")
 load("//private/lib:coordinates.bzl", "to_external_form", "to_purl", "unpack_coordinates")
diff --git a/private/rules/pom_file.bzl b/private/rules/pom_file.bzl
index 90f92d5..1bd19f2 100644
--- a/private/rules/pom_file.bzl
+++ b/private/rules/pom_file.bzl
@@ -1,4 +1,4 @@
-load("@rules_java//java/common:java_info.bzl", "JavaInfo")
+load("@compatibility_proxy//:proxy.bzl", "JavaInfo")
 load(":has_maven_deps.bzl", "MavenInfo", "calculate_artifact_jars", "has_maven_deps")
 load(
     ":maven_utils.bzl",
diff --git a/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/BUILD b/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/BUILD
index f5a0c51..23cb8d5 100644
--- a/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/BUILD
+++ b/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/BUILD
@@ -10,7 +10,7 @@
     ),
     data = [
         "//private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/data:gradle_build_templates",
-        "//private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/plugin:plugin-single-jar",
+        "//private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/plugin:plugin_deploy_jar_deploy.jar",
         "@bazel_tools//tools/jdk:host_jdk",
         "@gradle//:distribution",
         "@gradle//:gradle-bin/README",
diff --git a/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/GradleResolver.java b/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/GradleResolver.java
index 4a57940..2934272 100644
--- a/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/GradleResolver.java
+++ b/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/GradleResolver.java
@@ -712,7 +712,7 @@
           runfiles
               .withSourceRepository(AutoBazelRepository_GradleResolver.NAME)
               .rlocation(
-                  "rules_jvm_external/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/plugin/plugin-single-jar.jar");
+                  "rules_jvm_external/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/plugin/plugin_deploy_jar_deploy.jar");
       if (!Files.exists(Paths.get(pluginJarPath))) {
         throw new IOException("Gradle Plugin jar not found at " + pluginJarPath);
       }
diff --git a/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/plugin/BUILD b/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/plugin/BUILD
index 9ed1e6f..460e8c8 100644
--- a/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/plugin/BUILD
+++ b/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/plugin/BUILD
@@ -1,5 +1,5 @@
+load("@rules_java//java:java_binary.bzl", "java_binary")
 load("@rules_java//java:java_library.bzl", "java_library")
-load("@rules_java//java:java_single_jar.bzl", "java_single_jar")
 load("@rules_jvm_external//:defs.bzl", "artifact")
 
 java_library(
@@ -21,13 +21,15 @@
     ],
 )
 
-java_single_jar(
-    name = "plugin-single-jar",
+# Use java_binary to create a deploy jar with all transitive deps.
+# This avoids java_single_jar which uses Bazel private APIs that are
+# restricted in Bazel 7.
+java_binary(
+    name = "plugin_deploy_jar",
+    main_class = "does.not.Exist",
     visibility = [
         "//private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle:__subpackages__",
         "//tests:__subpackages__",
     ],
-    deps = [
-        ":plugin",
-    ],
+    runtime_deps = [":plugin"],
 )
diff --git a/private/tools/prebuilt/lock_file_converter_deploy.jar b/private/tools/prebuilt/lock_file_converter_deploy.jar
index dc183b4..17c101a 100755
--- a/private/tools/prebuilt/lock_file_converter_deploy.jar
+++ b/private/tools/prebuilt/lock_file_converter_deploy.jar
Binary files differ
diff --git a/repositories.bzl b/repositories.bzl
deleted file mode 100644
index c7025bb..0000000
--- a/repositories.bzl
+++ /dev/null
@@ -1,179 +0,0 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
-
-# Minimise the risk of accidentally depending on something that's not already loaded
-load("//private/rules:maven_install.bzl", "maven_install")
-
-_DEFAULT_REPOSITORIES = [
-    "https://repo1.maven.org/maven2",
-    "https://repo.gradle.org/gradle/libs-releases/",
-]
-
-_MAVEN_VERSION = "3.9.10"
-_MAVEN_RESOLVER_VERSION = "1.9.23"
-_GRADLE_VERSION = "8.13"
-
-def rules_jvm_external_deps(
-        repositories = _DEFAULT_REPOSITORIES,
-        deps_lock_file = "@rules_jvm_external//:rules_jvm_external_deps_install.json"):
-    maybe(
-        http_archive,
-        name = "bazel_skylib",
-        sha256 = "bc283cdfcd526a52c3201279cda4bc298652efa898b10b4db0837dc51652756f",
-        urls = [
-            "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz",
-            "https://github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz",
-        ],
-    )
-
-    # The `rules_java` major version is tied to the major version of Bazel that it supports,
-    # so this is different from the version in the MODULE file.
-    major_version = native.bazel_version.partition(".")[0]
-    if major_version == "5":
-        maybe(
-            http_archive,
-            name = "rules_java",
-            urls = [
-                "https://github.com/bazelbuild/rules_java/releases/download/5.5.1/rules_java-5.5.1.tar.gz",
-            ],
-            sha256 = "73b88f34dc251bce7bc6c472eb386a6c2b312ed5b473c81fe46855c248f792e0",
-        )
-
-    else:
-        maybe(
-            http_archive,
-            name = "rules_java",
-            urls = [
-                "https://github.com/bazelbuild/rules_java/releases/download/7.12.2/rules_java-7.12.2.tar.gz",
-            ],
-            sha256 = "a9690bc00c538246880d5c83c233e4deb83fe885f54c21bb445eb8116a180b83",
-        )
-
-    if major_version == "6":
-        # Here goes the chain of rules compatibility resolution between RJE, java, android, cc and protobuf:
-        #
-        # rules_jvm_external wants to support LTS-2. For Bazel 8, this means supporting Bazel 6.
-        #
-        # rules_android is decoupled from Bazel 8, including its providers. ProguardSpecInfo is also decoupled, but to rules_java 7.12.2.
-        #
-        # So rules_java 7.12.2 is necessary for a decoupled rules_android to work with Bazel 6.
-        #
-        # But with workspace + rules_java 7.12.2, rules_java brings in a dep on
-        # rules_cc's //cc package via //java/bazel/rules:rules (for CcInfo).
-        # https://github.com/bazelbuild/rules_java/blob/2a9bd746974f6c94b159821d75130ad43e6b2970/java/bazel/rules/BUILD.bazel#L34-L35
-        #
-        # and rules_cc, in turn, brings in a dep on protobuf.
-        #
-        # And that's why we need the following deps:
-        maybe(
-            http_archive,
-            name = "rules_cc",
-            urls = ["https://github.com/bazelbuild/rules_cc/archive/faeafdb82814b4f7295c555781e800f080607bdd.tar.gz"],
-            sha256 = "ca772d4fa149180dd1d81fe19a61c911dcebf9768d56209fc5bf382125ade0b6",
-            strip_prefix = "rules_cc-faeafdb82814b4f7295c555781e800f080607bdd",
-        )
-
-        maybe(
-            http_archive,
-            name = "protobuf",
-            sha256 = "da288bf1daa6c04d03a9051781caa52aceb9163586bff9aa6cfb12f69b9395aa",
-            strip_prefix = "protobuf-27.0",
-            url = "https://github.com/protocolbuffers/protobuf/releases/download/v27.0/protobuf-27.0.tar.gz",
-        )
-
-    maybe(
-        http_archive,
-        name = "rules_shell",
-        url = "https://github.com/bazelbuild/rules_shell/releases/download/v0.3.0/rules_shell-v0.3.0.tar.gz",
-        sha256 = "d8cd4a3a91fc1dc68d4c7d6b655f09def109f7186437e3f50a9b60ab436a0c53",
-        strip_prefix = "rules_shell-0.3.0",
-        # 0.3.0 uses load visibility and other Bazel 7+ features. Remove this
-        # patch when we stop supporting Bazel 6.
-        patches = ["@rules_jvm_external//:rules_shell_patch.diff"],
-        patch_args = ["-p1"],
-    )
-
-    maybe(
-        http_archive,
-        name = "package_metadata",
-        urls = [
-            "https://mirror.bazel.build/github.com/bazel-contrib/supply-chain/releases/download/v0.0.3/supply-chain-v0.0.3.tar.gz",
-            "https://github.com/bazel-contrib/supply-chain/releases/download/v0.0.3/supply-chain-v0.0.3.tar.gz",
-        ],
-        sha256 = "0e89367f1cb6d93a5a1afea4b55b11ea6b28f63f653b47154153677ca7d4afea",
-        strip_prefix = "supply-chain-0.0.3/metadata",
-    )
-
-    maybe(
-        http_archive,
-        name = "rules_license",
-        urls = [
-            "https://mirror.bazel.build/github.com/bazelbuild/rules_license/releases/download/1.0.0/rules_license-1.0.0.tar.gz",
-            "https://github.com/bazelbuild/rules_license/releases/download/1.0.0/rules_license-1.0.0.tar.gz",
-        ],
-        sha256 = "26d4021f6898e23b82ef953078389dd49ac2b5618ac564ade4ef87cced147b38",
-    )
-
-    maybe(
-        http_archive,
-        name = "bazel_features",
-        sha256 = "3646ffd447753490b77d2380fa63f4d55dd9722e565d84dfda01536b48e183da",
-        strip_prefix = "bazel_features-1.19.0",
-        url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.19.0/bazel_features-v1.19.0.tar.gz",
-    )
-
-    maven_install(
-        name = "rules_jvm_external_deps",
-        artifacts = [
-            "ch.qos.logback:logback-classic:1.5.23",
-            "com.github.jknack:handlebars:4.3.1",
-            "com.google.auth:google-auth-library-credentials:1.23.0",
-            "com.google.auth:google-auth-library-oauth2-http:1.23.0",
-            "com.google.cloud:google-cloud-core:2.40.0",
-            "com.google.cloud:google-cloud-storage:2.40.1",
-            "com.google.code.findbugs:jsr305:3.0.2",
-            "com.google.code.gson:gson:2.11.0",
-            "com.google.googlejavaformat:google-java-format:1.22.0",
-            "com.google.guava:guava:33.2.1-jre",
-            "org.apache.maven:maven-artifact:%s" % _MAVEN_VERSION,
-            "org.apache.maven:maven-core:%s" % _MAVEN_VERSION,
-            "org.apache.maven:maven-model:%s" % _MAVEN_VERSION,
-            "org.apache.maven:maven-model-builder:%s" % _MAVEN_VERSION,
-            "org.apache.maven:maven-repository-metadata:%s" % _MAVEN_VERSION,
-            "org.apache.maven:maven-settings:%s" % _MAVEN_VERSION,
-            "org.apache.maven:maven-settings-builder:%s" % _MAVEN_VERSION,
-            "org.apache.maven:maven-resolver-provider:%s" % _MAVEN_VERSION,
-            "org.apache.maven.resolver:maven-resolver-api:%s" % _MAVEN_RESOLVER_VERSION,
-            "org.apache.maven.resolver:maven-resolver-impl:%s" % _MAVEN_RESOLVER_VERSION,
-            "org.apache.maven.resolver:maven-resolver-connector-basic:%s" % _MAVEN_RESOLVER_VERSION,
-            "org.apache.maven.resolver:maven-resolver-spi:%s" % _MAVEN_RESOLVER_VERSION,
-            "org.apache.maven.resolver:maven-resolver-transport-file:%s" % _MAVEN_RESOLVER_VERSION,
-            "org.apache.maven.resolver:maven-resolver-transport-http:%s" % _MAVEN_RESOLVER_VERSION,
-            "org.apache.maven.resolver:maven-resolver-util:%s" % _MAVEN_RESOLVER_VERSION,
-            "org.bouncycastle:bcprov-jdk15on:1.68",
-            "org.bouncycastle:bcpg-jdk15on:1.68",
-            "org.codehaus.plexus:plexus-cipher:2.1.0",
-            "org.codehaus.plexus:plexus-sec-dispatcher:2.0",
-            "org.codehaus.plexus:plexus-utils:3.5.1",
-            "org.fusesource.jansi:jansi:2.4.1",
-            "org.gradle:gradle-tooling-api:%s" % _GRADLE_VERSION,
-            "org.slf4j:jul-to-slf4j:2.0.17",
-            "org.slf4j:log4j-over-slf4j:2.0.17",
-            "org.slf4j:slf4j-simple:2.0.17",
-            "software.amazon.awssdk:s3:2.26.12",
-            "software.amazon.awssdk:sdk-core:2.26.12",
-        ],
-        maven_install_json = deps_lock_file,
-        strict_visibility = True,
-        fetch_sources = True,
-        repositories = repositories,
-    )
-
-    http_archive(
-        name = "gradle",
-        add_prefix = "gradle-bin",
-        build_file = "//:gradle.BUILD.bazel",
-        integrity = "sha256-IPGxF2I3JUpvwgTYQ0GW+hGkz7OHVnUZxhVW6HEK7Xg=",
-        strip_prefix = "gradle-{}".format(_GRADLE_VERSION),
-        url = "https://services.gradle.org/distributions/gradle-{}-bin.zip".format(_GRADLE_VERSION),
-    )
diff --git a/rules_shell_patch.diff b/rules_shell_patch.diff
deleted file mode 100644
index 5c7bc68..0000000
--- a/rules_shell_patch.diff
+++ /dev/null
@@ -1,51 +0,0 @@
-diff --git a/shell/private/sh_binary.bzl b/shell/private/sh_binary.bzl
-index eec109a..f64848c 100644
---- a/shell/private/sh_binary.bzl
-+++ b/shell/private/sh_binary.bzl
-@@ -17,6 +17,6 @@
- load(":sh_executable.bzl", "make_sh_executable_rule")
- 
- # For doc generation only.
--visibility("public")
-+# visibility("public")
- 
- sh_binary = make_sh_executable_rule(executable = True)
-diff --git a/shell/private/sh_executable.bzl b/shell/private/sh_executable.bzl
-index 1306c80..7d06595 100644
---- a/shell/private/sh_executable.bzl
-+++ b/shell/private/sh_executable.bzl
-@@ -14,7 +14,7 @@
- 
- """Common code for sh_binary and sh_test rules."""
- 
--visibility(["//shell"])
-+# visibility(["//shell"])
- 
- _SH_TOOLCHAIN_TYPE = "//shell:toolchain_type"
- 
-@@ -189,9 +189,9 @@ most build rules</a>.
-             "_windows_constraint": attr.label(
-                 default = "@platforms//os:windows",
-             ),
--        } | extra_attrs,
--        toolchains = [
--            config_common.toolchain_type(_SH_TOOLCHAIN_TYPE, mandatory = False),
--        ],
-+        }, # | extra_attrs,
-+        # toolchains = [
-+        #     config_common.toolchain_type(_SH_TOOLCHAIN_TYPE, mandatory = False),
-+        # ],
-         **kwargs
-     )
-diff --git a/shell/sh_binary.bzl b/shell/sh_binary.bzl
-index 9e4a30d..8f12326 100644
---- a/shell/sh_binary.bzl
-+++ b/shell/sh_binary.bzl
-@@ -16,6 +16,6 @@
- 
- load("//shell/private:sh_binary.bzl", _sh_binary = "sh_binary")
- 
--visibility("public")
-+# visibility("public")
- 
- sh_binary = getattr(native, "sh_binary", _sh_binary)
diff --git a/setup.bzl b/setup.bzl
deleted file mode 100644
index 8942c58..0000000
--- a/setup.bzl
+++ /dev/null
@@ -1,17 +0,0 @@
-load("@bazel_features//:deps.bzl", "bazel_features_deps")
-load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
-load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains")
-load("@rules_jvm_external_deps//:defs.bzl", "pinned_maven_install")
-
-def rules_jvm_external_setup():
-    bazel_skylib_workspace()
-
-    bazel_features_deps()
-
-    # When using bazel 5, we have undefined toolchains from rules_js. This should be fine to skip, since we only need
-    # it for the `JavaInfo` definition.
-    major_version = native.bazel_version.partition(".")[0]
-    if major_version != "5":
-        rules_java_dependencies()
-        rules_java_toolchains()
-    pinned_maven_install()
diff --git a/specs.bzl b/specs.bzl
index 70e5c89..90047eb 100644
--- a/specs.bzl
+++ b/specs.bzl
@@ -1,110 +1,6 @@
-#
-# Maven specification
-#
-
+load("@bazel_tools//tools/build_defs/repo:utils.bzl", "parse_netrc")
 load("//private/lib:coordinates.bzl", "unpack_coordinates")
 
-def _maven_repository(url, user = None, password = None):
-    """Generates the data map for a Maven repository specifier given the available information.
-
-    If both a user and password are given as arguments, it will include the
-    access credentials in the repository spec. If one or both are missing, it
-    will just generate the repository url.
-
-    Args:
-        url: A string containing the repository url (ex: "https://maven.google.com/").
-        user: A username for this Maven repository, if it requires authentication (ex: "johndoe").
-        password: A password for this Maven repository, if it requires authentication (ex: "example-password").
-    """
-
-    # Output Schema:
-    #     {
-    #         "repo_url": String
-    #         "credentials: Optional Map
-    #             {
-    #                 "username": String
-    #                 "password": String
-    #             }
-    #     }
-    if user == None and password == None:
-        return {"repo_url": url}
-    elif user == None or password == None:
-        fail("Invalid repository info: Either user and password must both be provided, or neither.")
-    else:
-        credentials = {"user": user, "password": password}
-        return {"repo_url": url, "credentials": credentials}
-
-def _maven_artifact(group, artifact, version = "", packaging = None, classifier = None, override_license_types = None, exclusions = None, neverlink = None, testonly = None, force_version = False):
-    """Generates the data map for a Maven artifact given the available information about its coordinates.
-
-    Args:
-        group: The Maven artifact coordinate group name (ex: "com.google.guava").
-        artifact: The Maven artifact coordinate artifact name (ex: "guava").
-        version: The Maven artifact coordinate version name (ex: "27.0-jre").
-        packaging: The Maven packaging specifier (ex: "jar").
-        classifier: The Maven artifact classifier (ex: "javadoc").
-        override_license_types: An array of Bazel license type strings to use for this artifact's rules (overrides autodetection) (ex: ["notify"]).
-        exclusions: An array of exclusion objects to create exclusion specifiers for this artifact (ex: maven.exclusion("junit", "junit")).
-        neverlink: Determines if this artifact should be part of the runtime classpath.
-        testonly: Determines whether this artifact is available for targets not marked as `testonly = True`.
-        force_version: Whether the `version` is non-negotiable.
-    """
-
-    # Output Schema:
-    #     {
-    #         "group": String
-    #         "artifact": String
-    #         "version": String
-    #         "packaging": Optional String
-    #         "classifier": Optional String
-    #         "override_license_types": Optional Array of String
-    #         "exclusions": Optional Array of exclusions (see below)
-    #         "neverlink": Optional Boolean
-    #         "testonly": Optional Boolean
-    #     }
-    maven_artifact = {}
-    maven_artifact["group"] = group
-    maven_artifact["artifact"] = artifact
-    maven_artifact["version"] = version
-
-    if packaging != None:
-        maven_artifact["packaging"] = packaging
-    if classifier != None:
-        maven_artifact["classifier"] = classifier
-    if override_license_types != None:
-        maven_artifact["override_license_types"] = override_license_types
-    if exclusions != None:
-        maven_artifact["exclusions"] = exclusions
-    if neverlink != None:
-        maven_artifact["neverlink"] = neverlink
-    if testonly != None:
-        maven_artifact["testonly"] = testonly
-    if force_version:
-        maven_artifact["force_version"] = True
-
-    return maven_artifact
-
-def _maven_exclusion(group, artifact):
-    """Generates the data map for a Maven artifact exclusion.
-
-    Args:
-        group: The Maven group name of the dependency to exclude, e.g. "com.google.guava".
-        artifact: The Maven artifact name of the dependency to exclude, e.g. "guava".
-    """
-
-    # Output Schema:
-    # {
-    #     "group": String
-    #     "artifact": String
-    # }
-    return {"group": group, "artifact": artifact}
-
-maven = struct(
-    repository = _maven_repository,
-    artifact = _maven_artifact,
-    exclusion = _maven_exclusion,
-)
-
 #
 # Parsing tools
 #
@@ -132,8 +28,8 @@
     """
     unpacked = unpack_coordinates(mvn_coord)
 
-    # It would be nice to use `bazel_skylib//lib:structs.bzl` for this, but this file is
-    # included from the `repositories.bzl` file, so skylib has not been loaded yet.
+    # It would be nice to use `bazel_skylib//lib:structs.bzl` for this, but we avoid
+    # loading it here to keep this file lightweight and free of external dependencies.
     return {
         key: getattr(unpacked, key)
         for key in dir(unpacked)
@@ -302,106 +198,15 @@
         a List<string> for the coursier cli --credentials option.
     """
     credentials = []
-    for machine, props in _parse_netrc(netrc_content).items():
+    for machine, props in parse_netrc(netrc_content).items():
         if machine and "login" in props and "password" in props:
             credential = _coursier_credential(machine, props["login"], props["password"])
             credentials.append(credential)
     return credentials
 
-# copied from https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/repo/utils.bzl.
-# replace with 'load("@bazel_tools//tools/build_defs/repo:utils.bzl", "parse_netrc")'
-# once bazel 5.x+ is the minimum allowed bazel version.
-def _parse_netrc(contents, filename = None):
-    """Utility function to parse at least a basic .netrc file.
-
-    Args:
-      contents: input for the parser.
-      filename: filename to use in error messages, if any.
-    Returns:
-      dict mapping a machine names to a dict with the information provided
-      about them
-    """
-
-    # Parse the file. This is mainly a token-based update of a simple state
-    # machine, but we need to keep the line structure to correctly determine
-    # the end of a `macdef` command.
-    netrc = {}
-    currentmachinename = None
-    currentmachine = {}
-    macdef = None
-    currentmacro = ""
-    cmd = None
-    for line in contents.splitlines():
-        if line.startswith("#"):
-            # Comments start with #. Ignore these lines.
-            continue
-        elif macdef:
-            # as we're in a macro, just determine if we reached the end.
-            if line:
-                currentmacro += line + "\n"
-            else:
-                # reached end of macro, add it
-                currentmachine[macdef] = currentmacro
-                macdef = None
-                currentmacro = ""
-        else:
-            # Essentially line.split(None) which starlark does not support.
-            tokens = [
-                w.strip()
-                for w in line.split(" ")
-                if len(w.strip()) > 0
-            ]
-            for token in tokens:
-                if cmd:
-                    # we have a command that expects another argument
-                    if cmd == "machine":
-                        # a new machine definition was provided, so save the
-                        # old one, if present
-                        if not currentmachinename == None:
-                            netrc[currentmachinename] = currentmachine
-                        currentmachine = {}
-                        currentmachinename = token
-                    elif cmd == "macdef":
-                        macdef = "macdef %s" % (token,)
-                        # a new macro definition; the documentation says
-                        # "its contents begin with the next .netrc line [...]",
-                        # so should there really be tokens left in the current
-                        # line, they're not part of the macro.
-
-                    else:
-                        currentmachine[cmd] = token
-                    cmd = None
-                elif token in [
-                    "machine",
-                    "login",
-                    "password",
-                    "account",
-                    "macdef",
-                ]:
-                    # command takes one argument
-                    cmd = token
-                elif token == "default":
-                    # defines the default machine; again, store old machine
-                    if not currentmachinename == None:
-                        netrc[currentmachinename] = currentmachine
-
-                    # We use the empty string for the default machine, as that
-                    # can never be a valid hostname ("default" could be, in the
-                    # default search domain).
-                    currentmachinename = ""
-                    currentmachine = {}
-                else:
-                    if filename == None:
-                        filename = "a .netrc file"
-                    fail("Unexpected token '%s' while reading %s" %
-                         (token, filename))
-    if not currentmachinename == None:
-        netrc[currentmachinename] = currentmachine
-    return netrc
-
 utils = struct(
     artifact_coordinate = _artifact_to_coord,
     netrc_credentials = _netrc_credentials,
-    parse_netrc = _parse_netrc,
+    parse_netrc = parse_netrc,
     repo_credentials = _repository_credentials,
 )
diff --git a/tests/com/github/bazelbuild/rules_jvm_external/maven/BUILD b/tests/com/github/bazelbuild/rules_jvm_external/maven/BUILD
index 858d6dc..063a46d 100644
--- a/tests/com/github/bazelbuild/rules_jvm_external/maven/BUILD
+++ b/tests/com/github/bazelbuild/rules_jvm_external/maven/BUILD
@@ -13,6 +13,7 @@
     test_class = "com.github.bazelbuild.rules_jvm_external.maven.OutdatedTest",
     deps = [
         "//private/tools/java/com/github/bazelbuild/rules_jvm_external/maven:outdated",
+        "//tests/com/github/bazelbuild/rules_jvm_external/resolver",
         artifact("com.google.guava:guava"),
         artifact(
             "junit:junit",
diff --git a/tests/com/github/bazelbuild/rules_jvm_external/maven/OutdatedTest.java b/tests/com/github/bazelbuild/rules_jvm_external/maven/OutdatedTest.java
index f68e58b..114f69c 100644
--- a/tests/com/github/bazelbuild/rules_jvm_external/maven/OutdatedTest.java
+++ b/tests/com/github/bazelbuild/rules_jvm_external/maven/OutdatedTest.java
@@ -8,6 +8,7 @@
 import static org.hamcrest.core.IsNull.nullValue;
 import static org.junit.Assert.assertThat;
 
+import com.github.bazelbuild.rules_jvm_external.resolver.MavenRepo;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
@@ -17,6 +18,7 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Arrays;
+import java.util.List;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import org.junit.Rule;
@@ -33,13 +35,19 @@
 
   @Test
   public void shouldFindUpdatedVersionForGuava() throws IOException {
+    Path repo =
+        MavenRepo.create()
+            .writeMavenMetadata(
+                "com.google.guava", "guava", "33.0-jre", List.of("27.0-jre", "33.0-jre"))
+            .getPath();
+    String repoUrl = repo.toUri().toString();
+
     Path artifactsFile = temp.newFile("outdated.artifacts").toPath();
     Files.write(
         artifactsFile, Arrays.asList("com.google.guava:guava:27.0-jre"), StandardCharsets.UTF_8);
 
     Path repositoriesFile = temp.newFile("outdated.repositories").toPath();
-    Files.write(
-        repositoriesFile, Arrays.asList("https://repo1.maven.org/maven2"), StandardCharsets.UTF_8);
+    Files.write(repositoriesFile, Arrays.asList(repoUrl), StandardCharsets.UTF_8);
 
     ByteArrayOutputStream outdatedOutput = new ByteArrayOutputStream();
     try {
@@ -56,8 +64,9 @@
     assertThat(
         outdatedOutput.toString(),
         containsString("Checking for updates of 1 artifacts against the following repositories"));
-    assertThat(outdatedOutput.toString(), containsString("https://repo1.maven.org/maven2"));
-    assertThat(outdatedOutput.toString(), containsString("com.google.guava:guava [27.0-jre -> "));
+    assertThat(outdatedOutput.toString(), containsString(repoUrl));
+    assertThat(
+        outdatedOutput.toString(), containsString("com.google.guava:guava [27.0-jre -> 33.0-jre]"));
     assertThat(outdatedOutput.toString(), not(containsString("No updates found")));
     assertThat(outdatedOutput.toString(), not(containsString("BOMs")));
   }
@@ -92,6 +101,20 @@
 
   @Test
   public void shouldWorkWithMultipleArtifactsAndRepositories() throws IOException {
+    Path repo1 =
+        MavenRepo.create()
+            .writeMavenMetadata(
+                "com.google.guava", "guava", "33.0-jre", List.of("27.0-jre", "33.0-jre"))
+            .writeMavenMetadata("junit", "junit", "4.13.2", List.of("4.12", "4.13.2"))
+            .getPath();
+    String repo1Url = repo1.toUri().toString();
+
+    Path repo2 =
+        MavenRepo.create()
+            .writeMavenMetadata("com.squareup", "javapoet", "1.13.0", List.of("1.11.1", "1.13.0"))
+            .getPath();
+    String repo2Url = repo2.toUri().toString();
+
     Path artifactsFile = temp.newFile("outdated.artifacts").toPath();
     Files.write(
         artifactsFile,
@@ -100,10 +123,7 @@
         StandardCharsets.UTF_8);
 
     Path repositoriesFile = temp.newFile("outdated.repositories").toPath();
-    Files.write(
-        repositoriesFile,
-        Arrays.asList("https://repo1.maven.org/maven2", "https://maven.google.com"),
-        StandardCharsets.UTF_8);
+    Files.write(repositoriesFile, Arrays.asList(repo1Url, repo2Url), StandardCharsets.UTF_8);
 
     ByteArrayOutputStream outdatedOutput = new ByteArrayOutputStream();
     try {
@@ -120,11 +140,13 @@
     assertThat(
         outdatedOutput.toString(),
         containsString("Checking for updates of 3 artifacts against the following repositories"));
-    assertThat(outdatedOutput.toString(), containsString("https://repo1.maven.org/maven2"));
-    assertThat(outdatedOutput.toString(), containsString("https://maven.google.com"));
-    assertThat(outdatedOutput.toString(), containsString("com.google.guava:guava [27.0-jre -> "));
-    assertThat(outdatedOutput.toString(), containsString("junit:junit [4.12 -> "));
-    assertThat(outdatedOutput.toString(), containsString("com.squareup:javapoet [1.11.1 -> "));
+    assertThat(outdatedOutput.toString(), containsString(repo1Url));
+    assertThat(outdatedOutput.toString(), containsString(repo2Url));
+    assertThat(
+        outdatedOutput.toString(), containsString("com.google.guava:guava [27.0-jre -> 33.0-jre]"));
+    assertThat(outdatedOutput.toString(), containsString("junit:junit [4.12 -> 4.13.2]"));
+    assertThat(
+        outdatedOutput.toString(), containsString("com.squareup:javapoet [1.11.1 -> 1.13.0]"));
   }
 
   @Test
@@ -146,7 +168,6 @@
         Arrays.asList(
             new File("tests/com/github/bazelbuild/rules_jvm_external/maven/resources")
                 .toURI()
-                .toURL()
                 .toString()),
         StandardCharsets.UTF_8);
 
@@ -216,7 +237,6 @@
         Arrays.asList(
             new File("tests/com/github/bazelbuild/rules_jvm_external/maven/resources")
                 .toURI()
-                .toURL()
                 .toString()),
         StandardCharsets.UTF_8);
 
@@ -284,7 +304,6 @@
         Arrays.asList(
             new File("tests/com/github/bazelbuild/rules_jvm_external/maven/resources")
                 .toURI()
-                .toURL()
                 .toString()),
         StandardCharsets.UTF_8);
 
@@ -442,6 +461,15 @@
 
   @Test
   public void shouldFindUpdatedVersionForBOMs() throws IOException {
+    Path repo =
+        MavenRepo.create()
+            .writeMavenMetadata(
+                "com.google.guava", "guava", "33.0-jre", List.of("27.0-jre", "33.0-jre"))
+            .writeMavenMetadata(
+                "com.google.cloud", "libraries-bom", "26.50.0", List.of("26.0.0", "26.50.0"))
+            .getPath();
+    String repoUrl = repo.toUri().toString();
+
     Path artifactsFile = temp.newFile("outdated.artifacts").toPath();
     Files.write(
         artifactsFile, Arrays.asList("com.google.guava:guava:27.0-jre"), StandardCharsets.UTF_8);
@@ -451,8 +479,7 @@
         bomsFile, Arrays.asList("com.google.cloud:libraries-bom:26.0.0"), StandardCharsets.UTF_8);
 
     Path repositoriesFile = temp.newFile("outdated.repositories").toPath();
-    Files.write(
-        repositoriesFile, Arrays.asList("https://repo1.maven.org/maven2"), StandardCharsets.UTF_8);
+    Files.write(repositoriesFile, Arrays.asList(repoUrl), StandardCharsets.UTF_8);
 
     ByteArrayOutputStream outdatedOutput = new ByteArrayOutputStream();
     try {
@@ -471,16 +498,25 @@
         outdatedOutput.toString(),
         containsString(
             "Checking for updates of 1 boms and 1 artifacts against the following repositories"));
-    assertThat(outdatedOutput.toString(), containsString("https://repo1.maven.org/maven2"));
+    assertThat(outdatedOutput.toString(), containsString(repoUrl));
     assertThat(outdatedOutput.toString(), containsString("BOMs"));
     assertThat(
-        outdatedOutput.toString(), containsString("com.google.cloud:libraries-bom [26.0.0 -> "));
-    assertThat(outdatedOutput.toString(), containsString("com.google.guava:guava [27.0-jre -> "));
+        outdatedOutput.toString(),
+        containsString("com.google.cloud:libraries-bom [26.0.0 -> 26.50.0]"));
+    assertThat(
+        outdatedOutput.toString(), containsString("com.google.guava:guava [27.0-jre -> 33.0-jre]"));
     assertThat(outdatedOutput.toString(), not(containsString("No updates found")));
   }
 
   @Test
   public void shouldPrintNoUpdatesIfBOMInputFileIsEmpty() throws IOException {
+    Path repo =
+        MavenRepo.create()
+            .writeMavenMetadata(
+                "com.google.guava", "guava", "33.0-jre", List.of("27.0-jre", "33.0-jre"))
+            .getPath();
+    String repoUrl = repo.toUri().toString();
+
     Path artifactsFile = temp.newFile("outdated.artifacts").toPath();
     Files.write(
         artifactsFile, Arrays.asList("com.google.guava:guava:27.0-jre"), StandardCharsets.UTF_8);
@@ -489,8 +525,7 @@
     Files.write(bomsFile, Arrays.asList(""), StandardCharsets.UTF_8);
 
     Path repositoriesFile = temp.newFile("outdated.repositories").toPath();
-    Files.write(
-        repositoriesFile, Arrays.asList("https://repo1.maven.org/maven2"), StandardCharsets.UTF_8);
+    Files.write(repositoriesFile, Arrays.asList(repoUrl), StandardCharsets.UTF_8);
 
     ByteArrayOutputStream outdatedOutput = new ByteArrayOutputStream();
     try {
@@ -508,9 +543,10 @@
     assertThat(
         outdatedOutput.toString(),
         containsString("Checking for updates of 1 artifacts against the following repositories"));
-    assertThat(outdatedOutput.toString(), containsString("https://repo1.maven.org/maven2"));
+    assertThat(outdatedOutput.toString(), containsString(repoUrl));
     assertThat(outdatedOutput.toString(), not(containsString("BOMs")));
-    assertThat(outdatedOutput.toString(), containsString("com.google.guava:guava [27.0-jre -> "));
+    assertThat(
+        outdatedOutput.toString(), containsString("com.google.guava:guava [27.0-jre -> 33.0-jre]"));
     assertThat(outdatedOutput.toString(), not(containsString("No updates found")));
   }
 }
diff --git a/tests/com/github/bazelbuild/rules_jvm_external/resolver/BUILD b/tests/com/github/bazelbuild/rules_jvm_external/resolver/BUILD
index 35418c7..f399e53 100644
--- a/tests/com/github/bazelbuild/rules_jvm_external/resolver/BUILD
+++ b/tests/com/github/bazelbuild/rules_jvm_external/resolver/BUILD
@@ -32,5 +32,9 @@
             "org.apache.maven:maven-model",
             repository_name = "rules_jvm_external_deps",
         ),
+        artifact(
+            "org.apache.maven:maven-repository-metadata",
+            repository_name = "rules_jvm_external_deps",
+        ),
     ],
 )
diff --git a/tests/com/github/bazelbuild/rules_jvm_external/resolver/MavenRepo.java b/tests/com/github/bazelbuild/rules_jvm_external/resolver/MavenRepo.java
index fb6acd9..2830786 100644
--- a/tests/com/github/bazelbuild/rules_jvm_external/resolver/MavenRepo.java
+++ b/tests/com/github/bazelbuild/rules_jvm_external/resolver/MavenRepo.java
@@ -24,6 +24,10 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.List;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.Versioning;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DistributionManagement;
 import org.apache.maven.model.Model;
@@ -79,6 +83,30 @@
     }
   }
 
+  public MavenRepo writeMavenMetadata(
+      String groupId, String artifactId, String releaseVersion, List<String> versions) {
+    try {
+      Metadata metadata = new Metadata();
+      metadata.setGroupId(groupId);
+      metadata.setArtifactId(artifactId);
+
+      Versioning versioning = new Versioning();
+      versioning.setRelease(releaseVersion);
+      versioning.setVersions(versions);
+      metadata.setVersioning(versioning);
+
+      Path dir = root.resolve(groupId.replace('.', '/') + "/" + artifactId);
+      Files.createDirectories(dir);
+
+      try (BufferedWriter writer = Files.newBufferedWriter(dir.resolve("maven-metadata.xml"))) {
+        new MetadataXpp3Writer().write(writer, metadata);
+      }
+      return this;
+    } catch (IOException e) {
+      throw new UncheckedIOException(e);
+    }
+  }
+
   public MavenRepo writePomFile(Model model) throws IOException {
     model.setModelVersion("4.0.0");
 
diff --git a/tests/custom_maven_install/java_export_exclusion_testing_install.json b/tests/custom_maven_install/java_export_exclusion_testing_install.json
index 34dbd85..b5aad1b 100644
--- a/tests/custom_maven_install/java_export_exclusion_testing_install.json
+++ b/tests/custom_maven_install/java_export_exclusion_testing_install.json
@@ -1,13 +1,18 @@
 {
   "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": -382709041,
-  "__RESOLVED_ARTIFACTS_HASH": -2016706042,
+  "__INPUT_ARTIFACTS_HASH": {
+    "com.google.protobuf:protobuf-java": 1906581597,
+    "repositories": -1949687017
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "com.google.protobuf:protobuf-java": 1957269082
+  },
   "artifacts": {
     "com.google.protobuf:protobuf-java": {
       "shasums": {
-        "jar": "d60dfe7c68a0d38a248cca96924f289dc7e1966a887ee7cae397701af08575ae"
+        "jar": "3ca892fd6ea8b37d01bb6917dbc0bf2637548b756753f65a28d4f1d4d982347f"
       },
-      "version": "4.31.1"
+      "version": "4.33.4"
     }
   },
   "dependencies": {},
@@ -23,5 +28,5 @@
     ]
   },
   "services": {},
-  "version": "2"
+  "version": "3"
 }
diff --git a/tests/integration/amend_artifact_test/BUILD b/tests/integration/amend_artifact_test/BUILD
index 1fca412..e10174d 100644
--- a/tests/integration/amend_artifact_test/BUILD
+++ b/tests/integration/amend_artifact_test/BUILD
@@ -1,3 +1,5 @@
+load("@rules_shell//shell:sh_test.bzl", "sh_test")
+
 # This test checks if the testonly attribute was correctly applied.
 # If testonly=True applied, this target should have testonly=1.
 # But build_test doesn't check attribute values directly.
diff --git a/tests/integration/bzlmod_lock_files/WORKSPACE b/tests/integration/bzlmod_lock_files/WORKSPACE
deleted file mode 100644
index e69de29..0000000
--- a/tests/integration/bzlmod_lock_files/WORKSPACE
+++ /dev/null
diff --git a/tests/integration/bzlmod_lock_files/WORKSPACE.bzlmod b/tests/integration/bzlmod_lock_files/WORKSPACE.bzlmod
deleted file mode 100644
index e69de29..0000000
--- a/tests/integration/bzlmod_lock_files/WORKSPACE.bzlmod
+++ /dev/null
diff --git a/tests/integration/java_export/BUILD b/tests/integration/java_export/BUILD
index 11650d3..1e05dc7 100644
--- a/tests/integration/java_export/BUILD
+++ b/tests/integration/java_export/BUILD
@@ -121,7 +121,8 @@
         ":deploy-env-project",
     ],
     outs = ["classes.txt"],
-    cmd = "for SRC in $(SRCS); do jar tf $$SRC >> $@; done",
+    cmd = "for SRC in $(SRCS); do $(location @bazel_tools//tools/zip:zipper) v $$SRC >> $@; done",
+    tools = ["@bazel_tools//tools/zip:zipper"],
 )
 
 sh_test(
@@ -149,7 +150,8 @@
         ":deploy-env-sources",
     ],
     outs = ["sources.txt"],
-    cmd = "for SRC in $(SRCS); do jar tf $$SRC >> $@; done",
+    cmd = "for SRC in $(SRCS); do $(location @bazel_tools//tools/zip:zipper) v $$SRC >> $@; done",
+    tools = ["@bazel_tools//tools/zip:zipper"],
 )
 
 sh_test(
diff --git a/tests/integration/kt_jvm_export/BUILD b/tests/integration/kt_jvm_export/BUILD
index d9c473b..3387a63 100644
--- a/tests/integration/kt_jvm_export/BUILD
+++ b/tests/integration/kt_jvm_export/BUILD
@@ -16,7 +16,8 @@
         ":test-project",
     ],
     outs = ["classes.txt"],
-    cmd = "for SRC in $(SRCS); do jar tf $$SRC >> $@; done",
+    cmd = "for SRC in $(SRCS); do $(location @bazel_tools//tools/zip:zipper) v $$SRC >> $@; done",
+    tools = ["@bazel_tools//tools/zip:zipper"],
 )
 
 sh_test(
diff --git a/tests/unit/aar_import/aar_import_test.bzl b/tests/unit/aar_import/aar_import_test.bzl
index 3bd93b4..b752949 100644
--- a/tests/unit/aar_import/aar_import_test.bzl
+++ b/tests/unit/aar_import/aar_import_test.bzl
@@ -1,5 +1,5 @@
 load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
-load("@rules_java//java/common:java_info.bzl", "JavaInfo")
+load("@compatibility_proxy//:proxy.bzl", "JavaInfo")
 
 def _does_aar_import_have_srcjar_impl(ctx):
     env = analysistest.begin(ctx)
diff --git a/tests/unit/exports/exports_test.bzl b/tests/unit/exports/exports_test.bzl
index 20df330..c1a03ba 100644
--- a/tests/unit/exports/exports_test.bzl
+++ b/tests/unit/exports/exports_test.bzl
@@ -1,8 +1,7 @@
 """Unit tests for exports."""
 
 load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
-load("@rules_java//java:java_library.bzl", "java_library")
-load("@rules_java//java/common:java_info.bzl", "JavaInfo")
+load("@compatibility_proxy//:proxy.bzl", "JavaInfo", "java_library")
 load("//private/rules:has_maven_deps.bzl", "MavenInfo", "has_maven_deps")
 load("//private/rules:maven_project_jar.bzl", "maven_project_jar")
 
diff --git a/tests/unit/maven_info_provider/maven_info_test.bzl b/tests/unit/maven_info_provider/maven_info_test.bzl
index 7678353..7580117 100644
--- a/tests/unit/maven_info_provider/maven_info_test.bzl
+++ b/tests/unit/maven_info_provider/maven_info_test.bzl
@@ -1,7 +1,7 @@
 """Unit tests for java_export MavenInfo behavior."""
 
 load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
-load("@rules_java//java:java_library.bzl", "java_library")
+load("@compatibility_proxy//:proxy.bzl", "java_library")
 load("//private/rules:has_maven_deps.bzl", "MavenInfo", "has_maven_deps")
 
 def _maven_info_test_impl(ctx):
diff --git a/tests/unit/specs_test.bzl b/tests/unit/specs_test.bzl
index 64a0424..0bf90f3 100644
--- a/tests/unit/specs_test.bzl
+++ b/tests/unit/specs_test.bzl
@@ -1,59 +1,5 @@
 load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest")
-load("//:specs.bzl", "json", "maven", "parse", "utils")
-
-#
-# Spec tests
-#
-
-def _maven_repository_test_impl(ctx):
-    repo_url = "https://maven.google.com/"
-
-    env = unittest.begin(ctx)
-    asserts.equals(
-        env,
-        {"repo_url": repo_url},
-        maven.repository(repo_url),
-    )
-    asserts.equals(
-        env,
-        {"repo_url": repo_url, "credentials": {"user": "bob", "password": "l0bl4w"}},
-        maven.repository(repo_url, "bob", "l0bl4w"),
-    )
-    return unittest.end(env)
-
-maven_repository_test = unittest.make(_maven_repository_test_impl)
-
-def _maven_artifact_test_impl(ctx):
-    env = unittest.begin(ctx)
-    asserts.equals(
-        env,
-        {"group": "junit", "artifact": "junit", "version": "4.12"},
-        maven.artifact("junit", "junit", "4.12"),
-    )
-    asserts.equals(
-        env,
-        {"group": "junit", "artifact": "junit", "version": "4.12", "packaging": "jar"},
-        maven.artifact("junit", "junit", "4.12", packaging = "jar"),
-    )
-    asserts.equals(
-        env,
-        {"group": "junit", "artifact": "junit", "version": "4.12", "packaging": "jar", "neverlink": True},
-        maven.artifact("junit", "junit", "4.12", packaging = "jar", neverlink = True),
-    )
-    return unittest.end(env)
-
-maven_artifact_test = unittest.make(_maven_artifact_test_impl)
-
-def _maven_exclusion_test_impl(ctx):
-    env = unittest.begin(ctx)
-    asserts.equals(
-        env,
-        {"group": "junit", "artifact": "junit"},
-        maven.exclusion("junit", "junit"),
-    )
-    return unittest.end(env)
-
-maven_exclusion_test = unittest.make(_maven_exclusion_test_impl)
+load("//:specs.bzl", "json", "parse", "utils")
 
 #
 # Parse tests
@@ -97,11 +43,9 @@
         env,
         [
             {"repo_url": "https://maven.google.com"},
-            {"repo_url": "https://repo1.maven.org/maven2", "credentials": {"user": "bob", "password": "l0bl4w"}},
         ],
         parse.parse_repository_spec_list([
             "https://maven.google.com",
-            maven.repository("https://repo1.maven.org/maven2", "bob", "l0bl4w"),
         ]),
     )
     return unittest.end(env)
@@ -125,22 +69,18 @@
         env,
         [
             {"group": "org.eclipse.aether", "artifact": "aether-api", "version": "1.1.0", "packaging": None, "classifier": None},
-            {"group": "org.eclipse.aether", "artifact": "aether-api", "version": "1.1.0", "packaging": "jar", "classifier": "javadoc", "neverlink": True},
         ],
         parse.parse_artifact_spec_list([
             "org.eclipse.aether:aether-api:1.1.0",
-            maven.artifact("org.eclipse.aether", "aether-api", "1.1.0", packaging = "jar", classifier = "javadoc", neverlink = True),
         ]),
     )
     asserts.equals(
         env,
         [
             {"group": "org.eclipse.aether", "artifact": "aether-api", "version": "", "packaging": None, "classifier": None},
-            {"group": "org.eclipse.aether", "artifact": "aether-api", "version": "", "neverlink": True},
         ],
         parse.parse_artifact_spec_list([
             "org.eclipse.aether:aether-api",
-            maven.artifact(group = "org.eclipse.aether", artifact = "aether-api", neverlink = True),
         ]),
     )
     return unittest.end(env)
@@ -397,9 +337,6 @@
     unittest.suite(
         "artifact_specs_tests",
         parse_coordinate_test,
-        maven_repository_test,
-        maven_artifact_test,
-        maven_exclusion_test,
     )
 
     unittest.suite(