Apache CouchDB
Copyright 2008 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:

ac_check_icu.m4 (http://autoconf-archive.cryp.to/ac_check_icu.html)

  Copyright 2005, Akos Maroy <darkeye@tyrell.hu>

jQuery (http://jquery.com/)

  Copyright 2008, John Resig

json2.js (http://www.json.org/)

  In the public domain

MochiWeb (http://code.google.com/p/mochiweb/)

  Copyright 2007, Mochi Media Coporation
