<?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.
  -->

<document>
    <properties>
        <title>Apache Synapse - Downloads</title>
    </properties>
    <body>
        <section name="Download Latest Stable Release">
            <p>
                The latest stable release of Apache Synapse is 2.1. It is highly recommended
                to use the latest stable release so that you can use our newest features
                while benefiting from all the recent bug fixes and improvements.
            </p>
            <table>
                <tr>
                    <th>Version</th>
                    <th>Release Date</th>
                </tr>
                <tr>
                    <td><a href="download/2.1/download.cgi">2.1</a></td>
                    <td>22-Dec-2011</td>
                </tr>
            </table>
        </section>
        <section name="Download Previous Releases">
            <table>
                <tr>
                    <th>Version</th>
                    <th>Release Date</th>
                </tr>
                <tr>
                    <td><a href="download/2.0.0/download.cgi">2.0.0</a></td>
                    <td>30-Nov-2010</td>
                </tr>
                <tr>
                    <td><a href="download/1.2/download.cgi">1.2</a></td>
                    <td>9-Jun-2008</td>
                </tr>
                <tr>
                    <td><a href="download/1.1.1/download.cgi">1.1.1</a></td>
                    <td>28-Jan-2008</td>
                </tr>
                <tr>
                    <td><a href="download/1.1/download.cgi">1.1</a></td>
                    <td>12-Nov-2007</td>
                </tr>
                <tr>
                    <td><a href="download/2.0.0/download.cgi">1.0</a></td>
                    <td>08-Jun-2007</td>
                </tr>
            </table>
        </section>
    </body>
</document>