                             TERMS AND CONDITIONS
    IMPORTANT - PLEASE READ BEFORE INSTALLING OR USING THIS INTEL(C) SOFTWARE

Do not use or load this firmware (the "Software") until you have carefully read
the following terms and conditions. By loading or using the Software, you agree
to the terms of this Agreement. If you do not wish to so agree, do not install
or use the Software.

LICENSEES:

Please note: 

* If you are an End-User, only Exhibit A, the SOFTWARE LICENSE AGREEMENT,
  applies.
* If you are an Original Equipment Manufacturer (OEM), Independent Hardware
  Vendor (IHV), or Independent Software Vendor (ISV), this complete Agreement
  applies 

--------------------------------------------------------------------------------

For OEMs, IHVs, and ISVs:

LICENSE. This Software is licensed for use only in conjunction with Intel
component products. Use of the Software in conjunction with non-Intel component
products is not licensed hereunder. Subject to the terms of this Agreement,
Intel grants to you a nonexclusive, nontransferable, worldwide, fully paid-up
license under Intel's copyrights to: (i) copy the Software internally for your
own development and maintenance purposes; (ii) copy and distribute the Software
to your end-users, but only under a license agreement with terms at least as
restrictive as those contained in Intel's Final, Single User License Agreement,
attached as Exhibit A; and (iii) modify, copy and distribute the end-user
documentation which may accompany the Software, but only in association with
the Software.  

If you are not the final manufacturer or vendor of a computer system or software
program incorporating the Software, then you may transfer a copy of the
Software, including any related documentation (modified or unmodified) to your
recipient for use in accordance with the terms of this Agreement, provided such
recipient agrees to be fully bound by the terms hereof. You shall not otherwise
assign, sublicense, lease, or in any other way transfer or disclose Software to
any third party. You may not, nor may you assist any other person or entity to
modify, translate, convert to another programming language, decompile, reverse
engineer, or disassemble any portion of the Software or otherwise attempt to
derive source code from any object code modules of the Software or any internal
data files generated by the Software. Your rights to redistribute the Software
shall be contingent upon your installation of this Agreement in its entirety in
the same directory as the Software.

CONTRACTORS. For the purpose of this Agreement, and notwithstanding anything 
to the contrary hereunder, solely with respect to the requirements for 
compliance with the terms hereunder, any contractors or consultants that You 
use to perform the work or otherwise assist You in the development or products 
using this Software shall be deemed to be End Users and accordingly, upon 
receipt of the Software, shall be bound by the terms of Exhibit A, Software 
License Agreement. No additional agreement between You and such consultants or 
contractors is required under this Agreement to detail such compliance.

TRADEMARKS. Except as expressly provided herein, you shall not use Intel's 
name in any publications, advertisements, or other announcements without 
Intel's prior written consent. You do not have any rights to use any Intel 
trademarks or logos.

OWNERSHIP OF SOFTWARE AND COPYRIGHTS. Software and accompanying materials, if
any, are owned by Intel or its suppliers and licensors and may be protected by
copyright, trademark, patent and trade secret law and international treaties. 
Any rights, express or implied, in the intellectual property embodied in the
foregoing, other than those specified in this Agreement, are reserved by Intel
and its suppliers and licensors or otherwise as set forth in any applicable
open source license agreement. You will keep the Software free of liens,
attachments, and other encumbrances.  You agree not to remove any proprietary
notices and/or any labels from the Software and accompanying materials without
prior written approval by Intel

LIMITATION OF LIABILITY. IN NO EVENT SHALL INTEL OR ITS SUPPLIERS AND LICENSORS
BE LIABLE FOR ANY DAMAGES WHATSOEVER FROM ANY CAUSE OF ACTION OF ANY KIND
(INCLUDING, WITHOUT LIMITATION, LOST PROFITS, BUSINESS INTERRUPTION, OR LOST
INFORMATION) ARISING OUT OF THE USE, MODIFICATION, OR INABILITY TO USE THE
INTEL SOFTWARE, OR OTHERWISE, NOR FOR PUNITIVE, INCIDENTAL, CONSEQUENTIAL, OR
SPECIAL DAMAGES OF ANY KIND, EVEN IF INTEL OR ITS SUPPLIERS AND LICENSORS HAS
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.   SOME JURISDICTIONS PROHIBIT
EXCLUSION OR LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES, CONSEQUENTIAL OR
INCIDENTAL DAMAGES, SO CERTAIN LIMITATIONS MAY NOT APPLY.  YOU MAY ALSO HAVE
OTHER LEGAL RIGHTS THAT VARY BETWEEN JURISDICTIONS. 

EXCLUSION OF WARRANTIES.  THE SOFTWARE IS PROVIDED "AS IS" AND POSSIBLY WITH
FAULTS. UNLESS EXPRESSLY AGREED OTHERWISE, INTEL AND ITS SUPPLIERS AND
LICENSORS DISCLAIM ANY AND ALL WARRANTIES AND GUARANTEES, EXPRESS, IMPLIED OR
OTHERWISE, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
NONINFRINGEMENT, OR FITNESS FOR A PARTICULAR PURPOSE.  Intel does not warrant
or assume responsibility for the accuracy or completeness of any information,
text, graphics, links or other items contained within the Software.  You assume
all liability, financial or otherwise, associated with Your use or disposition
of the Software.
		
APPLICABLE LAW. Claims arising under this Agreement shall be governed by the
laws of State of California], excluding its principles of conflict of laws and
the United Nations Convention on Contracts for the Sale of Goods.  

WAIVER AND AMENDMENT. No modification, amendment or waiver of any provision of
this Agreement shall be effective unless in writing and signed by an officer of
Intel.  No failure or delay in exercising any right, power, or remedy under
this Agreement shall operate as a waiver of any such right, power or remedy. 
Without limiting the foregoing, terms and conditions on any purchase orders or
similar materials submitted by you to Intel, and any terms contained in Intels
standard acknowledgment form that are in conflict with these terms, shall be of
no force or effect.

SEVERABILITY.  If any provision of this Agreement is held by a court of
competent jurisdiction to be contrary to law, such provision shall be changed
and interpreted so as to best accomplish the objectives of the original
provision to the fullest extent allowed by law and the remaining provisions of
this Agreement shall remain in full force and effect.

EXPORT RESTRICTIONS.  Each party acknowledges that the Software is subject to
applicable import and export regulations of the United States and of the
countries in which each party transacts business, specifically including U.S.
Export Administration Act and Export Administration Regulations.  Each party
shall comply with such laws and regulations, as well as all other laws and
regulations applicable to the Software.  Without limiting the generality of the
foregoing, each party agrees that it will not export, re-export, transfer or
divert any of the Software or the direct programs thereof to any restricted
place or party in accordance with U.S. export regulations.  Note that Software
containing encryption may be subject to additional restrictions.

GOVERNMENT RESTRICTED RIGHTS. The Software is provided with "RESTRICTED RIGHTS."
Use, duplication, or disclosure by the Government is subject to restrictions as
set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or their successors. Use
of the Software by the Government constitutes acknowledgment of Intel's
proprietary rights therein. Contractor or Manufacturer is Intel Corporation,
2200 Mission College Blvd., Santa Clara, CA  95052.

TERMINATION OF THE AGREEMENT. Intel may terminate this Agreement if you violate
its terms. Upon termination, you will immediately destroy the Software or
return all copies of the Software to Intel.

--------------------------------------------------------------------------------

EXHIBIT "A"

SOFTWARE LICENSE AGREEMENT (Final, Single User)

IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING.

Do not use or load this firmware image (the "Software") until you have carefully
read the following terms and conditions. By loading or using the Software, you
agree to the terms of this Agreement. If you do not wish to so agree, do not
install or use the Software.

LICENSE. You may copy and use the Software, subject to these conditions: 
1. This Software is licensed for use only in conjunction with Intel component
   products. Use of the Software in conjunction with non-Intel component 
   products is not licensed hereunder. 
2. You may not copy, modify, rent, sell, distribute or transfer any part of the
   Software except as provided in this Agreement, and you agree to prevent
   unauthorized copying of the Software. 
3. You may not reverse engineer, decompile, or disassemble the Software. 
4. You may not sublicense the Software. 
5. The Software may contain the software or other property of third party
   suppliers. 

OWNERSHIP OF SOFTWARE AND COPYRIGHTS. Title to all copies of the Software
remains with Intel or its suppliers. The Software is copyrighted and protected
by the laws of the United States and other countries, and international treaty
provisions. You may not remove any copyright notices from the Software. Intel
may make changes to the Software, or items referenced therein, at any time
without notice, but is not obligated to support or update the Software. Except
as otherwise expressly provided, Intel grants no express or implied right under
Intel patents, copyrights, trademarks, or other intellectual property rights.
You may transfer the Software only if a copy of this license accompanies the 
Software and the recipient agrees to be fully bound by these terms.

EXCLUSION OF OTHER WARRANTIES EXCEPT AS PROVIDED ABOVE, THE SOFTWARE IS PROVIDED
"AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND INCLUDING
WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A PARTICULAR
PURPOSE. Intel does not warrant or assume responsibility for the accuracy or
completeness of any information, text, graphics, links or other items contained
within the Software.

LIMITATION OF LIABILITY. IN NO EVENT SHALL INTEL OR ITS SUPPLIERS BE LIABLE FOR
ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS, BUSINESS
INTERRUPTION, OR LOST INFORMATION) ARISING OUT OF THE USE OF OR INABILITY TO
USE THE SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR LIMITATION OF LIABILITY FOR
IMPLIED WARRANTIES OR CONSEQUENTIAL OR INCIDENTAL DAMAGES, SO THE ABOVE
LIMITATION MAY NOT APPLY TO YOU. YOU MAY ALSO HAVE OTHER LEGAL RIGHTS THAT VARY
BETWEEN JURISDICTIONS.

TERMINATION OF THIS AGREEMENT. Intel may terminate this Agreement at any time if
you violate its terms. Upon termination, you will immediately destroy the
Software.

APPLICABLE LAWS. Claims arising under this Agreement shall be governed by the
laws of California, excluding its principles of conflict of laws and the United
Nations Convention on Contracts for the Sale of Goods. You may not export the
Software in violation of applicable export laws and regulations. Intel is not
obligated under any other agreements unless they are in writing and signed by
an authorized representative 
of Intel.

GOVERNMENT RESTRICTED RIGHTS. The Software is provided with "RESTRICTED RIGHTS."
Use, duplication, or disclosure by the Government is subject to restrictions as
set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or their successors. Use
of the Software by the Government constitutes acknowledgment of Intel's
proprietary rights therein. Contractor or Manufacturer is Intel Corporation,
2200 Mission College Blvd., Santa Clara, CA 95052.



		

