####################################################################################
#
#    Licensed to the Apache Software Foundation (ASF) under one or more
#    contributor license agreements.  See the NOTICE file distributed with
#    this work for additional information regarding copyright ownership.
#    The ASF licenses this file to You 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.
#
####################################################################################
<html>
<head>
    <link href="style.css" type="text/css" rel="stylesheet" />
</head>

<body>
<a href="archives.html">archives</a> -  <a href="licenses.html">licenses</a> - <a href="notices.html">notices</a> - <a href="content">contents</a><br/><br/>
<h1>$archive.uri</h1>

<a href="content/${archive.uri}.contents">contents</a>

<h2>Declared Licenses</h2>
<ul>
#foreach($license in $archive.declaredLicenses)
    <li>
        <ul>
        #foreach($uri in $license.locations($archive))
            <li>$uri</li>
        #end
        </ul>
        <pre>$license.text</pre>
    </li>
#end
</ul>

<h2>Undeclared Licenses</h2>
<ul>
#foreach($license in $archive.otherLicenses)
    <li>
        <ul>
        #foreach($uri in $license.locations($archive))
            <li>$uri</li>
        #end
        </ul>
        <pre>$license.text</pre>
    </li>
#end
</ul>

</body>
</html>