*****************************
Penguzzle Version 1.0
by Marie Caroline Pavoine
November 3, 2000
*****************************

------------------------------
  Software License Agreement
------------------------------

                                 IMPORTANT

Read this agreement before installing or using the Software. Installing
and/or using the Software on your computer indicates your acceptance of
these terms. 

YOU MAY

      1.  Use the Software without charge on as many systems as you wish,

      2.  Share the Software with others for their personal use, but only
          if you share it intact, without any changes or modifications of
          any kind, and complete with all it's documentation and associated
          files. You must pass it on exactly in the same form as we release
          it, or not pass it on at all,

      3.  Vendors may distribute the Software free of charge by electronic
          or other means for the purpose of technical support, but may not
          include the Software in their products without our written permission.

YOU MAY NOT

      1.  Use the Software in any way except as provided in this agreement,

      2.  Modify, alter, copy, transfer, or reproduce the Software in any
          way, except as expressly allowed in this agreement,

      3.  Charge any kind of fee for distributing the Software without our
          written permission,

      4.  Use the Software for commercial purposes without our permission,


Penguzzle 1.0 IS DELIVERED ON AN "AS-IS" BASIS AND THE AUTHOR SHALL NOT BE LIABLE 
FOR ANY INDIRECT, CONSEQUENTIAL, SPECIAL, PUNITIVE, OR INCIDENTAL DAMAGES OR
DAMAGES DUE TO LOST PROFITS, DATA, OR INFORMATION ARISING OUT OF THE USE OR
ANY QUALITY OR FITNESS FOR A PARTICULAR PURPOSE.
