 Copyright (C) 2000, Daniel Stenberg, <daniel@haxx.se>, et al.

 Everyone is permitted to copy and distribute verbatim copies of this license
 document, but changing it is not allowed.

 In order to be useful for every potential user, the curl and libcurl are
 dual-licensed under the MPL and the MIT/X-derivate licenses.

 You may opt to use, copy, modify, merge, publish, distribute and/or sell
 copies of the Software, and permit persons to whom the Software is furnished
 to do so, under the terms of the MPL or the MIT/X-derivate licenses. You may
 pick one of these licenses. The files MITX.txt and MPL-1.1.txt contain the
 license texts.

 As a courtesy to the open-source and free software community, we ask you to
 dual-license any modifications that you make as well, under the terms of this
 document.

 Please remember to always keep the licensing information included in
 individual source files up-to-date, so as to avoid misleading anyone as to
 the status of these files.

 I will use a submission policy according to which I will only enter
 contributions into the CVS tree if the contributor agrees to both licenses
 and this dual-license approach.
