IMPORTANT PLEASE READ CAREFULLY BEFORE USING THIS PRODUCT:  THIS SOFTWARE LICENSE AGREEMENT ("Agreement") CONTAINS THE LICENSE TERMS AND CONDITIONS FOR THE XEROX SOFTWARE AND RELATED DOCUMENTATION (collectively "Software").

IF YOU DOWNLOAD, INSTALL OR USE THE SOFTWARE, YOU AGREE TO BE LEGALLY BOUND BY THE FOLLOWING TERMS AND CONDITIONS.  IF YOU DO NOT ACCEPT THESE LICENSE TERMS YOU MAY NOT DOWNLOAD, INSTALL OR USE THE SOFTWARE AND YOU MUST DELETE ANY SOFTWARE FILES ACCESSED BY YOU OR A THIRD PARTY ON YOUR BEHALF FROM ANY AND ALL COMPUTER MEMORY INTO WHICH SUCH SOFTWARE HAS BEEN LOADED OR STORED.

When used in this agreement the term "Xerox" shall mean Xerox Corporation, its operating companies, subsidiaries and affiliates.

If you are installing the Software on behalf of the end user you must agree that you are acting as an agent of the end user customer before proceeding.  As agent for the end user you hereby agree that you have either; 1) read and agree to the terms of this Agreement as authorized by the end user, or 2) you have made the end user aware of the license terms and the end user has explicitly accepted them.

1.  LICENSE GRANT.
a.  Xerox grants to you a non-exclusive, non-transferable license to use the Software on the Xerox-brand equipment ("Equipment") on which it was delivered or, if delivered separately, on a single item of equipment.  You have no other rights to the Software and may not: (1) distribute, copy, modify, create derivatives of, decompile, or reverse engineer Software; (2) activate Software delivered in an inactivated state; or (3) allow others to engage in same.  You may make archival or back-up copies of the Software, provided each copy contains all of the copyright and other proprietary notices contained on the original Software and such copies and is used only for back-up purposes.  Title to, and all intellectual property rights in, Software will reside solely with Xerox and/or its licensors who will be considered third-party beneficiaries of this Agreement with rights of enforcement.
b.  Software may include or incorporate software provided by Microsoft Corporation ("Microsoft Software").  In addition to all other terms and conditions of this Agreement, the following applies to Your installation and use of Microsoft Software.  You may not: (i) sell, lease, loan, sublicense, or use the Microsoft Software for commercial software hosting services; (ii) publish any benchmark results for the Microsoft Software; (iii) work around any technical limitations in the  Microsoft Software; or (iv) separate components of the Microsoft Software and install them on different pieces of equipment.

2.  THIRD PARTY SOFTWARE.  The Software may include code developed by one or more third parties ("Third Party Software").  Some Third Party Software may be subject to other terms and conditions that may be found in an open source software disclosure package provided with the Software or available for download with the product documentation.  Notwithstanding the terms and conditions of this Agreement, the Third Party Software is licensed to you subject to the terms and conditions of the software license agreement identified in the open source software disclosure.  If the third party terms and conditions include licenses that provide for the availability of source code (such as the GNU General Public License), the open source software disclosure or the media on which the Software may be delivered will contain the source code or provide instructions where a copy of such source code can be obtained.

3.  DISCLAIMER OF WARRANTY.
a.	YOU ACKNOWLEDGE AND AGREE THAT THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND BY XEROX OR ITS LICENSORS.  XEROX AND ITS LICENSORS EXPRESSLY DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, WHETHER CREATED BY STATUTE OR OTHERWISE, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY OR NON-INFRINGEMENT OF THIRD-PARTY RIGHTS.  XEROX AND ITS LICENSORS DO NOT WARRANT THAT THE SOFTWARE WILL MEET YOUR PARTICULAR REQUIREMENTS, THAT IT WILL OPERATE UNINTERRUPTED OR ERROR FREE, OR THAT DEFECTS IN THE SOFTWARE CAN OR WILL BE CORRECTED.  ALL WARRANTIES AND REPRESENTATIONS MADE BY PERSONS OTHER THAN XEROX, INCLUDING, BUT NOT LIMITED TO, YOUR AUTHORIZED SERVICE PROVIDER, DISTRIBUTORS, DEALERS, CONCESSIONAIRES AND OTHER RESELLERS OF XEROX, ARE ALSO DISCLAIMED.  THE WARRANTY DISCLAIMERS SET FORTH HEREIN MAY NOT APPLY IN CERTAIN JURISDICTIONS, IN WHICH CASE THE WARRANTEES HEREUNDER SHALL BE THE MINIMUM REQUIRED BY LAW.
b.	Software may contain, or be modified to contain, computer code capable of automatically disabling proper operation or functioning of Software and/or the system upon which it is installed.  Such disabling code may be activated (a) if Xerox is denied access to the Software and/or the system as provided herein, (b) you otherwise breach any term of this Agreement, or (c) such license is terminated or expires.

4.  INDEMNIFICATION.  Xerox will pay any settlement agreed to by Xerox or any final judgment for, any claim that Software infringes a third party's valid United States patent or copyright, provided that you promptly notify Xerox in writing of any alleged infringement, allow Xerox to direct the defense, and fully cooperate with Xerox.  Xerox is not responsible for any non-Xerox litigation expenses or settlements unless Xerox agrees to them in writing.  To avoid infringement, even if not alleged, Xerox may, at its option, and at no charge to you, either obtain a license, provide a replacement for the Software or remove or request that you remove the Software.  Xerox's obligations under this section are further conditioned on you immediately removing and ceasing use of the Software in the event that Xerox requests that you remove the Software and/or provides a replacement.  Xerox will not be liable for any infringement-related liability outside the scope of this section, including, without limitation, infringement based upon the Software being modified to your specifications or due to the Software being used in combination with equipment, software or supplies not provided by Xerox.

5.  LIMITATION OF LIABILITY.  Notwithstanding any damages that you might incur, the entire liability of Xerox and its licensors under this Agreement and your exclusive remedy will be limited to the greater of the amount actually paid by you for the Software or U.S. $10.00.  IN NO EVENT WILL XEROX OR ITS LICENSORS BE LIABLE TO YOU FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCUDING BUT NOT LIMITED TO DAMAGES RELATED TO DATA LOSS, LOST PROFITS OR BUSINESS INTERRUPTION) IN ANY WAY ARISING OUT OF OR RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT, EVEN IF XEROX OR ITS LICENSORS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND EVEN IF THE ABOVE REMEDY FAILS OF ITS ESSENTIAL PURPOSE.  THE LIMITATIONS OF LIABILITY SET FORTH HEREIN MAY NOT APPLY IN CERTAIN JURISDICTIONS AND THUS MAY NOT APPLY TO YOU; IN SUCH CASES, XEROX'S AND ITS LICENSORS' LIABILITY HEREUNDER SHALL BE THE MINIMUM REQUIRED BY LAW.

6.  TERMINATION.  Xerox may terminate your license for the Software (i) immediately if you no longer use or possess the equipment with which the Software was provided or are a lessor of the equipment with which the Software was provided and your first lessee no longer uses or possesses it, (ii) upon the termination of any agreement under which you have rented or leased the equipment with which the Software was provided, or (iii) immediately in the event of a breach by you.  If terminated as provided above, you shall return to Xerox all copies of the Software, and remove same from all equipment into which such Software may have been loaded by you.

7.  The Software is provided with Restricted Rights.  You agree to meet all requirements necessary to ensure that the Federal Government will honor such rights.  Disclosure, use or reproduction of the Software and accompanying documentation are subject to restrictions set forth in the Commercial Computer-Restricted Rights clause at Federal Acquisition Regulation 52.227-19, when applicable, or in the Department of Defense Federal Acquisition Regulations Supplement 252.227-7013.

8.  SEVERABLILITY.  If any provision of this Agreement is held invalid by any law, rule, order or regulation of any government, or by the final determination of any state or federal court, such invalidity will not affect the enforceability of any other provisions not held to be invalid. In the event any provision hereof is declared by competent authority to be invalid, illegal or unenforceable under any applicable law, to the extent permissible under applicable law, any such invalid, illegal or unenforceable provision shall be deemed amended lawfully to conform to the intent of the Parties.

9.  NO WAIVER.  Any delay or omission by either party to exercise any right or remedy under this Agreement will not be construed to be a waiver of any such right or remedy or any other right or remedy.  All of the rights of either party under this Agreement will be cumulative and may be exercised separately or concurrently.

10.  GOVERNING LAW.  This Agreement shall be construed in accordance with the laws of the State of New York, without regard to its choice of laws provisions, and disputes shall be adjudicated or otherwise decided in the forums therefor located in the State of New York.  The United Nation Convention on Contracts for International Sales of Goods shall not apply to this Agreement.  Local law may require that certain laws of your country of residence apply to some sections of this Agreement, including but not limited to, requiring this Agreement to be governed by the laws of your country of residence.

11.  EXPORT.  You will not export or re-export the Software without appropriate United States or foreign government licenses or for any purpose prohibited by any applicable export control laws.

12.  ENTIRE AGREEMENT.  This Agreement constitutes the entire agreement between the parties in connection with the subject matter hereof, and supersedes all prior agreements, understandings, negotiations and discussions, whether oral or written, between the parties.  No amendment to or modification of this Agreement will be binding unless it is in writing and signed by a duly authorized representative of each of the parties.

13.  REMOTE SERVICES. Certain models of Equipment are supported and serviced using data that is automatically collected by Xerox or transmitted to or from Xerox by the Equipment connected to Customer's network ("Remote Data") via electronic transmission to a secure off-site location ("Remote Data Access"). Remote Data Access also enables Xerox to transmit to Customer Releases for Software and to remotely diagnose and modify Equipment to repair and correct malfunctions. Examples of Remote Data include product registration, meter read, supply level, Equipment configuration and settings, software version, and problem/fault code data. Remote Data may be used by Xerox for billing, report generation, supplies replenishment, support services, recommending additional products and services, and product improvement/development purposes. Remote Data will be transmitted to and from Customer in a secure manner specified by Xerox. Remote Data Access will not allow Xerox to read, view or download the content of any Customer documents or other information residing on or passing through the Equipment or Customer's information management systems. Customer grants the right to Xerox, without charge, to conduct Remote Data Access for the purposes described above. Upon Xerox's request, Customer will provide contact information for Equipment such as name and address of Customer contact and IP and physical addresses/locations of Equipment. Customer will enable Remote Data Access via a method prescribed by Xerox, and Customer will provide reasonable assistance to allow Xerox to provide Remote Data Access. Unless Xerox deems Equipment incapable of Remote Data Access, Customer will ensure that Remote Data Access is maintained at all times maintenance or support services are being provided.

14.  DIAGNOSTIC SOFTWARE.   Software used to evaluate or maintain Xerox equipment ("Diagnostic Software") may be embedded in, reside on, or may be loaded onto Xerox equipment. The Diagnostic Software and method of entry or access to it constitute valuable trade secrets of Xerox. Title to Diagnostic Software shall at all times remain solely with Xerox and/or its licensors. You agree that (a) your acquisition of the equipment does not grant you a license or right to use Diagnostic Software in any manner, and (b) that unless separately licensed by Xerox to do so, you will not access, use, reproduce, distribute, or disclose Diagnostic Software for any purpose (or allow third parties to do so). You agree at all times to allow Xerox to access, monitor, and otherwise take steps to prevent unauthorized use or reproduction of Diagnostic Software and to remove or disable Diagnostic Software.
