<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia 
 | Rendered using Apache Maven Fluido Skin 1.3.1
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20211214" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Archiva Documentation &#x2013; Release Notes for Archiva 2.2.6</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>

    
              <!-- Google Analytics -->
    <script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-140879-5']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
          </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                                  <a href="../../" id="bannerLeft">
                                                                                                <img src="../../images/archiva.png"  alt="Apache Archiva"/>
                </a>
                      </div>
        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
                                                                                        <img src="https://www.apache.org/images/asf_logo_wide_2016.png"  alt="Apache Software Foundation"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                              <li class="">
                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
        Apache</a>
                    <span class="divider">/</span>
      </li>
                <li class="">
                    <a href="./" title="Apache Archiva">
        Apache Archiva</a>
                    <span class="divider">/</span>
      </li>
            <li class="">
                    <a href="../../index.html" title="Apache Archiva">
        Apache Archiva</a>
                    <span class="divider">/</span>
      </li>
        <li class="active ">Release Notes for Archiva 2.2.6</li>
        
                
                    
                  <li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2021-12-14</li>
              <li id="projectVersion" class="pull-right">
                    Version: 2.2.6
        </li>
            
                            </ul>
      </div>

                  
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">Introduction</li>
                              
      <li>
  
                          <a href="quick-start.html" title="Quick Start">
          <i class="none"></i>
        Quick Start</a>
            </li>
                
      <li>
  
                          <a href="tour/index.html" title="Feature Tour">
          <i class="none"></i>
        Feature Tour</a>
            </li>
                
      <li class="active">
  
            <a href="#"><i class="none"></i>Release Notes</a>
          </li>
                
      <li>
  
                          <a href="../../download.html" title="Downloads">
          <i class="none"></i>
        Downloads</a>
            </li>
                              <li class="nav-header">Users Guide</li>
                              
      <li>
  
                          <a href="userguide/browsing.html" title="Browsing">
          <i class="none"></i>
        Browsing</a>
            </li>
                
      <li>
  
                          <a href="userguide/searching.html" title="Searching">
          <i class="none"></i>
        Searching</a>
            </li>
                
      <li>
  
                          <a href="userguide/delete-artifact.html" title="Deleting an Artifact">
          <i class="none"></i>
        Deleting an Artifact</a>
            </li>
                
      <li>
  
                          <a href="userguide/using-repository.html" title="Using as a repository">
          <i class="none"></i>
        Using as a repository</a>
            </li>
                
      <li>
  
                          <a href="userguide/deploy.html" title="Deploying to repository">
          <i class="none"></i>
        Deploying to repository</a>
            </li>
                
      <li>
  
                          <a href="userguide/virtual-repositories.html" title="Configuring Virtual Repositories">
          <i class="none"></i>
        Configuring Virtual Repositories</a>
            </li>
                
      <li>
  
                          <a href="userguide/rss.html" title="Rss Feeds in Archiva">
          <i class="none"></i>
        Rss Feeds in Archiva</a>
            </li>
                
      <li>
  
                          <a href="userguide/querying-artifacts.html" title="Querying Artifacts">
          <i class="none"></i>
        Querying Artifacts</a>
            </li>
                              <li class="nav-header">Administrators Guide</li>
                                                                                                                    
      <li>
  
                          <a href="adminguide/installing.html" title="Installing Archiva">
          <i class="icon-chevron-right"></i>
        Installing Archiva</a>
                  </li>
                
      <li>
  
                          <a href="adminguide/databases.html" title="Databases">
          <i class="none"></i>
        Databases</a>
            </li>
                
      <li>
  
                          <a href="adminguide/repositories-content-storage.html" title="Repositories Content Storage">
          <i class="none"></i>
        Repositories Content Storage</a>
            </li>
                                                                                                      
      <li>
  
                          <a href="adminguide/security.html" title="Security">
          <i class="icon-chevron-right"></i>
        Security</a>
                  </li>
                                                                                                                                                                                                                                                                                          
      <li>
  
                          <a href="adminguide/configuration.html" title="Archiva Configuration">
          <i class="icon-chevron-right"></i>
        Archiva Configuration</a>
                  </li>
                
      <li>
  
                          <a href="adminguide/webservices/rest.html" title="REST Apis">
          <i class="none"></i>
        REST Apis</a>
            </li>
                
      <li>
  
                          <a href="adminguide/configuration-files.html" title="Configuration Files">
          <i class="none"></i>
        Configuration Files</a>
            </li>
                
      <li>
  
                          <a href="adminguide/system-status.html" title="System Status">
          <i class="none"></i>
        System Status</a>
            </li>
                                                                                                      
      <li>
  
                          <a href="adminguide/logging.html" title="Log Files">
          <i class="icon-chevron-right"></i>
        Log Files</a>
                  </li>
                
      <li>
  
                          <a href="adminguide/reports.html" title="Reports">
          <i class="none"></i>
        Reports</a>
            </li>
                              <li class="nav-header">Customising Archiva</li>
                              
      <li>
  
                          <a href="customising/writing-consumer.html" title="Writing a Consumer Plugin">
          <i class="none"></i>
        Writing a Consumer Plugin</a>
            </li>
                              <li class="nav-header">More Information</li>
                              
      <li>
  
                          <a href="http://cwiki.apache.org/confluence/display/ARCHIVA/Index" class="externalLink" title="Archiva Wiki">
          <i class="none"></i>
        Archiva Wiki</a>
            </li>
                              <li class="nav-header">ASF</li>
                              
      <li>
  
                          <a href="http://www.apache.org/foundation/how-it-works.html" class="externalLink" title="How Apache Works">
          <i class="none"></i>
        How Apache Works</a>
            </li>
                
      <li>
  
                          <a href="http://www.apache.org/foundation/" class="externalLink" title="Foundation">
          <i class="none"></i>
        Foundation</a>
            </li>
                
      <li>
  
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsoring Apache">
          <i class="none"></i>
        Sponsoring Apache</a>
            </li>
                
      <li>
  
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">
          <i class="none"></i>
        Thanks</a>
            </li>
                              <li class="nav-header">Project Documentation</li>
                                                                                                  
      <li>
  
                          <a href="project-info.html" title="Project Information">
          <i class="icon-chevron-right"></i>
        Project Information</a>
                  </li>
            </ul>
                
                    
                            <form id="search-form" action="http://www.google.com/search" method="get" >
    
  <input value="http://archiva.apache.org/docs/2.2.6/" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
          
          <hr />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
               
        
        
        <div id="twitter">
    
    <a href="https://twitter.com/archiva" class="twitter-follow-button" data-show-count="false" data-align="left" data-size="medium" data-show-screen-name="true" data-lang="en">Follow archiva</a>
    <script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

        </div>
                   <div class="clear"></div>
                            <div class="clear"></div>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                  </div>
          </div>
        </div>
        
                        
        <div id="bodyColumn"  class="span10" >
                                  
            <!-- 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. --><div class="section">
<h2><a name="Release_Notes_for_Archiva_2.2.6"></a>Release Notes for Archiva 2.2.6</h2>
<p>The Apache Archiva team is pleased to announce the release of Archiva 2.2.6. Archiva is <a class="externalLink" href="https://archiva.apache.org/download.html"> available for download from the web site</a>.</p>
<p>Archiva is an application for managing one or more remote repositories, including administration, artifact handling, browsing and searching.</p>
<p>This is a security fix release. Users are advised to update their systems to the new version as soon as possible.</p>
<p>For further information see: <a class="externalLink" href="https://archiva.apache.org/security.html">https://archiva.apache.org/security.html</a></p>
<p>If you have any questions, please consult:</p>
<ul>
<li>the web site: <a class="externalLink" href="https://archiva.apache.org/">https://archiva.apache.org/</a></li>
<li>the archiva-user mailing list: <a class="externalLink" href="https://archiva.apache.org/mail-lists.html">https://archiva.apache.org/mail-lists.html</a></li></ul>
<div class="section">
<h3><a name="New_in_Archiva_2.2.6"></a>New in Archiva 2.2.6</h3>
<p>Apache Archiva 2.2.6 is a security fix release:</p>
<div class="section">
<h4><a name="Compatibility_Changes"></a>Compatibility Changes</h4>
<ul>
<li>No API changes or known side effects.</li></ul></div>
<div class="section">
<h4><a name="New_Feature"></a>New Feature</h4>
<ul>
<li>There are no new features in this release.</li></ul></div>
<div class="section">
<h4><a name="Improvements"></a>Improvements</h4>
<ul>
<li>There are no improvements</li></ul></div>
<div class="section">
<h4><a name="BugSecurity_Fix"></a>Bug/Security Fix</h4>
<ul>
<li>Update of the log4j2 version to mitigate the log4j2 vulnerability (CVE-2021-44228)</li>
<li>Deactivated directory listings by the file servlet</li></ul></div></div></div>
<div class="section">
<h2><a name="Previous_Release_Notes"></a>Previous Release Notes</h2>
<div class="section">
<h3><a name="Release_Notes_for_Archiva_2.2.5"></a>Release Notes for Archiva 2.2.5</h3>
<p>Apache Archiva 2.2.5 is a bug fix release:</p>
<p>Released: 2020-06-19</p>
<div class="section">
<h4><a name="Compatibility_Changes"></a>Compatibility Changes</h4>
<ul>
<li>No API changes or known side effects.</li></ul></div>
<div class="section">
<h4><a name="New_Feature"></a>New Feature</h4>
<ul>
<li>There are no new features in this release.</li></ul></div>
<div class="section">
<h4><a name="Improvements"></a>Improvements</h4>
<ul>
<li>There are no improvements</li></ul></div>
<div class="section">
<h4><a name="Bug_Fix"></a>Bug Fix</h4>
<ul>
<li>[MRM-2008] Fix for group names with slashes</li>
<li>Better handling of LDAP filter </li></ul></div></div>
<div class="section">
<h3><a name="Release_Notes_for_Archiva_2.2.4"></a>Release Notes for Archiva 2.2.4</h3>
<p>Apache Archiva 2.2.4 is a bug fix release:</p>
<ul>
<li>Fixes for handling of artifacts</li>
<li>Improved validation of REST calls</li></ul>
<div class="section">
<h4><a name="Compatibility_Changes"></a>Compatibility Changes</h4>
<p>No API changes or known side effects.</p>
<p>Released: 2019-04-30</p></div>
<div class="section">
<h4><a name="New_Feature"></a>New Feature</h4>
<ul>
<li>There are no new features in this release.</li></ul></div>
<div class="section">
<h4><a name="Improvements"></a>Improvements</h4>
<ul>
<li>Adding additional validation to REST service calls for artifact upload</li></ul></div>
<div class="section">
<h4><a name="Bug_Fix"></a>Bug Fix</h4>
<ul>
<li>[MRM-1972] Stored XSS in Web UI Organization Name</li>
<li>[MRM-1966] Repository-purge not working</li>
<li>[MRM-1958] Purge by retention count deletes files but leaves history on website.</li>
<li>[MRM-1929] Repository purge is not reflected in index</li></ul></div></div>
<div class="section">
<h3><a name="Release_Notes_for_Archiva_2.2.3"></a>Release Notes for Archiva 2.2.3</h3>
<div class="section">
<h4><a name="New_in_Archiva_2.2.3"></a>New in Archiva 2.2.3</h4>
<p>Apache Archiva 2.2.3 is a bug fix release:</p>
<ul>
<li>Some fixes for the REST API were added to detect requests from unknown origin</li>
<li>Some bugfixes were added</li></ul></div>
<div class="section">
<h4><a name="Compatibility_Changes"></a>Compatibility Changes</h4>
<ul>
<li>The REST services are now checking for the origin of the requests by analysing Origin and Referer header of the HTTP requests and adding an validation token to the Header. This prevents requests from malicious sites if they are open in the same browser. If you use the REST services from other clients you may change the behaviour with the new configuration properties for the redback security (<tt>rest.csrffilter.*</tt>, <tt>rest.baseUrl</tt>). For more information see <a href="./adminguide/customising-security.html">Archiva Security Configuration</a> and the <a href="/redback/integration/rest.html">Redback REST documentation </a>.
<p><b>Note:</b> If your archiva installation is behind a reverse proxy or load balancer, it may be possible that the Archiva Web UI does not load after the upgrade. If this is the case you may access the WebUI via localhost or edit archiva.xml manually. In the &quot;Redback Runtime Configuration&quot; properties you have to enter the base URLs of your archiva installation to the <tt>rest.baseUrl</tt> field.</p></li>
<li>Archiva uses redback for authentication and authorization in version 2.6</li></ul></div>
<div class="section">
<h4><a name="Change_List"></a>Change List</h4>
<p>Released: <b>2017-05-13</b></p>
<div class="section">
<h5><a name="New_Feature"></a>New Feature</h5></div>
<div class="section">
<h5><a name="Improvement"></a>Improvement</h5>
<ul>
<li>[MRM-1925] - Make User-Agent header configurable for HTTP requests</li>
<li>[MRM-1861], [MRM-1924] - Increasing timeouts for repository check</li>
<li>[MRM-1937] - Prevent creating initial admin user with wrong name.</li>
<li>Adding origin header validation checks for REST requests</li></ul></div>
<div class="section">
<h5><a name="Bug_Fix"></a>Bug Fix</h5>
<ul>
<li>[MRM-1859] - Error upon viewing 'Artifacts' tab when browsing an artifact</li>
<li>[MRM-1874] - Login Dialog triggers multiple events (+messages)</li>
<li>[MRM-1908] - Logged on users can write any repository</li>
<li>[MRM-1909] - Remote repository check fails for https://repo.maven.apache.org/maven2</li>
<li>[MRM-1923] - Fixing bind issue with certain ldap servers, when user not found</li>
<li>[MRM-1926] - Invalid checksum files in Archiva repository after download from remote repository</li>
<li>[MRM-1928] - Bad redirect URL when using Archiva through HTTP reverse proxy</li>
<li>[MRM-1933] - No message body writer has been found for class org.apache.archiva.rest.services.ArchivaRestError</li>
<li>[MRM-1940] - Slashes appended to remote repo url</li></ul></div></div></div>
<div class="section">
<h3><a name="Release_Notes_for_Archiva_2.2.1"></a>Release Notes for Archiva 2.2.1</h3>
<div class="section">
<h4><a name="New_in_Archiva_2.2.1"></a>New in Archiva 2.2.1</h4>
<p>Apache Archiva 2.2.1 is a bugs fix release:</p>
<p>NOTE: jdk 1.7 is now prerequisite with Apache Archiva 2.2.1</p></div>
<div class="section">
<h4><a name="Compatibility_Changes"></a>Compatibility Changes</h4>
<p>If using the Cassandra backend, the metadatafacet column 'key' has been renamed to 'facetKey' in 2.2.0 so you should copy the data to the new column manually. If upgrading from earlier versions of Archiva, the list of libraries in wrapper.conf has changed. If you have customized your copy of wrapper.conf, please update it for compatibility with the version distributed with the current release. As the database storage has been removed, you can remove the JNDI entry for jdbc/archiva.</p>
<p>Refer to the Upgrading Archiva guide for more information.</p></div>
<div class="section">
<h4><a name="List_of_Changes"></a>List of Changes</h4>
<div class="section">
<h5><a name="Improvement"></a>Improvement</h5>
<ul>
<li>[MRM-1201] - Artifact upload success message should mention the classifier</li>
<li>[MRM-1906] - Allowing filtering of LDAP groups</li></ul></div>
<div class="section">
<h5><a name="Bug_Fix"></a>Bug Fix</h5>
<ul>
<li>[MRM-1873] - archiva doesn't recognise ldap-group to ldap-users mapping</li>
<li>[MRM-1877] - Checksum files always recreated</li>
<li>[MRM-1879] - Bug in create-missing-checksum consumer</li>
<li>[MRM-1886] - View Artifact Content Action does not Work</li>
<li>[MRM-1887] - Syntax error in DOAP file release section; wrong bug- database URL</li>
<li>[MRM-1892] - Only One Page of Proxy Connector Rules Shown</li>
<li>[MRM-1893] - Please delete old releases from mirroring system</li>
<li>[MRM-1896] - Invalid link to license</li>
<li>[MRM-1914] - Maven cannot find dependency</li></ul></div></div></div>
<div class="section">
<h3><a name="Release_Notes_for_Archiva_2.2.0"></a>Release Notes for Archiva 2.2.0</h3>
<div class="section">
<h4><a name="New_in_Archiva_2.2.0"></a>New in Archiva 2.2.0</h4>
<p>Apache Archiva 2.2.0 is a bugs fix release:</p>
<p>NOTE: jdk 1.7 is now prerequisite with Apache Archiva 2.2.0</p></div>
<div class="section">
<h4><a name="Compatibility_Changes"></a>Compatibility Changes</h4>
<p>If using the Cassandra backend, the metadatafacet column 'key' has been renamed to 'facetKey' in 2.2.0 so you should copy the data to the new column manually. If upgrading from earlier versions of Archiva, the list of libraries in wrapper.conf has changed. If you have customized your copy of wrapper.conf, please update it for compatibility with the version distributed with the current release. As the database storage has been removed, you can remove the JNDI entry for jdbc/archiva. After upgrading from a previous version, you will have to run a full scan to populate the new JCR Repository. This will be done on first start of Archiva.</p>
<p>Refer to the Upgrading Archiva guide for more information.</p></div>
<div class="section">
<h4><a name="List_of_Changes_in_Archiva_2.2.0"></a>List of Changes in Archiva 2.2.0</h4>
<div class="section">
<h5><a name="New_Feature"></a>New Feature</h5>
<ul>
<li>[MRM-1867] - Adding a find jar by checksum functionality to the REST api</li></ul></div>
<div class="section">
<h5><a name="Improvement"></a>Improvement</h5>
<ul>
<li>[MRM-1390] - Generic metadata should be searcheable in Archiva search</li>
<li>[MRM-1844] - Allow LDAP groupOfNames</li></ul></div>
<div class="section">
<h5><a name="Bug_Fix"></a>Bug Fix</h5>
<ul>
<li>[MRM-770] - Archiva web client does not recognize classifier</li>
<li>[MRM-813] - Audit log is reporting &quot;Modify File (proxied)&quot; when no proxy connectors exist and the file has not changed</li>
<li>[MRM-837] - Cannot download SNAPSHOT version</li>
<li>[MRM-935] - Archiva doesn't supports artifact with <i>version</i>SNAPSHOT<i>/version</i></li>
<li>[MRM-1145] - RSS tests do not correctly check responses</li>
<li>[MRM-1311] - Logging in ArtifactMissingChecksumsConsumer does not appear in the logs even if configured properly</li>
<li>[MRM-1486] - ldap.config.mapper.attribute.user.filter using ldap not working correctly with commas.</li>
<li>[MRM-1767] - When selecting a specific repository to browse, I get an error that I don't have sufficient privileges.</li>
<li>[MRM-1807] - Archiva wrapper fail to start</li>
<li>[MRM-1810] - LDAP - groups config not available in Users Runtime Configuration - Properties</li>
<li>[MRM-1811] - Users - Manage section: pagination needs to change</li>
<li>[MRM-1846] - Regression in 2.0.1 : uniqueVersion false not supported</li>
<li>[MRM-1848] - download links for files mult-dot extensions incorrect in Browse view</li>
<li>[MRM-1851] - generic metadata GUI broken</li>
<li>[MRM-1860] - ClassNotFound exception with JBoss</li>
<li>[MRM-1863] - RepositoryGroup URL is not build using the Application URL</li>
<li>[MRM-1864] - Default configuration for central should now use SSL</li>
<li>[MRM-1871] - ConcurrentModificationException in DefaultRepositoryProxyConnectors</li>
<li>[MRM-1873] - archiva doesn't recognise ldap-group to ldap-users mapping</li></ul></div>
<div class="section">
<h5><a name="Task"></a>Task</h5>
<ul>
<li>[MRM-1359] - Remove Maven 1.x functionality</li>
<li>[MRM-1865] - remove isPermanent from Consumer API</li></ul></div></div></div></div>
<div class="section">
<h2><a name="History"></a>History</h2>
<p>Archiva was started in November 2005, building a simple framework on top of some existing repository conversion tools within the Maven project. Initial development focused on repository conversion, error reporting, and indexing. From January 2006 a web application was started to visualise the information and to start incorporating functionality from the unmaintained maven-proxy project.</p>
<p>Development continued through many stops and starts. Initial versions of Archiva were built from source by contributors, and the first alpha version was not released until April 2007. Some significant changes were made to improve performance and functionality in June 2007 and over the next 6 months and a series of alpha and beta releases, a concerted effort was made to release the 1.0 version.</p>
<p>Archiva became an Apache &quot;top level project&quot; in March 2008.</p></div>
                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
                      <div class="row-fluid">
                              <p >Copyright &copy;                    2006&#x2013;2021
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All rights reserved.      
                    
      </p>
        </div>

                                                                  
<div class="row span12">Apache Archiva :: Documentation, Archiva :: Documentation, Apache, the Apache feather logo, and the Apache Archiva :: Documentation project logos are trademarks of The Apache Software Foundation.</div>
                                                          
<div class="row span12">
  <a href="http://archiva.apache.org/docs/2.2.6/privacy-policy.html">Privacy Policy</a>
</div>
                  
        
          
    
    
                
    <div id="ohloh" class="pull-right">
      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
    </div>
        </div>
    </footer>
        </body>
</html>
