
LICENSE AGREEMENT AND LIMITED WARRANTY
PLEASE READ THIS LICENSE CAREFULLY BEFORE USING THE SOFTWARE. THIS DOCUMENT
IS AN AGREEMENT BETWEEN YOU AND INTROVERSION SOFTWARE LIMITED. (THE
"COMPANY"). THE COMPANY IS WILLING TO LICENSE THE ENCLOSED SOFTWARE TO YOU
ONLY ON THE CONDITION THAT YOU ACCEPT ALL THE TERMS CONTAINED IN THIS
AGREEMENT. BY USING THE SOFTWARE YOU ARE AGREEING TO BE BOUND BY THE TERMS
OF THIS LICENSE.

1. Ownership And License. This is a license agreement and NOT an agreement
for sale. The software contained in this package (the "Software") is the
property of the Company and/or its Licensors. You own the disk/CD on which
the Software is recorded, but the Company and/or its Licensors retain title
to the Software and related documentation. Your rights to use the Software
are specified in this Agreement, and the Company and/or its Licensors
retain all rights not expressly granted to you in this Agreement.

2. Permitted Uses. You are granted the following right to the Software :
(a) Right to Install and Use. You may install and use the Software on a
single computer. If you wish to use the Software on more than one computer,
please contact the Company for information concerning an upgraded license
allowing use of the Software with additional computers.

3. Prohibited Uses. The following uses of the Software are prohibited. You
may NOT :
(a) Make or distribute copies of the Software or documentation, or any
portion thereof, except as expressly provided in this Agreement.
(b) Use any backup or archival copy of the Software (or allow someone else
to use such copy) for any purpose other than to replace the original copy
in the event it is destroyed or becomes defective;
(c) Alter, decompile, modify reverse engineer or disassemble the Software,
create derivative works based upon the Software, or make any attempt to
bypass, unlock or disable any protective or initialization system on the
Software;
(d) Rent, lease, sub-license, time-share, or transfer the Software or
documentation, or your rights under this Agreement.
(e) Remove or obscure any copyright or trademark notice(s) on the Software
or documentation;
(f) Upload or transmit the Software, or any portion thereof, to any
electronic bulletin board, network, or other type of multi-use computer
system regardless of purpose;
(g) Include the Software in any commercial products intended for
manufacture, distribution, or sale; or
(h) Include the Software in any product containing immoral, scandalous,
controversial, derogatory, obscene, or offensive works.

4. Termination. This license is effective upon the first use, installation,
loading or copying of the Software. You may terminate this Agreement at any
time by destruction and disposal of the Software and all related
documentation. This license will terminate automatically without notice
from the Company if you fail to comply with any provisions of this license.
Upon termination, you shall destroy all copies of the Software and any
accompanying documentation.
All provisions of this Agreement as to warranties, limitation of liability,
remedies or damages shall survive termination.

5. Copyright Notice. The Company and/or our Licensors hold valid copyright
in the Software. Nothing in this Agreement constitutes a waiver of any
right under English Copyright law or any other federal or provincial law.
This program is protected by English and international copyright laws.

6. Miscellaneous. This Agreement shall be governed by the laws of England.
If any provision, or any portion, of this Agreement is found to be
unlawful, void, or for any reason unenforceable, it shall be severed from,
and shall in no way affect the validity or enforceability of the remaining
provisions of the Agreement.

7. Limited  Warranty and Disclaimer of Warranty. For a period of 90 days
from the date on which you purchased the Software, the Company warrants
that the media on which the Software is supplied will be free from defects
in materials and workmanship under normal use. If the Software fails to
conform to this warranty, you may, as your sole and exclusive remedy,
obtain a replacement free of charge if you return the Software to us with a
dated proof of purchase. The Company does not warrant that the Software or
its operations or functions will meet your requirements, nor that the use
thereof will be without interruption or error.

EXCEPT FOR THE EXPRESS WARRANTY SET FORTH ABOVE, THE COMPANY DISCLAIMS ALL
WARRANTIES, EXPRESS OR IMPLIED, INCLUDING AND WITHOUT LIMITATION, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
EXCEPT FOR THE EXPRESS WARRANTY SET FORTH ABOVE, THE COMPANY DOES NOT
WARRANT, GUARANTEE OR MAKE ANY REPRESENTATION REGARDING THE USE OR THE
RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY,
RELIABILITY, CURRENTNESS OR OTHERWISE.
IN NO EVENT SHALL THE COMPANY OR ITS EMPLOYEES OR LICENSORS BE LIABLE FOR
ANY INCIDENTAL, INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
OR IN CONNECTION WITH THE LICENSE GRANTED UNDER THIS AGREEMENT INCLUDING
AND WITH-OUT LIMITATION, LOSS OF USE, LOSS OF DATE, LOSS OF INCOME OR
PROFIT, OR OTHER LOSS SUSTAINED AS A RESULT OF INJURY TO ANY PERSON, OR
LOSS OF OR DAMAGE TO PROPERTY, OR CLAIMS OF THIRD PARTIES, EVEN IF THE
COMPANY OR AN AUTHORIZED REPRESENTATIVE OF THE COMPANY HAS BEEN ADVISED OF
THE POSSIBILITY OF SUCH DAMAGES, IN NO EVENT SHALL LIABILITY OF THE COMPANY
FOR DAMAGES WITH RESPECT TO THE SOFTWARE EXCEED THE AMOUNTS ACTUALLY PAID
BY YOU, IF ANY, FOR THE SOFTWARE.
SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY
FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES SO THE ABOVE LIMITATION OR
EXCLUSION MAY NOT APPLY TO YOU.
ACKNOWLEDGEMENT
YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, UNDERSTAND IT AND AGREE
TO BE BOUND BY ITS TERMS AND CONDITIONS. YOU ALSO AGREE THAT THIS AGREEMENT
IS THE COMPLETE AND EXCLUSIVE STATEMENT OF THE AGREEMENT BETWEEN YOU AND
THE COMPANY AND SUPERCEDES ALL PROPOSALS OR PRIOR ENDORSEMENTS, ORAL OR
WRITTEN, AND ANY OTHER COMMUNICATIONS BETWEEN YOU AND THE COMPANY OR ANY
REPRESENTATIVE OF THE COMPANY RELATING TO THE SUBJECT MATTER OF THIS
AGREEMENT.
