Apache Unomi
Copyright 2015-2020 The Apache Software Foundation

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

Based on source code originally developed by
Jahia Solutions Software (http://www.jahia.com/).
