<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  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="Bigtop">
  <bannerLeft>
    <name>Bigtop</name>
    <src>http://incubator.apache.org/bigtop/images/bigtop-logo.png</src>
    <href>http://incubator.apache.org/bigtop/</href>
  </bannerLeft>
  <bannerRight>
    <src>http://incubator.apache.org/bigtop/images/apache-incubator-logo.png</src>
    <href>http://incubator.apache.org/</href>
  </bannerRight>

  <publishDate position="right"/>
  <version position="right"/>

  <skin>
    <groupId>org.apache.maven.skins</groupId>
    <artifactId>maven-default-skin</artifactId>
    <version>1.0</version>
  </skin>

  <body>
    <links position="left">
      <item name="Wiki" href="https://cwiki.apache.org/confluence/display/BIGTOP" />
      <item name="JIRA" href="https://issues.apache.org/jira/browse/BIGTOP" />
      <item name="SVN" href="https://svn.apache.org/repos/asf/incubator/bigtop/" />
    </links>

    <breadcrumbs position="left">
      <item name="Apache" href="http://www.apache.org/" />
      <item name="Apache Incubator" href="http://incubator.apache.org/" />
      <item name="Bigtop" href="http://incubator.apache.org/bigtop/"/>
    </breadcrumbs>

    <menu name="Bigtop">
      <item name="Overview" href="index.html"/>
      <item name="Download" href="http://www.apache.org/dyn/closer.cgi/incubator/bigtop/" />
      <item name="Release Notes" href="release-notes.html"/>
      <item name="Who We Are" href="team-list.html" />
    </menu>

    <menu name="Resources">
      <item name="Mailing Lists" href="mail-lists.html" />
      <item name="Issue Tracking" href="issue-tracking.html" />
      <item name="IRC channel" href="irc-channel.html" />
    </menu>

  </body>
</project>
