
IMPORTANT NOTE

Nero AG licenses you to use this software package for personal non-commercial
and/or technology-evaluation purposes.

This License does not provide any rights to reproduce and/or distribute this
software package in whole or in any part.

A written license agreement with Nero AG is needed for any Commercial use of
this software package, including, but not limited to, exploitation of products,
which are incorporating and/or using, in whole or in part, executables provided
in this software package

Please contact Nero AG for licensing guidance.

THIS SOFTWARE IS PROVIDED BY NERO AG TO YOU "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL NERO AG BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.

IN NO EVENT WILL NERO OR ITS LICENSORS BE LIABLE TO YOU FOR ANY DAMAGES, CLAIMS
OR COSTS WHATSOEVER ARISING FROM THIS LICENSE AND/OR YOUR USE OF THE SOFTWARE OR
ANY COMPONENT THEREOF, INCLUDING WITHOUT LIMITATION ANY CONSEQUENTIAL, INDIRECT,
INCIDENTAL DAMAGES, LOSS OF USE OR DATA, INTERRUPTION OF BUSINESS, OR ANY LOST
PROFITS OR LOST SAVINGS, EVEN IF A  NERO REPRESENTATIVE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS OR FOR ANY CLAIM BY ANY THIRD
PARTY. THE FOREGOING LIMITATIONS AND EXCLUSIONS APPLY TO THE FULLEST EXTENT
PERMITTED BY APPLICABLE LAW IN YOUR JURISDICTION. NERO'S AGGREGATE LIABILITY AND
THAT OF ITS LICENSORS UNDER OR IN CONNECTION WITH THIS LICENSE SHALL BE LIMITED
TO TEN US DOLLARS (US $ 10.00). 

MPEG-4: Use of this product in any manner that complies with the MPEG-4 Audio
Standard is prohibited, except for use by a consumer engaging in personal and
non-commercial activities.


This License constitutes the complete and exclusive agreement between Nero and
you with respect to the subject matter hereof, and supersedes all prior oral or
written understandings, communications or agreements not specifically
incorporated herein. You may not assign your rights or obligations granted under
this License without the prior written consent of Nero. None of the provisions
of this License shall be deemed to have been waived by any act on the part of
Nero, but only by an instrument in writing signed by an authorized signatory of
Nero.
If any provision of this agreement is held to be unenforceable for any reason,
such provision will be reformed only to the extent necessary to make it
enforceable, and such decision will not affect the enforceability
(i)  of such provision under other circumstances, or
(ii) of the remaining provisions hereof under all circumstances.
The failure of either party to enforce any of the provisions hereof will not be
construed to be a waiver of the right of such party thereafter to enforce such
provisions. Any and all remedies herein expressly conferred upon a party will be
deemed cumulative and not exclusive of any remedy conferred hereby or by law,
and the exercise of any one remedy will not preclude the exercise of any other.
Headings will not be considered in interpreting this Agreement.
This License will be governed by and construed in accordance with the
substantive laws in force in the Federal Republic of Germany. The respective law
courts of Karlsruhe, Germany, shall have non-exclusive jurisdiction over all
disputes relating to this License. This License will not be governed by the
conflict of law rules of any jurisdiction or of the United Nations Convention on
contracts for the International Sale of Goods, the application of which is
expressly excluded.


Copyright 2009 Nero AG. All rights reserved.
