<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; 2016 <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>
