Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
this list of conditions, the following disclaimer, and acknowledgements.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions, the following disclaimer, and acknowledgements in
the documentation and/or other materials provided with the distribution.

3. Neither the name of the Open Knights, this project nor the names
of its contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

DISCLAIMER:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.

Acknowledgement of Bioware's Contribution and Intellectual Property:
This program and material is intended to examine, produce or modify data
structures which may be used by Bioware's Neverwinter Nights programs.
Inputs to this program may include data produced by Bioware or its partners
as part of the Neverwinter Nights product or its expansions and sequals.
When the output data structures from this program are so used and/or are made
with such inputs, then the terms of the Bioware Neverwinter Nights End User
License Agreements governing the production and use of such data structures
still apply.
