</div></div>
<!-- Wrapper / End -->


<!-- Footer -->

<!-- Footer Top -->
<div id="footer" class="container-fluid paddingbottom" >


    <div class="row-fluid">

        <!-- About -->
        <div class="span3">
            <div class="footer-headline"><h4>About Us</h4></div>
            <p>Apache Flex® is a highly productive, open source application framework for building and maintaining expressive web applications that deploy consistently on all major browsers, desktops and devices (including smartphones, tablets and tv). It provides a modern, standards-based language and programming model that supports common design patterns suitable for developers from many backgrounds. Flex applications can be deployed to the ubiquitous Adobe® Flash® Player in the browser, Adobe® AIR™ on desktop and mobile or to native Android™, IOS™, QNX®, Windows® or Mac® applications.</p>
        </div>

        <!-- Subscribe  -->
        <div class="span3">
            <div class="footer-headline"><h4>Subscribe</h4></div>
            <p>We have two mailing lists, one for SDK developers, and one for SDK users.</p>
            <p>Developers, send an email to <br>
                <a href="mailto:dev-subscribe@flex.apache.org">dev-subscribe@flex.apache.org</a>
            </p>
            <p>Users, send an email to <br>
                <a href="mailto:users-subscribe@flex.apache.org">users-subscribe@flex.apache.org</a>
            </p>
        </div>

        <!-- Latest Releases -->
        <div class="span3">
            <div class="footer-headline"><h4>Latest Releases</h4></div>
            <p>
            	Apache Flex SDK : <a href="/download-binaries.html">4.15 (January 2016)</a><br />
                Apache FlexJS SDK : <a href="/download-flexjs.html">0.6.0 (April 2016)</a><br />
                Blaze DS : <a href="/download-blazeds.html">4.7.0 (Mar 2015)</a><br />
                Flex Mavenizer : <a href="http://svn.apache.org/viewvc/flex/utilities/trunk/mavenizer/"> 4.8.0 (Jan 2013)</a><br />
                FlexUnit : <a href="/download-flexunit.html">4.2.0 (Apr 2014)</a><br />
                SDK Installer : <a href="/installer.html">3.2.0 (June 2015)</a><br />
                Squiggly : <a href="/download-squiggly.html">1.1 (Oct 2014)</a><br />
                Tour De Flex : <a href="/download-tourdeflex.html">1.2 (Nov 2014)</a><br />
            </p>
        </div>

        <!-- Latest Tweets -->
        <div class="span3">
            <div class="footer-headline"><h4>Latest Tweets</h4></div>
            <a class="twitter-timeline" href="https://twitter.com/ApacheFlex" data-chrome="noheader nofooter noborders noscrollbar" data-widget-id="364567612920852480">Tweets by Apache Flex</a>
            <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
            <div class="clear"></div>
        </div>

    </div>

</div>
<!-- Footer / Bottom -->
<div id="footer" class="container-fluid" style="background: #111;">
    <div class="row-fluid">
        <div class="span12">
            <div id="footer-bottom">
                Copyright © 2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0 <br>
                Apache Flex, Apache and the Apache feather logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
                Read more about our privacy policy on our <a href="about-privacy.html">Privacy Policy</a> page.
                <div id="scroll-top-top"><a href="#" title="Go to Top"></a></div>
            </div>
        </div>
    </div>

</div>

<!-- Footer / End -->

</body>

</html>