                                 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.

=======================================================================
Apache SkyWalking Subcomponents:

The Apache SkyWalking project contains subcomponents with separate copyright
notices and license terms. Your use of the source code for the these
subcomponents is subject to the terms and conditions of the following
licenses.

========================================================================
Apache 2.0 licenses
========================================================================

The following components are provided under the Apache License. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

    Apache: httpcomponents 4.x.x: http://hc.apache.org/index.html, Apache 2.0

========================================================================
Apache 2.0 licenses
========================================================================

The following components are provided under the Apache License. See project link for details.
The text of each license is the standard Apache 2.0 license.

    raphw (byte-buddy) 1.10.19: http://bytebuddy.net/ , Apache 2.0
    Google: grpc-java 1.32.1: https://github.com/grpc/grpc-java, Apache 2.0
    Google: guava 28.1: https://github.com/google/guava , Apache 2.0
    Google: guice 4.1.0: https://github.com/google/guice , Apache 2.0
    Google: gson 2.8.6: https://github.com/google/gson , Apache 2.0
    Google: proto-google-common-protos 1.17.0: https://github.com/googleapis/googleapis , Apache 2.0
    Google: jsr305 3.0.2: http://central.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.0/jsr305-3.0.0.pom , Apache 2.0
    Google: flatbuffers-java 1.12.0: https://github.com/google/flatbuffers/ , Apache 2.0
    Eclipse (Jetty) 9.4.40.v20210413: https://www.eclipse.org/jetty/ , Apache 2.0 and Eclipse Public License 1.0
    SnakeYAML 1.28: http://www.snakeyaml.org , Apache 2.0
    Joda-Time 2.10.5: http://www.joda.org/joda-time/ , Apache 2.0
    Joda-Convert 2.2.1: http://www.joda.org/joda-convert/ , Apache 2.0
    Spring Framework 4.3.14.RELEASE: https://github.com/spring-projects/spring-framework, Apache 2.0
    Spring Boot 2.4.8: https://spring.io/, Apache 2.0
    Spring Cloud Gateway 3.0.3: https://spring.io/projects/spring-cloud, Apache-2.0
    Spring Cloud Load Balancer 3.0.3: https://spring.io/projects/spring-cloud, Apache-2.0
    Spring Cloud Config 1.4.1: https://github.com/spring-cloud/spring-cloud-config, Apache-2.0
    Spring Cloud Netflix Zuul 1.3.0: https://github.com/spring-cloud/spring-cloud-netflix, Apache 2.0
    Apache: commons-logging 1.2: https://github.com/apache/commons-logging, Apache 2.0
    Apache: commons-codec 1.10: https://github.com/apache/commons-codec, Apache 2.0
    Apache: commons-dbcp 1.4: https://github.com/apache/commons-dbcp, Apache 2.0
    Apache: commons-pool 2.4.2: https://github.com/apache/commons-pool, Apache 2.0
    Apache: commons-lang 3.6: https://github.com/apache/commons-lang, Apache 2.0
    Apache: commons-text 1.8: https://github.com/apache/commons-text, Apache 2.0
    Apache: commons-beanutils 1.9.4: https://github.com/apache/commons-beanutils, Apache 2.0
    Apache: log4j2 2.14.1: https://github.com/apache/logging-log4j2, Apache 2.0
    Apache: zookeeper 3.5.7: https://github.com/apache/zookeeper, Apache 2.0
    Apache: commons-collections 3.2.2: https://github.com/apache/commons-collections, Apache 2.0
    Apache: commons-configuration 1.8: https://github.com/apache/commons-configuration, Apache 2.0
    Apache: commons-io 2.4: https://github.com/apache/commons-io, Apache 2.0
    Apache: commons-compress 1.21: https://github.com/apache/commons-compress, Apache 2.0
    Apache: commons-collections4 4.4: https://mvnrepository.com/artifact/org.apache.commons/commons-collections4, Apache 2.0
    Apache: freemarker 2.3.28: https://github.com/apache/freemarker, Apache 2.0
    netty 4.1.68: https://github.com/netty/netty/blob/4.1/LICENSE.txt, Apache 2.0
    netty: netty-tcnative-boringssl-static 2.0.43:  https://github.com/netty/netty-tcnative, Apache 2.0
    annotations 13.0: http://www.jetbrains.org, Apache 2.0
    compiler 0.9.6: https://github.com/spullara/mustache.java, Apache 2.0
    error_prone_annotations 2.3.2: https://github.com/google/error-prone, Apache 2.0
    instrumentation-api 0.4.3: https://github.com/google/instrumentation-java, Apache 2.0
    jackson-annotations 2.8.0: https://github.com/FasterXML/jackson-annotations, Apache 2.0
    jackson-core 2.12.2: https://github.com/FasterXML/jackson-core, Apache 2.0
    jackson-databind 2.12.2: https://github.com/FasterXML/jackson-databind, Apache 2.0
    jackson-datatype-jdk8 2.9.5: https://github.com/FasterXML/jackson-modules-java8/tree/jackson-modules-java8-2.8.8, Apache 2.0
    jackson-module-kotlin 2.8.8: http://kotlinlang.org, Apache 2.0
    jackson-module-afterburner 2.12.2: https://github.com/FasterXML/jackson-modules-base, Apache 2.0
    java-dataloader 2.0.1: https://github.com/graphql-java/java-dataloader, Apache 2.0
    kotlin-reflect 1.1.1: http://kotlinlang.org, Apache 2.0
    kotlin-stdlib 1.1.60: http://kotlinlang.org, Apache 2.0
    archaius-core 0.7.4: https://github.com/Netflix/archaius, Apache 2.0
    classmate 1.3.1: https://github.com/FasterXML/java-classmate, Apache 2.0
    hibernate-validator 5.3.6.Final: https://github.com/hibernate/hibernate-validator, Apache 2.0
    hystrix 1.5.12: https://github.com/Netflix/Hystrix, Apache 2.0
    javax.inject 1: http://central.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.pom, Apache 2.0
    jboss-logging 3.3.0.Final: http://central.maven.org/maven2/org/jboss/logging/jboss-logging/3.3.0.Final/jboss-logging-3.3.0.Final.pom, Apache 2.0
    Netflix commons 0.1.1: https://github.com/Netflix/netflix-commons, Apache 2.0
    Netflix ribbon 2.2.4: https://github.com/Netflix/ribbon, Apache 2.0
    rxjava 1.2.0: https://github.com/ReactiveX/RxJava, Apache 2.0
    rxnetty 0.4.9: https://github.com/ReactiveX/rxnetty, Apache 2.0
    servo 0.10.1: https://github.com/Netflix/servo, Apache 2.0
    validation-api 1.1.0.Final: http://beanvalidation.org/licensing/, Apache 2.0
    HikariCP 3.1.0: https://github.com/brettwooldridge/HikariCP, Apache 2.0
    zipkin 2.9.1: https://github.com/openzipkin/zipkin, Apache 2.0
    sharding-jdbc-core 2.0.3: https://github.com/sharding-sphere/sharding-sphere, Apache 2.0
    kubernetes-client 13.0.0: https://github.com/kubernetes-client/java, Apache 2.0
    proto files from istio/istio: https://github.com/istio/istio  Apache 2.0
    proto files from istio/api: https://github.com/istio/api      Apache 2.0
    nacos 1.4.2: https://github.com/alibaba/nacos, Apache 2.0
    consul-client 1.4.2: https://github.com/rickfast/consul-client, Apache 2.0
    okhttp 3.14.9: https://github.com/square/okhttp, Apache 2.0
    prometheus client_java(simpleclient) 0.6.0: https://github.com/prometheus/client_java, Apache 2.0
    proto files from istio/istio: https://github.com/istio/istio  Apache 2.0
    proto files from istio/api: https://github.com/istio/api      Apache 2.0
    proto files from envoyproxy/data-plane-api: https://github.com/envoyproxy/data-plane-api  Apache 2.0
    proto files from prometheus/client_model: https://github.com/prometheus/client_model Apache 2.0
    proto files from lyft/protoc-gen-validate: https://github.com/lyft/protoc-gen-validate Apache 2.0
    proto files from gogo/googleapis: https://github.com/gogo/googleapis Apache 2.0
    flatbuffers files from istio/proxy: https://github.com/istio/proxy Apache 2.0
    Apache: commons-text 1.4: https://github.com/apache/commons-text Apache 2.0
    sundrio 0.9.2: https://github.com/sundrio/sundrio Apache 2.0
    Ctripcorp: apollo 1.8.0: https://github.com/ctripcorp/apollo Apache 2.0
    javaassist 3.25.0-GA: https://github.com/jboss-javassist/javassist Apache 2.0
    jackson-module-afterburner 2.12.2: https://github.com/FasterXML/jackson-modules-base, Apache 2.0
    perfmark-api 0.19.0: https://github.com/perfmark/perfmark, Apache 2.0
    moshi 1.5.0: https://github.com/square/moshi, Apache 2.0
    logging-interceptor 3.13.1: https://github.com/square/okhttp/tree/master/okhttp-logging-interceptor, Apache 2.0
    msgpack-core 0.8.16: https://github.com/msgpack/msgpack-java, Apache 2.0
    swagger-annotations 1.6.2: https://mvnrepository.com/artifact/io.swagger.core.v3/swagger-annotations, Apache 2.0
    jose4j 0.7.8: https://mvnrepository.com/artifact/org.bitbucket.b_c/jose4j, Apache 2.0
    converter-moshi 2.5.0: https://mvnrepository.com/artifact/com.squareup.retrofit2/converter-moshi, Apache 2.0
    vavr 0.10.3: https://github.com/vavr-io/vavr, Apache 2.0
    kafka-clients 2.4.1: https://github.com/apache/kafka, Apache 2.0
    lz4-java 1.6.0: https://github.com/jpountz/lz4-java, Apache 2.0
    snappy-java 1.1.7.3: https://github.com/xerial/snappy-java, Apache 2.0
    slf4j-api 1.7.30: http://www.slf4j.org, Apache 2.0
    mvel 2.4.8: https://github.com/mvel/mvel, Apache 2.0
    okio 1.17.2: https://github.com/square/okio Apache 2.0
    caffeine 2.6.2: https://github.com/ben-manes/caffeine Apache 2.0
    simpleclient_httpserver 0.11 from prometheus https://github.com/prometheus/client_java Apache 2.0
    jetcd 0.5.3, https://github.com/etcd-io/jetcd, Apache 2.0
    failasfe 2.3.4, https://github.com/jhalterman/failsafe, Apache 2.0
    Armeria 1.11.0, http://github.com/line/armeria, Apache 2.0
    Brotli4j 1.6.0, https://github.com/hyperxpro/Brotli4j, Apache 2.0
    micrometer 1.7.3, https://github.com/micrometer-metrics/micrometer, Apache 2.0

========================================================================
MIT licenses
========================================================================

The following components are provided under the MIT License. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

    slf4j 1.7.25: https://www.slf4j.org/ , MIT
    GraphQL java 8.0: https://github.com/graphql-java/graphql-java , MIT
    GraphQL Java Tools 5.2.3: https://github.com/graphql-java/graphql-java-tools , MIT
    bcpkix-jdk15on 1.69: http://www.bouncycastle.org/licence.html , MIT
    bcprov-jdk15on 1.69: http://www.bouncycastle.org/licence.html , MIT
    bcprov-ext-jdk15on 1.69: http://www.bouncycastle.org/licence.html , MIT
    bcutil-ext-jdk15on 1.69: http://www.bouncycastle.org/licence.html , MIT
    checker-qual 2.8.1: https://github.com/typetools/checker-framework, MIT
    influxdb-java 2.15: https://github.com/influxdata/influxdb-java, MIT

========================================================================
MIT licenses
========================================================================

The following components are provided under the standard MIT License. See project link for details.

    animal-sniffer-annotations 1.18: https://www.mojohaus.org/animal-sniffer/animal-sniffer-annotations/license.html, MIT

========================================================================
BSD licenses
========================================================================

The following components are provided under a BSD license. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

    asm 9.0:https://gitlab.ow2.org , BSD-3-Clause
    antlr4-runtime 4.5.1: http://www.antlr.org/license.html, BSD-3-Clause
    Google: protobuf-java 3.13.0: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause
    Google: protobuf-java-util 3.12.4: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause
    reflectasm 1.11.7: https://github.com/EsotericSoftware/reflectasm , BSD-3-Clause

    zstd-jni 1.4.3-1: https://github.com/luben/zstd-jni, BSD-3-Clause
    postgresql 42.2.18: https://jdbc.postgresql.org/about/license.html, BSD-2-Clause
    LatencyUtils 2.0.3: https://github.com/LatencyUtils/LatencyUtils, BSD-2-Clause

========================================================================
MPL 2.0 licenses
========================================================================

The following components are provided under a MPL 2.0 license. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

    H2 Database 1.4.196: http://www.h2database.com/html/main.html , MPL 2.0 or EPL 1.0

========================================
CC0-1.0 licenses
========================================

HdrHistogram 2.1.12:	https://github.com/HdrHistogram/HdrHistogram , CC0-1.0 and BSD 2-Clause
reactive-streams 1.0.2:	https://github.com/reactive-streams/reactive-streams-jvm , CC0-1.0

========================================================================
EPL licenses
========================================================================

The following components are provided under the EPL License. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

    logback 1.1.11: https://github.com/qos-ch/logback: EPL 1.0

========================================================================
CDDL licenses
========================================================================

The following components are provided under the CDDL License. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

    jsr311-api 1.1.1: http://central.maven.org/maven2/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1.pom ,  CDDL 1.1

========================================================================
UI related licenses
========================================================================

The following components are used in UI.See project link for details.
The text of each license is also included at licenses/ui-licenses/LICENSE-[project].txt.

========================================
MIT licenses
========================================
vue	2.6.6:	https://github.com/vuejs/vue	MIT
vue-class-component	6.0.0:	https://github.com/vuejs/vue-class-component	MIT
vue-property-decorator	7.0.0:	https://github.com/kaorun343/vue-property-decorator	MIT
vue-router	3.0.1	https://github.com/vuejs/vue-router	MIT
vuex	3.0.1	https://github.com/vuejs/vuex	MIT
vuex-class	0.3.1	https://github.com/ktsn/vuex-class	MIT
dayjs	1.8.8	https://github.com/iamkun/dayjs	MIT
popper.js	1.14.7:	https://github.com/FezVrasta/popper.js	MIT
vue-datepicker-local	1.0.19:	https://github.com/weifeiyue/vue-datepicker-local	MIT
vue-js-modal	1.3.31:	https://github.com/euvl/vue-js-modal	MIT
lodash	4.17.15:	https://github.com/lodash/lodash	MIT
gson-fire	1.8.5:	https://mvnrepository.com/artifact/io.gsonfire/gson-fire	MIT
vue-i18n 8.10.0:  https://github.com/kazupon/vue-i18n   MIT
monaco-editor 0.27.0: https://github.com/microsoft/monaco-editor MIT

========================================
Apache 2.0 licenses
========================================
echarts	5.0.2:	https://github.com/apache/echarts	Apache-2.0
Material Icons 3.0.1 https://github.com/google/material-design-icons Apache-2.0
groovy             3.0.8 https://github.com/apache/groovy Apache-2.0

========================================
BSD licenses
========================================
d3      5.9.1: https://github.com/d3/d3        BSD-3-Clause
d3-array        1.2.4:  https://github.com/d3/d3-array  BSD-3-Clause
d3-axis 1.0.12:  https://github.com/d3/d3-axis   BSD-3-Clause
d3-brush        1.0.6:  https://github.com/d3/d3-brush  BSD-3-Clause
d3-chord        1.0.6:  https://github.com/d3/d3-chord  BSD-3-Clause
d3-collection   1.0.7:  https://github.com/d3/d3-collection     BSD-3-Clause
d3-color        1.2.3:  https://github.com/d3/d3-color  BSD-3-Clause
d3-contour      1.3.2:  https://github.com/d3/d3-contour  BSD-3-Clause
d3-dispatch     1.0.5:  https://github.com/d3/d3-dispatch       BSD-3-Clause
d3-drag 1.2.3:  https://github.com/d3/d3-drag   BSD-3-Clause
d3-dsv  1.0.10:  https://github.com/d3/d3-dsv    BSD-3-Clause
d3-ease 1.0.5:  https://github.com/d3/d3-ease   BSD-3-Clause
d3-fetch 1.1.2:  https://github.com/d3/d3-fetch   BSD-3-Clause
d3-force        1.1.2:  https://github.com/d3/d3-force  BSD-3-Clause
d3-format       1.3.2:  https://github.com/d3/d3-format BSD-3-Clause
d3-geo          1.11.1:  https://github.com/d3/d3-geo BSD-3-Clause
d3-hierarchy    1.1.8:  https://github.com/d3/d3-hierarchy      BSD-3-Clause
d3-interpolate  1.3.2:  https://github.com/d3/d3-interpolate    BSD-3-Clause
d3-path 1.0.7:  https://github.com/d3/d3-path   BSD-3-Clause
d3-polygon      1.0.5:  https://github.com/d3/d3-polygon        BSD-3-Clause
d3-quadtree     1.0.5:  https://github.com/d3/d3-quadtree       BSD-3-Clause
d3-queue        3.0.7:  https://github.com/d3/d3-queue  BSD-3-Clause
d3-random       1.1.2:  https://github.com/d3/d3-random BSD-3-Clause
d3-request      1.0.6:  https://github.com/d3/d3-request        BSD-3-Clause
d3-scale      2.1.2:  https://github.com/d3/d3-scale        BSD-3-Clause
d3-scale-chromatic      1.3.3:  https://github.com/d3/d3-scale-chromatic        BSD-3-Clause
d3-selection    1.3.2:  https://github.com/d3/d3-selection      BSD-3-Clause
d3-shape        1.2.2:  https://github.com/d3/d3-shape  BSD-3-Clause
d3-time 1.0.10:  https://github.com/d3/d3-time   BSD-3-Clause
d3-time-format  2.1.3:  https://github.com/d3/d3-time-format    BSD-3-Clause
d3-timer        1.0.9:  https://github.com/d3/d3-timer  BSD-3-Clause
d3-tip          0.9.1:  https://github.com/Caged/d3-tip BSD-3-Clause
d3-transition   1.1.3:  https://github.com/d3/d3-transition     BSD-3-Clause
d3-voronoi      1.1.4:  https://github.com/d3/d3-voronoi        BSD-3-Clause
d3-zoom 1.7.3:  https://github.com/d3/d3-zoom   BSD-3-Clause
zrender 5.0.4:  https://github.com/ecomfe/zrender   BSD-3-Clause
tslib 2.0.3 https://www.npmjs.com/package/tslib BSD Zero Clause

========================================
Public Domain licenses
========================================
aopalliance 1.0: http://aopalliance.sourceforge.net Public Domain

