Terracotta Public License Version 1.0
=====================================

1. Definitions

1.1. "Contributor" means each individual or entity that creates or
contributes to the creation of Modifications.

1.2. "Contributor Version" means the combination of the Original Code,
prior Modifications used by a Contributor, and the Modifications made
by that particular Contributor.

1.3. "Covered Code" means the Original Code or Modifications or the
combination of the Original Code and Modifications, in each case
including portions thereof.

1.4. "Electronic Distribution Mechanism" means a mechanism generally
accepted in the software development community for the electronic
transfer of data.

1.5. "Executable" means Covered Code in any form other than Source
Code.

1.6. "Initial Developer" means the individual or entity identified as
the Initial Developer in the Source Code notice required by Exhibit A.

1.7. "Larger Work" means a work which combines Covered Code or portions
thereof with code not governed by the terms of this License.

1.8. "License" means this document.

1.8.1. "Licensable" means having the right to grant, to the maximum
extent possible, whether at the time of the initial grant or
subsequently acquired, any and all of the rights conveyed herein.

1.9. "Modifications" means any addition to or deletion from the
substance or structure of either the Original Code or any previous
Modifications. When Covered Code is released as a series of files, a
Modification is:

     a. Any addition to or deletion from the contents of a file
        containing Original Code or previous Modifications.

     b. Any new file that contains any part of the Original Code or
        previous Modifications.

     c. Any new file that is contributed or otherwise made available
        under the terms of this License.

1.10. "Original Code" means Source Code and Executable form of computer
software code which is described in the Source Code notice required by
Exhibit A as Original Code, and which, at the time of its release under
this License is not already Covered Code governed by this License.

1.10.1. "Patent Claims" means any patent claim(s), now owned or
hereafter acquired, including without limitation, method, process, and
apparatus claims, in any patent Licensable by grantor.

1.11. "Source Code" means the preferred form of the Covered Code for
making modifications to it, including all modules it contains, plus any
associated interface definition files, scripts used to control
compilation and installation of an Executable, or source code
differential comparisons against either the Original Code or another
well known, available Covered Code of the Contributor's choice. The
Source Code can be in a compressed or archival form, provided the
appropriate decompression or de-archiving software is widely available
for no charge.

1.12. "You" (or "Your") means an individual or a legal entity
exercising rights under, and complying with all of the terms of, this
License or a future version of this License issued under Section 6.1.
For legal entities, "You" includes any entity which controls, is
controlled by, or is under common control with You. For purposes of
this definition, "control" means (a) the power, direct or indirect, to
cause the direction or management of such entity, whether by contract
or otherwise, or (b) ownership of more than fifty percent (50%) of the
outstanding shares or beneficial ownership of such entity.


2. Source Code License

2.1. The Initial Developer Grant.

THE INITIAL DEVELOPER HEREBY GRANTS YOU A WORLD-WIDE, ROYALTY-FREE,
NON-EXCLUSIVE LICENSE, SUBJECT TO THIRD PARTY INTELLECTUAL PROPERTY
CLAIMS:

     a. under intellectual property rights (other than patent or
        trademark) Licensable by Initial Developer to use, reproduce,
        modify, display, perform, sublicense and distribute the
        Original Code (or portions thereof) with or without
        Modifications, and/or as part of a Larger Work; and

     b. under Patents Claims infringed by the making, using or selling
        of Original Code, to make, have made, use, practice, sell, and
        offer for sale, and/or otherwise dispose of the Original Code
        (or portions thereof).

     c. the licenses granted in this Section 2.1 (a) and (b) are
        effective on the date Initial Developer first distributes or
        otherwise makes available Original Code under the terms of this
        License.

     d. Notwithstanding Section 2.1 (b) above, no patent license is
        granted: 1) for code that You delete from the Original Code; 2)
        separate from the Original Code; or 3) for infringements caused
        by: i) the modification of the Original Code or ii) the
        combination of the Original Code with other software or
        devices.

2.2. Contributor Grant.

SUBJECT TO THIRD PARTY INTELLECTUAL PROPERTY CLAIMS, EACH CONTRIBUTOR
HEREBY GRANTS YOU AND INITIAL DEVELOPER A WORLD-WIDE, ROYALTY-FREE,
NON-EXCLUSIVE LICENSE

     a. under intellectual property rights (other than patent or
        trademark) Licensable by Contributor, to use, reproduce,
        modify, display, perform, sublicense and distribute the
        Modifications created by such Contributor (or portions thereof)
        either on an unmodified basis, with other Modifications, as
        Covered Code and/or as part of a Larger Work; and

     b. under Patent Claims infringed by the making, using, or selling
        of Modifications made by that Contributor either alone and/or
        in combination with its Contributor Version (or portions of
        such combination), to make, use, sell, offer for sale, have
        made, and/or otherwise dispose of: 1) Modifications made by
        that Contributor (or portions thereof); and 2) the combination
        of Modifications made by that Contributor with its Contributor
        Version (or portions of such combination).

     c. the licenses granted in Sections 2.2 (a) and 2.2 (b) are
        effective on the date Contributor first distributes or
        otherwise makes available the Covered Code.

     d. Notwithstanding Section 2.2 (b) above, no patent license is
        granted: 1) for any code that Contributor has deleted from the
        Contributor Version; 2) separate from the Contributor Version;
        3) for infringements caused by: i) third party modifications of
        Contributor Version or ii) the combination of Modifications
        made by that Contributor with other software (except as part of
        the Contributor Version) or other devices; or 4) under Patent
        Claims infringed by Covered Code in the absence of
        Modifications made by that Contributor.


3. Distribution Obligations

3.1. Application of License.

ANY COVERED CODE THAT YOU DISTRIBUTE OR OTHERWISE MAKE AVAILABLE IS
GOVERNED BY THE TERMS OF THIS LICENSE, INCLUDING WITHOUT LIMITATION
SECTION 2.2. THE SOURCE CODE VERSION OF COVERED CODE MAY BE DISTRIBUTED
ONLY UNDER THE TERMS OF THIS LICENSE OR A FUTURE VERSION OF THIS
LICENSE RELEASED UNDER SECTION 6.1, AND YOU MUST INCLUDE A COPY OF THIS
LICENSE WITH EVERY COPY OF THE SOURCE CODE YOU DISTRIBUTE OR OTHERWISE
MAKE AVAILABLE. YOU MAY NOT OFFER OR IMPOSE ANY TERMS ON ANY SOURCE
CODE VERSION THAT ALTERS OR RESTRICTS THE APPLICABLE VERSION OF THIS
LICENSE OR THE RECIPIENTS' RIGHTS HEREUNDER. HOWEVER, YOU MAY INCLUDE
AN ADDITIONAL DOCUMENT OFFERING THE ADDITIONAL RIGHTS DESCRIBED IN
SECTION 3.5.

3.2. Availability of Source Code.

ANY MODIFICATION WHICH YOU CREATE OR TO WHICH YOU CONTRIBUTE MUST BE
MADE AVAILABLE IN SOURCE CODE FORM UNDER THE TERMS OF THIS LICENSE
EITHER ON THE SAME MEDIA AS AN EXECUTABLE VERSION OR VIA AN ACCEPTED
ELECTRONIC DISTRIBUTION MECHANISM TO ANYONE TO WHOM YOU MADE AN
EXECUTABLE VERSION AVAILABLE; AND IF MADE AVAILABLE VIA ELECTRONIC
DISTRIBUTION MECHANISM, MUST REMAIN AVAILABLE FOR AT LEAST TWELVE (12)
MONTHS AFTER THE DATE IT INITIALLY BECAME AVAILABLE, OR AT LEAST SIX
(6) MONTHS AFTER A SUBSEQUENT VERSION OF THAT PARTICULAR MODIFICATION
HAS BEEN MADE AVAILABLE TO SUCH RECIPIENTS. YOU ARE RESPONSIBLE FOR
ENSURING THAT THE SOURCE CODE VERSION REMAINS AVAILABLE EVEN IF THE
ELECTRONIC DISTRIBUTION MECHANISM IS MAINTAINED BY A THIRD PARTY.

3.3. Description of Modifications.

YOU MUST CAUSE ALL COVERED CODE TO WHICH YOU CONTRIBUTE TO CONTAIN A
FILE DOCUMENTING THE CHANGES YOU MADE TO CREATE THAT COVERED CODE AND
THE DATE OF ANY CHANGE. YOU MUST INCLUDE A PROMINENT STATEMENT THAT THE
MODIFICATION IS DERIVED, DIRECTLY OR INDIRECTLY, FROM ORIGINAL CODE
PROVIDED BY THE INITIAL DEVELOPER AND INCLUDING THE NAME OF THE INITIAL
DEVELOPER IN (A) THE SOURCE CODE, AND (B) IN ANY NOTICE IN AN
EXECUTABLE VERSION OR RELATED DOCUMENTATION IN WHICH YOU DESCRIBE THE
ORIGIN OR OWNERSHIP OF THE COVERED CODE.

3.4. Intellectual Property Matters

(a) Third Party Claims

IF CONTRIBUTOR HAS KNOWLEDGE THAT A LICENSE UNDER A THIRD PARTY'S
INTELLECTUAL PROPERTY RIGHTS IS REQUIRED TO EXERCISE THE RIGHTS GRANTED
BY SUCH CONTRIBUTOR UNDER SECTIONS 2.1 OR 2.2, CONTRIBUTOR MUST INCLUDE
A TEXT FILE WITH THE SOURCE CODE DISTRIBUTION TITLED "LEGAL" WHICH
DESCRIBES THE CLAIM AND THE PARTY MAKING THE CLAIM IN SUFFICIENT DETAIL
THAT A RECIPIENT WILL KNOW WHOM TO CONTACT. IF CONTRIBUTOR OBTAINS SUCH
KNOWLEDGE AFTER THE MODIFICATION IS MADE AVAILABLE AS DESCRIBED IN
SECTION 3.2, CONTRIBUTOR SHALL PROMPTLY MODIFY THE LEGAL FILE IN ALL
COPIES CONTRIBUTOR MAKES AVAILABLE THEREAFTER AND SHALL TAKE OTHER
STEPS (SUCH AS NOTIFYING APPROPRIATE MAILING LISTS OR NEWSGROUPS)
REASONABLY CALCULATED TO INFORM THOSE WHO RECEIVED THE COVERED CODE
THAT NEW KNOWLEDGE HAS BEEN OBTAINED.

(b) Contributor APIs

IF CONTRIBUTOR'S MODIFICATIONS INCLUDE AN APPLICATION PROGRAMMING
INTERFACE AND CONTRIBUTOR HAS KNOWLEDGE OF PATENT LICENSES WHICH ARE
REASONABLY NECESSARY TO IMPLEMENT THAT API, CONTRIBUTOR MUST ALSO
INCLUDE THIS INFORMATION IN THE LEGAL FILE.

(c) Representations.

CONTRIBUTOR REPRESENTS THAT, EXCEPT AS DISCLOSED PURSUANT TO SECTION
3.4 (A) ABOVE, CONTRIBUTOR BELIEVES THAT CONTRIBUTOR'S MODIFICATIONS
ARE CONTRIBUTOR'S ORIGINAL CREATION(S) AND/OR CONTRIBUTOR HAS
SUFFICIENT RIGHTS TO GRANT THE RIGHTS CONVEYED BY THIS LICENSE.

3.5. Required Notices.

YOU MUST DUPLICATE THE NOTICE IN EXHIBIT A IN EACH FILE OF THE SOURCE
CODE. IF IT IS NOT POSSIBLE TO PUT SUCH NOTICE IN A PARTICULAR SOURCE
CODE FILE DUE TO ITS STRUCTURE, THEN YOU MUST INCLUDE SUCH NOTICE IN A
LOCATION (SUCH AS A RELEVANT DIRECTORY) WHERE A USER WOULD BE LIKELY TO
LOOK FOR SUCH A NOTICE. IF YOU CREATED ONE OR MORE MODIFICATION(S) YOU
MAY ADD YOUR NAME AS A CONTRIBUTOR TO THE NOTICE DESCRIBED IN EXHIBIT
A. YOU MUST ALSO DUPLICATE THIS LICENSE IN ANY DOCUMENTATION FOR THE
SOURCE CODE WHERE YOU DESCRIBE RECIPIENTS' RIGHTS OR OWNERSHIP RIGHTS
RELATING TO COVERED CODE. YOU MAY CHOOSE TO OFFER, AND TO CHARGE A FEE
FOR, WARRANTY, SUPPORT, INDEMNITY OR LIABILITY OBLIGATIONS TO ONE OR
MORE RECIPIENTS OF COVERED CODE. HOWEVER, YOU MAY DO SO ONLY ON YOUR
OWN BEHALF, AND NOT ON BEHALF OF THE INITIAL DEVELOPER OR ANY
CONTRIBUTOR. YOU MUST MAKE IT ABSOLUTELY CLEAR THAN ANY SUCH WARRANTY,
SUPPORT, INDEMNITY OR LIABILITY OBLIGATION IS OFFERED BY YOU ALONE, AND
YOU HEREBY AGREE TO INDEMNIFY THE INITIAL DEVELOPER AND EVERY
CONTRIBUTOR FOR ANY LIABILITY INCURRED BY THE INITIAL DEVELOPER OR SUCH
CONTRIBUTOR AS A RESULT OF WARRANTY, SUPPORT, INDEMNITY OR LIABILITY
TERMS YOU OFFER.

3.6. Distribution of Executable Versions.

YOU MAY DISTRIBUTE OR OTHERWISE MAKE AVAILABLE COVERED CODE IN
EXECUTABLE FORM ONLY IF THE REQUIREMENTS OF SECTIONS 3.1, 3.2, 3.3, 3.4
AND 3.5 HAVE BEEN MET FOR THAT COVERED CODE, AND IF YOU INCLUDE A
NOTICE STATING THAT THE SOURCE CODE VERSION OF THE COVERED CODE IS
AVAILABLE UNDER THE TERMS OF THIS LICENSE, INCLUDING A DESCRIPTION OF
HOW AND WHERE YOU HAVE FULFILLED THE OBLIGATIONS OF SECTION 3.2. THE
NOTICE MUST BE CONSPICUOUSLY INCLUDED IN ANY NOTICE IN AN EXECUTABLE
VERSION, RELATED DOCUMENTATION OR COLLATERAL IN WHICH YOU DESCRIBE
RECIPIENTS' RIGHTS RELATING TO THE COVERED CODE. YOU MAY DISTRIBUTE OR
OTHERWISE MAKE AVAILABLE THE EXECUTABLE VERSION OF COVERED CODE OR
OWNERSHIP RIGHTS UNDER A LICENSE OF YOUR CHOICE, WHICH MAY CONTAIN
TERMS DIFFERENT FROM THIS LICENSE, PROVIDED THAT YOU ARE IN COMPLIANCE
WITH THE TERMS OF THIS LICENSE AND THAT THE LICENSE FOR THE EXECUTABLE
VERSION DOES NOT ATTEMPT TO LIMIT OR ALTER THE RECIPIENT'S RIGHTS IN
THE SOURCE CODE VERSION FROM THE RIGHTS SET FORTH IN THIS LICENSE. IF
YOU DISTRIBUTE OR OTHERWISE MAKE AVAILABLE THE EXECUTABLE VERSION UNDER
A DIFFERENT LICENSE YOU MUST MAKE IT ABSOLUTELY CLEAR THAT ANY TERMS
WHICH DIFFER FROM THIS LICENSE ARE OFFERED BY YOU ALONE, NOT BY THE
INITIAL DEVELOPER OR ANY CONTRIBUTOR. YOU HEREBY AGREE TO INDEMNIFY THE
INITIAL DEVELOPER AND EVERY CONTRIBUTOR FOR ANY LIABILITY INCURRED BY
THE INITIAL DEVELOPER OR SUCH CONTRIBUTOR AS A RESULT OF ANY SUCH TERMS
YOU OFFER.

3.7. Larger Works.

YOU MAY CREATE A LARGER WORK BY COMBINING COVERED CODE WITH OTHER CODE
NOT GOVERNED BY THE TERMS OF THIS LICENSE AND DISTRIBUTE OR OTHERWISE
MAKE AVAILABLE THE LARGER WORK AS A SINGLE PRODUCT. IN SUCH A CASE, YOU
MUST MAKE SURE THE REQUIREMENTS OF THIS LICENSE ARE FULFILLED FOR THE
COVERED CODE.


4. Inability to Comply Due to Statute or Regulation

IF IT IS IMPOSSIBLE FOR YOU TO COMPLY WITH ANY OF THE TERMS OF THIS
LICENSE WITH RESPECT TO SOME OR ALL OF THE COVERED CODE DUE TO STATUTE,
JUDICIAL ORDER, OR REGULATION THEN YOU MUST: (A) COMPLY WITH THE TERMS
OF THIS LICENSE TO THE MAXIMUM EXTENT POSSIBLE; AND (B) DESCRIBE THE
LIMITATIONS AND THE CODE THEY AFFECT. SUCH DESCRIPTION MUST BE INCLUDED
IN THE LEGAL FILE DESCRIBED IN SECTION 3.4 AND MUST BE INCLUDED WITH
ALL DISTRIBUTIONS OF THE SOURCE CODE. EXCEPT TO THE EXTENT PROHIBITED
BY STATUTE OR REGULATION, SUCH DESCRIPTION MUST BE SUFFICIENTLY
DETAILED FOR A RECIPIENT OF ORDINARY SKILL TO BE ABLE TO UNDERSTAND IT.


5. Application of this License

THIS LICENSE APPLIES TO CODE TO WHICH THE INITIAL DEVELOPER HAS
ATTACHED THE NOTICE IN EXHIBIT A AND TO RELATED COVERED CODE.


6. Versions of the License

6.1. New Versions

TERRACOTTA, INC. ("TERRACOTTA") MAY PUBLISH REVISED AND/OR NEW VERSIONS
OF THE LICENSE FROM TIME TO TIME. EACH VERSION WILL BE GIVEN A
DISTINGUISHING VERSION NUMBER.

6.2. Effect of New Versions

ONCE COVERED CODE HAS BEEN PUBLISHED UNDER A PARTICULAR VERSION OF THE
LICENSE, YOU MAY ALWAYS CONTINUE TO USE IT UNDER THE TERMS OF THAT
VERSION. YOU MAY ALSO CHOOSE TO USE SUCH COVERED CODE UNDER THE TERMS
OF ANY SUBSEQUENT VERSION OF THE LICENSE PUBLISHED BY TERRACOTTA. NO
ONE OTHER THAN TERRACOTTA HAS THE RIGHT TO MODIFY THE TERMS APPLICABLE
TO COVERED CODE CREATED UNDER THIS LICENSE.

6.3. Derivative Works of License; Antecedent Licenses

IF YOU CREATE OR USE A MODIFIED VERSION OF THIS LICENSE (WHICH YOU MAY
ONLY DO IN ORDER TO APPLY IT TO CODE WHICH IS NOT ALREADY COVERED CODE
GOVERNED BY THIS LICENSE), YOU MUST (A) RENAME YOUR LICENSE SO THAT THE
PHRASES "TERRACOTTA", "TPL", OR ANY CONFUSINGLY SIMILAR PHRASE DO NOT
APPEAR IN YOUR LICENSE (EXCEPT TO NOTE THAT YOUR LICENSE DIFFERS FROM
THIS LICENSE) AND (B) OTHERWISE MAKE IT CLEAR THAT YOUR VERSION OF THE
LICENSE CONTAINS TERMS WHICH DIFFER FROM THE TERRACOTTA PUBLIC LICENSE.
(FILLING IN THE NAME OF THE INITIAL DEVELOPER, ORIGINAL CODE OR
CONTRIBUTOR IN THE NOTICE DESCRIBED IN EXHIBIT A SHALL NOT OF
THEMSELVES BE DEEMED TO BE MODIFICATIONS OF THIS LICENSE.)

THIS TERRACOTTA PUBLIC LICENSE (TPL) IS SIMILAR TO, AND CONTAINS
SAMPLES FROM, THE MOZILLA PUBLIC LICENSE (MPL) AND THE COMMON
DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL).  HOWEVER, THIS TPL
CONTAINS TERMS WHICH DIFFER FROM THOSE CONTAINED IN THE MPL AND THE
CDDL.


7. Disclaimer of warranty

COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.


8. Termination

8.1. THIS LICENSE AND THE RIGHTS GRANTED HEREUNDER WILL TERMINATE
AUTOMATICALLY IF YOU FAIL TO COMPLY WITH TERMS HEREIN AND FAIL TO CURE
SUCH BREACH WITHIN 30 DAYS OF BECOMING AWARE OF THE BREACH. ALL
SUBLICENSES TO THE COVERED CODE WHICH ARE PROPERLY GRANTED SHALL
SURVIVE ANY TERMINATION OF THIS LICENSE. PROVISIONS WHICH, BY THEIR
NATURE, MUST REMAIN IN EFFECT BEYOND THE TERMINATION OF THIS LICENSE
SHALL SURVIVE.

8.2. IF YOU INITIATE LITIGATION BY ASSERTING A PATENT INFRINGEMENT
CLAIM (EXCLUDING DECLARATORY JUDGMENT ACTIONS) AGAINST INITIAL
DEVELOPER OR A CONTRIBUTOR (THE INITIAL DEVELOPER OR CONTRIBUTOR
AGAINST WHOM YOU FILE SUCH ACTION IS REFERRED TO AS "PARTICIPANT")
ALLEGING THAT:

     a. such Participant's Contributor Version directly or indirectly
        infringes any patent, then any and all rights granted by such
        Participant to You under Sections 2.1 and/or 2.2 of this
        License shall, upon 60 days notice from Participant terminate
        prospectively, unless if within 60 days after receipt of notice
        You either: (i) agree in writing to pay Participant a mutually
        agreeable reasonable royalty for Your past and future use of
        Modifications made by such Participant, or (ii) withdraw Your
        litigation claim with respect to the Contributor Version
        against such Participant. If within 60 days of notice, a
        reasonable royalty and payment arrangement are not mutually
        agreed upon in writing by the parties or the litigation claim
        is not withdrawn, the rights granted by Participant to You
        under Sections 2.1 and/or 2.2 automatically terminate at the
        expiration of the 60 day notice period specified above.

     b. any software, hardware, or device, other than such
        Participant's Contributor Version, directly or indirectly
        infringes any patent, then any rights granted to You by such
        Participant under Sections 2.1(b) and 2.2(b) are revoked
        effective as of the date You first made, used, sold,
        distributed, or had made, Modifications made by that
        Participant.

8.3. IF YOU ASSERT A PATENT INFRINGEMENT CLAIM AGAINST PARTICIPANT
ALLEGING THAT SUCH PARTICIPANT'S CONTRIBUTOR VERSION DIRECTLY OR
INDIRECTLY INFRINGES ANY PATENT WHERE SUCH CLAIM IS RESOLVED (SUCH AS
BY LICENSE OR SETTLEMENT) PRIOR TO THE INITIATION OF PATENT
INFRINGEMENT LITIGATION, THEN THE REASONABLE VALUE OF THE LICENSES
GRANTED BY SUCH PARTICIPANT UNDER SECTIONS 2.1 OR 2.2 SHALL BE TAKEN
INTO ACCOUNT IN DETERMINING THE AMOUNT OR VALUE OF ANY PAYMENT OR
LICENSE.

8.4. IN THE EVENT OF TERMINATION UNDER SECTIONS 8.1 OR 8.2 ABOVE, ALL
END USER LICENSE AGREEMENTS (EXCLUDING DISTRIBUTORS AND RESELLERS)
WHICH HAVE BEEN VALIDLY GRANTED BY YOU OR ANY DISTRIBUTOR HEREUNDER
PRIOR TO TERMINATION SHALL SURVIVE TERMINATION.


9. Limitation of liability

UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY
INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS
OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND
ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE
BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS
EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.


10. U.S. government end users

THE COVERED CODE IS A "COMMERCIAL ITEM," AS THAT TERM IS DEFINED IN 48
C.F.R. 2.101 (OCT. 1995), CONSISTING OF "COMMERCIAL COMPUTER SOFTWARE"
AND "COMMERCIAL COMPUTER SOFTWARE DOCUMENTATION," AS SUCH TERMS ARE
USED IN 48 C.F.R. 12.212 (SEPT. 1995). CONSISTENT WITH 48 C.F.R. 12.212
AND 48 C.F.R. 227.7202-1 THROUGH 227.7202-4 (JUNE 1995), ALL U.S.
GOVERNMENT END USERS ACQUIRE COVERED CODE WITH ONLY THOSE RIGHTS SET
FORTH HEREIN.


11. Miscellaneous

THIS LICENSE REPRESENTS THE COMPLETE AGREEMENT CONCERNING SUBJECT
MATTER HEREOF. IF ANY PROVISION OF THIS LICENSE IS HELD TO BE
UNENFORCEABLE, SUCH PROVISION SHALL BE REFORMED ONLY TO THE EXTENT
NECESSARY TO MAKE IT ENFORCEABLE. THIS LICENSE SHALL BE GOVERNED BY
CALIFORNIA LAW PROVISIONS (EXCEPT TO THE EXTENT APPLICABLE LAW, IF ANY,
PROVIDES OTHERWISE), EXCLUDING ITS CONFLICT-OF-LAW PROVISIONS. WITH
RESPECT TO DISPUTES IN WHICH AT LEAST ONE PARTY IS A CITIZEN OF, OR AN
ENTITY CHARTERED OR REGISTERED TO DO BUSINESS IN THE UNITED STATES OF
AMERICA, ANY LITIGATION RELATING TO THIS LICENSE SHALL BE SUBJECT TO
THE JURISDICTION OF THE FEDERAL COURTS OF THE NORTHERN DISTRICT OF
CALIFORNIA, WITH VENUE LYING IN SANTA CLARA COUNTY, CALIFORNIA, WITH
THE LOSING PARTY RESPONSIBLE FOR COSTS, INCLUDING WITHOUT LIMITATION,
COURT COSTS AND REASONABLE ATTORNEYS' FEES AND EXPENSES. THE
APPLICATION OF THE UNITED NATIONS CONVENTION ON CONTRACTS FOR THE
INTERNATIONAL SALE OF GOODS IS EXPRESSLY EXCLUDED. ANY LAW OR
REGULATION WHICH PROVIDES THAT THE LANGUAGE OF A CONTRACT SHALL BE
CONSTRUED AGAINST THE DRAFTER SHALL NOT APPLY TO THIS LICENSE. YOU
AGREE THAT YOU ALONE ARE RESPONSIBLE FOR COMPLIANCE WITH THE UNITED
STATES EXPORT ADMINISTRATION REGULATIONS (AND THE EXPORT CONTROL LAWS
AND REGULATIONS OF ANY OTHER COUNTRIES) WHEN YOU USE, DISTRIBUTE, OR
OTHERWISE MAKE AVAILABLE ANY COVERED CODE.


12. Responsibility for claims

AS BETWEEN INITIAL DEVELOPER AND THE CONTRIBUTORS, EACH PARTY IS
RESPONSIBLE FOR CLAIMS AND DAMAGES ARISING, DIRECTLY OR INDIRECTLY, OUT
OF ITS UTILIZATION OF RIGHTS UNDER THIS LICENSE AND YOU AGREE TO WORK
WITH INITIAL DEVELOPER AND CONTRIBUTORS TO DISTRIBUTE SUCH
RESPONSIBILITY ON AN EQUITABLE BASIS. NOTHING HEREIN IS INTENDED OR
SHALL BE DEEMED TO CONSTITUTE ANY ADMISSION OF LIABILITY.


13. Multiple-licensed code

INITIAL DEVELOPER MAY DESIGNATE PORTIONS OF THE COVERED CODE AS
"MULTIPLE-LICENSED". "MULTIPLE-LICENSED" MEANS THAT THE INITIAL
DEVELOPER PERMITS YOU TO UTILIZE PORTIONS OF THE COVERED CODE UNDER
YOUR CHOICE OF THE TPL OR THE ALTERNATIVE LICENSES, IF ANY, SPECIFIED
BY THE INITIAL DEVELOPER IN THE FILE DESCRIBED IN EXHIBIT A.


14. CERTAIN ATTRIBUTION REQUIREMENTS

THIS LICENSE DOES NOT GRANT ANY LICENSE OR RIGHTS TO USE THE TRADEMARKS
"TERRACOTTA," ANY "TERRACOTTA" LOGOS, OR ANY OTHER TRADEMARKS OF
TERRACOTTA, INC.

HOWEVER, IN ADDITION TO THE OTHER NOTICE OBLIGATIONS, ALL COPIES OF THE
COVERED CODE IN EXECUTABLE AND SOURCE CODE FORM DISTRIBUTED OR
OTHERWISE MADE AVAILABLE MUST, AS A FORM OF ATTRIBUTION OF THE INITIAL
DEVELOPER, INCLUDE ON EACH USER INTERFACE SCREEN (I) THE COPYRIGHT
NOTICE IN THE SAME FORM AS THE LATEST VERSION OF THE COVERED CODE
DISTRIBUTED OR OTHERWISE MADE AVAILABLE BY TERRACOTTA, INC. AT THE TIME
OF DISTRIBUTION OR MAKING AVAILABLE OF SUCH COPY AND (II) THE FOLLOWING
TEXT, WHICH MUST BE LARGE ENOUGH SO THAT IT CAN BE READ EASILY:
"POWERED BY TERRACOTTA." THE COPYRIGHT NOTICE AND TEXT MUST BE VISIBLE
TO ALL USERS AND BE LOCATED AT THE VERY BOTTOM AND IN THE CENTER OF EACH
USER INTERFACE SCREEN.  THE WORD "TERRACOTTA" MUST BE A HYPERLINK, SO
THAT WHEN ANY USER ACTIVATES THE LINK (E.G., BY CLICKING ON IT WITH A
MOUSE), THE USER WILL BE DIRECTED TO HTTP://WWW.TERRACOTTA.ORG.


Exhibit A - Terracotta Public License.

"The contents of ehcache-terracotta are subject to the Terracotta Public License

Version 1.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.terracotta.org/TPL



Software distributed under the License is distributed on an "AS IS"

basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the

License for the specific language governing rights and limitations

under the License.



The Original Code is ______________________________________.



The Initial Developer of the Original Code is Terracotta, Inc.

Portions created by ______________________ are Copyright (C) ______

_______________________. All Rights Reserved.



Contributor(s): ______________________________________.


NOTE: THE TEXT OF THIS EXHIBIT A MAY DIFFER SLIGHTLY FROM THE TEXT OF
THE NOTICES IN THE SOURCE CODE FILES OF THE ORIGINAL CODE. YOU SHOULD
USE THE TEXT OF THIS EXHIBIT A RATHER THAN THE TEXT FOUND IN THE
ORIGINAL CODE SOURCE CODE FOR YOUR MODIFICATIONS.
