
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

------------------------------------------------------------------------------------
The following bundled 3rd party jars are distributed under the
Apache Software License, Version 2.

- lib/com.fasterxml.jackson.core-jackson-annotations-2.13.4.jar [1]
- lib/com.fasterxml.jackson.core-jackson-core-2.13.4.jar [2]
- lib/com.fasterxml.jackson.core-jackson-databind-2.13.4.2.jar [3]
- lib/com.google.guava-guava-32.0.1-jre.jar [4]
- lib/com.google.guava-failureaccess-1.0.1.jar [4]
- lib/com.google.guava-listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar [4]
- lib/commons-cli-commons-cli-1.2.jar [5]
- lib/commons-codec-commons-codec-1.6.jar [6]
- lib/commons-configuration-commons-configuration-1.10.jar [7]
- lib/commons-io-commons-io-2.7.jar [8]
- lib/commons-lang-commons-lang-2.6.jar [9]
- lib/commons-logging-commons-logging-1.1.1.jar [10]
- lib/io.netty-netty-buffer-4.1.108.Final.jar [11]
- lib/io.netty-netty-codec-4.1.108.Final.jar [11]
- lib/io.netty-netty-codec-dns-4.1.108.Final.jar [11]
- lib/io.netty-netty-codec-http-4.1.108.Final.jar [11]
- lib/io.netty-netty-codec-http2-4.1.108.Final.jar [11]
- lib/io.netty-netty-codec-socks-4.1.108.Final.jar [11]
- lib/io.netty-netty-common-4.1.108.Final.jar [11]
- lib/io.netty-netty-handler-4.1.108.Final.jar [11]
- lib/io.netty-netty-handler-proxy-4.1.108.Final.jar [11]
- lib/io.netty-netty-resolver-4.1.108.Final.jar [11]
- lib/io.netty-netty-resolver-dns-4.1.108.Final.jar [11]
- lib/io.netty-netty-tcnative-boringssl-static-2.0.65.Final.jar [11]
- lib/io.netty-netty-tcnative-boringssl-static-2.0.65.Final-linux-aarch_64.jar [11]
- lib/io.netty-netty-tcnative-boringssl-static-2.0.65.Final-linux-x86_64.jar [11]
- lib/io.netty-netty-tcnative-boringssl-static-2.0.65.Final-osx-aarch_64.jar [11]
- lib/io.netty-netty-tcnative-boringssl-static-2.0.65.Final-osx-x86_64.jar [11]
- lib/io.netty-netty-tcnative-boringssl-static-2.0.65.Final-windows-x86_64.jar [11]
- lib/io.netty-netty-tcnative-classes-2.0.65.Final.jar [11]
- lib/io.netty-netty-transport-4.1.108.Final.jar [11]
- lib/io.netty-netty-transport-classes-epoll-4.1.108.Final.jar [11]
- lib/io.netty-netty-transport-native-epoll-4.1.108.Final-linux-aarch_64.jar [11]
- lib/io.netty-netty-transport-native-epoll-4.1.108.Final-linux-x86_64.jar [11]
- lib/io.netty.incubator-netty-incubator-transport-native-io_uring-0.0.25.Final-linux-x86_64.jar [11]
- lib/io.netty.incubator-netty-incubator-transport-native-io_uring-0.0.25.Final-linux-aarch_64.jar [11]
- lib/io.netty.incubator-netty-incubator-transport-classes-io_uring-0.0.25.Final.jar [11]
- lib/io.netty-netty-transport-native-unix-common-4.1.108.Final.jar [11]
- lib/io.prometheus-simpleclient-0.15.0.jar [12]
- lib/io.prometheus-simpleclient_common-0.15.0.jar [12]
- lib/io.prometheus-simpleclient_hotspot-0.15.0.jar [12]
- lib/io.prometheus-simpleclient_servlet-0.15.0.jar [12]
- lib/io.prometheus-simpleclient_servlet_common-0.15.0.jar [12]
- lib/io.prometheus-simpleclient_tracer_common-0.15.0.jar [12]
- lib/io.prometheus-simpleclient_tracer_otel-0.15.0.jar [12]
- lib/io.prometheus-simpleclient_tracer_otel_agent-0.15.0.jar [12]
- lib/io.vertx-vertx-auth-common-4.5.7.jar [13]
- lib/io.vertx-vertx-bridge-common-4.5.7.jar [14]
- lib/io.vertx-vertx-core-4.5.7.jar [15]
- lib/io.vertx-vertx-web-4.5.7.jar [16]
- lib/io.vertx-vertx-web-common-4.5.7.jar [16]
- lib/org.apache.logging.log4j-log4j-api-2.23.1.jar [17]
- lib/org.apache.logging.log4j-log4j-core-2.23.1.jar [17]
- lib/org.apache.logging.log4j-log4j-slf4j2-impl-2.23.1.jar [17]
- lib/org.apache.commons-commons-collections4-4.1.jar [19]
- lib/org.apache.commons-commons-lang3-3.6.jar [20]
- lib/org.apache.zookeeper-zookeeper-3.8.4.jar [21]
- lib/org.apache.zookeeper-zookeeper-jute-3.8.4.jar [21]
- lib/org.apache.zookeeper-zookeeper-3.8.4-tests.jar [21]
- lib/org.eclipse.jetty-jetty-http-9.4.53.v20231009.jar [22]
- lib/org.eclipse.jetty-jetty-io-9.4.53.v20231009.jar [22]
- lib/org.eclipse.jetty-jetty-security-9.4.53.v20231009.jar [22]
- lib/org.eclipse.jetty-jetty-server-9.4.53.v20231009.jar [22]
- lib/org.eclipse.jetty-jetty-servlet-9.4.53.v20231009.jar [22]
- lib/org.eclipse.jetty-jetty-util-9.4.53.v20231009.jar [22]
- lib/org.eclipse.jetty-jetty-util-ajax-9.4.53.v20231009.jar [22]
- lib/org.rocksdb-rocksdbjni-7.9.2.jar [23]
- lib/com.beust-jcommander-1.82.jar [24]
- lib/com.yahoo.datasketches-memory-0.8.3.jar [25]
- lib/com.yahoo.datasketches-sketches-core-0.8.3.jar [25]
- lib/net.jpountz.lz4-lz4-1.3.0.jar [26]
- lib/com.google.api.grpc-proto-google-common-protos-2.17.0.jar [28]
- lib/com.google.code.gson-gson-2.10.1.jar [29]
- lib/io.opencensus-opencensus-api-0.28.0.jar [30]
- lib/io.opencensus-opencensus-contrib-http-util-0.28.0.jar [30]
- lib/io.opencensus-opencensus-proto-0.2.0.jar [30]
- lib/io.grpc-grpc-all-1.56.0.jar [33]
- lib/io.grpc-grpc-alts-1.56.0.jar [33]
- lib/io.grpc-grpc-api-1.56.0.jar [33]
- lib/io.grpc-grpc-auth-1.56.0.jar [33]
- lib/io.grpc-grpc-context-1.56.0.jar [33]
- lib/io.grpc-grpc-core-1.56.0.jar [33]
- lib/io.grpc-grpc-grpclb-1.56.0.jar [33]
- lib/io.grpc-grpc-netty-1.56.0.jar [33]
- lib/io.grpc-grpc-protobuf-1.56.0.jar [33]
- lib/io.grpc-grpc-protobuf-lite-1.56.0.jar [33]
- lib/io.grpc-grpc-services-1.56.0.jar [33]
- lib/io.grpc-grpc-stub-1.56.0.jar [33]
- lib/io.grpc-grpc-testing-1.56.0.jar [33]
- lib/io.grpc-grpc-xds-1.56.0.jar [33]
- lib/io.grpc-grpc-rls-1.56.0.jar[33]
- lib/org.apache.curator-curator-client-5.1.0.jar [34]
- lib/org.apache.curator-curator-framework-5.1.0.jar [34]
- lib/org.apache.curator-curator-recipes-5.1.0.jar [34]
- lib/com.google.errorprone-error_prone_annotations-2.9.0.jar [36]
- lib/org.apache.yetus-audience-annotations-0.12.0.jar [37]
- lib/org.jctools-jctools-core-2.1.2.jar [38]
- lib/org.apache.httpcomponents-httpclient-4.5.13.jar [39]
- lib/org.apache.httpcomponents-httpcore-4.4.15.jar [40]
- lib/org.apache.thrift-libthrift-0.14.2.jar [41]
- lib/com.google.android-annotations-4.1.1.4.jar [42]
- lib/com.google.http-client-google-http-client-1.41.0.jar [43]
- lib/com.google.http-client-google-http-client-gson-1.41.0.jar [43]
- lib/com.google.auto.value-auto-value-annotations-1.10.1.jar [44]
- lib/com.google.j2objc-j2objc-annotations-2.8.jar [45]
- lib/com.google.re2j-re2j-1.7.jar [46]
- lib/io.dropwizard.metrics-metrics-core-4.1.12.1.jar [47]
- lib/io.dropwizard.metrics-metrics-graphite-4.1.12.1.jar [47]
- lib/io.dropwizard.metrics-metrics-jmx-4.1.12.1.jar [47]
- lib/io.dropwizard.metrics-metrics-jvm-4.1.12.1.jar [47]
- lib/io.perfmark-perfmark-api-0.26.0.jar [48]
- lib/org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar [49]
- lib/org.xerial.snappy-snappy-java-1.1.10.5.jar [50]
- lib/io.reactivex.rxjava3-rxjava-3.0.1.jar [51]
- lib/org.hdrhistogram-HdrHistogram-2.1.10.jar [52]
- lib/com.carrotsearch-hppc-0.9.1.jar [53]
- lib/com.squareup.okhttp3-okhttp-4.11.0.jar [54]
- lib/com.squareup.okio-okio-3.2.0.jar [54]
- lib/com.squareup.okio-okio-jvm-3.2.0.jar [54]
- lib/io.opentelemetry-opentelemetry-api-1.26.0.jar [55]
- lib/io.opentelemetry-opentelemetry-api-events-1.26.0-alpha.jar [55]
- lib/io.opentelemetry-opentelemetry-api-logs-1.26.0-alpha.jar [55]
- lib/io.opentelemetry-opentelemetry-context-1.26.0.jar [55]
- lib/io.opentelemetry-opentelemetry-exporter-common-1.26.0.jar [55]
- lib/io.opentelemetry-opentelemetry-exporter-otlp-1.26.0.jar [55]
- lib/io.opentelemetry-opentelemetry-exporter-otlp-common-1.26.0.jar [55]
- lib/io.opentelemetry-opentelemetry-exporter-prometheus-1.26.0-alpha.jar [55]
- lib/io.opentelemetry-opentelemetry-extension-incubator-1.26.0-alpha.jar [55]
- lib/io.opentelemetry-opentelemetry-sdk-1.26.0.jar [55]
- lib/io.opentelemetry-opentelemetry-sdk-common-1.26.0.jar [55]
- lib/io.opentelemetry-opentelemetry-sdk-extension-autoconfigure-1.26.0-alpha.jar [55]
- lib/io.opentelemetry-opentelemetry-sdk-extension-autoconfigure-spi-1.26.0.jar [55]
- lib/io.opentelemetry-opentelemetry-sdk-logs-1.26.0-alpha.jar [55]
- lib/io.opentelemetry-opentelemetry-sdk-metrics-1.26.0.jar [55]
- lib/io.opentelemetry-opentelemetry-sdk-trace-1.26.0.jar [55]
- lib/io.opentelemetry-opentelemetry-semconv-1.26.0-alpha.jar [55]
- lib/io.opentelemetry.instrumentation-opentelemetry-instrumentation-api-1.26.0.jar [55]
- lib/io.opentelemetry.instrumentation-opentelemetry-instrumentation-api-semconv-1.26.0-alpha.jar [55]
- lib/io.opentelemetry.instrumentation-opentelemetry-runtime-metrics-1.26.0-alpha.jar [54]
- lib/org.jetbrains-annotations-13.0.jar [56]
- lib/org.jetbrains.kotlin-kotlin-stdlib-1.6.20.jar [56]
- lib/org.jetbrains.kotlin-kotlin-stdlib-common-1.6.20.jar [56]
- lib/org.jetbrains.kotlin-kotlin-stdlib-jdk7-1.6.20.jar [56]
- lib/org.jetbrains.kotlin-kotlin-stdlib-jdk8-1.6.20.jar [56]
- lib/com.lmax-disruptor-4.0.0.jar [57]

[1] Source available at https://github.com/FasterXML/jackson-annotations/tree/jackson-annotations-2.13.4
[2] Source available at https://github.com/FasterXML/jackson-core/tree/jackson-core-2.13.4
[3] Source available at https://github.com/FasterXML/jackson-databind/tree/jackson-databind-2.13.4.2
[4] Source available at https://github.com/google/guava/tree/v32.0.1
[5] Source available at https://github.com/apache/commons-cli/tree/cli-1.2
[6] Source available at https://github.com/apache/commons-codec/tree/commons-codec-1.6-RC2
[7] Source available at https://github.com/apache/commons-configuration/tree/CONFIGURATION_1_10
[8] Source available at https://github.com/apache/commons-io/tree/rel/commons-io-2.7
[9] Source available at https://github.com/apache/commons-lang/tree/LANG_2_6
[10] Source available at https://github.com/apache/commons-logging/tree/commons-logging-1.1.1
[11] Source available at https://github.com/netty/netty/tree/netty-4.1.108.Final
[12] Source available at https://github.com/prometheus/client_java/tree/parent-0.15.0
[13] Source available at https://github.com/vert-x3/vertx-auth/tree/4.3.2
[14] Source available at https://github.com/vert-x3/vertx-bridge-common/tree/4.3.2
[15] Source available at https://github.com/eclipse/vert.x/tree/4.3.2
[16] Source available at https://github.com/vert-x3/vertx-web/tree/4.3.2
[17] Source available at https://github.com/apache/logging-log4j2/tree/rel/2.23.1
[19] Source available at https://github.com/apache/commons-collections/tree/collections-4.1
[20] Source available at https://github.com/apache/commons-lang/tree/LANG_3_6
[21] Source available at https://github.com/apache/zookeeper/tree/release-3.8.0
[22] Source available at https://github.com/eclipse/jetty.project/tree/jetty-9.4.48.v20220622
[23] Source available at https://github.com/facebook/rocksdb/tree/v6.29.4.1
[24] Source available at https://github.com/cbeust/jcommander/tree/1.82
[25] Source available at https://github.com/DataSketches/sketches-core/tree/sketches-0.8.3
[26] Source available at https://github.com/lz4/lz4-java/tree/1.3.0
[28] Source available at https://github.com/googleapis/java-common-protos/tree/v2.17.0
[29] Source available at https://github.com/google/gson/tree/gson-parent-2.10.1
[30] Source available at https://github.com/census-instrumentation/opencensus-java/tree/v0.28.0
[33] Source available at https://github.com/grpc/grpc-java/tree/v1.56.0
[34] Source available at https://github.com/apache/curator/releases/tag/apache.curator-5.1.0
[36] Source available at https://github.com/google/error-prone/tree/v2.9.0
[37] Source available at https://github.com/apache/yetus/tree/rel/0.12.0
[38] Source available at https://github.com/JCTools/JCTools/tree/v2.1.2
[39] Source available at https://github.com/apache/httpcomponents-client/tree/rel/v4.5.13
[40] Source available at https://github.com/apache/httpcomponents-core/tree/rel/v4.4.15
[41] Source available at https://github.com/apache/thrift/tree/0.14.2
[42] Source available at https://source.android.com/
[43] Source available at https://github.com/googleapis/google-http-java-client/releases/tag/v1.41.0
[44] Source available at https://github.com/google/auto/releases/tag/auto-value-1.10.1
[45] Source available at https://github.com/google/j2objc/releases/tag/1.3
[46] Source available at https://github.com/google/re2j/releases/tag/re2j-1.7
[47] Source available at https://github.com/dropwizard/metrics/releases/tag/v4.1.12.1
[48] Source available at https://github.com/perfmark/perfmark/releases/tag/v0.26.0
[49] Source available at https://github.com/google/conscrypt/releases/tag/2.5.2
[50] Source available at https://github.com/xerial/snappy-java/releases/tag/v1.1.10.5
[51] Source available at https://github.com/ReactiveX/RxJava/tree/v3.0.1
[52] Source available at https://github.com/HdrHistogram/HdrHistogram/tree/HdrHistogram-2.1.10
[53] Source available at https://github.com/carrotsearch/hppc/tree/0.9.1
[54] Source available at https://github.com/square/okio/releases/tag/parent-3.2.0
[55] Source available at https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.26.0
[56] Source available at https://github.com/JetBrains/kotlin/releases/tag/v1.6.20
[57] Source available at https://github.com/LMAX-Exchange/disruptor/releases/tag/4.0.0

------------------------------------------------------------------------------------
lib/io.netty-netty-codec-4.1.108.Final.jar bundles some 3rd party dependencies

lib/io.netty-netty-codec-4.1.108.Final.jar contains the extensions to Java Collections Framework which has
been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:

  * LICENSE:
    * deps/netty/LICENSE.jsr166y.txt (Public Domain)
  * HOMEPAGE:
    * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
    * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified version of Robert Harder's Public Domain
Base64 Encoder and Decoder, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.base64.txt (Public Domain)
  * HOMEPAGE:
    * http://iharder.sourceforge.net/current/java/base64/

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified portion of 'Webbit', an event based
WebSocket and HTTP server, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.webbit.txt (BSD License)
  * HOMEPAGE:
    * https://github.com/joewalnes/webbit

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified portion of 'SLF4J', a simple logging
facade for Java, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.slf4j.txt (MIT License)
  * HOMEPAGE:
    * http://www.slf4j.org/

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified portion of 'Apache Harmony', an open source
Java SE, which can be obtained at:

  * NOTICE:
    * deps/netty/NOTICE.harmony.txt
  * LICENSE:
    * deps/netty/LICENSE.harmony.txt (Apache License 2.0)
  * HOMEPAGE:
    * http://archive.apache.org/dist/harmony/

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified portion of 'jbzip2', a Java bzip2 compression
and decompression library written by Matthew J. Francis. It can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.jbzip2.txt (MIT License)
  * HOMEPAGE:
    * https://code.google.com/p/jbzip2/

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified portion of 'libdivsufsort', a C API library to construct
the suffix array and the Burrows-Wheeler transformed string for any input string of
a constant-size alphabet written by Yuta Mori. It can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.libdivsufsort.txt (MIT License)
  * HOMEPAGE:
    * https://github.com/y-256/libdivsufsort

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified portion of Nitsan Wakart's 'JCTools',
Java Concurrency Tools for the JVM, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.jctools.txt (ASL2 License)
  * HOMEPAGE:
    * https://github.com/JCTools/JCTools

lib/io.netty-netty-codec-4.1.108.Final.jar optionally depends on 'JZlib', a re-implementation of zlib in
pure Java, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.jzlib.txt (BSD style License)
  * HOMEPAGE:
    * http://www.jcraft.com/jzlib/

lib/io.netty-netty-codec-4.1.108.Final.jar optionally depends on 'Compress-LZF', a Java library for encoding and
decoding data in LZF format, written by Tatu Saloranta. It can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.compress-lzf.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/ning/compress

lib/io.netty-netty-codec-4.1.108.Final.jar optionally depends on 'lz4', a LZ4 Java compression
and decompression library written by Adrien Grand. It can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.lz4.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/jpountz/lz4-java

lib/io.netty-netty-codec-4.1.108.Final.jar optionally depends on 'lzma-java', a LZMA Java compression
and decompression library, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.lzma-java.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/jponge/lzma-java

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified portion of 'jfastlz', a Java port of FastLZ compression
and decompression library written by William Kinney. It can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.jfastlz.txt (MIT License)
  * HOMEPAGE:
    * https://code.google.com/p/jfastlz/

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified portion of and optionally depends on 'Protocol Buffers',
Google's data interchange format, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.protobuf.txt (New BSD License)
  * HOMEPAGE:
    * https://github.com/google/protobuf

lib/io.netty-netty-codec-4.1.108.Final.jar optionally depends on 'Bouncy Castle Crypto APIs' to generate
a temporary self-signed X.509 certificate when the JVM does not provide the
equivalent functionality.  It can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.bouncycastle.txt (MIT License)
  * HOMEPAGE:
    * http://www.bouncycastle.org/

lib/io.netty-netty-codec-4.1.108.Final.jar optionally depends on 'Snappy', a compression library produced
by Google Inc, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.snappy.txt (New BSD License)
  * HOMEPAGE:
    * https://github.com/google/snappy

lib/io.netty-netty-codec-4.1.108.Final.jar optionally depends on 'JBoss Marshalling', an alternative Java
serialization API, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.jboss-marshalling.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/jboss-remoting/jboss-marshalling

lib/io.netty-netty-codec-4.1.108.Final.jar optionally depends on 'Caliper', Google's micro-
benchmarking framework, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.caliper.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/google/caliper

lib/io.netty-netty-codec-4.1.108.Final.jar optionally depends on 'Apache Commons Logging', a logging
framework, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.commons-logging.txt (Apache License 2.0)
  * HOMEPAGE:
    * http://commons.apache.org/logging/

lib/io.netty-netty-codec-4.1.108.Final.jar optionally depends on 'Apache Log4J', a logging framework, which
can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.log4j.txt (Apache License 2.0)
  * HOMEPAGE:
    * http://logging.apache.org/log4j/

lib/io.netty-netty-codec-4.1.108.Final.jar optionally depends on 'Aalto XML', an ultra-high performance
non-blocking XML processor, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.aalto-xml.txt (Apache License 2.0)
  * HOMEPAGE:
    * http://wiki.fasterxml.com/AaltoHome

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified version of 'HPACK', a Java implementation of
the HTTP/2 HPACK algorithm written by Twitter. It can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.hpack.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/twitter/hpack

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified version of 'HPACK', a Java implementation of
the HTTP/2 HPACK algorithm written by Cory Benfield. It can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.hyper-hpack.txt (MIT License)
  * HOMEPAGE:
    * https://github.com/python-hyper/hpack/

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified version of 'HPACK', a Java implementation of
the HTTP/2 HPACK algorithm written by Tatsuhiro Tsujikawa. It can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.nghttp2-hpack.txt (MIT License)
  * HOMEPAGE:
    * https://github.com/nghttp2/nghttp2/

lib/io.netty-netty-codec-4.1.108.Final.jar contains a modified portion of 'Apache Commons Lang', a Java library
provides utilities for the java.lang API, which can be obtained at:

  * LICENSE:
    * deps/netty/LICENSE.commons-lang.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://commons.apache.org/proper/commons-lang/


lib/io.netty-netty-codec-4.1.108.Final.jar contains the Maven wrapper scripts from 'Maven Wrapper',
that provides an easy way to ensure a user has everything necessary to run the Maven build.

  * LICENSE:
    * deps/netty/LICENSE.mvn-wrapper.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/takari/maven-wrapper

lib/io.netty-netty-codec-4.1.108.Final.jar contains the dnsinfo.h header file,
that provides a way to retrieve the system DNS configuration on MacOS.
This private header is also used by Apple's open source
 mDNSResponder (https://opensource.apple.com/tarballs/mDNSResponder/).

 * LICENSE:
    * deps/netty/LICENSE.dnsinfo.txt (Apache License 2.0)
  * HOMEPAGE:
    * http://www.opensource.apple.com/source/configd/configd-453.19/dnsinfo/dnsinfo.h

------------------------------------------------------------------------------------
lib/org.rocksdb-rocksdbjni-7.9.2.jar is derived from leveldb, which is under the following license.

Copyright (c) 2011 The LevelDB Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
     copyright notice, this list of conditions and the following disclaimer
     in the documentation and/or other materials provided with the
     distribution.
   * Neither the name of Google Inc. nor the names of its
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------------
This product bundles the JSR-305 reference implementation, which is available under
a "3-clause BSD" license.  For details, see deps/jsr-305/LICENSE.

Bundled as lib/com.google.code.findbugs-jsr305-3.0.2.jar
Source available at https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/jsr-305/source-archive.zip
------------------------------------------------------------------------------------
This product bundles Google Protocol Buffers, which is available under a "3-clause BSD"
license.

Bundled as
  - lib/com.google.protobuf-protobuf-java-3.22.3.jar
Source available at https://github.com/google/protobuf/tree/v3.22.3
For details, see deps/protobuf-3.14.0/LICENSE.

Bundled as
  - lib/com.google.protobuf-protobuf-java-util-3.22.3.jar
Source available at https://github.com/protocolbuffers/protobuf/tree/v3.22.3
For details, see deps/protobuf-3.12.0/LICENSE.
------------------------------------------------------------------------------------
This product bundles the JCP Standard Java Servlet API, which is available under a
CDDL 1.1 license. For details, see deps/javax.servlet-api-4.0.0/CDDL+GPL-1.1.

Bundled as lib/javax.servlet-javax.servlet-api-4.0.0.jar
Source available at https://github.com/javaee/servlet-spec/tree/4.0.0
------------------------------------------------------------------------------------
This product bundles Simple Logging Facade for Java, which is available under a
MIT license. For details, see deps/slf4j-2.0.12/LICENSE.txt.

Bundled as
  - lib/org.slf4j-slf4j-api-2.0.12.jar
Source available at https://github.com/qos-ch/slf4j/tree/v_2.0.12
------------------------------------------------------------------------------------
This product bundles the Google Auth Library, which is available under a "3-clause BSD"
license. For details, see deps/google-auth-library-credentials-0.20.0/LICENSE

Bundled as
  - lib/com.google.auth-google-auth-library-credentials-1.4.0.jar
  - lib/com.google.auth-google-auth-library-oauth2-http-1.4.0.jar
Source available at https://github.com/googleapis/google-auth-library-java/releases/tag/v1.4.0
------------------------------------------------------------------------------------
This product bundles the bouncycastle Library.
For license details, see deps/bouncycastle-1.0.2.3/LICENSE.html

Bundled as
  - lib/org.bouncycastle-bc-fips-1.0.2.4.jar
------------------------------------------------------------------------------------
This product uses the annotations from The Checker Framework, which are licensed under
MIT License. For details, see deps/checker-qual-3.5.0/LICENSE

Bundles as
  - lib/org.checkerframework-checker-qual-3.33.0.jar
------------------------------------------------------------------------------------
This product bundles the Reactive Streams library, which is licensed under
Public Domain (CC0). For details, see deps/reactivestreams-1.0.3/LICENSE

Bundles as
  - lib/org.reactivestreams-reactive-streams-1.0.3.jar
