source: https://github.com/gardener/autoscaler/blob/v0.1.0/LICENSE
types: Apache-2.0 BSD-2-Clause BSD-3-Clause ISC MIT MPL-2.0

                                 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.

## APIs

This project may include APIs to SAP or third party products or services. The use of these APIs, products and services may be subject to additional agreements. In no event shall the application of the Apache Software License, v.2 to this project grant any rights in or to these APIs, products or services that would alter, expand, be inconsistent with, or supersede any terms of these additional agreements. API means application programming interfaces, as well as their respective specifications and implementing code that allows other software products to communicate with or call on SAP or third party products or services (for example, SAP Enterprise Services, BAPIs, Idocs, RFCs and ABAP calls or other user exits) and may be made available through SAP or third party products, SDKs, documentation or other media.

## Subcomponents

This project includes the following subcomponents that are subject to separate license terms.
Your use of these subcomponents is subject to the separate license terms applicable to
each subcomponent.

Set of dependencies used by [kubernetes/autoscaler](https://github.wdf.sap.corp/kubernetes/autoscaler/) can be found
at [Godeps.json](./cluster-autoscaler/Godeps/Godeps.json).

Google Cloud Client Libraries for Go
https://github.com/GoogleCloudPlatform/google-cloud-go
Copyright 2014 Google Inc.
Apache 2 license https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/LICENSE

Microsoft Azure SDK for Go
https://github.com/Azure/azure-sdk-for-go
Copyright 2016 Microsoft Corporation
Apache 2 license https://github.com/Azure/azure-sdk-for-go/blob/master/LICENSE

Go package for ANSI terminal emulation in Windows
https://github.com/Azure/go-ansiterm
Copyright (c) 2015 Microsoft Corporation
MIT license https://github.com/Azure/go-ansiterm/blob/master/LICENSE

https://github.com/Azure/go-ansiterm
Copyright (c) 2015 Microsoft Corporation
MIT license https://github.com/Azure/go-ansiterm/blob/master/LICENSE

Windows Performance Data Helper wrapper package for Go
https://github.com/JeffAshton/win_pdh/
Copyright (c) 2010 The win_pdh Authors. All rights reserved.
3 clause BSD license https://github.com/JeffAshton/win_pdh/blob/master/LICENSE

Package heredoc provides the here-document with keeping indent.
https://github.com/MakeNowJust/heredoc
Copyright (c) 2014-2017 TSUYUSATO Kitsune
MIT license https://github.com/MakeNowJust/heredoc/blob/master/LICENSE

Win32 IO-related utilities for Go
https://github.com/Microsoft/go-winio
Copyright (c) 2015 Microsoft
MIT license https://github.com/Microsoft/go-winio/blob/master/LICENSE

Windows - Host Compute Service Shim
https://github.com/Microsoft/hcsshim
Copyright (c) 2015 Microsoft
MIT license https://github.com/Microsoft/hcsshim/blob/master/LICENSE

Golang middleware to gzip HTTP responses
https://github.com/NYTimes/gziphandler
Copyright 2016-2017 The New York Times Company
Apache 2 license https://github.com/NYTimes/gziphandler/blob/master/LICENSE

Gotty is a library written in Go that provides interpretation and loading of Termcap database files.
https://github.com/Nvveen/Gotty
Copyright (c) 2012, Neal van Veen (nealvanveen@gmail.com)
2 clause BSD license https://github.com/Nvveen/Gotty/blob/master/LICENSE

purell - tiny Go library to normalize URLs
https://github.com/PuerkitoBio/purell
Copyright (c) 2012, Martin Angers
3 clause BSD license https://github.com/PuerkitoBio/purell/blob/master/LICENSE

urlesc - Proper URL escaping as per RFC3986
https://github.com/PuerkitoBio/urlesc
Copyright (c) 2012 The Go Authors. All rights reserved.
3 clause BSD license https://github.com/PuerkitoBio/urlesc/blob/master/LICENSE

go-http-auth - Basic and Digest HTTP Authentication for golang http
https://github.com/abbot/go-http-auth
Apache 2 license https://github.com/abbot/go-http-auth/blob/master/LICENSE

appc spec - App Container Specification and Tooling
https://github.com/appc/spec
Copyright 2015 The appc Authors
Apache 2 license https://github.com/appc/spec/blob/master/LICENSE

circbuf - Golang circular (ring) buffer
https://github.com/armon/circbuf
Copyright (c) 2013 Armon Dadgar
MIT license https://github.com/armon/circbuf/blob/master/LICENSE

AWS SDK for the Go programming language.
https://github.com/aws/aws-sdk-go
Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Copyright 2014-2015 Stripe, Inc.
Apache 2 license https://github.com/aws/aws-sdk-go/blob/master/LICENSE.txt

perks - Effective Computation of Things
https://github.com/beorn7/perks
Copyright (C) 2013 Blake Mizerany
MIT license https://github.com/beorn7/perks/blob/master/LICENSE

semver - Semantic Versioning (semver) library written in golang
https://github.com/blang/semver
Copyright (c) 2014 Benedikt Lang <github at benediktlang.de>
MIT license https://github.com/blang/semver/blob/master/LICENSE

Flocker go library
https://github.com/clusterhq/flocker-go
Copyright 2014-2016 ClusterHQ
Apache 2 license https://github.com/ClusterHQ/flocker-go/blob/master/LICENSE

goscaleio - ScaleIO package that provides API bindings for Go
https://github.com/thecodeteam/goscaleio
Apache 2 license https://github.com/thecodeteam/goscaleio/blob/master/LICENSE

Container Storage Interface (CSI) Specification.
https://github.com/container-storage-interface/spec
Apache 2 license https://github.com/container-storage-interface/spec/blob/master/LICENSE

containerd console - console package for Go
https://github.com/containerd/console
Copyright The containerd Authors.
Apache 2 license https://github.com/containerd/console/blob/master/LICENSE

containerd - An open and reliable container runtime
https://github.com/containerd/containerd
Copyright The containerd Authors.
Apache 2 license https://github.com/containerd/containerd/blob/master/LICENSE

Container Network Interface - networking for Linux containers
https://github.com/containernetworking/cni
Copyright 2016 CNI authors
Apache 2 license https://github.com/containernetworking/cni/blob/master/LICENSE

etcd - Distributed reliable key-value store for the most critical data of a distributed system
https://github.com/coreos/etcd
Copyright 2014 CoreOS, Inc
Apache 2 license https://github.com/coreos/etcd/blob/master/LICENSE

go-semver - semver library in Go
https://github.com/coreos/go-semver
Copyright 2018 CoreOS, Inc
Apache 2 license https://github.com/coreos/go-semver/blob/master/LICENSE

go-systemd - Go bindings to systemd socket activation, journal, D-Bus, and unit files
https://github.com/coreos/go-systemd
Copyright 2018 CoreOS, Inc
Apache 2 license https://github.com/coreos/go-systemd/blob/master/LICENSE

coreos pkg - a collection of go utility packages
https://github.com/coreos/pkg
Copyright 2014 CoreOS, Inc
Apache 2 license https://github.com/coreos/pkg/blob/master/LICENSE

rkt - is a pod-native container engine for Linux.
https://github.com/rkt/rkt
Copyright 2016 The rkt Authors
Apache 2 license https://github.com/rkt/rkt/blob/master/LICENSE

cyphar filepath-securejoin - Proposed filepath.SecureJoin implementation
https://github.com/cyphar/filepath-securejoin
Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved.
Copyright (C) 2017 SUSE LLC. All rights reserved.
3 clause BSD license https://github.com/cyphar/filepath-securejoin/blob/master/LICENSE

DHCP4 library written in Go.
https://github.com/d2g/dhcp4
Copyright (c) 2013 Skagerrak Software Limited. All rights reserved.
3 clause BSD license https://github.com/d2g/dhcp4/blob/master/LICENSE

dhcp4client - DHCP Client
https://github.com/d2g/dhcp4client
Mozilla Public License, version 2.0

go-spew - Implements a deep pretty printer for Go data structures to aid in debugging
https://github.com/davecgh/go-spew
Copyright (c) 2012-2016 Dave Collins <dave@davec.name>
ISC License

safefile - Go package safefile implements safe "atomic" saving of files.
https://github.com/dchest/safefile
Copyright (c) 2013 Dmitry Chestnykh <dmitry@codingrobots.com>
2 clause BSD license https://github.com/dchest/safefile/blob/master/LICENSE

jwdt-go - Golang implementation of JSON Web Tokens (JWT)
https://github.com/dgrijalva/jwt-go
Copyright (c) 2012 Dave Grijalva
MIT license https://github.com/dgrijalva/jwt-go/blob/master/LICENSE

The Docker toolset to pack, ship, store, and deliver content
https://github.com/docker/distribution
Apache 2 license https://github.com/docker/distribution/blob/master/LICENSE

Moby Project - a collaborative project for the container ecosystem to assemble container-based systems
https://github.com/docker/docker
Copyright 2012-2017 Docker, Inc.
Apache 2 license https://github.com/moby/moby/blob/master/NOTICE

go-connections - Utility package to work with network connections
https://github.com/docker/go-connections
Apache 2 license https://github.com/docker/go-connections/blob/master/LICENSE

go-units - Parse and print size and time units in human-readable format
https://github.com/docker/go-units
Apache 2 license https://github.com/docker/go-units/blob/master/LICENSE

Docker networking
https://github.com/docker/libnetwork
Apache 2 license https://github.com/docker/libnetwork/blob/master/LICENSE

libtrust - Primitives for identity and authorization
https://github.com/docker/libtrust
Copyright 2014 Docker, Inc.
Apache 2 license https://github.com/docker/libtrust/blob/master/LICENSE

spdystream
https://github.com/docker/spdystream
Copyright 2014-2015 Docker, Inc.
Apache 2 license https://github.com/docker/spdystream/blob/master/LICENSE

go-bindata-assetfs - Serves embedded files from 'jteeuwen/go-bindata' with 'net/http'
https://github.com/elazarl/go-bindata-assetfs
Copyright (c) 2014, Elazar Leibovich
2 clause BSD license https://github.com/elazarl/go-bindata-assetfs/blob/master/LICENSE

go-restful-swagger12 - Swagger 1.2 extension to the go-restful package
https://github.com/emicklei/go-restful-swagger12
Copyright (c) 2017 Ernest Micklei
MIT license https://github.com/emicklei/go-restful-swagger12/blob/master/LICENSE

go-restful - package for building REST-style Web Services using Google Go
https://github.com/emicklei/go-restful
Copyright (c) 2012,2013 Ernest Micklei
MIT license https://github.com/emicklei/go-restful/blob/master/LICENSE

go-kmsg-parser - A simpler parser for the /dev/kmsg format
https://github.com/euank/go-kmsg-parser
Copyright 2016 Euan Kemp
Apache 2 license https://github.com/euank/go-kmsg-parser/blob/master/LICENSE

json-patch - A Go library to apply RFC6902 patches and create and apply RFC7386 patches
https://github.com/evanphx/json-patch
Copyright (c) 2014, Evan Phoenix
3 clause BSD license

jsonpath - Extends the Go runtime's json.Decoder enabling navigation of a stream of json tokens.
https://github.com/exponent-io/jsonpath
Copyright (c) 2015 Exponent Labs LLC
MIT license https://github.com/exponent-io/jsonpath/blob/master/LICENSE

camelcase - Split a camelcase word into a slice of words in Go
https://github.com/fatih/camelcase
Copyright (c) 2015 Fatih Arslan
MIT license https://github.com/fatih/camelcase/blob/master/LICENSE.md

fsnotify - Cross-platform file system notifications for Go.
https://github.com/fsnotify/fsnotify
Copyright (c) 2012 The Go Authors. All rights reserved.
Copyright (c) 2012 fsnotify Authors. All rights reserved.
3 clause BSD license https://github.com/fsnotify/fsnotify/blob/master/LICENSE

gardener machine-controller-manager - Declarative way of managing machines for Kubernetes cluster
https://github.com/gardener/machine-controller-manager
Copyright (c) 2017-2018 SAP SE or an SAP affiliate company. All rights reserved.
Apache 2 license https://github.com/gardener/machine-controller-manager/blob/master/LICENSE.md

yaml - A better way to marshal and unmarshal YAML in Golang
https://github.com/ghodss/yaml
Copyright (c) 2014 Sam Ghods
Copyright (c) 2012 The Go Authors. All rights reserved.
MIT License and 3 clause BSD license https://github.com/ghodss/yaml/blob/master/LICENSE

ini - Package ini provides INI file read and write functionality in Go.
https://github.com/go-ini/ini
Apache 2 license

jsonpointer - fork of gojsonpointer with support for structs
https://github.com/go-openapi/jsonpointer
Copyright 2013 sigu-399 ( https://github.com/sigu-399 )
Apache 2 license https://github.com/go-openapi/jsonpointer/blob/master/LICENSE

jsonreference - fork of gojsonreference with support for structs
Copyright 2013 sigu-399 ( https://github.com/sigu-399 )
Apache 2 license https://github.com/go-openapi/jsonreference/blob/master/LICENSE

go-openapi spec - openapi specification object model
https://github.com/go-openapi/spec
Copyright 2015 go-swagger maintainers
Apache 2 license https://github.com/go-openapi/spec/blob/master/LICENSE

go-openapi swag - goodie bag in use in the go-openapi projects
https://github.com/go-openapi/swag
Copyright 2015 go-swagger maintainers
Apache 2 license https://github.com/go-openapi/swag/blob/master/LICENSE

godbus dbus - Native Go bindings for D-Bus
Copyright (c) 2013, Georg Reinke (<guelfey at gmail dot com>), Google
2 clause BSD license https://github.com/godbus/dbus/blob/master/LICENSE

protobuf - Protocol Buffers for Go with Gadgets
https://github.com/gogo/protobuf
Copyright (c) 2013, The GoGo Authors. All rights reserved.
3 clause BSD license https://github.com/gogo/protobuf/blob/master/LICENSE

glog - Leveled execution logs for Go
https://github.com/golang/glog
Copyright 2013 Google Inc. All Rights Reserved.
Apache 2 license https://github.com/golang/glog/blob/master/LICENSE

groupcache - groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
https://github.com/golang/groupcache
Copyright 2012 Google Inc.
Apache 2 license https://github.com/golang/groupcache/blob/master/LICENSE

golang mock - GoMock is a mocking framework for the Go programming language.
https://github.com/golang/mock
Copyright 2012 Google Inc.
Apache 2 license

golang protobuf - Go support for Google's protocol buffers
https://github.com/golang/protobuf
Copyright 2010 The Go Authors.  All rights reserved.
3 clause BSD license https://github.com/golang/protobuf/blob/master/LICENSE

google btree
https://github.com/google/btree
Copyright 2014 Google Inc.
Apache 2 license https://github.com/google/btree/blob/master/LICENSE

google cadvisor - Analyzes resource usage and performance characteristics of running containers.
https://github.com/google/cadvisor
Copyright 2014 The cAdvisor Authors
Apache 2 license https://github.com/google/cadvisor/blob/master/LICENSE

gofuzz - Fuzz testing for go.
https://github.com/google/gofuzz
Copyright 2014 Google Inc. All rights reserved.
Apache 2 license https://github.com/google/gofuzz/blob/master/LICENSE

gnostic - A compiler for API described by the OpenAPI Specification with plugins for code generation and other API support tasks.
https://github.com/googleapis/gnostic
Copyright 2017 Google Inc. All Rights Reserved.
Apache 2 license https://github.com/googleapis/gnostic/blob/master/LICENSE

Gophercloud: an OpenStack SDK for Go
https://github.com/gophercloud/gophercloud/
Copyright 2012-2013 Rackspace, Inc.
Apache 2 license https://github.com/gophercloud/gophercloud/blob/master/LICENSE

websocket - A WebSocket implementation for Go.
https://github.com/gorilla/websocket
Copyright (c) 2013 The Gorilla WebSocket Authors. All rights reserved.
BSD 2 clause license https://github.com/gorilla/websocket/blob/master/LICENSE

httpcache - A Transport for http.Client that will cache responses according to the HTTP RFC
https://github.com/gregjones/httpcache
Copyright © 2012 Greg Jones (greg.jones@gmail.com)
MIT license https://github.com/gregjones/httpcache/blob/master/LICENSE.txt

Golang LRU cache
https://github.com/hashicorp/golang-lru
Mozilla Public License, version 2.0 https://github.com/hashicorp/golang-lru/blob/master/LICENSE

gopass - getpasswd for Go
https://github.com/howeyc/gopass/blob/master/LICENSE.txt
Copyright (c) 2012 Chris Howey
ISC license https://github.com/howeyc/gopass/blob/master/LICENSE.txt

Mergo: merging Go structs and maps since 2013.
https://github.com/imdario/mergo
Copyright (c) 2013 Dario Castañé. All rights reserved.
Copyright (c) 2012 The Go Authors. All rights reserved.
3 clause BSD license https://github.com/imdario/mergo/blob/master/LICENSE

mousetrap - Detect starting from Windows explorer
https://github.com/inconshreveable/mousetrap/blob/master/LICENSE
Copyright 2014 Alan Shreve
Apache 2 license https://github.com/inconshreveable/mousetrap/blob/master/LICENSE

go-jmespath - Golang implementation of JMESPath.
https://github.com/jmespath/go-jmespath
Copyright 2015 James Saryerwinnie
Apache 2 license https://github.com/jmespath/go-jmespath/blob/master/LICENSE

go json-iterator - A high-performance 100% compatible drop-in replacement of "encoding/json"
https://github.com/json-iterator/go
Copyright (c) 2016 json-iterator
MIT license https://github.com/json-iterator/go/blob/master/LICENSE

osext - Extensions to the standard "os" package. Executable and ExecutableFolder.
https://github.com/kardianos/osext/
Copyright (c) 2012 The Go Authors. All rights reserved.
Apache 2 license https://github.com/kardianos/osext/blob/master/LICENSE

fs - Package fs provides filesystem-related functions.
https://github.com/kr/fs
Copyright (c) 2012 The Go Authors. All rights reserved.
3 clause BSD license https://github.com/kr/fs/blob/main/LICENSE

PTY interface for Go
https://github.com/kr/pty/
Copyright (c) 2011 Keith Rarick
MIT license https://github.com/kr/pty/blob/master/License

openstorage - A multi-host clustered implementation of the open storage specification
https://github.com/libopenstorage/openstorage
Copyright 2015 Openstorage.org
Apache 2 license https://github.com/libopenstorage/openstorage/blob/master/LICENSE

godbc - Design by contract for Go
https://github.com/lpabon/godbc
Copyright (c) 2014 The godbc Authors
Apache 2 license https://github.com/lpabon/godbc/blob/master/LICENSE

easyjson - Fast JSON serializer for golang
https://github.com/mailru/easyjson
Copyright (c) 2016 Mail.Ru Group
MIT license https://github.com/mailru/easyjson/blob/master/LICENSE

guid - A Go implementation of Guids as seen in Microsoft's .NET Framework
https://github.com/marstr/guid
Copyright (c) 2016 Martin Strobel
MIT license https://github.com/marstr/guid/blob/master/LICENSE.txt

golang_protobuf_extensions - Support for streaming Protocol Buffer messages for the Go language (golang).
Copyright 2016 Matt T. Proud
Apache 2 license https://github.com/matttproud/golang_protobuf_extensions/blob/master/LICENSE

dns - DNS library in Go
https://github.com/miekg/dns
Copyright (c) 2009 The Go Authors. All rights reserved.
3 clause BSD license https://github.com/miekg/dns/blob/master/LICENSE

onvml - NVIDIA Management Library (NVML) bindings for Go
https://github.com/mindprince/gonvml
Copyright 2017 Google Inc.
Apache 2 license https://github.com/mindprince/gonvml/blob/master/LICENSE

go-zfs - Go wrappers for ZFS commands
https://github.com/mistifyio/go-zfs
Apache 2 license https://github.com/mistifyio/go-zfs/blob/master/LICENSE

go-wordwrap - A Go (golang) library for wrapping words in a string.
https://github.com/mitchellh/go-wordwrap
Copyright (c) 2014 Mitchell Hashimoto
MIT license https://github.com/mitchellh/go-wordwrap/blob/master/LICENSE.md

mapstructure - Go library for decoding generic map values into native Go structures.
https://github.com/mitchellh/mapstructure
Copyright (c) 2013 Mitchell Hashimoto
MIT license https://github.com/mitchellh/mapstructure/blob/master/LICENSE

deepcopy - Deep copy things
https://github.com/mohae/deepcopy
Copyright (c) 2014 Joel
MIT license https://github.com/mohae/deepcopy/blob/master/LICENSE

fileutils - collection of utilities for file manipulation in golang
https://github.com/mrunalp/fileutils/
Apache 2 license https://github.com/mrunalp/fileutils/blob/master/LICENSE

go-digest - Common digest package used across the container ecosystem
https://github.com/opencontainers/go-digest
Copyright 2016 Docker, Inc.
Apache 2 license https://github.com/opencontainers/go-digest/blob/master/LICENSE

image-spec - OCI Image Format
https://github.com/opencontainers/image-spec
Copyright 2016 The Linux Foundation.
Apache 2 license https://github.com/opencontainers/image-spec/blob/master/LICENSE

runc - CLI tool for spawning and running containers according to the OCI specification
https://github.com/opencontainers/runc
Copyright 2014 Docker, Inc.
Apache 2 license https://github.com/opencontainers/runc/blob/master/LICENSE

runtime-spec - OCI Runtime Specification
https://github.com/opencontainers/runtime-spec
Copyright 2015 The Linux Foundation.
Apache 2 license https://github.com/opencontainers/runtime-spec/blob/master/LICENSE

selinux - common selinux implementation
https://github.com/opencontainers/selinux
Apache 2 license https://github.com/opencontainers/selinux/blob/master/LICENSE

uuid - Automatically exported from code.google.com/p/go-uuid
https://github.com/pborman/uuid
Copyright (c) 2009,2014 Google Inc. All rights reserved.
3 clause BSD license https://github.com/pborman/uuid/blob/master/LICENSE

diskv - A disk-backed key-value store.
https://github.com/peterbourgon/diskv
Copyright (c) 2011-2012 Peter Bourgon
MIT license https://github.com/peterbourgon/diskv/blob/master/LICENSE

errors - Simple error handling primitives
https://github.com/pkg/errors
Copyright (c) 2015, Dave Cheney <dave@cheney.net>
BSD 2 clause license https://github.com/pkg/errors/blob/master/LICENSE

SFTP support for the go.crypto/ssh package
https://github.com/pkg/sftp
Copyright (c) 2013, Dave Cheney
BSD 2 clause license https://github.com/pkg/sftp/blob/master/LICENSE

go-difflib - Partial port of Python difflib package to Go
https://github.com/pmezard/go-difflib
Copyright (c) 2013, Patrick Mezard
3 clause BSD license https://github.com/pmezard/go-difflib/blob/master/LICENSE

prometheus client_golang - Prometheus instrumentation library for Go applications
https://github.com/prometheus/client_golang
Copyright 2015 The Prometheus Authors
Apache 2 license https://github.com/prometheus/client_golang/blob/master/LICENSE

prometheus client_model - Data model artifacts for Prometheus.
https://github.com/prometheus/client_model
Copyright 2013 Prometheus Team
Apache 2 license https://github.com/prometheus/client_model/blob/master/LICENSE

prometheus common - Go libraries shared across Prometheus components and libraries.
https://github.com/prometheus/common
Copyright 2015 The Prometheus Authors
Apache 2 license https://github.com/prometheus/common/blob/master/LICENSE

procfs - provides functions to retrieve system, kernel and process metrics from the pseudo-filesystem proc
https://github.com/prometheus/procfs
Copyright 2014-2015 The Prometheus Authors
Apache 2 license https://github.com/prometheus/procfs/blob/master/LICENSE

Quobyte API Clients
https://github.com/quobyte/api
Copyright (c) 2016, Quobyte Inc.
3 clause BSD license https://github.com/quobyte/api/blob/master/LICENSE

go-rancher - Go language bindings for Rancher API
https://github.com/rancher/go-rancher
Apache 2 license https://github.com/rancher/go-rancher/blob/master/LICENSE

dedent - Remove any common leading whitespace from multiline strings
https://github.com/renstrom/dedent
Copyright (c) 2015 Peter Renström
MIT license https://github.com/renstrom/dedent/blob/master/LICENSE

go-vhd - Go package and CLI to work with VHD images
https://github.com/rubiojr/go-vhd
Copyright (c) 2015 Sergio Rubio
MIT license https://github.com/rubiojr/go-vhd/blob/master/LICENSE

Blackfriday: a markdown processor for Go
https://github.com/russross/blackfriday/
Copyright © 2011 Russ Ross
2 clause BSD license https://github.com/russross/blackfriday/blob/master/LICENSE.txt

uuid - UUID package for Go
https://github.com/satori/go.uuid
Copyright (C) 2013-2018 by Maxim Bublis <b@codemonkey.ru>
MIT license https://github.com/satori/go.uuid/blob/master/LICENSE

The libseccomp golang bindings repository
https://github.com/seccomp/libseccomp-golang
Copyright (c) 2015 Matthew Heon <mheon@redhat.com>
Copyright (c) 2015 Paul Moore <pmoore@redhat.com>
MIT license https://github.com/seccomp/libseccomp-golang/blob/master/LICENSE

sanitized_anchor_name - Package sanitized_anchor_name provides a func to create sanitized anchor names.
https://github.com/shurcooL/sanitized_anchor_name
Copyright (c) 2015 Dmitri Shuralyov
MIT license https://github.com/shurcooL/sanitized_anchor_name/blob/master/LICENSE

logrus - Structured, pluggable logging for Go.
https://github.com/sirupsen/logrus
Copyright (c) 2014 Simon Eskildsen
MIT license https://github.com/sirupsen/logrus/blob/master/LICENSE

afero - A FileSystem Abstraction System for Go
https://github.com/spf13/afero
Copyright © 2016 Steve Francia <spf@spf13.com>.
Apache 2 license https://github.com/spf13/afero/blob/master/LICENSE.txt

cobra - A Commander for modern Go CLI interactions
https://github.com/spf13/cobra
Copyright © 2013 Steve Francia <spf@spf13.com>.
Apache 2 license https://github.com/spf13/cobra/blob/master/LICENSE.txt

pflag - Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
https://github.com/spf13/pflag
Copyright (c) 2012 Alex Ogier. All rights reserved.
Copyright (c) 2012 The Go Authors. All rights reserved.
BSD 3 clause license https://github.com/spf13/pflag/blob/master/LICENSE

objx - Go package for dealing with maps, slices, JSON and other data.
https://github.com/stretchr/objx
Copyright (c) 2014 Stretchr, Inc.
Copyright (c) 2017-2018 objx contributors
MIT license https://github.com/stretchr/objx/blob/master/LICENSE

testify - A toolkit with common assertions and mocks that plays nicely with the standard library
https://github.com/stretchr/testify
Copyright (c) 2012 - 2013 Mat Ryer and Tyler Bunnell
MIT license https://github.com/stretchr/testify/blob/master/LICENSE

gocapability - Utilities for manipulating POSIX capabilities in Go.
https://github.com/syndtr/gocapability
Copyright 2013 Suryandaru Triandana <syndtr@gmail.com>
All rights reserved.
3 clause BSD license https://github.com/syndtr/gocapability/blob/master/LICENSE

ugorji go - idiomatic codec and rpc lib for msgpack, cbor, json, etc. msgpack.org[Go]
https://github.com/ugorji/go
Copyright (c) 2012-2015 Ugorji Nwoke.
All rights reserved.
MIT license https://github.com/ugorji/go/blob/master/LICENSE

netlink - Simple netlink library for go.
https://github.com/vishvananda/netlink
Copyright 2014 Vishvananda Ishaya.
Copyright 2014 Docker, Inc.
Apache 2 license https://github.com/vishvananda/netlink/blob/master/LICENSE

netns - Simple network namespace handling for go.
https://github.com/vishvananda/netns
Copyright 2014 Vishvananda Ishaya.
Copyright 2014 Docker, Inc.
Apache 2 license https://github.com/vishvananda/netns/blob/master/LICENSE

govmomi - Go library for the VMware vSphere API
https://github.com/vmware/govmomi
Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved.
Apache 2 license https://github.com/vmware/govmomi/blob/master/LICENSE.txt

photon-controller-go-sdk
https://github.com/vmware/photon-controller-go-sdk
Copyright (c) 2016 VMware, Inc. All Rights Reserved.
Apache 2 license https://github.com/vmware/photon-controller-go-sdk/blob/master/LICENSE

go-cloudstack - A CloudStack API client enabling Go programs to interact with CloudStack in a simple and uniform way
https://github.com/xanzy/go-cloudstack
Copyright 2018, Sander van Harmelen
Apache 2 license https://github.com/xanzy/go-cloudstack/blob/master/LICENSE

go4.org
https://github.com/go4org/go4/
Copyright 2015 The Go4 Authors
Apache 2 license https://github.com/go4org/go4/blob/master/LICENSE

crypto - [mirror] Go supplementary cryptography libraries
https://github.com/golang/crypto/
Copyright (c) 2009 The Go Authors. All rights reserved.
3 clause BSD license https://github.com/golang/crypto/blob/master/LICENSE

exp - [mirror] Experimental and deprecated packages
https://github.com/golang/exp/
Copyright (c) 2009 The Go Authors. All rights reserved.
3 clause BSD license https://github.com/golang/exp/blob/master/LICENSE

net - [mirror] Go supplementary network libraries
https://github.com/golang/net/
Copyright (c) 2009 The Go Authors. All rights reserved.
3 clause BSD license https://github.com/golang/net/blob/master/LICENSE

Go OAuth2
https://github.com/golang/oauth2/
Copyright (c) 2009 The Go Authors. All rights reserved.
3 clause BSD license https://github.com/golang/oauth2/blob/master/LICENSE

sys - [mirror] Go packages for low-level interaction with the operating system
https://github.com/golang/sys/
Copyright (c) 2009 The Go Authors. All rights reserved.
3 clause BSD license https://github.com/golang/sys/blob/master/LICENSE

text - [mirror] Go text processing support
https://github.com/golang/text/
Copyright (c) 2009 The Go Authors. All rights reserved.
3 clause BSD license https://github.com/golang/text/blob/master/LICENSE

time - [mirror] Go supplementary time packages
https://github.com/golang/time/
Copyright (c) 2009 The Go Authors. All rights reserved.
3 clause BSD license https://github.com/golang/time/blob/master/LICENSE

google-api-go-client - Auto-generated Google APIs for Go
https://github.com/google/google-api-go-client
Copyright (c) 2011 Google Inc. All rights reserved.
3 clause BSD license https://github.com/google/google-api-go-client/blob/master/LICENSE

go-genproto
https://github.com/google/go-genproto
Copyright 2016 Google Inc.
Apache 2 license https://github.com/google/go-genproto/blob/master/LICENSE

grpc-go - The Go language implementation of gRPC. HTTP/2 based RPC
https://github.com/grpc/grpc-go
Copyright 2017 gRPC authors.
Apache 2 license https://github.com/grpc/grpc-go/blob/master/LICENSE

gcfg - read INI-style configuration files into Go structs; supports user-defined types and subsections
https://github.com/go-gcfg/gcfg/
Copyright (c) 2012 Péter Surányi. Portions Copyright (c) 2009 The Go
Authors. All rights reserved.
3 clause BSD license https://github.com/go-gcfg/gcfg/blob/v1/LICENSE

inf - Package inf (type inf.Dec) implements "infinite-precision" decimal arithmetic.
https://github.com/go-inf/inf
Copyright (c) 2012 Péter Surányi. Portions Copyright (c) 2009 The Go
Authors. All rights reserved.
3 clause BSD license https://github.com/go-inf/inf/blob/master/LICENSE

go-jose - An implementation of JOSE standards (JWE, JWS, JWT) in Go
https://github.com/square/go-jose
Copyright 2014 Square Inc.
Apache 2 license https://github.com/square/go-jose/blob/master/LICENSE

warnings - Package warnings implements error handling with non-fatal errors (warnings).
https://github.com/go-warnings/warnings
Copyright (c) 2016 Péter Surányi.
2 clause BSD license https://github.com/go-warnings/warnings/blob/master/LICENSE

yaml - YAML support for the Go language.
https://github.com/go-yaml/yaml
Copyright 2011-2016 Canonical Ltd.
Copyright (c) 2006 Kirill Simonov
Apache 2 license https://github.com/go-yaml/yaml/blob/v2/LICENSE
some files are MIT license https://github.com/go-yaml/yaml/blob/v2/LICENSE.libyaml

kubernetes api - The canonical location of the Kubernetes API definition.
https://github.com/kubernetes/api
Copyright 2018 The Kubernetes Authors.
Apache 2 license https://github.com/kubernetes/api/blob/master/LICENSE

kubernetes API server for API extensions like CustomResourceDefinitions
https://github.com/kubernetes/apiextensions-apiserver
Copyright 2017 The Kubernetes Authors.
Apache 2 license https://github.com/kubernetes/apiextensions-apiserver/blob/master/LICENSE

kubernetes apimachinery
https://github.com/kubernetes/apimachinery
Copyright 2018 The Kubernetes Authors.
Apache 2 license https://github.com/kubernetes/apimachinery/blob/master/LICENSE

kubernetes apiserver - Library for writing a Kubernetes-style API server.
https://github.com/kubernetes/apiserver
Copyright 2018 The Kubernetes Authors.
Apache 2 license https://github.com/kubernetes/apiserver/blob/master/LICENSE

Go client for Kubernetes.
https://github.com/kubernetes/client-go
Copyright 2018 The Kubernetes Authors.
Apache 2 license https://github.com/kubernetes/client-go/blob/master/LICENSE

Kubernetes OpenAPI spec generation & serving
https://github.com/kubernetes/kube-openapi
Copyright 2018 The Kubernetes Authors.
Apache 2 license https://github.com/kubernetes/kube-openapi/blob/master/LICENSE

kubernetes - Production-Grade Container Scheduling and Management
https://github.com/kubernetes/kubernetes
Copyright 2018 The Kubernetes Authors.
Apache 2 license https://github.com/kubernetes/kubernetes/blob/master/LICENSE

utils - Non-Kubernetes-specific utility libraries which are consumed by multiple projects.
https://github.com/kubernetes/utils
Copyright 2018 The Kubernetes Authors.
Apache 2 license https://github.com/kubernetes/utils/blob/master/LICENSE

util - Go utility packages
https://github.com/fvbommel/util
Copyright (c) 2015 Frits van Bommel
MIT license https://github.com/fvbommel/util/blob/master/LICENSE

machine-controller-manager
https://github.com/gardener/machine-controller-manager
Copyright (c) 2017 SAP SE or an SAP affiliate company.
Apache 2 license https://github.com/gardener/machine-controller-manager/blob/master/LICENSE.md

----------------------------------------------------
The MIT License
SPDX short identifier: MIT

Copyright <YEAR> <COPYRIGHT HOLDER>

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

----------------------------------------------------
The 3-Clause BSD License
SPDX short identifier: BSD-3-Clause

Copyright <YEAR> <COPYRIGHT HOLDER>

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

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

2. 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.

3. Neither the name of the copyright holder 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 HOLDER 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.

----------------------------------------------------
The 2-Clause BSD License
SPDX short identifier: BSD-2-Clause

Copyright <YEAR> <COPYRIGHT HOLDER>

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

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

2. 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.

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 HOLDER 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.

----------------------------------------------------
Mozilla Public License 2.0 (MPL-2.0)

1. Definitions 1.1. “Contributor”means each individual or legal entity that
creates, contributes to the creation of, or owns Covered Software.

1.2. “Contributor Version”means the combination of the Contributions of others
(if any) used by a Contributor and that particular Contributor’s Contribution.

1.3. “Contribution”means Covered Software of a particular Contributor.

1.4. “Covered Software”means Source Code Form to which the initial Contributor
has attached the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case including
portions thereof.

1.5. “Incompatible With Secondary Licenses”means

that the initial Contributor has attached the notice described in Exhibit B to
the Covered Software; or

that the Covered Software was made available under the terms of version 1.1 or
earlier of the License, but not also under the terms of a Secondary License.

1.6. “Executable Form”means any form of the work other than Source Code Form.

1.7. “Larger Work”means a work that combines Covered Software with other
material, in a separate file or files, that is not Covered Software.

1.8. “License”means this document.

1.9. “Licensable”means having the right to grant, to the maximum extent
possible, whether at the time of the initial grant or subsequently, any and all
of the rights conveyed by this License.

1.10. “Modifications”means any of the following:

any file in Source Code Form that results from an addition to, deletion from, or
modification of the contents of Covered Software; or

any new file in Source Code Form that contains any Covered Software.

1.11. “Patent Claims” of a Contributor means any patent claim(s), including
without limitation, method, process, and apparatus claims, in any patent
Licensable by such Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having made, import,
or transfer of either its Contributions or its Contributor Version.

1.12. “Secondary License”means either the GNU General Public License, Version
2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those licenses.

1.13. “Source Code Form”means the form of the work preferred for making
modifications.

1.14. “You” (or “Your”) means an individual or a legal entity exercising rights
under this License. For legal entities, “You” includes any entity that controls,
is controlled by, or is under common control with You. For purposes of this
definition, “control” means (a) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or otherwise, or (b)
ownership of more than fifty percent (50%) of the outstanding shares or
beneficial ownership of such entity.

2. License Grants and Conditions 2.1. Grants Each Contributor hereby grants You
a world-wide, royalty-free, non-exclusive license:

under intellectual property rights (other than patent or trademark) Licensable
by such Contributor to use, reproduce, make available, modify, display, perform,
distribute, and otherwise exploit its Contributions, either on an unmodified
basis, with Modifications, or as part of a Larger Work; and

under Patent Claims of such Contributor to make, use, sell, offer for sale, have
made, import, and otherwise transfer either its Contributions or its Contributor
Version.

2.2. Effective Date The licenses granted in Section 2.1 with respect to any
Contribution become effective for each Contribution on the date the Contributor
first distributes such Contribution.

2.3. Limitations on Grant Scope The licenses granted in this Section 2 are the
only rights granted under this License. No additional rights or licenses will be
implied from the distribution or licensing of Covered Software under this
License. Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:

for any code that a Contributor has removed from Covered Software; or

for infringements caused by: (i) Your and any other third party’s modifications
of Covered Software, or (ii) the combination of its Contributions with other
software (except as part of its Contributor Version); or

under Patent Claims infringed by Covered Software in the absence of its
Contributions.

This License does not grant any rights in the trademarks, service marks, or
logos of any Contributor (except as may be necessary to comply with the notice
requirements in Section 3.4).

2.4. Subsequent Licenses No Contributor makes additional grants as a result of
Your choice to distribute the Covered Software under a subsequent version of
this License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).

2.5. Representation Each Contributor represents that the Contributor believes
its Contributions are its original creation(s) or it has sufficient rights to
grant the rights to its Contributions conveyed by this License.

2.6. Fair Use This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other equivalents.

2.7. Conditions Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses
granted in Section 2.1.

3. Responsibilities 3.1. Distribution of Source Form All distribution of Covered
Software in Source Code Form, including any Modifications that You create or to
which You contribute, must be under the terms of this License. You must inform
recipients that the Source Code Form of the Covered Software is governed by the
terms of this License, and how they can obtain a copy of this License. You may
not attempt to alter or restrict the recipients’ rights in the Source Code Form.

3.2. Distribution of Executable Form If You distribute Covered Software in
Executable Form then:

such Covered Software must also be made available in Source Code Form, as
described in Section 3.1, and You must inform recipients of the Executable Form
how they can obtain a copy of such Source Code Form by reasonable means in a
timely manner, at a charge no more than the cost of distribution to the
recipient; and

You may distribute such Executable Form under the terms of this License, or
sublicense it under different terms, provided that the license for the
Executable Form does not attempt to limit or alter the recipients’ rights in the
Source Code Form under this License.

3.3. Distribution of a Larger Work You may create and distribute a Larger Work
under terms of Your choice, provided that You also comply with the requirements
of this License for the Covered Software. If the Larger Work is a combination of
Covered Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this License
permits You to additionally distribute such Covered Software under the terms of
such Secondary License(s), so that the recipient of the Larger Work may, at
their option, further distribute the Covered Software under the terms of either
this License or such Secondary License(s).

3.4. Notices You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty, or
limitations of liability) contained within the Source Code Form of the Covered
Software, except that You may alter any license notices to the extent required
to remedy known factual inaccuracies.

3.5. Application of Additional Terms You may choose to offer, and to charge a
fee for, warranty, support, indemnity or liability obligations to one or more
recipients of Covered Software. However, You may do so only on Your own behalf,
and not on behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by You
alone, and You hereby agree to indemnify every Contributor for any liability
incurred by such Contributor as a result of warranty, support, indemnity or
liability terms You offer. You may include additional disclaimers of warranty
and limitations of liability specific to any jurisdiction.

4. Inability to Comply Due to Statute or Regulation If it is impossible for You
to comply with any of the terms of this License with respect to some or all of
the Covered Software due to statute, judicial order, or regulation then You
must: (a) comply with the terms of this License to the maximum extent possible;
and (b) describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered Software
under this License. Except to the extent prohibited by statute or regulation,
such description must be sufficiently detailed for a recipient of ordinary skill
to be able to understand it.

5. Termination 5.1. The rights granted under this License will terminate
automatically if You fail to comply with any of its terms. However, if You
become compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such Contributor
explicitly and finally terminates Your grants, and (b) on an ongoing basis, if
such Contributor fails to notify You of the non-compliance by some reasonable
means prior to 60 days after You have come back into compliance. Moreover, Your
grants from a particular Contributor are reinstated on an ongoing basis if such
Contributor notifies You of the non-compliance by some reasonable means, this is
the first time You have received notice of non-compliance with this License from
such Contributor, and You become compliant prior to 30 days after Your receipt
of the notice.

5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions, counter-claims, and
cross-claims) alleging that a Contributor Version directly or indirectly
infringes any patent, then the rights granted to You by any and all Contributors
for the Covered Software under Section 2.1 of this License shall terminate.

5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
license agreements (excluding distributors and resellers) which have been
validly granted by You or Your distributors under this License prior to
termination shall survive termination.

6. Disclaimer of Warranty Covered Software is provided under this License on an
“as is” basis, without warranty of any kind, either expressed, implied, or
statutory, including, without limitation, warranties that the Covered Software
is free of defects, merchantable, fit for a particular purpose or
non-infringing. The entire risk as to the quality and performance of the Covered
Software is with You. Should any Covered Software prove defective in any
respect, You (not any Contributor) assume the cost of any necessary servicing,
repair, or correction. This disclaimer of warranty constitutes an essential part
of this License. No use of any Covered Software is authorized under this License
except under this disclaimer.

7. Limitation of Liability Under no circumstances and under no legal theory,
whether tort (including negligence), contract, or otherwise, shall any
Contributor, or anyone who distributes Covered Software as permitted above, be
liable to You for any direct, indirect, special, incidental, or consequential
damages of any character including, without limitation, damages for lost
profits, loss of goodwill, work stoppage, computer failure or malfunction, or
any and all other commercial damages or losses, even if such party shall have
been informed of the possibility of such damages. This limitation of liability
shall not apply to liability for death or personal injury resulting from such
party’s negligence to the extent applicable law prohibits such limitation. Some
jurisdictions do not allow the exclusion or limitation of incidental or
consequential damages, so this exclusion and limitation may not apply to You.

8. Litigation Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal place of
business and such litigation shall be governed by laws of that jurisdiction,
without reference to its conflict-of-law provisions. Nothing in this Section
shall prevent a party’s ability to bring cross-claims or counter-claims.

9. Miscellaneous This License represents the complete agreement concerning the
subject matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent necessary to
make it enforceable. Any law or regulation which provides that the language of a
contract shall be construed against the drafter shall not be used to construe
this License against a Contributor.

10. Versions of the License 10.1. New Versions Mozilla Foundation is the license
steward. Except as provided in Section 10.3, no one other than the license
steward has the right to modify or publish new versions of this License. Each
version will be given a distinguishing version number.

10.2. Effect of New Versions You may distribute the Covered Software under the
terms of the version of the License under which You originally received the
Covered Software, or under the terms of any subsequent version published by the
license steward.

10.3. Modified Versions If you create software not governed by this License, and
you want to create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove any
references to the name of the license steward (except to note that such modified
license differs from this License).

10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses
If You choose to distribute Source Code Form that is Incompatible With Secondary
Licenses under the terms of this version of the License, the notice described in
Exhibit B of this License must be attached.

Exhibit A - Source Code Form License Notice This Source Code Form is subject to
the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not
distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

If it is not possible or desirable to put the notice in a particular file, then
You may include the notice in a location (such as a LICENSE file in a relevant
directory) where a recipient would be likely to look for such a notice.

You may add additional accurate notices of copyright ownership.

Exhibit B - “Incompatible With Secondary Licenses” Notice This Source Code Form
is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public
License, v. 2.0.

----------------------------------------------------
ISC License (ISC)
Copyright <YEAR> <OWNER>

Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright notice
and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
----------------------------------------------------
