//**
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.
----------------------------------------------------
