<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
  <head>
    <title>{% block title %}{{ headers.title }}{% endblock %}</title>

    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <meta property="og:image" content="http://www.apache.org/images/asf_logo.gif" />

    <link rel="stylesheet" type="text/css" media="screen" href="http://www.apache.org/css/style.css">
    <link rel="stylesheet" type="text/css" media="screen" href="http://www.apache.org/css/code.css">

    {% if headers.atom %}
      <link rel="alternate" href="{{ headers.atom.url }}"
            type="application/atom+xml" title="{{ headers.atom.title }}" />
    {% endif %}

    {% if headers.base %}<base href="{{ headers.base }}" />{% endif %}
    {% if headers.notice %}<!-- {{ headers.notice }} -->{% endif %}
  </head>

  <body>
    <div id="page" class="container_16">
      <div id="header" class="grid_8">
        <img src="http://www.apache.org/images/feather-small.gif" alt="The Apache Software Foundation">
        <h1>The Apache Software Foundation</h1>
        <h2>{% block tagline %}{{ headers.title }}{% endblock %}</h2>
      </div>
      <div id="nav" class="grid_8">
        <ul>
          <!-- <li><a href="/" title="Welcome!">Home</a></li> -->
          <li><a href="http://www.apache.org/foundation/" title="The Foundation">Foundation</a></li>
          <li><a href="http://projects.apache.org" title="The Projects">Projects</a></li>
          <li><a href="http://people.apache.org" title="The People">People</a></li>
          <li><a href="http://www.apache.org/foundation/getinvolved.html" title="Get Involved">Get Involved</a></li>
          <li><a href="http://www.apache.org/dyn/closer.cgi" title="Download">Download</a></li>
          <li><a href="http://www.apache.org/foundation/sponsorship.html" title="Support Apache">Support Apache</a></li>
        </ul>
        <p>{{ breadcrumbs|safe }}</p>
        <form name="search" id="search" action="http://www.google.com/search" method="get">
          <input value="*.apache.org" name="sitesearch" type="hidden"/>
          <input type="text" name="q" id="query">
          <input type="submit" id="submit" value="Search">
        </form>
      </div>
      <div class="clear"></div>
      {% block content %}<div id="content" class="grid_16"><div class="section-content">{{ content|markdown }}</div></div>{% endblock %}
      <div class="clear"></div>
    </div>

    <div id="copyright" class="container_16">
      <p>Copyright &#169; 2011 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
    </div>
  </body>
</html>
