TEAMVIEWER® END-USER LICENSE AGREEMENT

PLEASE CAREFULLY REVIEW THE FOLLOWING TERMS AND CONDITIONS OF THIS
END USER LICENSE AGREEMENT ("EULA”). This EULA is a legal
agreement between you and TeamViewer GmbH (“TEAMVIEWER”) for
the licensing and use of the TeamViewer software, which includes
TeamViewer, TeamViewer Touch, TeamViewer Manager, TeamViewer
Management Console, TeamViewer Portable, TeamViewer MSI Package,
TeamViewer for iPad®, iPhone® and Android®, computer software and
applications (“SOFTWARE”). This EULA also covers Software,
any associated media, printed materials, and “online” or
electronic documentation (collectively “PRODUCT”). Future
releases of the Product may contain amendments to this EULA. 

BY CLICKING ‘I ACCEPT’ OR DOWNLOADING, OR OTHERWISE USING
THE SOFTWARE, YOU ARE CONSENTING TO ALL OF THE TERMS AND
CONDITIONS OF THIS EULA. IF YOU DO NOT AGREE TO ANY OF THE TERMS
OF THIS EULA, PLEASE IMMEDIATELY RETURN, DELETE OR DESTROY ANY AND
ALL COPIES OF THE SOFTWARE YOU MAY HAVE.

1. LICENSE GRANT. Unless otherwise provided in the applicable
Software documentation, TeamViewer grants you, under this EULA, a
license to use the Product for an indefinite period of time. The
license granted herein is non-exclusive and its scope is dependent
on whether you use the Software for personal or commercial use.
(i) Private Use of TeamViewer: if your use of the Software is for
your private use, you may install the Software on private
computers to be used in any one session at any one time; Private
Use is use of TeamViewer for purposes that are of no commercial
nature and for which you are neither directly nor indirectly paid
(for more information see
http://www.teamviewer.com/link/?url=569877) (ii) TeamViewer
Business: you are allowed to install the Software on one computer
and are only allowed to run up to three connections in Remote
Control mode or have up to 15 participants in any Meeting on that
one computer; (iii) on TeamViewer Premium: you are allowed to
install the Software on an unlimited number of computers, out of
all of the computers, you are only allowed to run one concurrent
session at any time; however from a single computer you are
allowed to establish up to 10 connections in Remote control mode
or have up to 25 participants in any Meeting; or (iv) TeamViewer
Corporate: you are allowed to install the Software on an unlimited
number of computers, out of all of the computers, you are only
allowed to run three concurrent sessions at any one time; however
from a single computer you are allowed to establish up to 15
connections in Remote control mode or have up to 25 participants
in any Meeting; (v) TeamViewer Professional: The software may be
licensed to one specified TeamViewer account. This TeamViewer
account is accessed by a "Named User"¹ entering personal user
data. After logging in to the TeamViewer account on any computer,
the Named User can establish up to 10 connections in Remote
Control mode or have up to 25 participants in any Meeting; or
(vi) TeamViewer Enterprise: This software package may be licensed
to three specified TeamViewer accounts. Each TeamViewer account
is accessed by a Named User entering personal user data. After
logging in to the TeamViewer account on any computer, the Named
User can establish up to 10 connections in Remote Control mode or
have up to 25 participants in any Meeting. Each Named User can
establish up to 10 connections in Remote Control mode or have up
to 25 participants in any Meeting. Based on the foregoing
calculations, virtualized desktops or computers or other hardware
running multiple operated systems shall be counted as individual
computers towards the total count. Additional concurrent users of
the Software will require the respective additional licenses.
¹A "Named User" is a natural person named by the Customer, who
has permission to use the software. This person is not entitled
to pass on his/her log-in data to others.

2. SUPPORT. In addition to your warranty claims, TeamViewer, in
its sole determination, will provide you with support, which
shall consist of: (i) telephone or electronic support to you in
order to help you locate and, on your own, correct problems with
the Product and / or (ii) supplying extensions, enhancements and
other changes that TeamViewer may make to the Product and which
is made publicly available, without additional charge, to other
licensees of the Product that are enrolled in Support.  

3. BETA TESTING. TeamViewer can provide you with Beta test
versions of Product “AS IS”, free of charge, and WITHOUT
WARRANTY OF ANY KIND. Such provision is done so only for the
purpose of assisting TeamViewer with testing functionality or
compatibility. Should you use this test version, please provide
TeamViewer with compelling feedback in whatever format you may
wish, or are directed by (“CONTRIBUTION”). You expressly
acknowledge that your participation in any beta testing is
undertaken by you on a volunteer basis and that you shall have
no right in the beta Product or Contribution, whether in original
form (as provided to you) or in respect of any derivative work
(whether or not based upon, in whole or in part, on any
participation or feedback you may make). Notwithstanding the
foregoing, you agree to grant to TeamViewer, free of charge, all
rights of use in respect of your Contribution.  

4. RESTRICTIONS. Except as otherwise agreed in writing , you
shall have no right and you shall not permit any third party to:
(i) make error corrections to or otherwise modify or adapt the
Product or decompile, decrypt, disassemble, reverse engineer or
attempt to reconstruct or discover any source code or underlying
ideas, algorithms, file formats or programming or interoperability
interfaces of Product or of any files contained or generated
using Product by any means whatsoever or otherwise reduce the
Product to human-readable form, unless expressly permitted by law
in each case; or (ii) circumvent or provide the method or means
to circumvent any TMP in the Product; or (iii) use the Product in
any manner not expressly authorised herein.

5. SCOPE OF LICENSE. TeamViewer is the holder of all intellectual
property rights in the Product, throughout the world. Please note
that the Product may contain third-party software. With the
license, you will be granted, according to Sec. 1, the
non-exclusive right to use the Product, which shall constitute no
sale. You shall be granted no furtherrights or titles in, or to,
the Product in excess of this EULA. TeamViewer and its licensors
retain ownership of all copies of the Product and reserves all
rights not expressly granted to you under this EULA.

6. CONSENT TO USE OF DATA. TeamViewer and you shall comply with
the respective provisions of the applicable data protection laws.
TeamViewer takes the protection of your personal data very
seriously and strictly abides by the data protection laws.
TeamViewer collects, processes and uses your data for the
implementation and processing of the contractual relation with
you, in particular for successfully establishing connections over
the Internet. Beyond that, your data will not be used without
your prior consent, in particular not for advertising purposes.
Non-personal data may be collected automatically to offer you
first-class service, especially to facilitate and improve the
provision of software updates, Support, Content, TPM and other
services. 

7. CONTENT UPDATES; TECHNOLOGICAL PROTECTION MEASURES
(“TPM”). Some Products require, for optimum use and
TeamViewer may provide to you, in a number of formats (feeds,
definition files etc), content that is automatically,
synchronised or updated from time to time with TeamViewer’s
servers or systems (“CONTENT”). Such content may be
provided for a limited time, from time to time, or in accordance
with an applicable and valid Support agreement. The Products may
also contain technological protection measures, for instance a
license key or code, that prevents unlimited copying, or limit
time of use or functionality in accordance with the type of
license that you purchase (“TPM”). You consent that the
Product will automatically contact TeamViewer to receive Content
and, in addition, if and when any of the following events occur:
(i) the Product is successfully installed by you; (ii) you fail
to install the Product successfully; (iii) the Product has been
successfully configured; (iv) there are changes to the
Product’s license key or TPM; and / or (v) the Product is
uninstalled. TeamViewer has offices worldwide and you acknowledge
and consent that any data collected may be sent to any TeamViewer
office or affiliate for processing, including locations outside
of the USA and European Union. Your consent to this Section 7 is
limited to any data not being your personal data. For any of your
personal data collected, processed or otherwise used in
connection with this Section 7, Section 6 applies accordingly.

8. TERMINATION. You, as private user, and TeamViewer may terminate
the present EULA at any time; otherwise, it may be terminated in
accordance with the legal provisions. In case of termination, you
must cease all use of the Product, destroy all copies (including
any components) of the Product, or, at TeamViewer’s request,
return such copies to TeamViewer. Sections 2, 5, 10, 11, 12 and
13 of this EULA shall survive any termination of this EULA.	

9. EXPORT CONTROLS. You agree that the Product will not be used,
shipped, transferred or exported into any country or to anyone:
(i) which the EU or UN has embargoed goods; (ii) where the
national legislation of the relevant EU Member State has
embargoed goods; (iii) listed in any enacted Common Position on
restrictive measures imposed by the EU; (iv) on the U.S. Treasury
Department’s list of Specially Designated Nationals or the
U.S. Commerce Department’s Table of Deny Orders; or (v) in any
manner prohibited by the EU Common Foreign and Security Policy,
the United States Export Administration Act, or any other export
laws or regulations. By using the Product you represent that you
are not located in, under the control of, or a national or
resident of any such country or on any such list and you take
full and sole responsibility for such use.	

10. WARRANTY. TeamViewer warrants its commercial users that the
Product supplied will be free from defects for a period of two
years from the date of receipt of the Product. No warranty for
defects is provided to private users, unless such defect was
maliciously concealed. Any supplements or updates to the Product,
including without limitation, any (if any) service packs, patches
or fixes provided to you are not covered by any warranty; they
are rather provided ‘AS IS’. This warranty is personal to
you and cannot be transferred.
REMEDY: If a Product media defect arises and you have a valid
claim, TeamViewer will remedy the defect by one of the following
measures: (1) rectify the defect at no cost to you, using new or
refurbished parts that are equivalent to new in performance and
reliability, or (2) exchange the Product media with Product media
that is new or refurbished, which is at least functionality
equivalent to the original Product media, or (3) refund the
purchase price of the original Product media subject to your
provision of a valid receipt of purchase. The above regulations
shall, of course, not affect any other rights that you may have
by law. Rectification is free of charge for you. 
Warranty claims are excluded if failure of the Product has
resulted from accident, abuse, misapplication, abnormal use, a
virus, or use after an upgrade was made available to you.
EXCEPT AS PROVIDED ABOVE, THE PRODUCT IS PROVIDED TO THE USER
“AS IS”. TEAMVIEWER DOES NOT WARRANT THAT THE
SPECIFICATIONS OR FUNCTIONS CONTAINED IN THE PRODUCT WILL MEET
YOUR REQUIREMENTS, OR THAT THE OPERATION OF THE PRODUCT WILL BE
UNINTERRUPTED OR ERROR-FREE, OR THAT DEFECTS IN THE PRODUCT WILL
BE CORRECTED. TEAMVIEWER DOES NOT WARRANT THAT THE PRODUCTS WILL
WORK WITH THIRD-PARTY PRODUCTS. FURTHERMORE, TEAMVIEWER DOES NOT
WARRANT THAT THE PRODUCTS OR SPECIFICALLY DESIGNED VERSIONS
THEREOF WILL CONTINUE TO BE AVAILABLE THROUGH THIRD-PARTY ONLINE
STORES OR MARKETS OR FOR SPECIFIC DEVICES MANUFACTURED BY THIRD
PARTIES.

11. LIMITATION OF LIABILITY: 
Unless otherwise provided herein, TeamViewer shall be liable in
case of breach of contractual and non-contractual obligations as
provided for under applicable law. 
TeamViewer shall be liable for damages – for whatever legal
reason – only in case of intent or gross negligence. Moreover,
TeamViewer shall be liable for damages to commercial users also
in case of simple negligence resulting in injury to life, body or
health or resulting in breach of an essential contractual
obligation; in that case, however, liability shall be limited to
replacement of the foreseeable, typical damage.
The above limitations of liability shall not apply if TeamViewer
has maliciously concealed a defect or has assumed liability for
the condition of the goods. The same shall apply to your claims
under the Product Liability Act. 
You may terminate or rescind this EULA due to breach of obligation
that does not constitute a defect only if TeamViewer is
responsible for such breach of obligation. Any other ordinary
right of termination in excess of that shall be excluded for you. 

12. INDEMNIFICATION. You agree to indemnify and hold TeamViewer,
its parent, partner, or subsidiary organizations, officers,
agents and employees, harmless from any claim, loss, demand, or
damage, including reasonable attorneys' fees, asserted by any
third party due to or arising out of your breach of any provision
of this EULA, your negligent or wrongful acts, and/or your
violation of any applicable laws.

13. ENTIRE AGREEMENT. This EULA (as may be amended by time to
time) is the entire agreement between you and TeamViewer relating
to the Product and the Support services (if relevant) and they
supersede all prior or contemporaneous oral or written
communications, proposals and representations with respect to the
Product or Support services.

14. GOVERNING LAW. This EULA shall be governed by the laws of
Germany. TeamViewer and you consent to the exclusive jurisdiction
of the courts located in Goeppingen, Germany.

15. U.S. GOVERNMENT RIGHTS. If you are obtaining software on
behalf of any part of the United States Government, the software
and any documentation shall be deemed "commercial software" and
"commercial computer software documentation", respectively,
pursuant to DFAR Section 227.7202 and FAR 12.212 and 52.227-19,
as applicable. Any use, modification, reproduction, release,
performance, display or disclosure of the software shall be
governed solely by the terms of this EULA shall be prohibited
except to the extent expressly permitted by the terms of this
EULA.

16. MISCELLANEOUS.  (i) In the event this EULA is found illegal,
invalid or unenforceable, in part (or part of any provision),
you and TeamViewer shall agree on a provision that best reflects
the respective clause and that is legal, valid and enforceable;
(ii) nothing in this EULA, express or implied, is intended to, or
shall confer upon any other person or entity any legal or
equitable right, benefit or remedy of any nature whatsoever;
(iii) you may assign, pledge or otherwise transfer this agreement,
or any rights or obligations hereunder to a third party only with
TeamViewer’s prior written approval; and (iv) paragraph
headings are for convenience and shall have no effect or
interpretation.

17. NOTICES. All notices must be made in writing, and an email
shall be sufficient. All notices must be addressed to:

TeamViewer GmbH
Legal Department 
C/O: General Manager
Kuhnbergstr. 16
73037 Goeppingen
Germany 
Email: legal@teamviewer.com

Copyright © 2012 TeamViewer GmbH. All rights reserved.  All
trademarks belong to their respective owners.	

Windows® is a trademark of the Microsoft group of companies.
iPhone® and iPad® are trademarks of Apple Inc., registered in
the U.S. and other countries. Android™ is a trademark of
Google Inc.

Revised November 2012
