Apache CouchDB
Copyright 2009-2014 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

This product also includes the following third-party components:

 * Sphinx (http://sphinx-doc.org/)

   Copyright 2011, the Sphinx team

 * httpdomain.py (https://bitbucket.org/birkenfeld/sphinx-contrib/src/6a3a8ca714cfce957530890d0431d9a7b88c930f/httpdomain/sphinxcontrib/httpdomain.py?at=httpdomain-1.1.9)

   Copyright (c) 2010, Hong Minhee <minhee@dahlia.kr>

 * src/externals.rst (http://davispj.com/2010/09/26/new-couchdb-externals-api.html)

   Copyright 2008-2010, Paul Joseph Davis <paul.joseph.davis@gmail.com>

 * src/ddocs/views/intro.rst src/ddocs/views/nosql.rst src/ddocs/views/pagination.rst

   Copyright 2013, Creative Commons Attribution license

 * src/ddocs/views/joins.rst (Using View Collation)

   Copyright 2007, Christopher Lenz <cmlenz@gmail.com>

 * templates/couchdb/domainindex.html

   Copyright 2007-2011 by the Sphinx team
