Apache ServiceComb Service Center
Copyright 2017-2019 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).


================================================================
Notice for gopkg.in/yaml.v2:

See licenses/NOTICE-yamlv2

================================================================
Notice for coreos/etcd

CoreOS Project
Copyright 2014 CoreOS, Inc

This product includes software developed at CoreOS, Inc.
(http://www.coreos.com/).

================================================================
Notice for coreos/go-systemd

CoreOS Project
Copyright 2018 CoreOS, Inc

This product includes software developed at CoreOS, Inc.
(http://www.coreos.com/).

================================================================
Notice for coreos/go-semver

CoreOS Project
Copyright 2018 CoreOS, Inc

This product includes software developed at CoreOS, Inc.
(http://www.coreos.com/).

================================================================
Notice for coreos/pkg

CoreOS Project
Copyright 2014 CoreOS, Inc

This product includes software developed at CoreOS, Inc.
(http://www.coreos.com/).

================================================================
Notice for matttproud/golang_protobuf_extensions

Copyright 2012 Matt T. Proud (matt.proud@gmail.com)

================================================================
Notice for prometheus/client_golang

See licenses/NOTICE-prometheus

================================================================
Notice for prometheus/client_model

Data model artifacts for Prometheus.
Copyright 2012-2015 The Prometheus Authors

This product includes software developed at
SoundCloud Ltd. (http://soundcloud.com/).

================================================================
Notice for prometheus/common

Common libraries shared by Prometheus Go components.
Copyright 2015 The Prometheus Authors

This product includes software developed at
SoundCloud Ltd. (http://soundcloud.com/).

================================================================
Notice for prometheus/procfs

procfs provides functions to retrieve system, kernel and process
metrics from the pseudo-filesystem proc.

Copyright 2014-2015 The Prometheus Authors

This product includes software developed at
SoundCloud Ltd. (http://soundcloud.com/).

================================================================
Notice for cloudfoundry/lager

See licenses/NOTICE-lager
