<?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://bigtop.apache.org/images/bigtop-logo.png</src>
    <href>http://bigtop.apache.org/</href>
  </bannerLeft>
  <bannerRight>
    <src>http://www.apache.org/images/asf_logo_wide.png</src>
    <href>http://www.apache.org/</href>
  </bannerRight>

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

  <skin>
    <groupId>org.apache.maven.skins</groupId>
    <artifactId>maven-fluido-skin</artifactId>
    <version>1.3.0</version>
  </skin>

  <custom>
    <fluidoSkin>
      <topBarEnabled>true</topBarEnabled>
      <sideBarEnabled>false</sideBarEnabled>
      <leftColumnClass>span2</leftColumnClass>
      <bodyColumnClass>span10</bodyColumnClass>
      <googleSearch>
        <sitesearch>http://bigtop.apache.org</sitesearch>
      </googleSearch>
    </fluidoSkin>
  </custom>

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

    <links position="left">
    </links>

    <menu name="Apache Bigtop">
      <item name="Overview" href="index.html"/>
      <item name="Powered by" href="https://cwiki.apache.org/confluence/display/BIGTOP/Powered+By+Bigtop" />
      <item name="Who We Are" href="team-list.html" />
      <item name="Feedback" href="issue-tracking.html" />
    </menu>

    <menu name="Releases">
      <item name="Release Notes" href="release-notes.html"/>
      <item name="1.1.0" href="http://www.apache.org/dyn/closer.lua/bigtop/bigtop-1.1.0/"/>
      <item name="1.2.0" href="http://www.apache.org/dyn/closer.lua/bigtop/bigtop-1.2.0/"/>
    </menu>

    <menu name="Project Information">
      <item name="Wiki" href="https://cwiki.apache.org/confluence/display/BIGTOP" />
      <item name="JIRA" href="https://issues.apache.org/jira/browse/BIGTOP" />
      <item name="GIT (browse)" href="https://git-wip-us.apache.org/repos/asf?p=bigtop.git" />
      <item name="GIT (clone)" href="https://git-wip-us.apache.org/repos/asf/bigtop.git" />
      <item name="Blog" href="http://blogs.apache.org/bigtop/" />
      <item name="Mailing Lists" href="mail-lists.html" />
      <item name="IRC channel" href="irc-channel.html" />
    </menu>

    <menu name="Downloads">
      <item name="Latest release" href="download.html#releases"/>
    </menu>

    <menu name="ASF">
      <item name="How Apache Works" href="http://www.apache.org/foundation/how-it-works.html"/>
      <item name="Foundation" href="http://www.apache.org/foundation/"/>
      <item name="Sponsoring Apache" href="http://www.apache.org/foundation/sponsorship.html"/>
      <item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
    </menu>
  </body>
</project>
