<?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
  ~
  ~   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>
    <publishDate position="bottom"/>
    <version position="bottom"/>
    <skin>
        <groupId>org.apache.maven.skins</groupId>
        <artifactId>maven-fluido-skin</artifactId>
        <version>1.5</version>
    </skin>
    <bannerLeft>
        <name>Apache Streams</name>
        <src>http://streams.incubator.apache.org/images/streams_logo.jpg</src>
        <href>http://streams.incubator.apache.org</href>
        <height>100</height>
        <width>150</width>
    </bannerLeft>
    <bannerRight>
        <name>Apache Incubator</name>
        <src>http://incubator.apache.org/images/egg-logo.png</src>
        <href>http://incubator.apache.org</href>
    </bannerRight>
    <body>
        <breadcrumbs>
          <item name="Incubator" href="http://incubator.apache.org/"/>
          <item name="Streams" href="http://streams.incubator.apache.org/"/>
        </breadcrumbs>
        <head>
            <![CDATA[
            <script>
                (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
                })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

                ga('create', 'UA-77087101-1', 'auto');
                ga('send', 'pageview');
            </script>
            ]]>
        </head>
        <menu name="Overview" inherit="top">
            <item name="Overview" href="index.html" />
            <item name="Architecture" href="architecture.html" />
            <item name="Concepts" href="concepts.html" />
            <item name="Downloads" href="downloads.html" />
            <item name="Frequently Asked Questions" href="faq.html" />
        </menu>
        <menu name="Details">
          <item name="Project License" href="license.html" />
          <item name="Mailing Lists" href="mail-lists.html" />
          <item name="Project Team" href="team-list.html" />
          <item name="Continuous Integration" href="integration.html"/>
          <item name="Issue Tracking" href="issue-tracking.html" />
          <item name="Source Repositories" href="source-repository.html" />
          <item name="Dependency Info" href="dependency-info.html" />
          <item name="Distribution Management" href="distribution-management.html" />
          <item name="Plugin Management" href="plugin-management.html" />
          <item name="Release Setup" href="release-setup.html" />
          <item name="Release Process" href="release.html" />
          <item name="Changelog" href="changelog.html" />
          <item name="Website Management" href="website.html" />
        </menu>
        <menu name="Projects" inherit="top">
          <item name="streams-master" />
          <item name="streams-project" href="http://streams.incubator.apache.org/site/latest/streams-project" />
          <item name="streams-examples" href="http://streams.incubator.apache.org/site/latest/streams-examples/" />
        </menu>
        <menu name="Learn More">
            <item name="Run some official examples" href="http://streams.incubator.apache.org/site/latest/streams-examples/index.html"  />
            <item name="Browse streams providers, processors, and persisters" href="http://streams.incubator.apache.org/site/latest/streams-project/streams-contrib/index.html"  />
            <item name="View the official Apache Streams jsonschema files" href="http://streams.incubator.apache.org/site/latest/streams-project/streams-pojo/index.html" />
            <item name="View java POJOs generated from the official Apache Streams jsonschema files" href="http://streams.incubator.apache.org/site/latest/streams-project/streams-pojo/apidocs/org/apache/streams/pojo/json/package-summary.html" />
        </menu>
        <menu name="Other Resources">
            <item name="ActivityStreams Homepage" href="http://activitystrea.ms" />
            <item name="ActivityStreams Specifications" href="http://activitystrea.ms/specs/" />
            <item name="Streams Blog" href="http://blogs.apache.org/streams/" />
            <item name="Streams Proposal Wiki Page" href="http://wiki.apache.org/incubator/StreamsProposal" />
            <item name="Apache Foundation Info" href="http://www.apache.org/" />
            <item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html" />
            <item name="Thanks" href="http://www.apache.org/foundation/thanks.html" />
        </menu>
    </body>
    <custom>
        <fluidoSkin>
            <topBarEnabled>true</topBarEnabled>
            <navBarStyle>navbar-inverse</navBarStyle>
            <sideBarEnabled>false</sideBarEnabled>
            <gitHub>
                <projectId>apache/incubator-streams-master</projectId>
                <ribbonOrientation>right</ribbonOrientation>
                <ribbonColor>black</ribbonColor>
            </gitHub>
            <twitter>
                <user>ApacheStreams</user>
                <showUser>true</showUser>
                <showFollowers>true</showFollowers>
            </twitter>
        </fluidoSkin>
    </custom>
</project>
