<?xml version="1.0" encoding="UTF-8"?>
<!--
 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.

-->
<project name="Log4j Tag Library"
         xmlns="http://maven.apache.org/DECORATION/1.4.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/DECORATION/1.4.0 http://maven.apache.org/xsd/decoration-1.4.0.xsd">
  <bannerLeft>
    <name>Logging Services</name>
    <src>../images/ls-logo.jpg</src>
    <href>../index.html</href>
  </bannerLeft>
  <bannerRight>
    <src>../images/logo.jpg</src>
  </bannerRight>
  <body>
    <links>
      <item name="Apache" href="http://www.apache.org/" />
      <item name="Logging Services" href="http://logging.apache.org/"/>
      <item name="Log4j" href="../index.html"/>
    </links>

    <!-- Component-specific reports -->
    <menu ref="reports"/>

	<!-- Overall Project Info -->
    <menu name="Log4j Project Information" img="icon-info-sign">
      <item name="Dependencies" href="../dependencies.html" />
      <item name="Dependency Convergence" href="../dependency-convergence.html" />
      <item name="Dependency Management" href="../dependency-management.html" />
      <item name="Project Team" href="../team-list.html" />
      <item name="Mailing Lists" href="../mail-lists.html" />
      <item name="Issue Tracking" href="../issue-tracking.html" />
      <item name="Project License" href="../license.html" />
      <item name="Source Repository" href="../source-repository.html" />
      <item name="Project Summary" href="../project-summary.html" />
    </menu>

    <menu name="Log4j Project Reports" img="icon-cog">
      <item name="Changes Report" href="../changes-report.html" />
      <item name="JIRA Report" href="../jira-report.html" />
      <item name="Surefire Report" href="../surefire-report.html" />
      <item name="RAT Report" href="../rat-report.html" />
    </menu>
    <footer><div class="row span16">Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, and the
      Apache Logging project logo are trademarks of The Apache Software Foundation.</div>
    </footer>
  </body>
</project>