Vivaldi End User License Agreement

1. This End User License Agreement ("EULA") governs your use ("You") of the browser software ("Software") and any ancillary services ("Services") provided to You by Vivaldi Technology AS ("Vivaldi") to the exclusion of all other terms and conditions.
2. Here at Vivaldi, we try to keep things as simple and easy as possible but since this is a legal document, it’s a bit longer than we would like it to be. It’s important that you read this carefully and understand the terms of use. By clicking through, you agree to the following terms and conditions. If you don’t agree to the following terms and conditions, you are not allowed to use the Software or Services.
3. We may if needed change any part of these terms of use without notice and your continued use of the Software or Services will be deemed as acceptance of such changes. You should check the terms of use regularly!
4. This EULA does not apply to third party software or services that Vivaldi may deliver with the Software or Services. Vivaldi assumes no responsibility or liability for such "Third Party Software or Services". Your use of such Third Party Software or Services is exclusively governed by the applicable end user license terms and conditions for such Third Party Software or Services. The terms in this EULA do not apply to Third Party Software or Services to the extent they are inconsistent with end user license terms and conditions for such Third Party Software or Service.
5. Subject to the terms and conditions herein, Vivaldi hereby grants You a limited, non-exclusive, non-transferable, non-sublicensable license to install and use the Software and Services for its intended purpose.
6. You may use the Software and Services on your personal computer, including your laptop, desktop and handheld device. You may only use the Software and Services for personal use only. By way of example, this means that although You are allowed to use our Software and Services at work or within your business or organization, You are not allowed to sell, trade or resell the Software or Services for any purpose, including without limitation any use in any application service provider environment, service bureau, or time-sharing arrangements
7. Without limiting the foregoing, you are neither allowed to (a) adapt, alter, translate, embed into any other product or otherwise create derivative works of, or otherwise modify the Software ; (b) separate the component programs of the Software for use on different computers; (c) reverse engineer, decompile, disassemble or otherwise attempt to derive the source code for the Software, except as permitted by applicable law; or (d) remove, alter or obscure any proprietary notices on the Software, or the applicable documentation therefore.
8. The Software and Services and all intellectual property rights therein are the exclusive property of Vivaldi and its suppliers, and all rights in and to the Software not expressly granted to You in this EULA are reserved. Vivaldi owns all copies of the Software, however made.
9. By accepting this EULA your also accept our privacy policy (available at https://vivaldi.com/privacy). Here at Vivaldi we take privacy matters very seriously and we always strive to be compliant with applicable laws and regulations.
10. The Software and Services are provided to you "as is" without any warranty of any kind, which hereby is disclaimed. Without limiting the foregoing we do not guarantee availability of our Software and Services. You use our Software and Services at your own risk, and You agree to be fully responsible for any claim, expense, liability, losses arising from any infringement of this EULA. Even though we do our best to provide You with a great Software and Services, we cannot be held liable for any kind of damage, direct or indirect or consequential, resulting from your use of our Software and Services.
11. This EULA applies from the time you download or activate the Software, and continues in perpetuity unless terminated by Vivaldi for no cause with thirty (30) days prior written notice, or terminated because of Your breach of this EULA. On termination all rights granted in this EULA lapses and You are not allowed to use the Software or Services. All provisions herein that by its nature are intended to survive termination, including Section 10 and 12, shall survive such termination.
12. Vivaldi's headquarter is based in beautiful city of Oslo, Norway. This EULA is therefore governed by the laws of Norway, except its conflict of laws rules and regulations. All disputes, actions or proceedings arising under or related to this EULA shall exclusively be referred and resolved by the Oslo City Court. Notwithstanding, Nothing in EULA will be deemed as preventing Vivaldi from seeking injunctive relief (or any other provisional remedy) from any court having jurisdiction over the parties and the subject matter of the dispute as is necessary to protect Vivaldi's, proprietary information, trade secrets, know-how, or any other intellectual property rights.
Please direct any questions or queries with regard to this EULA to legal@vivaldi.com
