Apache Bigtop
Copyright 2014, The Apache Software Foundation

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

In addition, this product includes files licensed under:

* The FreeBSD Documentation License
  https://www.freebsd.org/copyright/freebsd-doc-license.html

* The MIT License
  https://opensource.org/licenses/MIT