==============================================================
 Apache Solr
 Copyright 2006-2011 The Apache Software Foundation
==============================================================

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

Includes software from other Apache Software Foundation projects,
including, but not limited to:
  - Apache Lucene Java
  - Apache Tomcat (lib/servlet-api-2.4.jar)
  - Apache Commons
  - Apache Geronimo (stax API jar)
  - Apache Log4j (contrib/clustering)

This product includes tests written with EasyMock Copyright 2001-2007
Tammo Freese (http://www.easymock.org/)

This product includes the JQuery JavaScript library created by John Resig.
Copyright (c) 2010 John Resig, http://jquery.com/

This product includes the stax-utils jar: https://stax-utils.dev.java.net/
Copyright (c) 2004, Christian Niles, unit12.net
Copyright (c) 2004, Sun Microsystems, Inc.
Copyright (c) 2006, John Kristian 
License: The BSD License (http://www.opensource.org/licenses/bsd-license.php)

This product includes a JUnit jar: http://junit.sourceforge.net/
License: Common Public License - v 1.0 (http://junit.sourceforge.net/cpl-v10.html)

This product includes the JavaMail API 1.4.1 jar: https://glassfish.dev.java.net/javaee5/mail/
License: Common Development and Distribution License (CDDL) v1.0 (https://glassfish.dev.java.net/public/CDDLv1.0.html)

This product includes the JavaBeans Activation Framework (JAF) 1.1 jar: http://java.sun.com/products/javabeans/jaf/index.jsp
License: Common Development and Distribution License (CDDL) v1.0 (https://glassfish.dev.java.net/public/CDDLv1.0.html)

This product includes the HSQL Database (HSQLDB) 1.8.0.10 jar: http://hsqldb.org/
License: http://hsqldb.org/web/hsqlLicense.html

This product includes code (JaspellTernarySearchTrie) from Java Spelling Checking Package (jaspell): http://jaspell.sourceforge.net/
License: The BSD License (http://www.opensource.org/licenses/bsd-license.php)

=========================================================================
==  Apache Lucene Notice                                               ==
=========================================================================
Includes lib/servlet-api-2.4.jar from  Apache Tomcat
Includes lib/ant-1.7.1.jar and lib/ant-junit-1.7.1.jar from Apache Ant
Includes contrib/queries/lib/jakarta-regexp-1.4.jar from Apache Jakarta Regexp

ICU4J, (under contrib/icu) is licensed under an MIT styles license
(contrib/icu/lib/ICU-LICENSE.txt) and Copyright (c) 1995-2008 
International Business Machines Corporation and others

Some data files (under contrib/icu/src/data) are derived from Unicode data such
as the Unicode Character Database. See http://unicode.org/copyright.html for more
details.

Brics Automaton (under src/java/org/apache/lucene/util/automaton) is 
BSD-licensed, created by Anders Møller. See http://www.brics.dk/automaton/

The levenshtein automata tables (under src/java/org/apache/lucene/util/automaton) were
automatically generated with the moman/finenight FSA library, created by
Jean-Philippe Barrette-LaPierre. This library is available under an MIT license,
see http://sites.google.com/site/rrettesite/moman and 
http://bitbucket.org/jpbarrette/moman/overview/

The class org.apache.lucene.SorterTemplate was inspired by CGLIB's class with
the same name. The implementation part is mainly done using pre-existing
Lucene sorting code. In-place stable mergesort was borrowed from CGLIB,
which is Apache-licensed.

The Google Code Prettify is Apache License 2.0.
See http://code.google.com/p/google-code-prettify/

JUnit (under lib/junit-4.7.jar) is licensed under the Common Public License v. 1.0
See http://junit.sourceforge.net/cpl-v10.html

JLine (under contrib/lucli/lib/jline.jar) is licensed under the BSD License.
See http://jline.sourceforge.net/

=========================================================================
==  Apache Lucene Benchmark Notice                                     ==
=========================================================================
Includes software from other Apache Software Foundation projects,
including, but not limited to:
 - Commons Beanutils (lib/commons-beanutils-1.7.0.jar)
 - Commons Collections (lib/commons-collections-3.1.jar)
 - Commons Compress (lib/commons-compress-1.0.jar)
 - Commons Digester (lib/commons-digester-1.7.jar)
 - Commons Logging (lib/commons-logging-1.0.4.jar)
 - Xerces (lib/xercesImpl-2.9.1-patched-XERCESJ-1257.jar)

=========================================================================
==  Apache Lucene Analyzers Notice                                     ==
========================================================================= 
Includes software from other Apache Software Foundation projects,
including, but not limited to:
  - Apache Commons

The snowball stemmers in
  common/src/java/net/sf/snowball
were developed by Martin Porter and Richard Boulton.
The snowball stopword lists in
  common/src/resources/org/apache/lucene/analysis/snowball
were developed by Martin Porter and Richard Boulton.
The full snowball package is available from
  http://snowball.tartarus.org/

The KStem stemmer in
  common/src/org/apache/lucene/analysis/en
was developed by Bob Krovetz and Sergio Guzman-Lara (CIIR-UMass Amherst)
under the BSD-license.

The Arabic,Persian,Romanian,Bulgarian, and Hindi analyzers (common) come with a default
stopword list that is BSD-licensed created by Jacques Savoy.  These files reside in:
common/src/resources/org/apache/lucene/analysis/ar/stopwords.txt,
common/src/resources/org/apache/lucene/analysis/fa/stopwords.txt,
common/src/resources/org/apache/lucene/analysis/ro/stopwords.txt,
common/src/resources/org/apache/lucene/analysis/bg/stopwords.txt,
common/src/resources/org/apache/lucene/analysis/hi/stopwords.txt
See http://members.unine.ch/jacques.savoy/clef/index.html.

The German,Spanish,Finnish,French,Hungarian,Italian,Portuguese,Russian and Swedish light stemmers
(common) are based on BSD-licensed reference implementations created by Jacques Savoy and
Ljiljana Dolamic. These files reside in:
common/src/java/org/apache/lucene/analysis/de/GermanLightStemmer.java
common/src/java/org/apache/lucene/analysis/de/GermanMinimalStemmer.java
common/src/java/org/apache/lucene/analysis/es/SpanishLightStemmer.java
common/src/java/org/apache/lucene/analysis/fi/FinnishLightStemmer.java
common/src/java/org/apache/lucene/analysis/fr/FrenchLightStemmer.java
common/src/java/org/apache/lucene/analysis/fr/FrenchMinimalStemmer.java
common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java
common/src/java/org/apache/lucene/analysis/it/ItalianLightStemmer.java
common/src/java/org/apache/lucene/analysis/pt/PortugueseLightStemmer.java
common/src/java/org/apache/lucene/analysis/ru/RussianLightStemmer.java
common/src/java/org/apache/lucene/analysis/sv/SwedishLightStemmer.java

The Stempel analyzer (stempel) includes BSD-licensed software developed 
by the Egothor project http://egothor.sf.net/, created by Leo Galambos, Martin Kvapil,
and Edmond Nolan.

The Polish analyzer (stempel) comes with a default
stopword list that is BSD-licensed created by the Carrot2 project. The file resides
in stempel/src/resources/org/apache/lucene/analysis/pl/stopwords.txt.
See http://project.carrot2.org/license.html.

The SmartChineseAnalyzer source code (smartcn) was
provided by Xiaoping Gao and copyright 2009 by www.imdict.net.

WordBreakTestUnicode_*.java (under modules/analysis/common/src/test/) 
is derived from Unicode data such as the Unicode Character Database. 
See http://unicode.org/copyright.html for more details.
---

This product includes/uses software, Woodstox (http://woodstox.codehaus.org),
developed by Codehaus  (http://www.codehaus.org/)
License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
=========================================================================
==  Woodstox Notice                                                    ==
=========================================================================
This product currently only contains code developed by authors
of specific components, as identified by the source code files.

Since product implements StAX API, it has dependencies to StAX API
classes.

For additional credits (generally to people who reported problems)
see CREDITS file.
---

This product includes software developed by Mort Bay Consulting
(specifically, Jetty 6.1.3, the bundled servlet container in example)
The jboss integration module is not included.
=========================================================================
==     Jetty Notice                                                    ==
=========================================================================
==============================================================
 Jetty Web Container 
 Copyright 1995-2006 Mort Bay Consulting Pty Ltd
==============================================================

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

The javax.servlet package used by Jetty is copyright 
Sun Microsystems, Inc and Apache Software Foundation. It is 
distributed under the Common Development and Distribution License.
You can obtain a copy of the license at 
https://glassfish.dev.java.net/public/CDDLv1.0.html.

The UnixCrypt.java code ~Implements the one way cryptography used by
Unix systems for simple password protection.  Copyright 1996 Aki Yoshida,
modified April 2001  by Iris Van den Broeke, Daniel Deville.

The default JSP implementation is provided by the Glassfish JSP engine
from project Glassfish http://glassfish.dev.java.net.  Copyright 2005
Sun Microsystems, Inc. and portions Copyright Apache Software Foundation.

Some portions of the code are Copyright:
  2006 Tim Vernum 
  1999 Jason Gilbert.

The jboss integration module contains some LGPL code.

=========================================================================
==  SLF4J Notice -- http://www.slf4j.org/license.html                  ==
=========================================================================

Copyright (c) 2004-2008 QOS.ch
All rights reserved.

Permission is hereby granted, free  of charge, to any person obtaining
a  copy  of this  software  and  associated  documentation files  (the
"Software"), to  deal in  the Software without  restriction, including
without limitation  the rights to  use, copy, modify,  merge, publish,
distribute,  sublicense, and/or sell  copies of  the Software,  and to
permit persons to whom the Software  is furnished to do so, subject to
the following conditions:

The  above  copyright  notice  and  this permission  notice  shall  be
included in all copies or substantial portions of the Software.

THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

=========================================================================
==  Apache Tika Notices                                                ==
=========================================================================

The following notices apply to the Apache Tika libraries in contrib/extraction/lib:

This product includes software developed by the following copyright owners:

Copyright (c) 2000-2006 The Legion Of The Bouncy Castle
(http://www.bouncycastle.org)

Copyright (c) 2003-2005, www.pdfbox.org

Copyright (c) 2003-2005, www.fontbox.org

Copyright (c) 1995-2005 International Business Machines Corporation and others

Copyright (c) 2000-2005 INRIA, France Telecom

Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.

Copyright 2004 Sun Microsystems, Inc. (Rome JAR)

Copyright 2002-2008 by John Cowan (TagSoup -- http://ccil.org/~cowan/XML/tagsoup/)
 

=========================================================================
==     Carrot2 Notice                                                  ==
=========================================================================
Copyright (C) 2002-2010, Dawid Weiss, Stanislaw Osinski.
Portions (C) Contributors listed in "carrot2.CONTRIBUTORS" file.
All rights reserved.

This product includes software developed by the Carrot2 Project.

See http://project.carrot2.org/

=========================================================================
==     Guava Notice                                                    ==
=========================================================================

Copyright (C) 2009 Google Inc.

This product includes software developed by the Google Guava project.

See http://code.google.com/p/guava-libraries/

=========================================================================
==     Prettify Notice                                                 ==
=========================================================================

Copyright (C) 2009 Google Inc.

This product includes software developed by the Google Prettify project.

See http://code.google.com/p/google-code-prettify/

=========================================================================
==     Jackson Notice                                                  ==
=========================================================================
Copyright 2010 FasterXML, LLC

This product includes software developed by the Jackson project.

See http://jackson.codehaus.org/

=========================================================================
==     HSQLDB Notice                                                   ==
=========================================================================

For content, code, and products originally developed by Thomas Mueller and the Hypersonic SQL Group:

Copyright (c) 1995-2000 by the Hypersonic SQL Group.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

Neither the name of the Hypersonic SQL Group nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE HYPERSONIC SQL GROUP,
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This software consists of voluntary contributions made by many individuals on behalf of the
Hypersonic SQL Group.

For work added by the HSQL Development Group (a.k.a. hsqldb_lic.txt):

Copyright (c) 2001-2005, The HSQL Development Group
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

Neither the name of the HSQL Development Group nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
