<footer class="site-footer">
    <div class="wrapper">
        <div class="footer-col-wrapper">
            {% if site.data.project.podling %}
            {{ site.data.project.name }} is an effort undergoing <a href="https://incubator.apache.org/index.html">Incubation</a>
            at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly
            accepted projects until a further review indicates that the infrastructure, communications, and decision
            making process have stabilized in a manner consistent with other successful ASF projects. While incubation
            status is not necessarily a reflection of the completeness or stability of the code, it does indicate that
            the project has yet to be fully endorsed by the ASF.
            <hr>
            {% endif %}
            <div style="text-align:center;">
                {% if site.data.project.podling %}
                <div style="margin-top: 20px; margin-bottom: 20px;">
                    <a href="http://incubator.apache.org"><img src="assets/themes/apache/img/egg-logo.png"
                                                               alt="Apache Incubator"/></a>
                </div>
                {% endif %}
                <div>
                    Copyright &copy; 2015 <a href="http://www.apache.org">The Apache Software Foundation</a>.
                    Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version
                    2.0</a>.
                    <br>
                    {% if site.data.project.podling %}
                    Apache, the Apache Feather logo, and the Apache Incubator project logo are trademarks of The Apache
                    Software Foundation.
                    {% else %}
                    Apache and the Apache Feather logo are trademarks of The Apache Software Foundation.
                    {% endif %}
                </div>
            </div>
        </div>
    </div>
</footer>