Apache MADlib (incubating)
Copyright 2016 The Apache Software Foundation.

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

Portions Copyright (c) 2014-2015, Pivotal Inc. All rights reserved.

Portions Copyright (c) 2010-2013 by EMC Corporation. All rights reserved.

Portions Copyright (c) 2010-2013 by Regents of the University of California. All rights reserved.
