                                 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.

------------------------------------------------------------------------------------
This project bundles some components that are also licensed under the Apache
License Version 2.0:

com.101tec:zkclient:0.7
com.amazonaws:aws-java-sdk:1.7.4
com.beust.jcommander:1.64
com.clearspring.analytics:stream:2.7.0
com.fasterxml.jackson.core:jackson-annotations:2.9.8
com.fasterxml.jackson.core:jackson-core:2.9.8
com.fasterxml.jackson.core:jackson-databind:2.9.8
com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.9.8
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.9.8
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.0
com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.9.8
com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.9.8
com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.8
com.fasterxml.jackson.module:jackson-module-paranamer:2.6.5
com.fasterxml.jackson.module:jackson-module-scala_2.11:2.6.5
com.fasterxml.woodstox:woodstox-core:5.0.3
com.github.jnr:jffi:1.2.9
com.github.jnr:jnr-constants:0.8.7
com.github.jnr:jnr-ffi:2.0.3
com.google.api-client:google-api-client
com.google.api.grpc:proto-google-common-protos:1.17.0
com.google.api.grpc:proto-google-iam-v1:0.13.0
com.google.api:api-common:1.8.1
com.google.api:gax:1.49.1
com.google.api:gax-httpjson:0.66.1
com.google.apis:google-api-services-storage:v1-rev20190910-1.30.3
com.google.auth:google-auth-library-credentials:0.18.0
com.google.auth:google-auth-library-oauth2-http:0.18.0
com.google.auto.value:auto-value-annotations:1.6.6
com.google.cloud:google-cloud-core:1.91.3
com.google.cloud:google-cloud-core-http:1.91.3
com.google.cloud:google-cloud-nio:0.120.0-alpha
com.google.cloud:google-cloud-storage:1.102.0
com.google.code.findbugs:jsr305:3.0.0
com.google.code.gson:gson:2.2.4
com.google.errorprone:error_prone_annotations:2.3.2
com.google.guava:guava:20.0
com.google.http-client:google-http-client-appengine:1.32.1
com.google.http-client:google-http-client-jackson2:1.32.1
com.google.http-client:google-http-client:1.32.1
com.google.j2objc:j2objc-annotations:1.3
com.google.oauth-client:google-oauth-client:1.30.3
com.google.protobuf:protobuf-java-util:3.10.0
com.google.protobuf:protobuf-java:2.5.0
com.google.protobuf:protobuf-java:3.10.0
com.jamesmurty.utils:java-xmlbuilder:0.4
com.jamesmurty.utils:java-xmlbuilder:1.0
com.jayway.jsonpath:json-path:2.4.0
com.lmax:disruptor:3.3.4
com.ning:async-http-client:1.9.21
com.ning:compress-lzf:1.0.3
com.tdunning:t-digest:3.2
com.typesafe.netty:netty-reactive-streams-http:2.0.4
com.typesafe.netty:netty-reactive-streams:2.0.4
com.typesafe.scala-logging:scala-logging_2.11:3.9.0
com.yammer.metrics:metrics-core:2.2.0
commons-beanutils:commons-beanutils:1.8.3
commons-beanutils:commons-beanutils-core:1.8.0
commons-cli:commons-cli:1.2
commons-codec:commons-codec:1.6
commons-collections:commons-collections:3.2.1
commons-configuration:commons-configuration:1.6
commons-daemon:commons-daemon:1.0.13
commons-digester:commons-digester:1.8
commons-httpclient:commons-httpclient:3.1
commons-io:commons-io:2.4
commons-lang:commons-lang:2.6
commons-logging:commons-logging:1.2
commons-net:commons-net:3.1
io.airlift:aircompressor:0.10
io.confluent:common-config:5.3.1
io.confluent:common-utils:5.3.1
io.confluent:kafka-avro-serializer:5.3.1
io.confluent:kafka-schema-registry-client:5.3.1
io.dropwizard.metrics:metrics-core:3.2.3
io.dropwizard.metrics:metrics-graphite:3.2.3
io.dropwizard.metrics:metrics-json:3.2.3
io.dropwizard.metrics:metrics-jvm:3.2.3
io.grpc:grpc-context:1.22.1
io.netty:netty-all:4.1.42.Final
io.netty:netty-buffer:4.1.42.Final
io.netty:netty-codec-http2:4.1.42.Final
io.netty:netty-codec-http:4.1.42.Final
io.netty:netty-codec-socks:4.1.42.Final
io.netty:netty-codec:4.1.42.Final
io.netty:netty-common:4.1.42.Final
io.netty:netty-handler-proxy:4.1.42.Final
io.netty:netty-handler:4.1.42.Final
io.netty:netty-resolver:4.1.42.Final
io.netty:netty-tcnative-boringssl-static:2.0.26.Final
io.netty:netty-transport-native-epoll:linux-x86_64:4.1.42.Final
io.netty:netty-transport-native-unix-common:4.1.42.Final
io.netty:netty-transport:4.1.42.Final
io.netty:netty:3.9.6.Final
io.opencensus:opencensus-api:0.24.0
io.opencensus:opencensus-contrib-http-util:0.24.0
io.projectreactor.addons:reactor-pool:0.1.0.RELEASE
io.projectreactor.netty:reactor-netty:0.9.0.RELEASE
io.projectreactor:reactor-core:3.3.0.RELEASE
io.swagger:swagger-annotations:1.5.16
io.swagger:swagger-core:1.5.16
io.swagger:swagger-jaxrs:1.5.16
io.swagger:swagger-jersey2-jaxrs:1.5.16
io.swagger:swagger-models:1.5.16
it.unimi.dsi:fastutil:8.2.3
javax.inject:javax.inject:1
javax.servlet.jsp:jsp-api:2.1
javax.servlet:servlet-api:2.5
javax.validation:validation-api:2.0.1.Final
joda-time:joda-time:2.10.5
me.lemire.integercompression:JavaFastPFOR:0.0.13
mx4j:mx4j:3.0.2
net.java.dev.jets3t:jets3t:0.9.0
net.java.dev.jets3t:jets3t:0.9.3
net.jpountz.lz4:lz4:1.2.0
net.jpountz.lz4:lz4:1.3.0
net.minidev:accessors-smart:1.2
net.minidev:json-smart:2.3
org.apache.avro:avro:1.7.6
org.apache.avro:avro-ipc:1.7.4
org.apache.avro:avro-mapred:1.7.4
org.apache.calcite.avatica:avatica-core:1.13.0
org.apache.calcite:calcite-babel:1.19.0
org.apache.calcite:calcite-core:1.19.0
org.apache.calcite:calcite-linq4j:1.19.0
org.apache.commons:commons-compress:1.9
org.apache.commons:commons-crypto:1.0.0
org.apache.commons:commons-csv:1.0
org.apache.commons:commons-lang3:3.5
org.apache.commons:commons-math:2.1
org.apache.commons:commons-math3:3.2
org.apache.curator:curator-client:2.7.1
org.apache.curator:curator-framework:2.7.1
org.apache.curator:curator-recipes:2.7.1
org.apache.datasketches:datasketches-java:1.2.0-incubating
org.apache.datasketches:datasketches-memory:1.2.0-incubating
org.apache.directory.api:api-asn1-api:1.0.0-M20
org.apache.directory.api:api-util:1.0.0-M20
org.apache.directory.server:apacheds-i18n:2.0.0-M15
org.apache.directory.server:apacheds-kerberos-codec:2.0.0-M15
org.apache.hadoop:hadoop-annotations:2.7.0
org.apache.hadoop:hadoop-auth:2.7.0
org.apache.hadoop:hadoop-client:2.7.0
org.apache.hadoop:hadoop-common:2.7.0
org.apache.hadoop:hadoop-hdfs:2.7.0
org.apache.hadoop:hadoop-mapreduce-client-app:2.7.0
org.apache.hadoop:hadoop-mapreduce-client-common:2.7.0
org.apache.hadoop:hadoop-mapreduce-client-core:2.7.0
org.apache.hadoop:hadoop-mapreduce-client-jobclient:2.7.0
org.apache.hadoop:hadoop-mapreduce-client-shuffle:2.7.0
org.apache.hadoop:hadoop-yarn-api:2.7.0
org.apache.hadoop:hadoop-yarn-client:2.7.0
org.apache.hadoop:hadoop-yarn-common:2.7.0
org.apache.hadoop:hadoop-yarn-server-common:2.7.0
org.apache.helix:helix-core:0.9.7
org.apache.hive:hive-storage-api:2.7.1
org.apache.htrace:htrace-core:3.1.0-incubating
org.apache.httpcomponents:httpclient:4.5.3
org.apache.httpcomponents:httpclient:4.5.5
org.apache.httpcomponents:httpcore:4.4.6
org.apache.httpcomponents:httpcore:4.4.9
org.apache.httpcomponents:httpmime:4.5.3
org.apache.ivy:ivy:2.4.0
org.apache.kafka:kafka-clients:0.9.0.1
org.apache.kafka:kafka-clients:2.0.0
org.apache.kafka:kafka_2.10:0.9.0.1
org.apache.kafka:kafka_2.11:2.0.0
org.apache.logging.log4j:log4j-1.2-api:2.11.2
org.apache.logging.log4j:log4j-api:2.11.2
org.apache.logging.log4j:log4j-core:2.11.2
org.apache.logging.log4j:log4j-slf4j-impl:2.11.2
org.apache.lucene:lucene-analyzers-common:8.2.0
org.apache.lucene:lucene-core:8.2.0
org.apache.lucene:lucene-queries:8.2.0
org.apache.lucene:lucene-queryparser:8.2.0
org.apache.lucene:lucene-sandbox:8.2.0
org.apache.orc:orc-core:1.5.9
org.apache.orc:orc-shims:1.5.9
org.apache.parquet:parquet-avro:1.8.0
org.apache.parquet:parquet-column:1.8.0
org.apache.parquet:parquet-common:1.8.0
org.apache.parquet:parquet-encoding:1.8.0
org.apache.parquet:parquet-format:2.3.0-incubating
org.apache.parquet:parquet-hadoop:1.8.0
org.apache.parquet:parquet-jackson:1.8.0
org.apache.spark:spark-core_2.11:2.2.0
org.apache.spark:spark-launcher_2.11:2.2.0
org.apache.spark:spark-network-common_2.11:2.2.0
org.apache.spark:spark-network-shuffle_2.11:2.2.0
org.apache.spark:spark-tags_2.11:2.2.0
org.apache.spark:spark-unsafe_2.11:2.2.0
org.apache.thrift:libthrift:0.12.0
org.apache.velocity:velocity:1.7
org.apache.xbean:xbean-asm5-shaded:4.4
org.apache.yetus:audience-annotations:0.5.0
org.apache.zookeeper:zookeeper:3.4.11
org.codehaus.groovy:groovy-all:2.4.8
org.codehaus.jackson:jackson-core-asl:1.9.13
org.codehaus.jackson:jackson-jaxrs:1.9.13
org.codehaus.jackson:jackson-mapper-asl:1.9.13
org.codehaus.jackson:jackson-xc:1.9.13
org.javassist:javassist:3.19.0-GA
org.json4s:json4s-ast_2.11:3.2.11
org.json4s:json4s-core_2.11:3.2.11
org.json4s:json4s-jackson_2.11:3.2.11
org.lz4:lz4-java:1.4.1
org.mortbay.jetty:jetty:6.1.26
org.mortbay.jetty:jetty-util:6.1.26
org.mortbay.jetty:servlet-api:2.5-20081211
org.objenesis:objenesis:2.6
org.roaringbitmap:RoaringBitmap:0.8.0
org.roaringbitmap:shims:0.8.0
org.scala-lang.modules:scala-parser-combinators_2.11:1.0.4
org.scala-lang.modules:scala-xml_2.11:1.0.5
org.scala-lang:scala-compiler:2.11.11
org.scala-lang:scala-library:2.10.5
org.scala-lang:scala-library:2.11.11
org.scala-lang:scala-reflect:2.11.11
org.scala-lang:scalap:2.11.0
org.testng:testng:6.11
org.webjars:swagger-ui:2.2.2
org.xerial.java:xerial-core:2.1
org.xerial.larray:larray:0.2.1
org.xerial.larray:larray-buffer:0.2.1
org.xerial.larray:larray-mmap:0.2.1
org.xerial.snappy:snappy-java:1.1.1.7
org.xerial:xerial-core:3.2.2
org.yaml:snakeyaml:1.16
oro:oro:2.0.8
software.amazon.awssdk:annotations:2.11.12
software.amazon.awssdk:apache-client:2.11.12
software.amazon.awssdk:arns:2.11.12
software.amazon.awssdk:auth:2.11.12
software.amazon.awssdk:aws-core:2.11.12
software.amazon.awssdk:aws-query-protocol:2.11.12
software.amazon.awssdk:aws-xml-protocol:2.11.12
software.amazon.awssdk:http-client-spi:2.11.12
software.amazon.awssdk:netty-nio-client:2.11.12
software.amazon.awssdk:profiles:2.11.12
software.amazon.awssdk:protocol-core:2.11.12
software.amazon.awssdk:regions:2.11.12
software.amazon.awssdk:s3:2.11.12
software.amazon.awssdk:sdk-core:2.11.12
software.amazon.awssdk:utils:2.11.12
software.amazon.eventstream:eventstream:1.0.1
xerces:xercesImpl:2.9.1
xml-apis:xml-apis:1.0.b2


------------------------------------------------------------------------------------
This product bundles various third-party components under other open source licenses.
This section summarizes those components and their licenses. See "licenses/" for text
of these licenses.


MIT License
-----------
args4j:args4j:2.32
com.azure:azure-core-http-netty:1.3.0
com.azure:azure-core:1.2.0
com.azure:azure-storage-blob:12.4.0
com.azure:azure-storage-common:12.4.0
com.azure:azure-storage-file-datalake:12.0.0-beta.12
com.github.jnr:jnr-x86asm:1.0.2
com.microsoft.azure:azure-data-lake-store-sdk:2.1.5
net.razorvine:pyrolite:4.13
net.sf.jopt-simple:jopt-simple:4.6
org.bouncycastle:bcprov-jdk15on:1.51
org.mockito:mockito-core:2.10.0
org.slf4j:jcl-over-slf4j:1.7.16
org.slf4j:jul-to-slf4j:1.7.16
org.slf4j:slf4j-api:1.7.25
org.slf4j:slf4j-log4j12:1.7.16

pinot-controller/src/main/resources/*/js/lib/codemirror/*
pinot-controller/src/main/resources/*/js/lib/foundation/*
pinot-controller/src/main/resources/*/js/lib/angular*
pinot-controller/src/main/resources/*/js/lib/underscore*
pinot-controller/src/main/resources/*/js/lib/jquery-2.1.3.min.js
pinot-controller/src/main/resources/*/js/lib/beautify.js
pinot-controller/src/main/resources/*/js/lib/handlebars.js

pinot-controller/src/main/resources/*/css/lib/codemirror*
pinot-controller/src/main/resources/*/css/lib/foundation*
pinot-controller/src/main/resources/*/css/lib/normalize.css


BSD 2-Clause
------------
jline:jline:0.9.94
net.sf.py4j:py4j:0.10.4
org.codehaus.woodstox:stax2-api:3.1.4
org.reflections:reflections:0.9.11


BSD 3-Clause
------------
com.google.protobuf:protobuf-java:2.5.0
com.jcabi:jcabi-aspects:0.22
com.jcabi:jcabi-log:0.17.1
com.jcraft:jsch:0.1.42
com.thoughtworks.paranamer:paranamer:2.6
org.antlr:antlr4-runtime:4.6
org.fusesource.leveldbjni:leveldbjni-all:1.8
org.ow2.asm:asm:5.0.4
org.ow2.asm:asm-analysis:5.0.3
org.ow2.asm:asm-commons:5.0.3
org.ow2.asm:asm-tree:5.0.3
org.ow2.asm:asm-util:5.0.3
org.threeten:threeten-extra:1.5.0
org.threeten:threetenbp:1.3.3
xmlenc:xmlenc:0.52

pinot-controller/src/main/resources/*/js/lib/jquery.dataTables.min.js


Common Development and Distribution License (CDDL) 1.0
------------------------------------------------------
(see license-binary/LICENSE-cddl-1.0.txt)

javax.activation:activation:1.1.1
javax.servlet:javax.servlet-api:3.0.1
javax.servlet:javax.servlet-api:3.1.0


Common Development and Distribution License (CDDL) 1.1
------------------------------------------------------
(see license-binary/LICENSE-cddl-1.1.txt)

com.sun.xml.bind:jaxb-core:2.3.0
com.sun.xml.bind:jaxb-impl:2.3.0
javax.annotation:javax.annotation-api:1.3.2
javax.mail:mail:1.4.7
javax.servlet:javax.servlet-api:3.0.1
javax.ws.rs:javax.ws.rs-api:2.0.1
javax.ws.rs:jsr311-api:1.1.1
javax.xml.bind:jaxb-api:2.3.0
org.glassfish.hk2.external:javax.inject:2.4.0-b34
org.glassfish.hk2:osgi-resource-locator:1.0.1
org.glassfish.jersey.containers:jersey-container-servlet-core:2.22.2
org.glassfish.jersey.containers:jersey-container-servlet-core:2.25.1
org.glassfish.jersey.containers:jersey-container-servlet:2.22.2
org.glassfish.tyrus.bundles:tyrus-standalone-client:1.5


Common Public License (CPL) 1.0
-------------------------------
(see license-binary/LICENSE-cpl-1.0.txt)

com.github.jnr:jnr-posix:3.0.12
junit:junit:3.8.1


Eclipse Public License (EPL) 1.0
--------------------------------
(see license-binary/LICENSE-epl-1.0.txt)

org.aspectj:aspectjrt:1.8.4
com.h2database:h2:1.4.193


Eclipse Public License (EPL) 2.0
-------------------------------
(see license-binary/LICENSE-epl-2.0.txt)

jakarta.annotation:jakarta.annotation-api:1.3.4
jakarta.ws.rs:jakarta.ws.rs-api:2.1.5
org.glassfish.grizzly:grizzly-framework:2.4.4
org.glassfish.grizzly:grizzly-http:2.4.4
org.glassfish.grizzly:grizzly-http-server:2.4.4
org.glassfish.hk2.external:aopalliance-repackaged:2.5.0
org.glassfish.hk2.external:jakarta.inject:2.5.0
org.glassfish.hk2:hk2-api:2.5.0
org.glassfish.hk2:hk2-locator:2.5.0
org.glassfish.hk2:hk2-utils:2.5.0
org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.28
org.glassfish.jersey.core:jersey-client:2.28
org.glassfish.jersey.core:jersey-common:2.28
org.glassfish.jersey.core:jersey-server:2.28
org.glassfish.jersey.ext:jersey-entity-filtering:2.28
org.glassfish.jersey.inject:jersey-hk2:2.28
org.glassfish.jersey.media:jersey-media-jaxb:2.28
org.glassfish.jersey.media:jersey-media-json-jackson:2.28
org.glassfish.jersey.media:jersey-media-multipart:2.28

Eclipse Distribution License (EDL) 1.0
--------------------------------------
org.jvnet.mimepull:mimepull:1.9.11

GNU General Public License, version 2 (GPL 2.0)
-----------------------------------------------
(see license-binary/LICENSE-gpl-2.0.txt)

org.openjdk.jmh:jmh-core:1.21
org.openjdk.jmh:jmh-generator-annprocess:1.21

Public Domain
-------------
net.iharder:base64:2.3.8


