Experimental Gameplay Group, LLC
End User License Agreement

THIS END USER LICENSE AGREEMENT ("EULA") IS A BINDING LEGAL
AGREEMENT BETWEEN EXPERIMENTAL GAMEPLAY GROUP, LLC, D/B/A
TOMORROW CORPORATION ("EXPERIMENTAL GAMEPLAY GROUP "), AND
YOU AND, IF APPLICABLE, THE COMPANY OR OTHER LEGAL ENTITY
YOU REPRESENT (COLLECTIVELY, "YOU" AND "YOUR") REGARDING
THE GAME SOFTWARE THAT YOU ARE INSTALLING, INCLUDING ANY
ACCOMPANYING MANUAL OR OTHER RELATED MATERIAL PROVIDED BY
EXPERIMENTAL GAMEPLAY GROUP AS PART OF, OR IN CONNECTION,
THEREWITH (COLLECTIVELY, THE "GAME").

BY INDICATING YOUR AGREEMENT BELOW, OR BY OTHERWISE
CONTINUING TO INSTALL, DOWNLOAD, COPY, ACCESS OR USE THE
GAME, YOU ACKNOWLEDGE THAT YOU UNDERSTAND AND AGREE TO BE
BOUND BY THE TERMS OF THIS EULA.  IF YOU DO NOT AGREE, YOU
MUST SELECT THE "CANCEL" BUTTON AND YOU MAY NOT CONTINUE TO
INSTALL, DOWNLOAD, COPY, ACCESS OR USE THE GAME.

1. 	LICENSE GRANT AND RESTRICTIONS.

	1.1	License Grant. Experimental Gameplay Group
hereby grants to you a non-exclusive license to use a
single copy of the object code version of the Game for your
personal, non-commercial home entertainment use on one
personal computer or other compatible electronic device.
You may sell or transfer your copy of the Game to another
person along with, and subject to, your rights under this
EULA, only if you do not retain any copies.

	1.2	Restrictions. You may not (i) decompile,
disassemble or reverse engineer the Game or otherwise
attempt to gain access to its source code, except to the
extent that such restrictions are expressly prohibited by
law; (ii) copy, offer for public display or create
derivative works thereof, except to the extent that such
restrictions are expressly prohibited by law; (iii) rent,
lease, loan, sublicense or distribute the Game, or offer it
on a pay-per-play, coin-op or other for charge (or free)
basis; (iv) use the Game to infringe the copyrights or
other intellectual property rights of others in any way;
(v) modify or delete the copyright and other proprietary
rights notices on or in the Game.

	1.3  	Additional Restrictions for Trial Versions.
If the Game was provided to you for trial use for a limited
period of time and/or number of uses, you agree not to use
the Game beyond the expiration or termination of the trial
period.  You acknowledge and agree that the Game may
include code designed to prevent you from exceeding these
limits, and that such code may remain on your computer or
device after deletion of the Game to prevent you from
installing another copy of the Game and repeating the trial.

	1.4  	Game Specific Terms and Conditions. For
additional terms and conditions that may apply to the Game,
such as third-party copyright notices and license
information, please review the Readme file included with
the Game.  The ReadMe file for the Game is hereby
incorporated into this EULA by this reference.

2.  	TERMINATION. This EULA is effective until
terminated. You may terminate this EULA at any time by
uninstalling the Game and destroying all copies of the Game
in your possession or control.  Experimental Gameplay Group
may terminate this EULA immediately upon notice to you if
you breach any of its terms or conditions.  Upon
termination of this EULA, you agree to immediately
uninstall the Game and destroy all copies of the Game.

3.  	GAME OWNERSHIP. The Game is the copyrighted
proprietary material of Experimental Gameplay Group and/or
its third-party licensors and is subject to copyright
protection under U.S. copyright law and international
copyright treaties, as well as other intellectual property
laws and treaties. Experimental Gameplay Group and/or its
third-party licensors retain all right, title, and interest
in the Game (and any copies thereof) and specifically
reserve all rights not expressly granted under this EULA.

4.  LIMITED WARRANTIES BY EXPERIMENTAL GAMEPLAY GROUP.

	4.1 	Limited Warranty. EXPERIMENTAL GAMEPLAY
GROUP WARRANTS TO YOU, THE ORIGINAL PURCHASER OF THE GAME,
THAT THE GAME WILL BE FREE FROM DEFECTS IN MATERIALS AND
WORKMANSHIP FOR A PERIOD OF NINETY (90) DAYS FROM THE DATE
OF PURCHASE (THE "WARRANTY PERIOD").  THIS LIMITED WARRANTY
IS VOID IF THE GAME HAS BEEN SUBJECT TO MISUSE, DAMAGE OR
IF YOU HAVE VIOLATED THIS EULA. TO THE MAXIMUM EXTENT
PERMITTED BY APPLICABLE LAW, ALL OTHER WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE,
AND NON-INFRINGEMENT, OR WARRANTIES THAT THE GAME WILL BE
ERROR-FREE, SECURE OR VIRUS-FREE, ARE HEREBY EXPRESSLY
DISCLAIMED.

	4.2 	Additional Warranty for Retail Product. IF
YOU PURCHASED THE GAME ON A DISC OR OTHER RECORDING MEDIUM,
THEN YOU MUST MAKE ANY WARRANTY CLAIM TO THE RETAILER FROM
WHICH YOU PURCHASED THE GAME BY PROVIDING A COPY OF YOUR
ORIGINAL SALES RECEIPT AND ANY OTHER DETAILS REQUIRED BY
THE RETAILER. THE RETAILER, AT ITS OPTION, MAY REFUND YOUR
PURCHASE PRICE, REPAIR OR REPLACE THE DISC OR OTHER MEDIA
CONTAINING THE GAME. ANY REPLACEMENT WILL BE WARRANTED FOR
THE REMAINDER OF THE ORIGINAL WARRANTY PERIOD OR THIRTY
(30) DAYS, WHICHEVER IS LONGER. YOUR EXCLUSIVE REMEDY, AND
THE ENTIRE LIABILITY OF EXPERIMENTAL GAMEPLAY GROUP, ITS
AFFILIATES, LICENSORS AND SUPPLIERS (COLLECTIVELY, "THE
EXPERIMENTAL GAMEPLAY GROUP PARTIES"), FOR BREACH OF THIS
WARRANTY, SHALL BE THE REFUND, REPAIR OR REPLACEMENT
DESCRIBED ABOVE.

5. LIMITATION OF LIABILITY. NO PROVISIONS OF THIS EULA
SHALL APPLY TO LIMIT LIABILITY ARISING FROM DEATH OR
PERSONAL INJURY CAUSED BY NEGLIGENCE OR FOR FRAUD.
OTHERWISE, IN NO EVENT WILL THE EXPERIMENTAL GAMEPLAY GROUP
PARTIES' TOTAL AGGREGATE LIABILITY TO YOU FOR DIRECT
DAMAGES, LOSSES, AND CAUSES OF ACTION ARISING OUT OF OR
RELATING TO THIS EULA AND/OR YOUR USE OF THE GAME EXCEED
THE AMOUNT PAID BY YOU FOR THE GAME.  IN NO EVENT WILL THE
EXPERIMENTAL GAMEPLAY GROUP PARTIES BE LIABLE FOR ANY
INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, OR ANY OTHER
TYPE OF DAMAGES (INCLUDING WITHOUT LIMITATION DAMAGES
RELATING TO LOST PROFITS, LOSS OF DATA, PRIVACY, NEGLIGENCE
OR OTHER DUTY OF CARE), EVEN IF ONE OR MORE OF THE
EXPERIMENTAL GAMEPLAY GROUP PARTIES HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

6. BASIS OF THE BARGAIN; EXCLUSIONS. The disclaimers of
warranties and limitations of liability set forth above are
fundamental elements of the basis of the agreement between
you and Experimental Gameplay Group.  You understand and
agree that Experimental Gameplay Group would not be able to
economically or reasonably provide the Game to you without
these limitations. HOWEVER, SOME JURISDICTIONS DO NOT ALLOW
THE EXCLUSION OF IMPLIED WARRANTIES AND/OR THE LIMITATION
OF INDIRECT DAMAGES AS SET FORTH IN SECTIONS 4 AND 5 ABOVE,
SO THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO
YOU.

7. INDEMNIFICATION.  You agree to indemnify, defend and
hold harmless the Experimental Gameplay Group Parties,
including their respective employees, officers, directors
and personnel from any claims, losses, damages,
liabilities, including attorneys' fees, arising out of your
violation of this EULA and/or your use or misuse of the
Game.

8. EXPORT CONTROL.  The Game originates in the United
States and is subject to United States export laws and
regulations. You may not export or re-export, in whole or
in part, the Game to certain countries, persons or entities
prohibited from receiving exports from the United States.
Additionally, the Game may be subject to the import and
export laws of other countries, and you agree that you will
comply with any such foreign import and export laws, as
applicable.

9. MISCELLANEOUS.  You agree to comply with all United
States and foreign laws related to your use of the Game.
This is the entire agreement between you and Experimental
Gameplay Group relating to the subject matter herein and
replaces any and all previous representations, agreements,
understandings or communications, whether written or oral.
If a court of competent jurisdiction declares any provision
of this EULA to be void or unenforceable, then such
provision will be interpreted, construed or reformed to the
extent reasonably required to render it valid, enforceable
and consistent with the original intent underlying such
provision, and such invalidity or unenforceability will not
affect any other provision of this EULA.   The English
language version of this EULA will control its
interpretation.

10.  GOVERNING LAW AND VENUE.

This EULA will be governed by and construed in accordance
with the laws of the State of California, USA, excluding
its conflicts of law rules and specifically excluding the
United Nations Convention on Contracts for the
International Sale of Goods.  Venue for any action
hereunder shall lie exclusively in the state and federal
courts located in San Francisco County, California USA and
you hereby consent and submit to the personal jurisdiction
of such courts.

11.  NOTICES; HOW TO CONTACT Experimental Gameplay Group.
The Game is made available to you by Experimental Gameplay
Group, LLC.  Experimental Gameplay Group may be contacted
via its website (http://tomorrowcorporation.com).
