Release libpng version 1.6.36

This commit is contained in:
Cosmin Truta 2018-12-01 09:36:00 -05:00
parent e79085a172
commit eddf902320
20 changed files with 153 additions and 107 deletions

View File

@ -1,52 +1,77 @@
Libpng 1.6.36.git
This is a development version, not intended to be a public release.
It will be replaced by a public release, or by another development
version, at a later time.
Libpng 1.6.35 - July 15, 2018
libpng 1.6.36 - December 1, 2018
================================
This is a public release of libpng, intended for use in production code.
Files available for download:
Files available for download
----------------------------
Source files with LF line endings (for Unix/Linux):
libpng-1.6.35.tar.xz (LZMA-compressed, recommended)
libpng-1.6.35.tar.gz
* libpng-1.6.36.tar.xz (LZMA-compressed, recommended)
* libpng-1.6.36.tar.gz
Source files with CRLF line endings (for Windows):
lp1635.7z (LZMA-compressed, recommended)
lp1635.zip
* lp1636.7z (LZMA-compressed, recommended)
* lp1636.zip
Other information:
libpng-1.6.35-README.txt
libpng-1.6.35-LICENSE.txt
* README.md
* LICENSE.md
* AUTHORS.md
* TRADEMARK.md
Changes since the previous public release (1.6.34):
Restored 21 of the contrib/pngsuite/i*.png, which do not cause test
failures. Placed the remainder in contrib/pngsuite/interlaced/i*.png.
Added calls to png_set_*() transforms commonly used by browsers to
the fuzzer.
Removed some unnecessary brackets in pngrtran.c
Fixed miscellaneous typos (Patch by github user "luzpaz").
Change "ASM C" to "C ASM" in CMakeLists.txt
Fixed incorrect handling of bKGD chunk in sub-8-bit files (Cosmin)
Added hardware optimization directories to zip and 7z distributions.
Fixed incorrect bitmask for options.
Fixed many spelling typos.
Make png_get_iCCP consistent with man page (allow compression-type argument
to be NULL, bug report by Lenard Szolnoki).
Replaced the remaining uses of png_size_t with size_t (Cosmin)
Fixed the calculation of row_factor in png_check_chunk_length
(reported by Thuan Pham in SourceForge issue #278)
Added missing parentheses to a macro definition
(suggested by "irwir" in GitHub issue #216)
IMPORTANT licensing update: libpng license v2
---------------------------------------------
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
The new libpng license comprises the terms and conditions from the zlib
license, and the disclaimer from the Boost license.
The legacy libpng license, used until libpng-1.6.35, is appended to the
new license, following the precedent established in the Python Software
Foundation License version 2.
From now on, the list of contributing authors shall be maintained in a
separate AUTHORS file. The lists of previous contributing authors,
mentioned in the legacy libpng license and considered to be an integral
part of that license, are kept intact, with no further updates.
Changes since the previous public release (version 1.6.35)
----------------------------------------------------------
* Optimized png_do_expand_palette for ARM processors.
Improved performance by around 10-22% on a recent ARM Chromebook.
(Contributed by Richard Townsend, ARM Holdings)
* Fixed manipulation of machine-specific optimization options.
(Contributed by Vicki Pfau)
* Used memcpy instead of manual pointer arithmetic on Intel SSE2.
(Contributed by Samuel Williams)
* Fixed build errors with MSVC on ARM64.
(Contributed by Zhijie Liang)
* Fixed detection of libm in CMakeLists.
(Contributed by Cameron Cawley)
* Fixed incorrect creation of pkg-config file in CMakeLists.
(Contributed by Kyle Bentley)
* Fixed the CMake build on Windows MSYS by avoiding symlinks.
* Fixed a build warning on OpenBSD.
(Contributed by Theo Buehler)
* Fixed various typos in comments.
(Contributed by "luz.paz")
* Raised the minimum required CMake version from 3.0.2 to 3.1.
* Removed yet more of the vestigial support for pre-ANSI C compilers.
* Removed ancient makefiles for ancient systems that have been broken
across all previous libpng-1.6.x versions.
* Removed the Y2K compliance statement and the export control
information.
* Applied various code style and documentation fixes.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net.
Subscription is required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe).
to subscribe.

28
CHANGES
View File

@ -6063,8 +6063,32 @@ Version 1.6.35 [July 15, 2018]
Added missing parentheses to a macro definition
(suggested by "irwir" in GitHub issue #216)
Version 1.6.36
[TODO]
Version 1.6.36 [December 1, 2018]
Optimized png_do_expand_palette for ARM processors.
Improved performance by around 10-22% on a recent ARM Chromebook.
(Contributed by Richard Townsend, ARM Holdings)
Fixed manipulation of machine-specific optimization options.
(Contributed by Vicki Pfau)
Used memcpy instead of manual pointer arithmetic on Intel SSE2.
(Contributed by Samuel Williams)
Fixed build errors with MSVC on ARM64.
(Contributed by Zhijie Liang)
Fixed detection of libm in CMakeLists.
(Contributed by Cameron Cawley)
Fixed incorrect creation of pkg-config file in CMakeLists.
(Contributed by Kyle Bentley)
Fixed the CMake build on Windows MSYS by avoiding symlinks.
Fixed a build warning on OpenBSD.
(Contributed by Theo Buehler)
Fixed various typos in comments.
(Contributed by "luz.paz")
Raised the minimum required CMake version from 3.0.2 to 3.1.
Removed yet more of the vestigial support for pre-ANSI C compilers.
Removed ancient makefiles for ancient systems that have been broken
across all previous libpng-1.6.x versions.
Removed the Y2K compliance statement and the export control
information.
Applied various code style and documentation fixes.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit

View File

@ -838,7 +838,7 @@ endif()
# SET UP LINKS
if(PNG_SHARED)
set_target_properties(png PROPERTIES
# VERSION 16.${PNGLIB_RELEASE}.1.6.36.git
# VERSION 16.${PNGLIB_RELEASE}.1.6.36
VERSION 16.${PNGLIB_RELEASE}.0
SOVERSION 16
CLEAN_DIRECT_OUTPUT 1)

View File

@ -1,8 +1,3 @@
This copy of the libpng notices is provided for your convenience.
In case of any discrepancy between this copy and the notices in the
file png.h that is included in the libpng distribution, the latter
shall prevail.
COPYRIGHT NOTICE, DISCLAIMER, and LICENSE
=========================================

View File

@ -148,7 +148,7 @@ pkgconfig_DATA = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc
# from those directories being included. This only works if the configure is
# not done in the source directory!
EXTRA_DIST= \
ANNOUNCE CHANGES INSTALL LICENSE README TODO \
ANNOUNCE AUTHORS CHANGES INSTALL LICENSE README TODO TRADEMARK \
pngtest.png pngbar.png pngnow.png pngbar.jpg autogen.sh \
${srcdir}/contrib ${srcdir}/projects ${srcdir}/scripts \
$(TESTS) $(XFAIL_TESTS) tests/pngstest \

View File

@ -534,7 +534,7 @@ TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
$(TEST_LOG_FLAGS)
am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \
$(srcdir)/config.h.in $(srcdir)/libpng-config.in \
$(srcdir)/libpng.pc.in INSTALL README TODO compile \
$(srcdir)/libpng.pc.in AUTHORS INSTALL README TODO compile \
config.guess config.sub depcomp install-sh ltmain.sh missing \
test-driver
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@ -784,7 +784,7 @@ pkgconfig_DATA = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc
# from those directories being included. This only works if the configure is
# not done in the source directory!
EXTRA_DIST = \
ANNOUNCE CHANGES INSTALL LICENSE README TODO \
ANNOUNCE AUTHORS CHANGES INSTALL LICENSE README TODO TRADEMARK \
pngtest.png pngbar.png pngnow.png pngbar.jpg autogen.sh \
${srcdir}/contrib ${srcdir}/projects ${srcdir}/scripts \
$(TESTS) $(XFAIL_TESTS) tests/pngstest \

31
README
View File

@ -1,4 +1,5 @@
README for libpng version 1.6.36.git.
README for libpng version 1.6.36 - December 1, 2018
===================================================
See the note about version numbers near the top of png.h.
See INSTALL for instructions on how to install libpng.
@ -89,9 +90,9 @@ these at http://www.libpng.org/pub/png/pngdocs.html .
This code is currently being archived at libpng.sourceforge.io in the
[DOWNLOAD] area, and at http://libpng.download/src .
This release was created and will be supported by myself (of course
based in a large way on Glenn's, Guy's and Andreas' earlier work), and
the PNG development group.
This release, based in a large way on Glenn's, Guy's and Andreas'
earlier work, was created and will be supported by myself and the PNG
development group.
Send comments/corrections/commendations to png-mng-implement at
lists.sourceforge.net (subscription required; visit
@ -106,11 +107,13 @@ subscribe).
Files in this distribution:
ANNOUNCE => Announcement of this version, with recent changes
AUTHORS => List of contributing authors
CHANGES => Description of changes between libpng versions
KNOWNBUG => List of known bugs and deficiencies
LICENSE => License to use and redistribute libpng
README => This file
TODO => Things not implemented in the current library
TRADEMARK => Trademark information
example.c => Example code for using libpng functions
libpng.3 => manual page for libpng (includes libpng-manual.txt)
libpng-manual.txt => Description of libpng and its functions
@ -171,18 +174,10 @@ Files in this distribution:
scripts => Directory containing scripts for building libpng:
(see scripts/README.txt for the list of scripts)
Good luck, and happy coding.
Good luck, and happy coding!
* Cosmin Truta (current maintainer, since 2018)
Email: cosmin at users.sourceforge.net
* Glenn Randers-Pehrson (former maintainer, 1998-2018)
Email: glennrp at users.sourceforge.net
* Andreas Eric Dilger (former maintainer, 1996-1997)
Email: adilger at enel.ucalgary.ca
Web: http://www-mddsp.enel.ucalgary.ca/People/adilger/
* Guy Eric Schalnat (original author and former maintainer, 1995-1996)
(formerly of Group 42, Inc)
Email: gschal at infinet.com
* Cosmin Truta (current maintainer, since 2018)
* Glenn Randers-Pehrson (former maintainer, 1998-2018)
* Andreas Eric Dilger (former maintainer, 1996-1997)
* Guy Eric Schalnat (original author and former maintainer, 1995-1996)
(formerly of Group 42, Inc.)

22
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for libpng 1.6.36.git.
# Generated by GNU Autoconf 2.69 for libpng 1.6.36.
#
# Report bugs to <png-mng-implement@lists.sourceforge.net>.
#
@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libpng'
PACKAGE_TARNAME='libpng'
PACKAGE_VERSION='1.6.36.git'
PACKAGE_STRING='libpng 1.6.36.git'
PACKAGE_VERSION='1.6.36'
PACKAGE_STRING='libpng 1.6.36'
PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net'
PACKAGE_URL=''
@ -1372,7 +1372,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures libpng 1.6.36.git to adapt to many kinds of systems.
\`configure' configures libpng 1.6.36 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1442,7 +1442,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of libpng 1.6.36.git:";;
short | recursive ) echo "Configuration of libpng 1.6.36:";;
esac
cat <<\_ACEOF
@ -1622,7 +1622,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
libpng configure 1.6.36.git
libpng configure 1.6.36
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -1954,7 +1954,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by libpng $as_me 1.6.36.git, which was
It was created by libpng $as_me 1.6.36, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2825,7 +2825,7 @@ fi
# Define the identity of the package.
PACKAGE='libpng'
VERSION='1.6.36.git'
VERSION='1.6.36'
cat >>confdefs.h <<_ACEOF
@ -2946,7 +2946,7 @@ fi
PNGLIB_VERSION=1.6.36.git
PNGLIB_VERSION=1.6.36
PNGLIB_MAJOR=1
PNGLIB_MINOR=6
PNGLIB_RELEASE=36
@ -14354,7 +14354,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by libpng $as_me 1.6.36.git, which was
This file was extended by libpng $as_me 1.6.36, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -14420,7 +14420,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
libpng config.status 1.6.36.git
libpng config.status 1.6.36
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View File

@ -25,7 +25,7 @@ AC_PREREQ([2.68])
dnl Version number stuff here:
AC_INIT([libpng],[1.6.36.git],[png-mng-implement@lists.sourceforge.net])
AC_INIT([libpng],[1.6.36],[png-mng-implement@lists.sourceforge.net])
AC_CONFIG_MACRO_DIR([scripts])
# libpng does not follow GNU file name conventions (hence 'foreign')
@ -46,7 +46,7 @@ dnl automake, so the following is not necessary (and is not defined anyway):
dnl AM_PREREQ([1.11.2])
dnl stop configure from automagically running automake
PNGLIB_VERSION=1.6.36.git
PNGLIB_VERSION=1.6.36
PNGLIB_MAJOR=1
PNGLIB_MINOR=6
PNGLIB_RELEASE=36

View File

@ -9,6 +9,10 @@ libpng-manual.txt - A description on how to use and modify libpng
Based on:
libpng version 1.6.36 - December 1, 2018
Updated and distributed by Cosmin Truta
Copyright (c) 2018 Cosmin Truta
libpng versions 0.97, January 1998, through 1.6.35 - July 15, 2018
Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2018 Glenn Randers-Pehrson
@ -63,7 +67,7 @@ file format in application programs.
The PNG specification (second edition), November 2003, is available as
a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2004 (E)) at
<https://www.w3.org/TR/2003/REC-PNG-20031110/
<https://www.w3.org/TR/2003/REC-PNG-20031110/>.
The W3C and ISO documents have identical technical content.
The PNG-1.2 specification is available at
@ -71,9 +75,9 @@ The PNG-1.2 specification is available at
It is technically equivalent
to the PNG specification (second edition) but has some additional material.
The PNG-1.0 specification is available as RFC 2083
The PNG-1.0 specification is available as RFC 2083 at
<https://png-mng.sourceforge.io/pub/png/spec/1.0/> and as a
W3C Recommendation <https://www.w3.org/TR/REC-png-961001>.
W3C Recommendation at <https://www.w3.org/TR/REC-png-961001>.
Some additional chunks are described in the special-purpose public chunks
documents at <http://www.libpng.org/pub/png/spec/register/>

View File

@ -1,6 +1,6 @@
.TH LIBPNG 3 "2018-Jul-29"
.TH LIBPNG 3 "December 1, 2018"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.36.git
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.36
.SH SYNOPSIS
\fB#include <png.h>\fP
@ -528,6 +528,10 @@ libpng-manual.txt - A description on how to use and modify libpng
Based on:
libpng version 1.6.36 - December 1, 2018
Updated and distributed by Cosmin Truta
Copyright (c) 2018 Cosmin Truta
libpng versions 0.97, January 1998, through 1.6.35 - July 15, 2018
Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2018 Glenn Randers-Pehrson
@ -582,7 +586,7 @@ file format in application programs.
The PNG specification (second edition), November 2003, is available as
a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2004 (E)) at
<https://www.w3.org/TR/2003/REC-PNG-20031110/
<https://www.w3.org/TR/2003/REC-PNG-20031110/>.
The W3C and ISO documents have identical technical content.
The PNG-1.2 specification is available at
@ -590,9 +594,9 @@ The PNG-1.2 specification is available at
It is technically equivalent
to the PNG specification (second edition) but has some additional material.
The PNG-1.0 specification is available as RFC 2083
The PNG-1.0 specification is available as RFC 2083 at
<https://png-mng.sourceforge.io/pub/png/spec/1.0/> and as a
W3C Recommendation <https://www.w3.org/TR/REC-png-961001>.
W3C Recommendation at <https://www.w3.org/TR/REC-png-961001>.
Some additional chunks are described in the special-purpose public chunks
documents at <http://www.libpng.org/pub/png/spec/register/>

View File

@ -1,6 +1,6 @@
.TH LIBPNGPF 3 "2018-Jul-29"
.TH LIBPNGPF 3 "December 1, 2018"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.36.git
libpng \- Portable Network Graphics (PNG) Reference Library 1.6.36
(private functions)
.SH SYNOPSIS

2
png.5
View File

@ -1,4 +1,4 @@
.TH PNG 5 "2018-Jul-29"
.TH PNG 5 "December 1, 2018"
.SH NAME
png \- Portable Network Graphics (PNG) format

4
png.c
View File

@ -14,7 +14,7 @@
#include "pngpriv.h"
/* Generate a compiler error if there is an old png.h in the search path. */
typedef png_libpng_version_1_6_36_git Your_png_h_is_not_version_1_6_36_git;
typedef png_libpng_version_1_6_36 Your_png_h_is_not_version_1_6_36;
#ifdef __GNUC__
/* The version tests may need to be added to, but the problem warning has
@ -815,7 +815,7 @@ png_get_copyright(png_const_structrp png_ptr)
return PNG_STRING_COPYRIGHT
#else
return PNG_STRING_NEWLINE \
"libpng version 1.6.36.git" PNG_STRING_NEWLINE \
"libpng version 1.6.36" PNG_STRING_NEWLINE \
"Copyright (c) 2018 Cosmin Truta" PNG_STRING_NEWLINE \
"Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson" \
PNG_STRING_NEWLINE \

19
png.h
View File

@ -1,7 +1,7 @@
/* png.h - header file for PNG reference library
*
* libpng version 1.6.36.git
* libpng version 1.6.36 - December 1, 2018
*
* Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
@ -13,8 +13,9 @@
* Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
* libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger
* libpng versions 0.97, January 1998, through 1.6.35, July 15, 2018:
* libpng versions 0.97, January 1998, through 1.6.35, July 2018:
* Glenn Randers-Pehrson.
* libpng version 1.6.36, December 1, 2018: Cosmin Truta
* See also "Contributing Authors", below.
*/
@ -237,7 +238,7 @@
* ...
* 1.5.30 15 10530 15.so.15.30[.0]
* ...
* 1.6.35 16 10635 16.so.16.35[.0]
* 1.6.36 16 10636 16.so.16.36[.0]
*
* Henceforth the source version will match the shared-library major and
* minor numbers; the shared-library major version number will be used for
@ -257,7 +258,7 @@
* in binary compatibility (e.g., when a new feature is added).
*
* See libpng.txt or libpng.3 for more information. The PNG specification
* is available as a W3C Recommendation and as an ISO Specification,
* is available as a W3C Recommendation and as an ISO/IEC Standard; see
* <https://www.w3.org/TR/2003/REC-PNG-20031110/>
*/
@ -276,8 +277,8 @@
*/
/* Version information for png.h - this should match the version in png.c */
#define PNG_LIBPNG_VER_STRING "1.6.36.git"
#define PNG_HEADER_VERSION_STRING " libpng version 1.6.36.git\n"
#define PNG_LIBPNG_VER_STRING "1.6.36"
#define PNG_HEADER_VERSION_STRING " libpng version 1.6.36 - December 1, 2018\n"
#define PNG_LIBPNG_VER_SONUM 16
#define PNG_LIBPNG_VER_DLLNUM 16
@ -291,7 +292,7 @@
* PNG_LIBPNG_VER_STRING, omitting any leading zero:
*/
#define PNG_LIBPNG_VER_BUILD 02
#define PNG_LIBPNG_VER_BUILD 0
/* Release Status */
#define PNG_LIBPNG_BUILD_ALPHA 1
@ -308,7 +309,7 @@
#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with
PNG_LIBPNG_BUILD_PRIVATE */
#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_BETA
#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE
/* Careful here. At one time, Guy wanted to use 082, but that
* would be octal. We must not include leading zeros.
@ -427,7 +428,7 @@ extern "C" {
/* This triggers a compiler error in png.c, if png.c and png.h
* do not agree upon the version number.
*/
typedef char* png_libpng_version_1_6_36_git;
typedef char* png_libpng_version_1_6_36;
/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info.
*

View File

@ -1,7 +1,7 @@
/* pngconf.h - machine configurable file for libpng
*
* libpng version 1.6.36.git
* libpng version 1.6.36
*
* Copyright (c) 2018 Cosmin Truta
* Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson

View File

@ -2153,4 +2153,4 @@ main(void)
#endif
/* Generate a compiler error if there is an old png.h in the search path. */
typedef png_libpng_version_1_6_36_git Your_png_h_is_not_version_1_6_36_git;
typedef png_libpng_version_1_6_36 Your_png_h_is_not_version_1_6_36;

View File

@ -11,7 +11,7 @@
# Modeled after libxml-config.
version=1.6.36.git
version=1.6.36
prefix=""
libdir=""
libs=""

View File

@ -5,6 +5,6 @@ includedir=@includedir@/libpng16
Name: libpng
Description: Loads and saves PNG files
Version: 1.6.36.git
Version: 1.6.36
Libs: -L${libdir} -lpng16
Cflags: -I${includedir}

View File

@ -1,8 +1,6 @@
/* libpng 1.6.36.git STANDARD API DEFINITION */
/* pnglibconf.h - library build configuration */
/* libpng version 1.6.36.git */
/* libpng version 1.6.36 */
/* Copyright (c) 2018 Cosmin Truta */
/* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */