Software License Agreement

SUN MICROSYSTEMS, INC.  ("SUN") IS WILLING TO LICENSE THE
XML ENTITY AND URI RESOLVERS, VERSION 1.0 SOFTWARE TO YOU
ONLY UPON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS
CONTAINED IN THIS LICENSE AGREEMENT ("AGREEMENT").  PLEASE
READ THE TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY.
BY INSTALLING THIS SOFTWARE, YOU ACCEPT THE TERMS AND
CONDITIONS OF THIS AGREEMENT.  IF YOU ARE NOT WILLING TO BE
BOUND BY ITS TERMS, SELECT THE "DECLINE" BUTTON AT THE
BOTTOM OF THIS PAGE AND THE INSTALLATION PROCESS WILL NOT
CONTINUE.

1.0 DEFINITIONS "Licensed Software" means the XML Entity and
URI Resolvers, Version 1.0 Software and any other machine
readable materials (including, but not limited to,
libraries, source files, header files, and data files) and
any user manuals, programming guides and other documentation
provided to you by Sun under this Agreement.

2.0 LIMITED LICENSE 2.1 Sun grants to you, a non-exclusive,
non-transferable, royalty-free and limited license to
reproduce, modify, and create derivative works of the
Licensed Software for the sole purpose of adding value and
improving the Licensed Software for the development of
applications ("Programs").  No license is granted to you for
any other purpose.  2.2 In addition to the license granted
in Section 2.1, Sun grants to you, a non-exclusive,
non-transferable, royalty-free and limited license to
distribute the Licensed Software modified by you as
permitted in Section 2.1 ("Modified Software") in source or
binary form, provided that; i) the Modified Software is only
distributed bundled as a part of your Programs, ii) the
Modified Software improves on and adds value to the Licensed
Software, and iii) the Programs are only distributed subject
to a license agreement that protects Sun's interests
consistent with the terms and conditions contained in this
Agreement.

3.0 LICENSE RESTRICTIONS 3.1 You agree to reproduce any
copyright and other proprietary right notices on any such
copy.  3.2 Except as otherwise provided by Section 2.0, you
may not modify or create derivative works of the Licensed
Software, or reverse engineer, disassemble or decompile
binary portions of the Licensed Software, or otherwise
attempt to derive the source code from such portions.  3.3
No right, title, or interest in or to Licensed Software, any
trademarks, service marks, or trade names of Sun or Sun's
licensors is granted under this Agreement.

4.0 NO SUPPORT Sun is under no obligation to support
Licensed Software or to provide you with updates or error
corrections (collectively "Software Updates").  If Sun at
its sole option, supplies Software Updates to you, the
Software Updates will be considered part of Licensed
Software, and subject to the terms of this Agreement.

5.0 TERM AND TERMINATION OF AGREEMENT 5.1 You may terminate
this Agreement at any time by destroying all copies of
Software.  5.2 Either party may terminate this Agreement
immediately should any Software become, or in either party's
opinion be likely to become, the subject of a claim of
infringement of any intellectual property right.  5.3 This
Agreement will terminate immediately without notice from Sun
if the you fail to comply with any provision of this
Agreement.  5.4 Upon termination or expiration of this
Agreement, you shall immediately cease use of and destroy
Licensed Software and any copies thereof.  5.5 Rights and
obligations under this Agreement which by their nature
should survive, will remain in effect after termination or
expiration hereof.

6.0 DISCLAIMER OF WARRANTY 6.1 Licensee acknowledges that
Licensed Software may contain errors and is not designed or
intended for use in the design, construction, operation or
maintenance of any nuclear facility ("High Risk
Activities").  Sun disclaims any express or implied warranty
of fitness for such uses.  You represent and warrant to Sun
that you will not use, distribute or license the Licensed
Software for High Risk Activities.  6.2 LICENSED SOFTWARE IS
PROVIDED "AS IS".  ALL EXPRESS OR IMPLIED CONDITIONS,
REPRESENTATIONS, AND WARRANTIES, INCLUDING ANY IMPLIED
WARRANTY OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS
FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE
DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE
HELD TO BE LEGALLY INVALID.

7.0 LIMITATION OF LIABILITY 7.1 You acknowledge that the
Licensed Software is experimental.  You acknowledge that the
Licensed Software may have defects or deficiencies which
cannot or will not be corrected by Sun.  You will hold Sun
harmless from any claims based on your use or inability to
use the Licensed Software for any purpose, and from any
claims that later versions or releases of any Licensed
Software furnished to you are incompatible with the Licensed
Software provided to you under this Agreement.  7.2 You
shall have the sole responsibility to protect adequately and
backup your data and/or equipment used in connection with
the Licensed Software.  You shall not claim against Sun for
lost data, re-run time, inaccurate output, work delays or
lost profits resulting from your use of the Licensed
Software.  7.3 Neither party will be liable for any
indirect, punitive, special, incidental or consequential
damage in connection with or arising out of this Agreement
(including loss of business, revenue, profits, use, data or
other economic advantage), however it arises, whether for
breach or in tort, even if that party has been previously
advised of the possibility of such damage.

8.0 U.S.  GOVERNMENT RIGHTS If this Software is being
acquired by or on behalf of the U.S.  Government or by a
U.S.  Government prime contractor or subcontractor (at any
tier), then the Government's rights in the Software and
accompanying documentation shall be only as set forth in
this license; this is in accordance with 48 C.F.R.  227.7201
through 227.7202-4 (for Department of Defense (DoD)
acquisitions) and with 48 C.F.R.  2.101 and 12.212 (for
non-DoD acquisitions).

9.0 GENERAL TERMS 9.1 Any action related to this Agreement
will be governed by California law and controlling U.S.
federal law.  The U.N.  Convention for the International
Sale of Goods and the choice of law rules of any
jurisdiction will not apply.  9.2 Licensed Software and
technical data delivered under this Agreement are subject to
U.S.  export control laws and may be subject to export or
import regulations in other countries.  You agree to comply
strictly with all such laws and regulations and acknowledge
that you have the responsibility to obtain such licenses to
export, re-export or import as may be required after
delivery to you.  9.3 Neither party may assign or otherwise
transfer any of its rights or obligations under this
Agreement, without the prior written consent of the other
party, except that Sun may assign this Agreement to an
affiliated company.  9.4 This Agreement is the parties'
entire agreement relating to its subject matter.  It
supersedes all prior or contemporaneous oral or written
communications, proposals, conditions, representations and
warranties and prevails over any conflicting or additional
terms of any quote, order, acknowledgment, or other
communication between the parties relating to its subject
matter during the term of this Agreement.  No modification
to this Agreement will be binding, unless in writing and
signed by an authorized representative of each party.

For inquiries please contact:  Sun Microsystems, Inc.  901
San Antonio Road, Palo Alto, California 94303

Copyright 2001 Sun Microsystems, Inc., All rights reserved.
(LFI# 90748/FORMID#011801)


	