{\rtf1\mac\ansicpg10000\cocoartf100
{\fonttbl\f0\froman\fcharset77 Times New Roman;\f1\fswiss\fcharset77 Helvetica;\f2\fswiss\fcharset77 Helvetica-Bold;
}
{\colortbl;\red255\green255\blue255;}
\paperw12240\paperh15781\margl1426\margr1426\vieww9000\viewh9000\viewkind0
\pard\qc

\f0\fs24 \cf0 PUBLIC DOCUMENTATION LICENSE \
Version 1.0 \
\pard\ql\qnatural

\f1\fs22 \cf0 \
\pard\ql\qnatural

\f0\fs24 \cf0 1.0 DEFINITIONS. \
\pard\ql\qnatural

\f1\fs22 \cf0 \
	
\f0 1.1. "Commercial Use" means distribution or otherwise making the Documentation available to a third party. \
\
	1.2. "Contributor" means a person or entity who creates or contributes to the creation of Modifications. \
\
	1.3. "Documentation" means the Original Documentation or Modifications or the combination of the Original Documentation and Modifications, in each case including portions thereof.\
\
	1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted for the electronic transfer of data. \
\
	1.5. "Initial Writer" means the individual or entity identified as the Initial Writer in the notice required by the Appendix. \
\
	1.6. "Larger Work" means a work which combines Documentation or portions thereof with documentation or other writings not governed by the terms of this License. \
\
	1.7. "License" means this document. \
\
	1.8. "Modifications" means any addition to or deletion from the substance or structure of either the Original Documentation or any previous Modifications, such as a translation, abridgment, condensation, or any other form in which the Original Documentation or previous Modifications may be recast, transformed or adapted.  A work consisting of editorial revisions, annotations, elaborations, and other modifications which, as a whole represent an original work of authorship, is a Modification.  For example, when Documentation is released as a series of documents, a Modification is: \
\
		A. Any addition to or deletion from the contents of the Original Documentation or previous Modifications. \
\
		B. Any new documentation that contains any part of the Original Documentation or previous Modifications. \
\
	1.9. "Original Documentation" means documentation described as Original Documentation in the notice required by the Appendix, and which, at the time of its release under this License is not already Documentation governed by this License. \
\
	1.10. "Editable Form" means the preferred form of the Documentation for making Modifications to it.  The Documentation can be in an electronic, compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. \
\
	1.11. "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 5.0 ("Versions of the License"). 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.\
\pard\ql\qnatural

\f2\b \cf0 \
\pard\ql\qnatural

\f0\b0\fs24 \cf0 2.0 LICENSE GRANTS. \
\
\pard\ql\qnatural

\f2\b\fs22 \cf0 	
\f0\b0 2.1  Initial Writer Grant. \
\pard\ql\qnatural

\f1 \cf0 \
	
\f0 The Initial Writer hereby grants You a world-wide, royalty-free, non-exclusive license to use, reproduce, prepare Modifications of, compile, publicly perform, publicly display, demonstrate, market, disclose and distribute the Documentation in any form, on any media or via any Electronic Distribution Mechanism or other method now known or later discovered, and to sublicense the foregoing rights to third parties through multiple tiers of sublicensees in accordance with the terms of this License.  \
	The license rights granted in this Section 2.1 ("Initial Writer Grant") are effective on the date Initial Writer first distributes Original Documentation under the terms of this License. \
	\
\pard\ql\qnatural

\f2\b \cf0 	
\f0\b0 2.2. Contributor Grant. \
\
	Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license to use, reproduce, prepare Modifications of, compile, publicly perform, publicly display, demonstrate, market, disclose and distribute the Documentation in any form, on any media or via any Electronic Distribution Mechanism or other method now known or later discovered, and to sublicense the foregoing rights to third parties through multiple tiers of sublicensees in accordance with the terms of this License.  \
	The license rights granted in this Section 2.2 ("Contributor Grant") are effective on the date Contributor first makes Commercial Use of the Documentation. \
\
\pard\ql\qnatural

\fs24 \cf0 3.0 DISTRIBUTION OBLIGATIONS. \
\pard\ql\qnatural

\f1\fs22 \cf0 \
\pard\ql\qnatural

\f2\b \cf0 	
\f0\b0 3.1. Application of License.\
\
	The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2 ("Contributor Grant").  The Documentation may be distributed only under the terms of this License or a future version of this License released in accordance with Section 5.0 ("Versions of the License"), and You must include a copy of this License with every copy of the Documentation You distribute. You may not offer or impose any terms that alter or restrict 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 ("Required Notices"). \
\

\f2\b 	
\f0\b0 3.2. Availability of Documentation.\
\pard\ql\qnatural

\f1 \cf0 \
	
\f0 Any Modification which You create or to which You contribute must be made available publicly in Editable Form under the terms of this License via a fixed medium or an accepted Electronic Distribution Mechanism. \
\
\pard\ql\qnatural

\f2\b \cf0 	
\f0\b0 3.3. Description of Modifications.\
\pard\ql\qnatural

\f1 \cf0 \
	
\f0 All Documentation to which You contribute must identify the changes You made to create that Documentation and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Documentation provided by the Initial Writer and include the name of the Initial Writer in the Documentation or via an electronic link that describes the origin or ownership of the Documentation.  The foregoing change documentation may be created by using an electronic program that automatically tracks changes to the Documentation, and such changes must be available publicly for at least five years following release of the changed Documentation. \
\
\pard\ql\qnatural

\f2\b \cf0 	
\f0\b0 3.4. Intellectual Property Matters.\
\pard\ql\qnatural

\f1 \cf0 \
	
\f0 Contributor represents that 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.\
\
\pard\ql\qnatural

\f2\b \cf0 	
\f0\b0 3.5. Required Notices.\
\pard\ql\qnatural

\f1 \cf0 \
	
\f0 You must duplicate the notice in the Appendix in each file of the Documentation. If it is not possible to put such notice in a particular Documentation file due to its structure, then You must include such notice in a location (such as a relevant directory) where a reader would be likely to look for such a notice, for example, via a hyperlink in each file of the Documentation that takes the reader to a page that describes the origin and ownership of the Documentation.  If You created one or more Modification(s) You may add your name as a Contributor to the notice described in the Appendix. \
	You must also duplicate this License in any Documentation file (or with a hyperlink in each file of the Documentation) where You describe recipients' rights or ownership rights. \
	You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Documentation. However, You may do so only on Your own behalf, and not on behalf of the Initial Writer 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 Writer and every Contributor for any liability incurred by the Initial Writer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. \
\
\pard\ql\qnatural

\f2\b \cf0 	
\f0\b0 3.6.  Larger Works.\
\pard\ql\qnatural

\f1 \cf0 \
	
\f0 You may create a Larger Work by combining Documentation with other documents not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Documentation.\
\
\pard\ql\qnatural

\fs24 \cf0 4.0  APPLICATION OF THIS LICENSE. \
\pard\ql\qnatural

\f1\fs22 \cf0 \
	
\f0 This License applies to Documentation to which the Initial Writer has attached this License and the notice in the Appendix.\
\
\pard\ql\qnatural

\fs24 \cf0 5.0  VERSIONS OF THE LICENSE. \
\pard\ql\qnatural

\f1\fs22 \cf0 \
\pard\ql\qnatural

\f2\b \cf0 	
\f0\b0 5.1. New Versions.\
\pard\ql\qnatural

\f1 \cf0 \
	
\f0 Initial Writer may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. \
\
\pard\ql\qnatural

\f2\b \cf0 	
\f0\b0 5.2. Effect of New Versions.\
\pard\ql\qnatural

\f1 \cf0 \
	
\f0 Once Documentation 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 Documentation under the terms of any subsequent version of the License published by __________________[Insert name of the foundation, company, Initial Writer, or whoever may modify this License]. No one other than _________________ [Insert name of the foundation, company, Initial Writer, or whoever may modify this License] has the right to modify the terms of this License. Filling in the name of the Initial Writer, Original Documentation or Contributor in the notice described in the Appendix shall not be deemed to be Modifications of this License.\
\
\pard\ql\qnatural

\fs24 \cf0 6.0 DISCLAIMER OF WARRANTY. \
\pard\ql\qnatural

\f1\fs22 \cf0 \
	
\f0 DOCUMENTATION 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 DOCUMENTATION IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENTATION IS WITH YOU. SHOULD ANY DOCUMENTATION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER 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 DOCUMENTATION IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.\
\
\pard\ql\qnatural

\fs24 \cf0 7.0 TERMINATION. \
\pard\ql\qnatural

\f1\fs22 \cf0 \
	
\f0 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 Documentation 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. \
	\
\
\pard\ql\qnatural

\fs24 \cf0 8.0 LIMITATION OF LIABILITY. \
\pard\ql\qnatural

\f1\fs22 \cf0 \
	
\f0 UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL WRITER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF DOCUMENTATION, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO THE USE OF THE DOCUMENTATION, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. \
\
\pard\ql\qnatural

\fs24 \cf0 9.0 U.S. GOVERNMENT END USERS. \
\pard\ql\qnatural

\f1\fs22 \cf0 \
	
\f0 If Documentation is being acquired by or on behalf of the U.S. Government or by a U.S. Government prime contractor or subcontractor (at any tier), then the Government's rights in Documentation will be only as set forth in this Agreement; this is in accordance with 48 CFR 227.7201 through 227.7202-4 (for Department of Defense (DOD) acquisitions) and with 48 CFR 2.101 and 12.212 (for non-DOD acquisitions).\
\pard\sl260\ql\qnatural

\fs20 \cf0 \
\pard\ql\qnatural

\fs24 \cf0 10.0 MISCELLANEOUS. \
\pard\ql\qnatural

\f1\fs22 \cf0 \
	
\f0 This License represents the complete agreement concerning the 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, excluding its conflict-of-law provisions. With respect to disputes or any litigation relating to this License, the losing party is 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.\
\pard\ql\qnatural

\f2\b \cf0 \
\pard\qc

\f0\b0 \cf0 Appendix \
\
Public Documentation License Notice \
\pard\ql\qnatural

\f1 \cf0 \
	
\f0 The contents of this Documentation are subject to the Public Documentation License Version 1.0 (the "License"); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at __________________[Insert hyperlink]. \
\
	The Original Documentation is _________________. The Initial Writer of the Original Documentation is ___________  Copyright (C)_________[Insert year(s)]. All Rights Reserved.  (Initial Writer contact(s):________________[Insert hyperlink/alias]).\
\
	Contributor(s): ______________________________________. \
Portions created by ______ are Copyright (C)_________[Insert year(s)]. All Rights Reserved.   (Contributor contact(s):________________[Insert hyperlink/alias]).\
\
\
	NOTE: The text of this Appendix may differ slightly from the text of the notices in the files of the Original Documentation. You should use the text of this Appendix rather than the text found in the Original Documentation for Your Modifications.\
\pard\ql\qnatural

\f1\fs24 \cf0 \
}