Product: Clover
License: Apache OS License, 0.x, 1.x
Issued: Fri Nov 5 2004 00:10:15 CST
Expiry: Never
Key: 6c31947b76be866e9243758d8
Name: Apache Foundation
Org: Apache Software Foundation
Certificate: AAACJW+Ow8B7/zEbxOMqqKwwrdpP+a1COmJGHco7sCNLjHkHnajPF+dQW
CV13P565Kaf84xY88Q1zb/rXoe5qNa9bwooYiUH++mSERNN5PpEf++l1tRf+gp1M7MheEQ
d3FcpfoQ7CPE8k+n2WpoFP+DPU5+lLb7bHYekAyJ5RjftKr0zRuNpeorim1GoWjdEQ9Lof
OXnpMnDerSHBMul/XTa5sHDoXkKcH0qVcG49xcSWfnnRSr63dbVWPsdLFy3KzYXO8NSNG+
VOzTqMJzi5kvJVzXhhlSDpX+az1yQo0Z2Qkxx2C29IkumD0aQ6otHvUE9CiXS8374qNrKy
nen0yLWqYQ12uPN0apuHzt1PAfnsvEZEljk4URtpM7JwlL3HWQWojJ3HGLcUDwzmXYotDC
E4KtIiRR25MlNxaUnutJNn64pIHRRdcMpuW1a9DxM7+iGRaxGIQEr1PkvsL7kk54e6sgj1
6n2JN/925vFfgoifyUb46DxDhkW0+ZCZ+aSzdFE+nIwEa95YhY71igzdJJvNPw5y/P3St9
9Nu7FRYWzOvXWToC+RjIsEieVY+pjG7Z4HNK22yyqRzwQZN7pL9HqtcHfcbrROdCl+nTe+
9bW9SVAJ2U7W+Gx9hACSvftWWeqydbREfIXOhnjLXgCIcFPOmmIdCq4PpTo8EuaNDbo0EW
Z7lW31l6WpVAzP1Nizja1M0fidB2r7eVOoFsmDHHQ8S/19KXFpl90Ndp6vNoWewmyEraD7
+I3KqlvFSH7A501ecrUZe1+wawVOh87UudTkoeI1IQg1RxGxec6O4SmilTiF/6gv9PXi42
UONKnh+O4bPryLv/zAiTCMBIV4TLomLsIVM7w5w+0pScQ3a1UEoqOcfUirdqrkw/ZQ0WMD
+hdNmpRx9JW
License Agreement: CLOVER VERSION 1 (ONE) SOFTWARE LICENSE AGREEMENT

1. Licenses and Software

Cortex eBusiness Pty Ltd, an Australian Proprietary Limited Company
("CENQUA") hereby grants to the purchaser (the "LICENSEE") a limited,
revocable, worldwide, non-exclusive, non-transferable,
non-sublicensable license to use the Clover version 1 (one) software
(the "Software"), including any minor upgrades thereof during the Term
(hereinafter defined) up to, but not including the next major version
of the Software. The licensee shall not, or knowingly allow others to,
reverse engineer, decompile, disassemble, modify, adapt, create
derivative works from or otherwise attempt to derive source code from
the Software provided. And, in accordance with the terms and
conditions of this Software License Agreement (the "Agreement"), the
Software shall be used solely by the licensed users in accordance with
the following edition specific conditions:

a) Server Edition

A Server Edition license entitles the Licensee to execute one instance
of Clover Server Edition on one (1) machine for the purposes of
instrumenting source code and generating reports. There are no
limitations on the use of the instrumented source code or generated
reports produced by Server Edition.

b) Workstation Edition

A Workstation Edition license entitles the licensee to use Clover
Workstation Edition on one (1) machine by one (1) individual end
user. Workstation Edition does not permit the generation of reports
for distribution.

c) Team Edition

A Team Edition license entitles the licensee to use Clover Team
edition on any number of machines solely by the licensed number of
users. Reports generated by Clover Team Edition are strictly for use
only by the licensed number of individual end users.

2. License Fee

In exchange for the License(s), the Licensee shall pay to Cenqua a
one-time, up front, non-refundable license fee. At the sole discretion
of Cenqua this fee will be waived for non-commercial
projects. Notwithstanding the Licensee's payment of the License Fee,
Cenqua reserves the right to terminate the License if Cenqua discovers
that the Licensee and/or the Licensee's use of the Software is in
breach of this Agreement.

3. Proprietary Rights

Cenqua will retain all right, title and interest in and to the
Software, all copies thereof, and Cenqua website(s), software, and
other intellectual property, including, but not limited to, ownership
of all copyrights, look and feel, trademark rights, design rights,
trade secret rights and any and all other intellectual property and
other proprietary rights therein. The Licensee will not directly or
indirectly obtain or attempt to obtain at any time, any right, title
or interest by registration or otherwise in or to the trademarks,
service marks, copyrights, trade names, symbols, logos or designations
or other intellectual property rights owned or used by Cenqua. All
technical manuals or other information provided by Cenqua to the
Licensee shall be the sole property of Cenqua.

4. Term and Termination

Subject to the other provisions hereof, this Agreement shall commence
upon the Licensee's opting into this Agreement and continue until the
Licensee discontinues use of the Software or the Agreement terminates
automatically upon the Licensee's breach of any term or condition of
this Agreement (the "Term"). Upon any such termination, the Licensee
will delete the Software immediately.

5. Copying & Transfer

The Licensee may copy the Software for back-up purposes only. The
Licensee may not assign or otherwise transfer the Software to any
third party.

6. Specific Disclaimer of Warranty and Limitation of Liability

THE SOFTWARE IS PROVIDED WITHOUT WARRANTY OF ANY KIND. CENQUA
DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. CENQUA WILL NOT BE LIABLE FOR ANY DAMAGES
ASSOCIATED WITH THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ORDINARY,
INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING
BUT NOT LIMITED TO DAMAGES RELATING TO LOST DATA OR LOST PROFITS, EVEN
IF CENQUA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. Warranties and Representations

Licensee Indemnification. CENQUA agrees to indemnify, defend and hold
the Licensee harmless from and against any and all liabilities, 
damages, losses, claims, costs, and expenses (including reasonable 
legal fees) arising out of or resulting from the Software or the use 
thereof infringing upon, misappropriating or violating any patents, 
copyrights, trademarks, or trade secret rights or other proprietary 
rights of persons, firms or entities who are not parties to this 
Agreement.

CENQUA Indemnification. The Licensee warrants and represents that the 
Licensee's actions with regard to the Software will be in compliance 
with all applicable  laws; and the Licensee agrees to indemnify, 
defend, and hold CENQUA harmless  from and against any and all 
liabilities, damages, losses, claims, costs,  and expenses (including 
reasonable legal fees) arising out of or resulting  from the 
Licensee's failure to observe the use restrictions set forth herein.

8. Publicity

The Licensee grants permission for CENQUA to use Licensee's name 
solely in customer lists. CENQUA shall not, without prior consent in 
writing, use the Licensee's name, or that of its affiliates, in any 
form with the specific  exception of customer lists. CENQUA agrees to 
remove Licensee's name from  any and all materials within 7 days if 
notified by the Licensee in writing.

9. Governing Law

This Agreement shall be governed by the laws of New South Wales, 
Australia.

10. Independent Contractors

The parties are independent contractors with respect to each  other, 
and nothing in this Agreement shall be construed as creating an 
employer-employee  relationship, a partnership, agency relationship or 
a joint venture between  the parties.

11. Assignment

This Agreement is not assignable or transferable by the Licensee. 
CENQUA  in its sole discretion may transfer a license to a third party 
at the written  request of the Licensee.

12. Entire Agreement

This Agreement constitutes the entire agreement between the parties 
concerning  the Licensee's use of the Software. This Agreement 
supersedes any prior verbal understanding between the parties and any 
Licensee purchase order or other  ordering document, regardless of 
whether such document is received by CENQUA  before or after execution 
of this Agreement. This Agreement may be amended  only in writing by 
CENQUA.
