  SOFTWARE LICENSE AGREEMENT.

You should carefully read the following terms and conditions before using this software. Your use of this software indicates your acceptance of this license agreement and disclaimer of warranty.

  1. All copyrights to 'MutantStorm' are exclusively owned by the author - 'PomPom'.

  2. The evaluation version is distributed on a shareware basis. You are expected to use this program on your system and to thoroughly evaluate its usefulness and functionality before making a purchase.  This "try before you buy" approach is the ultimate guarantee that 'MutantStorm' will perform to your satisfaction.

  3. Provided that you verify that you are distributing the evaluation version you are hereby licensed to make as many copies of the evaluation version of this software and documentation as you wish; give exact copies of the original evaluation version to anyone; and distribute the evaluation version of the software and documentation in its unmodified form via electronic means. There is no charge for any of the above.
You are specifically prohibited from charging, or requesting donations, for any such copies, however made; and from distributing the software and/or documentation with other products (commercial or otherwise) without prior written permission.

  4. Once registered/purchased, the user is granted a non-exclusive license to use 'MutantStorm' on one computer. You may not sublicense, rent, lease or transfer the software. You may install and use one registered/purchased copy of 'MutantStorm' on one computer in your home, and on one computer at workplace, which you are the main user on. If you wish to use 'MutantStorm' on several computers, you should purchase several single licenses.

  5. You may not alter this software in any way; you may not use or distribute any part of the original package. You are also not allowed to emulate, decompile, disassemble, otherwise reverse engineer any executable part of original package. Any such unauthorized use shall result in immediate and automatic termination of this license and may result in criminal and/or civil prosecution.

  6. 'MutantStorm' IS DISTRIBUTED "AS IS".  NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED.  YOU USE IT AT YOUR OWN RISK. WE MAY NOT BE HELD LIABLE FOR DATA LOSS, DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS SOFTWARE.

  7. All rights not expressly granted here are reserved by 'PomPom'.

  8. Installing and using 'MutantStorm' signifies acceptance of these terms and conditions of the license. If you do not agree with the terms of this license you must remove 'MutantStorm' from your storage devices and cease to use the product.
