UNAFold 3.x ACADEMIC NON-COMMERCIAL USE LICENSE AGREEMENT

1. UNAFold 3.x is the work of Drs. Nicholas R. Markham and Michael Zuker.  The
   copyright in UNAFold 3.x is owned by RENSSELAER POLYTECHNIC INSTITUTE.

2. This is a legal agreement between you, RECIPIENT, and RENSSELAER POLYTECHNIC
   INSTITUTE.  By accepting, receiving, and using UNAFold 3.x, you agree to be
   bound by all of its terms.  If you do not agree to all of the terms of this
   Agreement, please DO NOT download the software; or, if you have already done
   so, please delete all of the source code, documentation and compiled programs
   associated with UNAFold 3.x.

3. UNAFold 3.x is provided to RECIPIENT as source code.  RENSSELAER POLYTECHNIC
   INSTITUTE grants to RECIPIENT a royalty free, non-exclusive, and non-
   transferable license to compile, install, use UNAFold for internal research
   only.  RECIPIENT acknowledges that UNAFold 3.x is a research tool that is
   provided free of charge and only provided "as is." RENSSELAER POLYTECHNIC
   INSTITUTE, its faculty, employees, or students, or former employees who have
   developed UNAFold 3.x, have no obligation to assist RECIPIENT in its use,
   correction, modification, or enhancement and are without any obligation to
   provide any updates.  RECIPIENT may also offer UNAFold 3.x to the public over
   a web server provided the program resides on a server at RECIPIENT's
   institution and users are not able to download or modify the program.

4. The title and copyright to UNAFold 3.x and any associated programs and
   documentation shall remain with RENSSELAER POLYTECHNIC INSTITUTE.  RECIPIENT
   agrees to preserve same.  RECIPIENT agrees not to make any copies of UNAFold
   except for use in RECIPIENT's laboratory without RENSSELAER POLYTECHNIC
   INSTITUTE's prior written permission.  Written permission can be obtained by
   contacting Rensselaer Polytechnic Institute's Office of Technology
   Commercialization by e-mail at burtok2@rpi.edu, or by telephone at 518-276-
   3675.  RECIPIENT agrees to place the appropriate copyright notice on any such
   copies.

5. RECIPIENT may not modify UNAFold 3.x, except to fix minor errors, or create
   derivative works without RENSSELAER POLYTECHNIC INSTITUTE's permission.
   Please send all requests for modification to markhn@rpi.edu and
   zukerm@rpi.edu.  Errors and bugs that are found should be reported to Nick
   Markham and Michael Zuker, whether or not they are corrected.

6. RECIPIENT shall not distribute UNAFold 3.x to other laboratories within
   RECIPIENT's institution.  RECIPIENT shall not transfer UNAFold 3.x to another
   location or person outside of RECIPIENT's institution without RENSSELAER
   POLYTECHNIC INSTITUTE's prior written permission.  Please send all requests
   for distribution to markhn@rpi.edu and zukerm@rpi.edu.

7. If RENSSELAER POLYTECHNIC INSTITUTE grants RECIPIENT permission to distribute
   UNAFold 3.x, under Paragraph 6, RECIPIENT shall only export UNAFold 3.x or
   any part thereof, directly or indirectly, to any country where such export or
   reexport is authorized in full compliance with the laws of the United States
   of America.

8. RECIPENT shall cite the following publications in any abstract, paper, or
   presentation referencing UNAFold:

a. N. Markham & M. Zuker. (2003) DINAMelt web server for nucleic acid melting
   prediction.  Nucleic Acids Res. 33:W577-W581.

9. RECIPIENT acknowledges that as UNAFold 3.x is a research tool and provided
   free of charge, it is only provided "as is."  RENSSELAER POLYTECHNIC
   INSTITUTE, its faculty, employees, or students, have no obligation to assist
   RECIPIENT in its use, correction, modification, or enhancement and are
   without any obligation to provide any updates.

10. RENSSELAER POLYTECHNIC INSTITUTE MAKES NO REPRESENTATIONS AND EXTENDS NO
    WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. THERE ARE NO EXPRESS OR
    IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS OF UNAFold 3.x FOR A
    PARTICULAR PURPOSE, OR THAT THE USE OF UNAFold 3.x WILL NOT INFRINGE ANY
    PATENT, COPYRIGHT, TRADEMARK, TRADE SECRET, OR OTHER INTELLECTUAL PROPERTY
    RIGHTS OF ANOTHER PARTY, OR ANY OTHER EXPRESS OR IMPLIED WARRANTIES.
    RENSSELAER POLYTECHNIC INSTITUTE WILL NOT BE LIABLE TO RECIPIENT FOR ANY
    CLAIMS OR DAMAGES ARISING FROM YOUR RECIPIENT'S OF UNAFold 3.x, ANY CLAIM
    FOR ANY LOSS OR INTERRUPTION OF BUSINESS, OR FOR ANY INDIRECT, SPECIAL, OR
    CONSEQUENTIAL DAMAGES OF ANY KIND.
