{{define "bsd-start"}}
	Redistribution and use
	((of
		((this software || __5__))
	))??
	in source and binary forms
	((of __6__))??
	with or
	((without))??
	modification,
	are permitted
	((subject to the limitations in the disclaimer below))??
	((provided || providing))
	that
	((the))??
	following conditions are met:
	((BSD style license))??
{{end}}

{{define "bsd-clause-1"}}
	__1__
	((Redistribution || Redistributions))
	of
	((source code || works))
	must retain the
	((above))??
	((original))??
	copyright
	((notice))??
	((immediately at the beginning of the file, without modification))??
	this
	((list of conditions || condition))
	and the
	((following
		((two paragraphs of))??
		disclaimer
	|| disclaimer that follows))
	((in this position and unchanged))??
{{end}}

{{define "bsd-clause-2"}}
	__1__
	((Redistribution || Redistributions))
	in binary form must reproduce the
	((above))??
	((original))??
	copyright
	((notice))??
	this list of conditions and the
	following
	((two pargraphs of))??
	disclaimer
	((listed in this license))??
	in the documentation
	((and/or || and || or))
	other materials provided with the distribution.
{{end}}

{{define "bsd-clause-3"}}
	__1__
	((Neither || None || Names || The names || The name))
	__40__ used to endorse
	or promote
	products derived
	((from this || fromthis))
	((software || work))
	without specific
	prior written permission
	((
		((of || from))
		__10__
	))??
{{end}}

{{define "bsd-clause-3-and-4"}}
	__1__
	All advertising materials mentioning features or use of this software
	must display the following acknowledgement:

	This product includes software developed by
	__40__

	be used to endorse
	or promote products derived from this software without specific
	prior written permission.
{{end}}

{{define "bsd-clause-3-and-4-disclaimer-uc"}}
	__1__
	All advertising materials mentioning features or use of this software
	must display the following acknowledgement:

	This product includes software developed by
	the University of California, Berkeley and its contributors.

	__1__
	Neither the name of the University nor the names of its contributors
	may be used to endorse
	or promote products derived from this software without specific
	prior written permission.

	THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
{{end}}

{{define "bsd-clause-attrib"}}
	__1__
	Redistributions of any form whatsoever must retain the following
	acknowledgment:
	This product includes software developed by __40__
{{end}}

{{define "bsd-no-trademark"}}
	No license is granted to the trademarks of
	the copyright holders even if such marks
	are included in this software.
{{end}}

{{define "bsd-clear"}}
	NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S
	PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
{{end}}

{{define "bsd-patent-grant"}}
	Subject to the terms and conditions of this license, each copyright holder and
	contributor hereby grants to those receiving rights under this license a
	perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
	(except for failure to satisfy the conditions of this license) patent license to
	make, have made, use, offer to sell, sell, import, and otherwise transfer this
	software, where such license applies only to those patent claims, already
	acquired or hereafter acquired, licensable by such copyright holder or
	contributor that are necessarily infringed by:

	   __1__ their Contribution(s) (the licensed copyrights of copyright holders and
	   non-copyrightable additions of contributors, in source or binary form) alone;
	   or

	   __1__ combination of their Contribution(s) with the work of authorship to
	   which such Contribution(s) was added by such copyright holder or contributor,
	   if, at the time the Contribution is added, such addition causes such
	   combination to be necessarily infringed. The patent license shall not apply
	   to any other combinations which include the Contribution.

	Except as expressly stated above, no rights or licenses from any copyright
	holder or contributor is granted under this license, whether expressly, by
	implication, estoppel or otherwise.
{{end}}

{{define "bsd-disclaimer"}}
	((DISCLAIMER
	))??

	((
		THE
		((SOFTWARE || WORK))
		((AND DOCUMENTATION))??
		IS PROVIDED
		((BY __20__))??
		"AS IS"
		((
			((WITHOUT ANY WARRANTIES WHATSOEVER))??
			((AND))??
			ANY
			((EXPRESS || EXPRESSED))
			OR IMPLIED WARRANTIES,
			INCLUDING, BUT NOT LIMITED TO,
			THE IMPLIED WARRANTIES
			((OF || OR))
			((NONINFRINGEMENT))??
			((MERCHANTABILITY))??
			((AND))??
			FITNESS FOR A PARTICULAR PURPOSE
			((OR NONINFRINGEMENT))??
			ARE
			((EXPRESSLY AND SPECIFICALLY))??
			((HEREBY))??
			DISCLAIMED.
		||
			//** Alternate form in libpcap, which also omits the IN NO EVENT paragraph. **//
			AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
			INCLUDING, WITHOUT LIMITATION,
			THE IMPLIED WARRANTIES OF MERCHANTABILTY
			AND FITNESS FOR A PARTICULAR PURPOSE.
		))

		((
			IN NO EVENT SHALL __20__ 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 || WORK))
				((AND DOCUMENTATION))??
				EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
			))??
		))??

	||

		//**
		Alternate form found in some recent University of California releases.
		**//
		IN NO EVENT SHALL __20__ BE LIABLE
		TO ANY PARTY FOR DIRECT, INDIRECT,
		SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
		ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
		__20__ HAS BEEN ADVISED
		OF THE POSSIBILITY OF SUCH DAMAGE.

		__20__ SPECIFICALLY DISCLAIMS
		ANY WARRANTIES, INCLUDING, BUT NOT
		LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
		A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF
		ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS"
		__20__ HAS NO OBLIGATION
		TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
		MODIFICATIONS.
	))

{{end}}

{{define "bsd-views"}}
	The views and conclusions contained in the software and documentation are those
	of the authors and should not be interpreted as representing official policies,
	either expressed or implied, of
	((The FreeBSD Project || the copyright holders or contributors))??
{{end}}


{{define "BSD-1-Clause.lre"}}
//**
BSD 1-Clause License
https://spdx.org/licenses/BSD-1-Clause.json
https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision=326823
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-disclaimer"}}
{{end}}

{{define "BSD-Source-Code.lre"}}
//**
BSD 1-Clause License plus non-advertising clause (usual BSD clause #3)
https://spdx.org/licenses/BSD-Source-Code.json

Examples:
	https://github.com/robbiehanson/XMPPFramework/blob/5f24033e/copying.txt
	https://github.com/yapstudios/YapDatabase/blob/e3df69f2/LICENSE.txt
	https://github.com/robbiehanson/CocoaHTTPServer/blob/cb86571a/LICENSE.txt
	https://github.com/skelterjohn/rerun/blob/eb5929af/LICENSE
	https://github.com/skelterjohn/go.matrix/blob/go1/LICENSE
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-3"}}
{{template "bsd-disclaimer"}}
{{end}}

{{define "BSD-2-Clause.lre"}}
//**
BSD 2-Clause "Simplified" License
https://spdx.org/licenses/BSD-2-Clause.json
https://opensource.org/licenses/BSD-2-Clause
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-2"}}
{{template "bsd-disclaimer"}}
{{end}}

{{define "BSD-2-Clause-Views.lre"}}
//**
BSD 2-Clause Views
https://spdx.org/licenses/BSD-2-Clause-Views.json
http://www.freebsd.org/copyright/freebsd-license.html

This is the same as the BSD-2-Clause plus a paragraph
about the views of the project. It has no effect on use of
the software, so we just merge these two together.
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-2"}}
{{template "bsd-disclaimer"}}
{{template "bsd-views"}}
{{end}}

{{define "BSD-2-Clause-Patent.lre"}}
//**
BSD-2-Clause Plus Patent License
https://spdx.org/licenses/BSD-2-Clause-Patent.json
https://opensource.org/licenses/BSDplusPatent
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-2"}}
{{template "bsd-patent-grant"}}
{{template "bsd-disclaimer"}}
{{end}}

{{define "BSD-3-Clause.lre"}}
//**
BSD 3-Clause "New" or "Revised" License
https://spdx.org/licenses/BSD-3-Clause.json
https://opensource.org/licenses/BSD-3-Clause
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-2"}}
{{template "bsd-clause-3"}}
((   //** github.com/PointCoin/btcec@v0.0.0-20150217011644-8f70ee2b3691 **//
    {{template "bsd-clause-3"}}
))??
{{template "bsd-disclaimer"}}
{{end}}

{{define "BSD-3-Clause-Clear.lre"}}
//**
BSD 3-Clause Clear License
https://spdx.org/licenses/BSD-3-Clause-Clear.json
http://labs.metacarta.com/license-explanation.html#license
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-2"}}
{{template "bsd-clause-3"}}
{{template "bsd-clear"}}
{{template "bsd-disclaimer"}}
{{end}}

{{define "BSD-3-Clause-NoTrademark.lre"}}
//**
BSD 3-Clause + no-trademark, like Clear is no-patent.
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-2"}}
{{template "bsd-clause-3"}}
{{template "bsd-no-trademark"}}
{{template "bsd-disclaimer"}}
{{end}}


{{define "BSD-1-Clause-Clear.lre"}}
//**
Not known to SPDX - BSD-3-Clause-Clear with only 1 Clause
Example:
	https://github.com/spate/glimage
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clear"}}
{{template "bsd-disclaimer"}}
{{end}}

{{define "BSD-4-Clause.lre"}}
//**
BSD 4-Clause "Original" or "Old" License
https://spdx.org/licenses/BSD-4-Clause.json
http://directory.fsf.org/wiki/License:BSD_4Clause
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-2"}}
{{template "bsd-clause-3-and-4"}}
{{template "bsd-disclaimer"}}
{{end}}

{{define "BSD-4-Clause-UC.lre"}}
//**
BSD 4-Clause (University of California-Specific)
https://spdx.org/licenses/BSD-4-Clause-UC.json
http://www.freebsd.org/copyright/license.html
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-2"}}
{{template "bsd-clause-3-and-4-disclaimer-uc"}}
{{end}}


{{define "BSD-3-Clause-Attribution.lre"}}
//**
BSD with attribution
https://spdx.org/licenses/BSD-3-Clause-Attribution.json
https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-2"}}
{{template "bsd-clause-3"}}
{{template "bsd-clause-attrib"}}
{{template "bsd-disclaimer"}}
{{end}}

{{define "BSD-3-Clause-LBNL.lre"}}
//**
Lawrence Berkeley National Labs BSD variant license
https://spdx.org/licenses/BSD-3-Clause-LBNL.json
https://fedoraproject.org/wiki/Licensing/LBNLBSD
**//
{{template "BSD-3-Clause.lre"}}

You are under no obligation whatsoever to provide any bug fixes, patches, or
upgrades to the features, functionality or performance of the source code
("Enhancements") to anyone; however, if you choose to make your Enhancements
available either publicly, or directly to __5__ , without imposing a separate
written license agreement for such Enhancements, then you hereby grant the
following license: a non-exclusive, royalty-free perpetual license to install,
use, modify, prepare derivative works, incorporate into other computer software,
distribute, and sublicense such Enhancements or derivative works thereof, in
binary and source code form.
{{end}}

{{define "BSD-3-Clause-No-Nuclear-License-2014.lre"}}
//**
BSD 3-Clause No Nuclear License 2014
https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json
https://java.net/projects/javaeetutorial/pages/BerkeleyLicense
**//
{{template "BSD-3-Clause.lre"}}
You acknowledge that this software is not designed, licensed or intended for use
in the design, construction, operation or maintenance of any nuclear facility.
{{end}}

{{define "bsd-sun-nuclear"}}
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-2"}}
{{template "bsd-clause-3"}}

This software is provided "AS IS," without a warranty of any kind. ALL EXPRESS
OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED
WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS
LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT
OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO
EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,
HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE
OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

You acknowledge that this software is not designed, {{$}} or intended for use
in the design, construction, operation or maintenance of any nuclear facility.
{{end}}

{{define "BSD-3-Clause-No-Nuclear-License.lre"}}
//**
BSD 3-Clause No Nuclear License
https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json
http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam=1467140197_43d516ce1776bd08a58235a7785be1cc
**//
{{template "bsd-sun-nuclear" "licensed"}}
{{end}}

{{define "BSD-3-Clause-No-Nuclear-Warranty.lre"}}
//**
BSD 3-Clause No Nuclear License
https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json
http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam=1467140197_43d516ce1776bd08a58235a7785be1cc
**//
{{template "bsd-sun-nuclear" ""}}
{{end}}

{{define "BSD-3-Clause-Open-MPI.lre"}}
//**
BSD 3-Clause Open MPI variant
https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json
https://www.open-mpi.org/community/license.php
http://www.netlib.org/lapack/LICENSE.txt
**//
{{template "bsd-start"}}
{{template "bsd-clause-1"}}
{{template "bsd-clause-2"}}
{{template "bsd-clause-3"}}

The copyright holders provide no reassurances that the source code provided does
not infringe any patent, copyright, or any other intellectual property rights of
third parties. The copyright holders disclaim any liability to any recipient for
claims brought against recipient by any third party for infringement of that
parties intellectual property rights.

{{template "bsd-disclaimer"}}
{{end}}
