From edbd0a5360675e2215097c5955a56c75c613d6ca Mon Sep 17 00:00:00 2001
From: Gordon Tetlow <gordon@FreeBSD.org>
Date: Wed, 3 Jul 2019 00:30:17 +0000
Subject: [PATCH] Add EN-19:12 and SA-19:09 to SA-19:11

Approved by:	so
---
 .../advisories/FreeBSD-EN-19:12.tzdata.asc    |  148 +
 .../advisories/FreeBSD-SA-19:09.iconv.asc     |  134 +
 .../advisories/FreeBSD-SA-19:10.ufs.asc       |  153 +
 .../advisories/FreeBSD-SA-19:11.cd_ioctl.asc  |  147 +
 .../patches/EN-19:12/tzdata-2019b.patch       | 3069 +++++++++++++++++
 .../patches/EN-19:12/tzdata-2019b.patch.asc   |   18 +
 share/security/patches/SA-19:09/iconv.patch   |   11 +
 .../security/patches/SA-19:09/iconv.patch.asc |   18 +
 share/security/patches/SA-19:10/ufs.11.patch  |  311 ++
 .../patches/SA-19:10/ufs.11.patch.asc         |   18 +
 share/security/patches/SA-19:10/ufs.12.patch  |  311 ++
 .../patches/SA-19:10/ufs.12.patch.asc         |   18 +
 .../patches/SA-19:11/cd_ioctl.11.patch        |  184 +
 .../patches/SA-19:11/cd_ioctl.11.patch.asc    |   18 +
 .../patches/SA-19:11/cd_ioctl.12.patch        |   92 +
 .../patches/SA-19:11/cd_ioctl.12.patch.asc    |   18 +
 share/xml/advisories.xml                      |   22 +
 share/xml/notices.xml                         |   13 +
 18 files changed, 4703 insertions(+)
 create mode 100644 share/security/advisories/FreeBSD-EN-19:12.tzdata.asc
 create mode 100644 share/security/advisories/FreeBSD-SA-19:09.iconv.asc
 create mode 100644 share/security/advisories/FreeBSD-SA-19:10.ufs.asc
 create mode 100644 share/security/advisories/FreeBSD-SA-19:11.cd_ioctl.asc
 create mode 100644 share/security/patches/EN-19:12/tzdata-2019b.patch
 create mode 100644 share/security/patches/EN-19:12/tzdata-2019b.patch.asc
 create mode 100644 share/security/patches/SA-19:09/iconv.patch
 create mode 100644 share/security/patches/SA-19:09/iconv.patch.asc
 create mode 100644 share/security/patches/SA-19:10/ufs.11.patch
 create mode 100644 share/security/patches/SA-19:10/ufs.11.patch.asc
 create mode 100644 share/security/patches/SA-19:10/ufs.12.patch
 create mode 100644 share/security/patches/SA-19:10/ufs.12.patch.asc
 create mode 100644 share/security/patches/SA-19:11/cd_ioctl.11.patch
 create mode 100644 share/security/patches/SA-19:11/cd_ioctl.11.patch.asc
 create mode 100644 share/security/patches/SA-19:11/cd_ioctl.12.patch
 create mode 100644 share/security/patches/SA-19:11/cd_ioctl.12.patch.asc

diff --git a/share/security/advisories/FreeBSD-EN-19:12.tzdata.asc b/share/security/advisories/FreeBSD-EN-19:12.tzdata.asc
new file mode 100644
index 0000000000..1181348287
--- /dev/null
+++ b/share/security/advisories/FreeBSD-EN-19:12.tzdata.asc
@@ -0,0 +1,148 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-EN-19:12.tzdata                                         Errata Notice
+                                                          The FreeBSD Project
+
+Topic:          Timezone database information update
+
+Category:       contrib
+Module:         zoneinfo
+Announced:      2019-07-02
+Affects:        All supported versions of FreeBSD.
+Corrected:      2019-07-02 12:22:27 UTC (stable/12, 12.0-STABLE)
+                2019-07-02 23:59:45 UTC (releng/12.0, 12.0-RELEASE-p7)
+                2019-07-02 12:22:54 UTC (stable/11, 11.3-PRERELEASE)
+                2019-07-02 23:59:45 UTC (releng/11.3, 11.3-RC3-p1)
+                2019-07-02 23:59:45 UTC (releng/11.2, 11.2-RELEASE-p11)
+
+For general information regarding FreeBSD Errata Notices and Security
+Advisories, including descriptions of the fields above, security
+branches, and the following sections, please visit
+<URL:https://security.FreeBSD.org/>.
+
+I.   Background
+
+The tzsetup(8) program allows the user to specify the default local timezone.
+Based on the selected timezone, tzsetup(8) copies one of the files from
+/usr/share/zoneinfo to /etc/localtime.  This file actually controls the
+conversion.
+
+II.  Problem Description
+
+Several changes in Daylight Savings Time happened after previous FreeBSD
+releases were released that would affect many people who live in different
+countries.  Because of these changes, the data in the zoneinfo files need to
+be updated, and if the local timezone on the running system is affected,
+tzsetup(8) needs to be run so the /etc/localtime is updated.
+
+III. Impact
+
+An incorrect time will be displayed on a system configured to use one of the
+affected timezones if the /usr/share/zoneinfo and /etc/localtime files are
+not updated, and all applications on the system that rely on the system time,
+such as cron(8) and syslog(8), will be affected.
+
+IV.  Workaround
+
+The system administrator can install an updated timezone database from the
+misc/zoneinfo port and run tzsetup(8) to get the timezone database corrected.
+
+Applications that store and display times in Coordinated Universal Time (UTC)
+are not affected.
+
+V.   Solution
+
+Please note that some third party software, for instance PHP, Ruby, Java and
+Perl, may be using different zoneinfo data source, in such cases this
+software must be updated separately.  For software packages that is installed
+via binary packages, they can be upgraded by executing `pkg upgrade'.
+
+Following the instructions in this Errata Notice will update all of the
+zoneinfo files to be the same as what was released with FreeBSD release.
+
+Perform one of the following:
+
+1) Upgrade your system to a supported FreeBSD stable or release / security
+branch (releng) dated after the correction date.  Restart all the affected
+applications and daemons, or reboot the system.
+
+2) To update your system via a binary patch:
+
+Systems running a RELEASE version of FreeBSD on the i386 or amd64
+platforms can be updated via the freebsd-update(8) utility:
+
+# freebsd-update fetch
+# freebsd-update install
+
+Restart all the affected applications and daemons, or reboot the system.
+
+3) To update your system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+# fetch https://security.FreeBSD.org/patches/EN-19:12/tzdata-2019b.patch
+# fetch https://security.FreeBSD.org/patches/EN-19:12/tzdata-2019b.patch.asc
+# gpg --verify tzdata-2019b.patch.asc
+
+b) Apply the patch.  Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile the operating system using buildworld and installworld as
+described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.
+
+Restart all the affected applications and daemons, or reboot the system.
+
+VI.  Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path                                                      Revision
+- -------------------------------------------------------------------------
+stable/12/                                                        r349597
+releng/12.0/                                                      r349620
+stable/11/                                                        r349598
+releng/11.3/                                                      r349620
+releng/11.2/                                                      r349620
+- -------------------------------------------------------------------------
+
+To see which files were modified by a particular revision, run the
+following command, replacing NNNNNN with the revision number, on a
+machine with Subversion installed:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+The latest revision of this advisory is available at
+<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-19:12.tzdata.asc>
+-----BEGIN PGP SIGNATURE-----
+
+iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAl0b9VZfFIAAAAAALgAo
+aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD
+MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n
+5cKxjRAAjlhQOby/rOVo/+MPrPrdNin5t2MNBOTRawTARwkl4hE6qFirdSHY9/92
+9MI1f6YuQinF32UgEKGkXwDsCSr73NqdNCvZ3BFML8dqp9ij3xN4lQraLyFJLQJq
+gR3Iy8uL0ANjMfveE0PW4bDKuqAp2SZdvl4PNio2ddWOyW5FIbXTYEkhkhIbFn9k
+zjtifmr4KFL+cZ494e4GnLx0epqY7J2l9livGHmAYEPKPuaGMzJn0qA6ac6SwGba
+c1VDcTa3hCICUmZtWekkGa6H2EAVDcn+I7rv+x08afMDASl7CuKGd5dvwO65HHPP
+5cFUKjnB4YKadtONt73rRxSGdkb5XqeOdnhoHdDb8RQaouPJGburedlP/xbvg8b/
+/lL1c4k+Bz1WlNiNoTahPwRTelIg/wzFwdvd4pTmb6DWzmYxPh8SI5hlRJ3dznQG
+h1DVXTWYtDnxIvyL3c8KZjDrsIuP7wmDnHjbB89Dw8hVf+jLVZLWm4DFoz7FfAri
+qhFIAm0izmABttUpNeWmfOs3yVgtYAMCZBXLdj3JJBx/v5S1VpKnXxkcj+rsZV1A
+SczZO7w6BMEMi9HN5tzZqr1OX6H2LXfi7OSYn8fzeUhtXtraP5W9Ds/dWxu1rQna
+Kvv9pF4KP4dq6zo4T/V5VHCT6O9FuP/DnjaHUWLtEYR2sol1GTE=
+=Dl0I
+-----END PGP SIGNATURE-----
diff --git a/share/security/advisories/FreeBSD-SA-19:09.iconv.asc b/share/security/advisories/FreeBSD-SA-19:09.iconv.asc
new file mode 100644
index 0000000000..8cf55348ba
--- /dev/null
+++ b/share/security/advisories/FreeBSD-SA-19:09.iconv.asc
@@ -0,0 +1,134 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-SA-19:09.iconv                                      Security Advisory
+                                                          The FreeBSD Project
+
+Topic:          iconv buffer overflow
+
+Category:       core
+Module:         libc
+Announced:      2019-07-02
+Credits:        Andrea Venturoli <security@netfence.it>, NetFence
+Affects:        All supported versions of FreeBSD.
+Corrected:      2019-07-03 00:01:38 UTC (stable/12, 12.0-STABLE)
+                2019-07-03 00:00:39 UTC (releng/12.0, 12.0-RELEASE-p7)
+                2019-07-03 00:03:14 UTC (stable/11, 11.3-PRERELEASE)
+                2019-07-03 00:00:39 UTC (releng/11.3, 11.3-RC3-p1)
+                2019-07-03 00:00:39 UTC (releng/11.2, 11.2-RELEASE-p11)
+CVE Name:       CVE-2019-5600
+
+For general information regarding FreeBSD Security Advisories,
+including descriptions of the fields above, security branches, and the
+following sections, please visit <URL:https://security.FreeBSD.org/>.
+
+I.   Background
+
+The iconv(3) API converts text data from one character encoding to another
+and is available as part of the standard C library (libc).
+
+II.  Problem Description
+
+With certain inputs, iconv may write beyond the end of the output buffer.
+
+III. Impact
+
+Depending on the way in which iconv is used, an attacker may be able to
+create a denial of service, provoke incorrect program behavior, or induce a
+remote code execution.  iconv is a libc library function and the nature of
+possible attacks will depend on the way in which iconv is used by
+applications or daemons.
+
+IV.  Workaround
+
+No workaround is available.  Stack canaries (-fstack-protector), which are
+enabled by default, provide a degreee of defense against code injection but
+not against denial of service.
+
+V.   Solution
+
+Upgrade your vulnerable system to a supported FreeBSD stable or release /
+security branch (releng) dated after the correction date.  Restart any
+potentially affected daemons.
+
+Perform one of the following:
+
+1) To update your vulnerable system via a binary patch:
+
+Systems running a RELEASE version of FreeBSD on the i386 or amd64
+platforms can be updated via the freebsd-update(8) utility:
+
+# freebsd-update fetch
+# freebsd-update install
+
+2) To update your vulnerable system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+# fetch https://security.FreeBSD.org/patches/SA-19:09/iconv.patch
+# fetch https://security.FreeBSD.org/patches/SA-19:09/iconv.patch.asc
+# gpg --verify iconv.patch.asc
+
+b) Apply the patch.  Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile the operating system using buildworld and installworld as
+described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.
+
+Restart all daemons that use the library, or reboot the system.
+
+VI.  Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path                                                      Revision
+- -------------------------------------------------------------------------
+stable/12/                                                        r349622
+releng/12.0/                                                      r349621
+stable/11/                                                        r349624
+releng/11.3/                                                      r349621
+releng/11.2/                                                      r349621
+- -------------------------------------------------------------------------
+
+To see which files were modified by a particular revision, run the
+following command, replacing NNNNNN with the revision number, on a
+machine with Subversion installed:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-5600>
+
+The latest revision of this advisory is available at
+<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-19:09.iconv.asc>
+-----BEGIN PGP SIGNATURE-----
+
+iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAl0b9WBfFIAAAAAALgAo
+aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD
+MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n
+5cK8qg//bXSYMJQUBC0POTT5zGXSAmXfKjxbCi4N67cfTrQkEvW672QX4Jw9smkK
+D3PwyQs8QWIwsXL69rRgKDFHhPplOmTkx1vaPrA3DckYliwNvLRV3I6G2bRnx3E3
+DoAyDmBvFK5lJWa3WxbCpeJA69yZ/JbX1Yw6HsRLk74hGkfvlkruKkfxsNjXzaq4
+0+d+ZYs/vRDmIW5/R/bYy1+iyDamyCMl2xXtlZBKrGe6lhj8Vi4/evJjipFtskc2
+RnGKolNoZQc03pgX0QS2JZDb+ay23elkOCbhYPqGr1f++M95oOktX3epsJNSH++u
+pmJ72FNRsnZSVFxoX7o14eh4k6OGYIvGFSkXQ9VG1NV7PQO8VZAQk9gw264O/1Mi
+2aW88e78GLallQOg32VM+Ybys9MamBHByiYRz+GXhh91gg9WPJK5Imt0ExUuukGn
+SS65SW1AhO72xC2eplbM0pQY0FNn8l+QA4XjhqNfW03gPSvPwbdYhbSDXm9bgV3W
++VnW2R0tekgiD3glf9GwXMKizostS67jvpJyEDqvx3A1Dx3R2sJ27/6c5HDLpJss
+hrhEbqnJhudl10gQTdK9hkFg1LeqxFCYhsw0NDb7PgRWeu3MZcLP6pO3wy/aacfd
+OyGJWeqTzKZ4o596OyrTsYIa75MymN3/PkdfDYfRMU0GdAo+acQ=
+=ItWl
+-----END PGP SIGNATURE-----
diff --git a/share/security/advisories/FreeBSD-SA-19:10.ufs.asc b/share/security/advisories/FreeBSD-SA-19:10.ufs.asc
new file mode 100644
index 0000000000..23ab2b2d7d
--- /dev/null
+++ b/share/security/advisories/FreeBSD-SA-19:10.ufs.asc
@@ -0,0 +1,153 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-SA-19:10.ufs                                        Security Advisory
+                                                          The FreeBSD Project
+
+Topic:          Kernel stack disclosure in UFS/FFS
+
+Category:       core
+Module:         Kernel
+Announced:      2019-07-02
+Credits:        David G. Lawrence <dg@dglawrence.com>
+Affects:        All supported versions of FreeBSD.
+Corrected:      2019-05-10 23:45:16 UTC (stable/12, 12.0-STABLE)
+                2019-07-02 00:02:16 UTC (releng/12.0, 12.0-RELEASE-p7)
+                2019-05-10 23:46:42 UTC (stable/11, 11.2-STABLE)
+                2019-07-02 00:02:16 UTC (releng/11.2, 11.2-RELEASE-p11)
+CVE Name:       CVE-2019-5601
+
+For general information regarding FreeBSD Security Advisories,
+including descriptions of the fields above, security branches, and the
+following sections, please visit <URL:https://security.FreeBSD.org/>.
+
+I.   Background
+
+The Berkeley Fast File System (FFS) is an implementation of the UNIX File
+System (UFS) filesystem used by FreeBSD.
+
+II.  Problem Description
+
+A bug causes up to three bytes of kernel stack memory to be written to disk
+as uninitialized directory entry padding.  This data can be viewed by any
+user with read access to the directory.  Additionally, a malicious user with
+write access to a directory can cause up to 254 bytes of kernel stack memory
+to be exposed.
+
+III. Impact
+
+Some amount of the kernel stack is disclosed and written out to the
+filesystem.
+
+IV.  Workaround
+
+No workaround is available but systems not using UFS/FFS are not affected.
+
+V.   Solution
+
+Special note: This update also adds the -z flag to fsck_ffs to have it scrub
+the leaked information in the name padding of existing directories.  It only
+needs to be run once on each UFS/FFS filesystem after a patched kernel is
+installed and running.
+
+Upgrade your vulnerable system to a supported FreeBSD stable or release /
+security branch (releng) dated after the correction date.
+
+Perform one of the following:
+
+1) To update your vulnerable system via a binary patch:
+
+Systems running a RELEASE version of FreeBSD on the i386 or amd64
+platforms can be updated via the freebsd-update(8) utility:
+
+# freebsd-update fetch
+# freebsd-update install
+
+Afterwards, reboot the system and run:
+
+# fsck -t ufs -f -p -T ufs:-z
+
+to clean up your existing filesystems.
+
+2) To update your vulnerable system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+[FreeBSD 12.x]
+# fetch https://security.FreeBSD.org/patches/SA-19:10/ufs.12.patch
+# fetch https://security.FreeBSD.org/patches/SA-19:10/ufs.12.patch.asc
+# gpg --verify ufs.12.patch.asc
+
+[FreeBSD 11.x]
+# fetch https://security.FreeBSD.org/patches/SA-19:10/ufs.11.patch
+# fetch https://security.FreeBSD.org/patches/SA-19:10/ufs.11.patch.asc
+# gpg --verify ufs.11.patch.asc
+
+b) Apply the patch.  Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile your kernel as described in
+<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
+system and run:
+
+# fsck -t ufs -f -p -T ufs:-z
+
+to clean up your existing filesystems.
+
+VI.  Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path                                                      Revision
+- -------------------------------------------------------------------------
+stable/12/                                                        r347474
+releng/12.0/                                                      r349623
+stable/11/                                                        r347475
+releng/11.2/                                                      r349623
+- -------------------------------------------------------------------------
+
+Note: This patch was applied to the stable/11 branch before the branch point
+for releng/11.3. As such, no patch is needed for any 11.3-BETA or -RC.
+
+To see which files were modified by a particular revision, run the
+following command, replacing NNNNNN with the revision number, on a
+machine with Subversion installed:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-5601>
+
+The latest revision of this advisory is available at
+<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-19:10.ufs.asc>
+-----BEGIN PGP SIGNATURE-----
+
+iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAl0b9WVfFIAAAAAALgAo
+aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD
+MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n
+5cJgRhAAic+yb4boY5k2TotBe9xBBO2VEGwvcolARpvUg+78ya4RGh1d3FBH5R36
+N6uEvaAclrRsPHnDSeCD3BVmQkWBzD5a7t+z+m5Siye+01mA4XjKycNDl9BXm7sT
+t01GP7TPBmaJZ45RPqT4M/iB1Ulud0kdKvi/apwDLbqJrbzcuxyBNs+wiQhbG2Ip
+07REBqabnsL8dV2ysPtBlHd1nxyNyyF8EzkDUKYUWDnwPxzlrfrJAt+F7sneRrPf
+tL3UsN+qh3JThI39CjFWPllVRv412QCFBDmGXHdbm+mWrxIecX5pUEoLfQQLJ82x
+03TOYbZpu4d4CvgeSEXl3VkbHl6F6u/ii8ls/7aUDNnZcHWamraP84aJpLBG2cUa
+ExDDL6K0x1LMhlGWxjGr0qp2ObdQ0sKTgQZ/RUmJO4pc4zuPc0yY3jOv4U+kP2G/
+znHEVVRs8/X95OYA0fdvnG0rOdcKGdqKEDxeTvFhyvxM372erT/dMz9flGnptA51
+30eAwyKmzj5Mzpo5y/NARyGLRTfOB2F6++BFrlqbsKCXcyK1R5jtxu1TLaliPvA/
+Aux8D4OQHIXIGk/sVQSJKOO4oH6U7S2aNtYTxaYHAJrtbC9udnyjVau2txlObEZr
+pCbd+a02Btid0bBRUSFYugl4XHtakTVvtu93Fa19wASYDnZJIUE=
+=uUz9
+-----END PGP SIGNATURE-----
diff --git a/share/security/advisories/FreeBSD-SA-19:11.cd_ioctl.asc b/share/security/advisories/FreeBSD-SA-19:11.cd_ioctl.asc
new file mode 100644
index 0000000000..215452c70d
--- /dev/null
+++ b/share/security/advisories/FreeBSD-SA-19:11.cd_ioctl.asc
@@ -0,0 +1,147 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+=============================================================================
+FreeBSD-SA-19:11.cd_ioctl                                   Security Advisory
+                                                          The FreeBSD Project
+
+Topic:          Privilege escalation in cd(4) driver
+
+Category:       core
+Module:         kernel
+Announced:      2019-07-02
+Credits:        Alex Fortune
+Affects:        All supported versions of FreeBSD.
+Corrected:      2019-07-03 00:11:31 UTC (stable/12, 12.0-STABLE)
+                2019-07-02 00:03:55 UTC (releng/12.0, 12.0-RELEASE-p7)
+                2019-07-03 00:12:50 UTC (stable/11, 11.3-PRERELEASE)
+                2019-07-02 00:03:55 UTC (releng/11.3, 11.3-RC3-p1)
+                2019-07-02 00:03:55 UTC (releng/11.2, 11.2-RELEASE-p11)
+CVE Name:       CVE-2019-5602
+
+For general information regarding FreeBSD Security Advisories,
+including descriptions of the fields above, security branches, and the
+following sections, please visit <URL:https://security.FreeBSD.org/>.
+
+I.   Background
+
+The cd(4) driver implements a number of ioctls to permit low-level access to
+the media in the CD-ROM device.  The Linux emulation layer provides a
+corresponding set of ioctls, some of which are implemented as wrappers of
+native cd(4) ioctls.
+
+These ioctls are available to users in the operator group, which gets
+read-only access to cd(4) devices by default.
+
+II.  Problem Description
+
+To implement one particular ioctl, the Linux emulation code used a special
+interface present in the cd(4) driver which allows it to copy subchannel
+information directly to a kernel address.  This interface was erroneously
+made accessible to userland, allowing users with read access to a cd(4)
+device to arbitrarily overwrite kernel memory when some media is present in
+the device.
+
+III. Impact
+
+A user in the operator group can make use of this interface to gain root
+privileges on a system with a cd(4) device when some media is present in the
+device.
+
+IV.  Workaround
+
+devfs.conf(5) and devfs.rules(5) can be used to remove read permissions from
+cd(4) devices.
+
+V.   Solution
+
+Upgrade your vulnerable system to a supported FreeBSD stable or release /
+security branch (releng) dated after the correction date.
+
+Perform one of the following:
+
+1) To update your vulnerable system via a binary patch:
+
+Systems running a RELEASE version of FreeBSD on the i386 or amd64
+platforms can be updated via the freebsd-update(8) utility:
+
+# freebsd-update fetch
+# freebsd-update install
+
+Afterwards, reboot the system.
+
+2) To update your vulnerable system via a source code patch:
+
+The following patches have been verified to apply to the applicable
+FreeBSD release branches.
+
+a) Download the relevant patch from the location below, and verify the
+detached PGP signature using your PGP utility.
+
+[FreeBSD 12.x]
+# fetch https://security.FreeBSD.org/patches/SA-19:11/cd_ioctl.12.patch
+# fetch https://security.FreeBSD.org/patches/SA-19:11/cd_ioctl.12.patch.asc
+# gpg --verify cd_ioctl.12.patch.asc
+
+[FreeBSD 11.x]
+# fetch https://security.FreeBSD.org/patches/SA-19:11/cd_ioctl.11.patch
+# fetch https://security.FreeBSD.org/patches/SA-19:11/cd_ioctl.11.patch.asc
+# gpg --verify cd_ioctl.11.patch.asc
+
+b) Apply the patch.  Execute the following commands as root:
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile your kernel as described in
+<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
+system.
+
+VI.  Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path                                                      Revision
+- -------------------------------------------------------------------------
+stable/12/                                                        r349628
+releng/12.0/                                                      r349625
+stable/11/                                                        r349629
+releng/11.3/                                                      r349625
+releng/11.2/                                                      r349625
+- -------------------------------------------------------------------------
+
+To see which files were modified by a particular revision, run the
+following command, replacing NNNNNN with the revision number, on a
+machine with Subversion installed:
+
+# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
+
+Or visit the following URL, replacing NNNNNN with the revision number:
+
+<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
+
+VII. References
+
+<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-5602>
+
+The latest revision of this advisory is available at
+<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-19:11.cd_ioctl.asc>
+-----BEGIN PGP SIGNATURE-----
+
+iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAl0b9WtfFIAAAAAALgAo
+aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD
+MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n
+5cK+nBAAqVz2kEviqpD6wTqwmDexacApQ8aRrnxUDA/PSU/ZStdU3/E3OHAEwMOr
+k3qNBbMYUO5alXyLfe9Gv2iP2eTD8QP6xafMiwvcMxS2aJe6ieRmRTLUbep0QBEN
+weIaafjvIlLElJTWb9Rr5CTUs6sSdq7Jc84dHPHSOQehhkCFydTdHCaYtvRS2tg1
+YYyzMdTlT1VRCL3Rb6iHkqLG7JKX1fTLsPxXGqv/IjYAcDREZjVNhxjvcsQsMQxD
+2tTBDVZZLJBOHshGg/kyCRB++d36JNED0kb7/lfohGBvZS6wtmbe9z3a1+S4MN9i
+sxNdLc4a/Qr3iP4SzgGf6YuD/BmXg/7HWZnBj220VncVHYjQThAZih0VDUSy9zBy
+EplpqcRYebzvAQkq63e2LE66rveX58L7KAzZDG2QJUrPDJAfxgdc1fslgm/+/Yck
+/lHVG8gxJNr+tpC80vKxssS7WhNUnd1zThKa2D5rrFnsWUR5da66mxJelUrq+vPT
+bhs/nHOzqqXpojh+j/8a6q8Wi2CDSGnJ9vtt0FZu7SG0/r7hlUAAuI0o9VJV/Uh4
+CyJeVlJ65+4bUm+k9qFBxsmd7S08f1Z6UND8/1ffFOYm4POVJcRa1wUswYjXPfjp
+Sf0rZ5vCq8TG7EOcdMHqHBgAumx3gAXj+I73Lwm73vnP4jMoqmw=
+=Bc/8
+-----END PGP SIGNATURE-----
diff --git a/share/security/patches/EN-19:12/tzdata-2019b.patch b/share/security/patches/EN-19:12/tzdata-2019b.patch
new file mode 100644
index 0000000000..be10afad99
--- /dev/null
+++ b/share/security/patches/EN-19:12/tzdata-2019b.patch
@@ -0,0 +1,3069 @@
+--- contrib/tzdata/Makefile.orig
++++ contrib/tzdata/Makefile
+@@ -35,11 +35,13 @@
+ 
+ LOCALTIME=	GMT
+ 
+-# If you want something other than Eastern United States time as a template
+-# for handling ruleless POSIX-style timezone environment variables,
++# The POSIXRULES macro controls interpretation of nonstandard and obsolete
++# POSIX-like TZ settings like TZ='EET-2EEST' that lack DST transition rules.
++# In the reference implementation, if you want something other than Eastern
++# United States time as a template for handling these settings, you can
+ # change the line below (after finding the timezone you want in the
+ # one of the $(TDATA) source files, or adding it to a source file).
+-# A ruleless environment setting like TZ='CST6CDT' uses the rules in the
++# A setting like TZ='EET-2EEST' is supposed to use the rules in the
+ # template file to determine "spring forward" and "fall back" days and
+ # times; the environment variable itself specifies UT offsets of standard and
+ # daylight saving time.
+@@ -49,6 +51,17 @@
+ # Use the command
+ #	make zonenames
+ # to get a list of the values you can use for POSIXRULES.
++#
++# If POSIXRULES is empty, no template is installed; this is the intended
++# future default for POSIXRULES.
++#
++# Nonempty POSIXRULES is obsolete and should not be relied on, because:
++# * It does not work correctly in popular implementations such as GNU/Linux.
++# * It does not work in the tzdb implementation for timestamps after 2037.
++# * It is incompatible with 'zic -b slim' if POSIXRULES specifies transitions
++#   at standard time or UT rather than at local time.
++# In short, software should avoid ruleless settings like TZ='EET-2EEST'
++# and so should not depend on the value of POSIXRULES.
+ 
+ POSIXRULES=	America/New_York
+ 
+@@ -231,6 +244,13 @@
+ #	other than simply getting garbage data
+ #  -DUSE_LTZ=0 to build zdump with the system time zone library
+ #	Also set TZDOBJS=zdump.o and CHECK_TIME_T_ALTERNATIVES= below.
++#  -DZIC_BLOAT_DEFAULT=\"slim\" to default zic's -b option to "slim", and
++#	similarly for "fat".  Fat TZif files work around incompatibilities
++#	and bugs in some TZif readers, notably readers that mishandle 64-bit
++#	data in TZif files.  Slim TZif files are more efficient and do not
++#	work around these incompatibilities and bugs.  If not given, the
++#	current default is "fat" but this is intended to change as readers
++#	requiring fat files often mishandle timestamps after 2037 anyway.
+ #  -DZIC_MAX_ABBR_LEN_WO_WARN=3
+ #	(or some other number) to set the maximum time zone abbreviation length
+ #	that zic will accept without a warning (the default is 6)
+@@ -364,7 +384,9 @@
+ 
+ # To shrink the size of installed TZif files,
+ # append "-r @N" to omit data before N-seconds-after-the-Epoch.
+-# See the zic man page for more about -r.
++# You can also append "-b slim" if that is not already the default;
++# see ZIC_BLOAT_DEFAULT above.
++# See the zic man page for more about -b and -r.
+ ZFLAGS=
+ 
+ # How to use zic to install TZif files.
+@@ -388,6 +410,9 @@
+ # Name of curl <https://curl.haxx.se/>, used for HTML validation.
+ CURL=		curl
+ 
++# Name of GNU Privacy Guard <https://gnupg.org/>, used to sign distributions.
++GPG=		gpg
++
+ # The path where SGML DTDs are kept and the catalog file(s) to use when
+ # validating HTML 4.01.  The default should work on both Debian and Red Hat.
+ SGML_TOPDIR= /usr
+@@ -562,7 +587,9 @@
+ 			'$(DESTDIR)$(LIBDIR)' \
+ 			'$(DESTDIR)$(MANDIR)/man3' '$(DESTDIR)$(MANDIR)/man5' \
+ 			'$(DESTDIR)$(MANDIR)/man8'
+-		$(ZIC_INSTALL) -l $(LOCALTIME) -p $(POSIXRULES) \
++		$(ZIC_INSTALL) -l $(LOCALTIME) \
++			`case '$(POSIXRULES)' in ?*) echo '-p';; esac \
++			` $(POSIXRULES) \
+ 			-t '$(DESTDIR)$(TZDEFAULT)'
+ 		cp -f $(TABDATA) '$(DESTDIR)$(TZDIR)/.'
+ 		cp tzselect '$(DESTDIR)$(BINDIR)/.'
+@@ -781,12 +808,6 @@
+ check_sorted: backward backzone iso3166.tab zone.tab zone1970.tab
+ 		$(AWK) '/^Link/ {print $$3}' backward | LC_ALL=C sort -cu
+ 		$(AWK) '/^Zone/ {print $$2}' backzone | LC_ALL=C sort -cu
+-		$(AWK) '/^[^#]/ {print $$1}' iso3166.tab | LC_ALL=C sort -cu
+-		$(AWK) '/^[^#]/ {print $$1}' zone.tab | LC_ALL=C sort -c
+-		$(AWK) '/^[^#]/ {print substr($$0, 1, 2)}' zone1970.tab | \
+-		  LC_ALL=C sort -c
+-		$(AWK) '/^[^#]/ $(CHECK_CC_LIST)' zone1970.tab | \
+-		  LC_ALL=C sort -cu
+ 		touch $@
+ 
+ check_links:	checklinks.awk $(TDATA_TO_CHECK) tzdata.zi
+@@ -1051,7 +1072,7 @@
+ tzdata$(VERSION)-rearguard.tar.gz.asc: tzdata$(VERSION)-rearguard.tar.gz
+ tzdb-$(VERSION).tar.lz.asc: tzdb-$(VERSION).tar.lz
+ $(ALL_ASC):
+-		gpg2 --armor --detach-sign $?
++		$(GPG) --armor --detach-sign $?
+ 
+ TYPECHECK_CFLAGS = $(CFLAGS) -DTYPECHECK -D__time_t_defined -D_TIME_T
+ typecheck: typecheck_long_long typecheck_unsigned
+--- contrib/tzdata/NEWS.orig
++++ contrib/tzdata/NEWS
+@@ -1,8 +1,102 @@
+ News for the tz database
+ 
+-Release 20198 - 2019-03-25 22:01:33 -0700
++Release 2019b - 2019-07-01 00:09:53 -0700
+ 
+   Briefly:
++    Brazil no longer observes DST.
++    'zic -b slim' outputs smaller TZif files; please try it out.
++    Palestine's 2019 spring-forward transition was on 03-29, not 03-30.
++
++  Changes to future timestamps
++
++    Brazil has canceled DST and will stay on standard time indefinitely.
++    (Thanks to Steffen Thorsen, Marcus Diniz, and Daniel Soares de
++    Oliveira.)
++
++    Predictions for Morocco now go through 2087 instead of 2037, to
++    work around a problem on newlib when using TZif files output by
++    zic 2019a or earlier.  (Problem reported by David Gauchard.)
++
++  Changes to past and future timestamps
++
++    Palestine's 2019 spring transition was 03-29 at 00:00, not 03-30
++    at 01:00.  (Thanks to Sharef Mustafa and Even Scharning.)  Guess
++    future transitions to be March's last Friday at 00:00.
++
++  Changes to past timestamps
++
++    Hong Kong's 1941-06-15 spring-forward transition was at 03:00, not
++    03:30.  Its 1945 transition from JST to HKT was on 11-18 at 02:00,
++    not 09-15 at 00:00.  In 1946 its spring-forward transition was on
++    04-21 at 00:00, not the previous day at 03:30.  From 1946 through
++    1952 its fall-back transitions occurred at 04:30, not at 03:30.
++    In 1947 its fall-back transition was on 11-30, not 12-30.
++    (Thanks to P Chan.)
++
++  Changes to past time zone abbreviations
++
++    Italy's 1866 transition to Rome Mean Time was on December 12, not
++    September 22.  This affects only the time zone abbreviation for
++    Europe/Rome between those dates.  (Thanks to Stephen Trainor and
++    Luigi Rosa.)
++
++  Changes affecting metadata only
++
++    Add info about the Crimea situation in zone1970.tab and zone.tab.
++    (Problem reported by Serhii Demediuk.)
++
++  Changes to code
++
++    zic's new -b option supports a way to control data bloat and to
++    test for year-2038 bugs in software that reads TZif files.
++    'zic -b fat' and 'zic -b slim' generate larger and smaller output;
++    for example, changing from fat to slim shrinks the Europe/London
++    file from 3648 to 1599 bytes, saving about 56%.  Fat and slim
++    files represent the same set of timestamps and use the same TZif
++    format as documented in tzfile(5) and in Internet RFC 8536.
++    Fat format attempts to work around bugs or incompatibilities in
++    older software, notably software that mishandles 64-bit TZif data
++    or uses obsolete TZ strings like "EET-2EEST" that lack DST rules.
++    Slim format is more efficient and does not work around 64-bit bugs
++    or obsolete TZ strings.  Currently zic defaults to fat format
++    unless you compile with -DZIC_BLOAT_DEFAULT=\"slim\"; this
++    out-of-the-box default is intended to change in future releases
++    as the buggy software often mishandles timestamps anyway.
++
++    zic no longer treats a set of rules ending in 2037 specially.
++    Previously, zic assumed that such a ruleset meant that future
++    timestamps could not be predicted, and therefore omitted a
++    POSIX-like TZ string in the TZif output.  The old behavior is no
++    longer needed for current tzdata, and caused problems with newlib
++    when used with older tzdata (reported by David Gauchard).
++
++    zic no longer generates some artifact transitions.  For example,
++    Europe/London no longer has a no-op transition in January 1996.
++
++  Changes to build procedure
++
++    tzdata.zi now assumes zic 2017c or later.  This shrinks tzdata.zi
++    by a percent or so.
++
++  Changes to documentation and commentary
++
++    The Makefile now documents the POSIXRULES macro as being obsolete,
++    and similarly, zic's -p POSIXRULES option is now documented as
++    being obsolete.  Although the POSIXRULES feature still exists and
++    works as before, in practice it is rarely used for its intended
++    purpose, and it does not work either in the default reference
++    implementation (for timestamps after 2037) or in common
++    implementations such as GNU/Linux (for contemporary timestamps).
++    Since POSIXRULES was designed primarily as a temporary transition
++    facility for System V platforms that died off decades ago, it is
++    being decommissioned rather than institutionalized.
++
++    New info on Bonin Islands and Marcus (thanks to Wakaba and Phake Nick).
++
++
++Release 2019a - 2019-03-25 22:01:33 -0700
++
++  Briefly:
+     Palestine "springs forward" on 2019-03-30 instead of 2019-03-23.
+     Metlakatla "fell back" to rejoin Alaska Time on 2019-01-20 at 02:00.
+ 
+@@ -481,7 +575,7 @@
+     The code is a bit more portable to MS-Windows.  Installers can
+     compile with -DRESERVE_STD_EXT_IDS on MS-Windows platforms that
+     reserve identifiers like 'localtime'.  (Thanks to Manuela
+-    Friedrich).
++    Friedrich.)
+ 
+   Changes to documentation and commentary
+ 
+@@ -2276,7 +2370,7 @@
+     warlord Jin Shuren in the data.
+ 
+     Commentary about the coverage of each Russian zone has been standardized.
+-    (Thanks to Tim Parenti).
++    (Thanks to Tim Parenti.)
+ 
+     There is new commentary about contemporary timekeeping in Ethiopia.
+ 
+@@ -2724,7 +2818,7 @@
+ 
+     Change the UT offset of Bern Mean Time from 0:29:44 to 0:29:46.
+     This affects Europe/Zurich timestamps from 1853 to 1894.  (Thanks
+-    to Alois Treindl).
++    to Alois Treindl.)
+ 
+     Change the date of the circa-1850 Zurich transition from 1849-09-12
+     to 1853-07-16, overriding Shanks with data from Messerli about
+@@ -3034,7 +3128,7 @@
+     (Thanks to Arthur David Olson.)
+ 
+     Improve the commentary about which districts observe what times
+-    in Russia.  (Thanks to Oscar van Vlijmen and Arthur David Olson).
++    in Russia.  (Thanks to Oscar van Vlijmen and Arthur David Olson.)
+ 
+     Add web page links to tz.js.
+ 
+--- contrib/tzdata/africa.orig
++++ contrib/tzdata/africa
+@@ -89,7 +89,7 @@
+ Rule	Algeria	1980	only	-	Oct	31	 2:00	0	-
+ # Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+ # more precise 0:09:21.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Algiers	0:12:12 -	LMT	1891 Mar 15  0:01
+ 			0:09:21	-	PMT	1911 Mar 11 # Paris Mean Time
+ 			0:00	Algeria	WE%sT	1940 Feb 25  2:00
+@@ -124,7 +124,7 @@
+ # For now, ignore that and follow the 1911-05-26 Portuguese decree
+ # (see Europe/Lisbon).
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Atlantic/Cape_Verde -1:34:04 -	LMT	1912 Jan 01  2:00u # Praia
+ 			-2:00	-	-02	1942 Sep
+ 			-2:00	1:00	-01	1945 Oct 15
+@@ -135,7 +135,7 @@
+ # See Africa/Lagos.
+ 
+ # Chad
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Ndjamena	1:00:12 -	LMT	1912        # N'Djamena
+ 			1:00	-	WAT	1979 Oct 14
+ 			1:00	1:00	WAST	1980 Mar  8
+@@ -151,7 +151,7 @@
+ # See Africa/Lagos.
+ 
+ # Côte d'Ivoire / Ivory Coast
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Abidjan	-0:16:08 -	LMT	1912
+ 			 0:00	-	GMT
+ Link Africa/Abidjan Africa/Bamako	# Mali
+@@ -356,7 +356,7 @@
+ Rule	Egypt	2014	only	-	Jul	31	24:00	1:00	S
+ Rule	Egypt	2014	only	-	Sep	lastThu	24:00	0	-
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Cairo	2:05:09 -	LMT	1900 Oct
+ 			2:00	Egypt	EE%sT
+ 
+@@ -414,7 +414,7 @@
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Ghana	1920	1942	-	Sep	 1	0:00	0:20	-
+ Rule	Ghana	1920	1942	-	Dec	31	0:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Accra	-0:00:52 -	LMT	1918
+ 			 0:00	Ghana	GMT/+0020
+ 
+@@ -428,13 +428,13 @@
+ # evidently confusing the date of the Portuguese decree
+ # (see Europe/Lisbon) with the date that it took effect.
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Bissau	-1:02:20 -	LMT	1912 Jan  1  1:00u
+ 			-1:00	-	-01	1975
+ 			 0:00	-	GMT
+ 
+ # Kenya
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Nairobi	2:27:16	-	LMT	1928 Jul
+ 			3:00	-	EAT	1930
+ 			2:30	-	+0230	1940
+@@ -469,7 +469,7 @@
+ # Use the abbreviation "MMT" before 1972, as the more-accurate numeric
+ # abbreviation "-004430" would be one byte over the POSIX limit.
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Monrovia	-0:43:08 -	LMT	1882
+ 			-0:43:08 -	MMT	1919 Mar # Monrovia Mean Time
+ 			-0:44:30 -	MMT	1972 Jan 7 # approximately MMT
+@@ -519,7 +519,7 @@
+ Rule	Libya	1997	only	-	Oct	 4	0:00	0	-
+ Rule	Libya	2013	only	-	Mar	lastFri	1:00	1:00	S
+ Rule	Libya	2013	only	-	Oct	lastFri	2:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Tripoli	0:52:44 -	LMT	1920
+ 			1:00	Libya	CE%sT	1959
+ 			2:00	-	EET	1982
+@@ -629,7 +629,7 @@
+ Rule Mauritius	1983	only	-	Mar	21	0:00	0	-
+ Rule Mauritius	2008	only	-	Oct	lastSun	2:00	1:00	-
+ Rule Mauritius	2009	only	-	Mar	lastSun	2:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Indian/Mauritius	3:50:00 -	LMT	1907 # Port Louis
+ 			4:00 Mauritius	+04/+05
+ # Agalega Is, Rodriguez
+@@ -860,18 +860,24 @@
+ # the week end after....  The government does not announce yet the decision
+ # about this temporary change.  But it s 99% sure that it will be the case,
+ # as in previous years.  An unofficial survey was done these days, showing
+-# that 64% of asked peopke are ok for moving from +1 to +0 during Ramadan.
++# that 64% of asked people are ok for moving from +1 to +0 during Ramadan.
+ # https://leconomiste.com/article/1035870-enquete-l-economiste-sunergia-64-des-marocains-plebiscitent-le-gmt-pendant-ramadan
++
++# From Naoufal Semlali (2019-04-16):
++# Morocco will be on GMT starting from Sunday, May 5th 2019 at 3am.
++# The switch to GMT+1 will occur on Sunday, June 9th 2019 at 2am....
++# http://fr.le360.ma/societe/voici-la-date-du-retour-a-lheure-legale-au-maroc-188222
+ #
+-# From Paul Eggert (2018-11-01):
+-# For now, guess that Morocco will fall back at 03:00 the last Sunday
+-# before Ramadan, and spring forward at 02:00 the first Sunday after
++# From Paul Eggert (2019-05-20):
++# This agrees with our 2018-11-01 guess that the Moroccan government
++# would continue the practice of falling back at 03:00 the last Sunday
++# before Ramadan, and of springing forward at 02:00 the first Sunday after
+ # Ramadan, as this has been the practice since 2012.  To implement this,
+-# transition dates for 2019 through 2037 were determined by running the
+-# following program under GNU Emacs 26.1.
++# transition dates for 2019 through 2087 were determined by running the
++# following program under GNU Emacs 26.2.
+ # (let ((islamic-year 1440))
+ #   (require 'cal-islam)
+-#   (while (< islamic-year 1460)
++#   (while (< islamic-year 1511)
+ #     (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
+ #           (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
+ #           (sunday 0))
+@@ -970,8 +976,114 @@
+ Rule	Morocco	2036	only	-	Nov	23	 2:00	0	-
+ Rule	Morocco	2037	only	-	Oct	 4	 3:00	-1:00	-
+ Rule	Morocco	2037	only	-	Nov	15	 2:00	0	-
++Rule	Morocco	2038	only	-	Sep	26	 3:00	-1:00	-
++Rule	Morocco	2038	only	-	Oct	31	 2:00	0	-
++Rule	Morocco	2039	only	-	Sep	18	 3:00	-1:00	-
++Rule	Morocco	2039	only	-	Oct	23	 2:00	0	-
++Rule	Morocco	2040	only	-	Sep	 2	 3:00	-1:00	-
++Rule	Morocco	2040	only	-	Oct	14	 2:00	0	-
++Rule	Morocco	2041	only	-	Aug	25	 3:00	-1:00	-
++Rule	Morocco	2041	only	-	Sep	29	 2:00	0	-
++Rule	Morocco	2042	only	-	Aug	10	 3:00	-1:00	-
++Rule	Morocco	2042	only	-	Sep	21	 2:00	0	-
++Rule	Morocco	2043	only	-	Aug	 2	 3:00	-1:00	-
++Rule	Morocco	2043	only	-	Sep	 6	 2:00	0	-
++Rule	Morocco	2044	only	-	Jul	24	 3:00	-1:00	-
++Rule	Morocco	2044	only	-	Aug	28	 2:00	0	-
++Rule	Morocco	2045	only	-	Jul	 9	 3:00	-1:00	-
++Rule	Morocco	2045	only	-	Aug	20	 2:00	0	-
++Rule	Morocco	2046	only	-	Jul	 1	 3:00	-1:00	-
++Rule	Morocco	2046	only	-	Aug	 5	 2:00	0	-
++Rule	Morocco	2047	only	-	Jun	23	 3:00	-1:00	-
++Rule	Morocco	2047	only	-	Jul	28	 2:00	0	-
++Rule	Morocco	2048	only	-	Jun	 7	 3:00	-1:00	-
++Rule	Morocco	2048	only	-	Jul	19	 2:00	0	-
++Rule	Morocco	2049	only	-	May	30	 3:00	-1:00	-
++Rule	Morocco	2049	only	-	Jul	 4	 2:00	0	-
++Rule	Morocco	2050	only	-	May	15	 3:00	-1:00	-
++Rule	Morocco	2050	only	-	Jun	26	 2:00	0	-
++Rule	Morocco	2051	only	-	May	 7	 3:00	-1:00	-
++Rule	Morocco	2051	only	-	Jun	11	 2:00	0	-
++Rule	Morocco	2052	only	-	Apr	28	 3:00	-1:00	-
++Rule	Morocco	2052	only	-	Jun	 2	 2:00	0	-
++Rule	Morocco	2053	only	-	Apr	13	 3:00	-1:00	-
++Rule	Morocco	2053	only	-	May	25	 2:00	0	-
++Rule	Morocco	2054	only	-	Apr	 5	 3:00	-1:00	-
++Rule	Morocco	2054	only	-	May	10	 2:00	0	-
++Rule	Morocco	2055	only	-	Mar	28	 3:00	-1:00	-
++Rule	Morocco	2055	only	-	May	 2	 2:00	0	-
++Rule	Morocco	2056	only	-	Mar	12	 3:00	-1:00	-
++Rule	Morocco	2056	only	-	Apr	23	 2:00	0	-
++Rule	Morocco	2057	only	-	Mar	 4	 3:00	-1:00	-
++Rule	Morocco	2057	only	-	Apr	 8	 2:00	0	-
++Rule	Morocco	2058	only	-	Feb	17	 3:00	-1:00	-
++Rule	Morocco	2058	only	-	Mar	31	 2:00	0	-
++Rule	Morocco	2059	only	-	Feb	 9	 3:00	-1:00	-
++Rule	Morocco	2059	only	-	Mar	16	 2:00	0	-
++Rule	Morocco	2060	only	-	Feb	 1	 3:00	-1:00	-
++Rule	Morocco	2060	only	-	Mar	 7	 2:00	0	-
++Rule	Morocco	2061	only	-	Jan	16	 3:00	-1:00	-
++Rule	Morocco	2061	only	-	Feb	27	 2:00	0	-
++Rule	Morocco	2062	only	-	Jan	 8	 3:00	-1:00	-
++Rule	Morocco	2062	only	-	Feb	12	 2:00	0	-
++Rule	Morocco	2062	only	-	Dec	31	 3:00	-1:00	-
++Rule	Morocco	2063	only	-	Feb	 4	 2:00	0	-
++Rule	Morocco	2063	only	-	Dec	16	 3:00	-1:00	-
++Rule	Morocco	2064	only	-	Jan	20	 2:00	0	-
++Rule	Morocco	2064	only	-	Dec	 7	 3:00	-1:00	-
++Rule	Morocco	2065	only	-	Jan	11	 2:00	0	-
++Rule	Morocco	2065	only	-	Nov	22	 3:00	-1:00	-
++Rule	Morocco	2066	only	-	Jan	 3	 2:00	0	-
++Rule	Morocco	2066	only	-	Nov	14	 3:00	-1:00	-
++Rule	Morocco	2066	only	-	Dec	19	 2:00	0	-
++Rule	Morocco	2067	only	-	Nov	 6	 3:00	-1:00	-
++Rule	Morocco	2067	only	-	Dec	11	 2:00	0	-
++Rule	Morocco	2068	only	-	Oct	21	 3:00	-1:00	-
++Rule	Morocco	2068	only	-	Dec	 2	 2:00	0	-
++Rule	Morocco	2069	only	-	Oct	13	 3:00	-1:00	-
++Rule	Morocco	2069	only	-	Nov	17	 2:00	0	-
++Rule	Morocco	2070	only	-	Oct	 5	 3:00	-1:00	-
++Rule	Morocco	2070	only	-	Nov	 9	 2:00	0	-
++Rule	Morocco	2071	only	-	Sep	20	 3:00	-1:00	-
++Rule	Morocco	2071	only	-	Oct	25	 2:00	0	-
++Rule	Morocco	2072	only	-	Sep	11	 3:00	-1:00	-
++Rule	Morocco	2072	only	-	Oct	16	 2:00	0	-
++Rule	Morocco	2073	only	-	Aug	27	 3:00	-1:00	-
++Rule	Morocco	2073	only	-	Oct	 8	 2:00	0	-
++Rule	Morocco	2074	only	-	Aug	19	 3:00	-1:00	-
++Rule	Morocco	2074	only	-	Sep	23	 2:00	0	-
++Rule	Morocco	2075	only	-	Aug	11	 3:00	-1:00	-
++Rule	Morocco	2075	only	-	Sep	15	 2:00	0	-
++Rule	Morocco	2076	only	-	Jul	26	 3:00	-1:00	-
++Rule	Morocco	2076	only	-	Sep	 6	 2:00	0	-
++Rule	Morocco	2077	only	-	Jul	18	 3:00	-1:00	-
++Rule	Morocco	2077	only	-	Aug	22	 2:00	0	-
++Rule	Morocco	2078	only	-	Jul	10	 3:00	-1:00	-
++Rule	Morocco	2078	only	-	Aug	14	 2:00	0	-
++Rule	Morocco	2079	only	-	Jun	25	 3:00	-1:00	-
++Rule	Morocco	2079	only	-	Jul	30	 2:00	0	-
++Rule	Morocco	2080	only	-	Jun	16	 3:00	-1:00	-
++Rule	Morocco	2080	only	-	Jul	21	 2:00	0	-
++Rule	Morocco	2081	only	-	Jun	 1	 3:00	-1:00	-
++Rule	Morocco	2081	only	-	Jul	13	 2:00	0	-
++Rule	Morocco	2082	only	-	May	24	 3:00	-1:00	-
++Rule	Morocco	2082	only	-	Jun	28	 2:00	0	-
++Rule	Morocco	2083	only	-	May	16	 3:00	-1:00	-
++Rule	Morocco	2083	only	-	Jun	20	 2:00	0	-
++Rule	Morocco	2084	only	-	Apr	30	 3:00	-1:00	-
++Rule	Morocco	2084	only	-	Jun	11	 2:00	0	-
++Rule	Morocco	2085	only	-	Apr	22	 3:00	-1:00	-
++Rule	Morocco	2085	only	-	May	27	 2:00	0	-
++Rule	Morocco	2086	only	-	Apr	14	 3:00	-1:00	-
++Rule	Morocco	2086	only	-	May	19	 2:00	0	-
++Rule	Morocco	2087	only	-	Mar	30	 3:00	-1:00	-
++Rule	Morocco	2087	only	-	May	 4	 2:00	0	-
++# For dates after the somewhat-arbitrary cutoff of 2087, assume that
++# Morocco will no longer observe DST.  At some point this table will
++# need to be extended, though quite possibly Morocco will change the
++# rules first.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
+ 			 0:00	Morocco	+00/+01	1984 Mar 16
+ 			 1:00	-	+01	1986
+@@ -1001,7 +1113,7 @@
+ # https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
+ # merely made it official?
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Maputo	2:10:20 -	LMT	1903 Mar
+ 			2:00	-	CAT
+ Link Africa/Maputo Africa/Blantyre	# Malawi
+@@ -1073,7 +1185,7 @@
+ #Rule	Namibia	1995	2017	-	Apr	Sun>=1	2:00	0	WAT
+ # End of rearguard section.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Windhoek	1:08:24 -	LMT	1892 Feb 8
+ 			1:30	-	+0130	1903 Mar
+ 			2:00	-	SAST	1942 Sep 20  2:00
+@@ -1094,7 +1206,7 @@
+ # See Africa/Lagos.
+ 
+ # Nigeria
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Lagos	0:13:36 -	LMT	1919 Sep
+ 			1:00	-	WAT
+ Link Africa/Lagos Africa/Bangui	     # Central African Republic
+@@ -1108,7 +1220,7 @@
+ Link Africa/Lagos Africa/Porto-Novo  # Benin
+ 
+ # Réunion
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun # Saint-Denis
+ 			4:00	-	+04
+ #
+@@ -1168,7 +1280,7 @@
+ # See Africa/Abidjan.
+ 
+ # Seychelles
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Indian/Mahe	3:41:48 -	LMT	1906 Jun # Victoria
+ 			4:00	-	+04
+ # From Paul Eggert (2001-05-30):
+@@ -1188,7 +1300,7 @@
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	SA	1942	1943	-	Sep	Sun>=15	2:00	1:00	-
+ Rule	SA	1943	1944	-	Mar	Sun>=15	2:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Africa/Johannesburg 1:52:00 -	LMT	1892 Feb 8
+ 			1:30	-	SAST	1903 Mar
+ 			2:00	SA	SAST
+@@ -1223,7 +1335,7 @@
+ Rule	Sudan	1970	1985	-	Oct	15	0:00	0	-
+ Rule	Sudan	1971	only	-	Apr	30	0:00	1:00	S
+ Rule	Sudan	1972	1985	-	Apr	lastSun	0:00	1:00	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Khartoum	2:10:08 -	LMT	1931
+ 			2:00	Sudan	CA%sT	2000 Jan 15 12:00
+ 			3:00	-	EAT	2017 Nov  1
+@@ -1230,7 +1342,7 @@
+ 			2:00	-	CAT
+ 
+ # South Sudan
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Juba	2:06:28 -	LMT	1931
+ 			2:00	Sudan	CA%sT	2000 Jan 15 12:00
+ 			3:00	-	EAT
+@@ -1336,7 +1448,7 @@
+ # Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+ # more precise 0:09:21.
+ # Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Tunis	0:40:44 -	LMT	1881 May 12
+ 			0:09:21	-	PMT	1911 Mar 11 # Paris Mean Time
+ 			1:00	Tunisia	CE%sT
+--- contrib/tzdata/antarctica.orig
++++ contrib/tzdata/antarctica
+@@ -13,7 +13,7 @@
+ # for information.
+ # Unless otherwise specified, we have no time zone information.
+ 
+-# FORMAT is '-00' and GMTOFF is 0 for locations while uninhabited.
++# FORMAT is '-00' and STDOFF is 0 for locations while uninhabited.
+ 
+ # Argentina - year-round bases
+ # Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
+@@ -70,7 +70,7 @@
+ # Australian Antarctica Division informed us that Casey changed time
+ # zone to UTC+11 in "the morning of 22nd October 2016".
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Antarctica/Casey	0	-	-00	1969
+ 			8:00	-	+08	2009 Oct 18  2:00
+ 			11:00	-	+11	2010 Mar  5  2:00
+@@ -142,7 +142,7 @@
+ # St Paul Island - near Amsterdam, uninhabited
+ #	fishing stations operated variously 1819/1931
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Indian/Kerguelen	0	-	-00	1950 # Port-aux-Français
+ 			5:00	-	+05
+ #
+@@ -153,7 +153,7 @@
+ # Another base at Port-Martin, 50km east, began operation in 1947.
+ # It was destroyed by fire on 1952-01-14.
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Antarctica/DumontDUrville 0 -	-00	1947
+ 			10:00	-	+10	1952 Jan 14
+ 			0	-	-00	1956 Nov
+@@ -181,7 +181,7 @@
+ # Syowa station, which is the first antarctic station of Japan,
+ # was established on 1957-01-29.  Since Syowa station is still the main
+ # station of Japan, it's appropriate for the principal location.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Antarctica/Syowa	0	-	-00	1957 Jan 29
+ 			3:00	-	+03
+ # See:
+@@ -231,7 +231,7 @@
+ #Rule	Troll	2004	max	-	Nov	 7	1:00u	0:00	+00
+ # Remove the following line when uncommenting the above '#Rule' lines.
+ Rule	Troll	2004	max	-	Oct	lastSun	1:00u	0:00	+00
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Antarctica/Troll	0	-	-00	2005 Feb 12
+ 			0:00	Troll	%s
+ 
+@@ -305,7 +305,7 @@
+ # From Paul Eggert (2002-10-22)
+ # <http://webexhibits.org/daylightsaving/g.html> says Rothera is -03 all year.
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Antarctica/Rothera	0	-	-00	1976 Dec  1
+ 			-3:00	-	-03
+ 
+--- contrib/tzdata/asia.orig
++++ contrib/tzdata/asia
+@@ -84,7 +84,7 @@
+ Rule RussiaAsia	1996	2010	-	Oct	lastSun	 2:00s	0	-
+ 
+ # Afghanistan
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Kabul	4:36:48 -	LMT	1890
+ 			4:00	-	+04	1945
+ 			4:30	-	+0430
+@@ -117,7 +117,7 @@
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule Armenia	2011	only	-	Mar	lastSun	 2:00s	1:00	-
+ Rule Armenia	2011	only	-	Oct	lastSun	 2:00s	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Yerevan	2:58:00 -	LMT	1924 May  2
+ 			3:00	-	+03	1957 Mar
+ 			4:00 RussiaAsia +04/+05	1991 Mar 31  2:00s
+@@ -143,7 +143,7 @@
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Azer	1997	2015	-	Mar	lastSun	 4:00	1:00	-
+ Rule	Azer	1997	2015	-	Oct	lastSun	 5:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Baku	3:19:24 -	LMT	1924 May  2
+ 			3:00	-	+03	1957 Mar
+ 			4:00 RussiaAsia +04/+05	1991 Mar 31  2:00s
+@@ -231,7 +231,7 @@
+ Rule	Dhaka	2009	only	-	Jun	19	23:00	1:00	-
+ Rule	Dhaka	2009	only	-	Dec	31	24:00	0	-
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Dhaka	6:01:40 -	LMT	1890
+ 			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
+ 			6:30	-	+0630	1942 May 15
+@@ -241,7 +241,7 @@
+ 			6:00	Dhaka	+06/+07
+ 
+ # Bhutan
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Thimphu	5:58:36 -	LMT	1947 Aug 15 # or Thimbu
+ 			5:30	-	+0530	1987 Oct
+ 			6:00	-	+06
+@@ -252,13 +252,13 @@
+ # We have no information as to when standard time was introduced;
+ # assume it occurred in 1907, the same year as Mauritius (which
+ # then contained the Chagos Archipelago).
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Indian/Chagos	4:49:40	-	LMT	1907
+ 			5:00	-	+05	1996
+ 			6:00	-	+06
+ 
+ # Brunei
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Brunei	7:39:40 -	LMT	1926 Mar # Bandar Seri Begawan
+ 			7:30	-	+0730	1933
+ 			8:00	-	+08
+@@ -273,7 +273,7 @@
+ # of Greenwich."  This refers to the period before Burma's transition to +0630,
+ # a transition for which Shanks is the only source.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Yangon	6:24:47 -	LMT	1880        # or Rangoon
+ 			6:24:47	-	RMT	1920        # Rangoon local time
+ 			6:30	-	+0630	1942 May
+@@ -561,7 +561,7 @@
+ # that the sort of users who prefer Asia/Urumqi now typically ignored the
+ # +08 mandate back then.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ # Beijing time, used throughout China; represented by Shanghai.
+ Zone	Asia/Shanghai	8:05:43	-	LMT	1901
+ 			8:00	Shang	C%sT	1949 May 28
+@@ -652,11 +652,41 @@
+ #   https://i.imgur.com/05KkvtC.png
+ # * 1941-09-30, Hong Kong Daily Press, Winter Time Warning.
+ #   https://i.imgur.com/dge4kFJ.png
+-# Also, the Liberation day of Hong Kong after WWII which British rule
+-# over the territory resumed was August 30, 1945, which I think should
+-# be the termination date for the use of JST in the territory....
+ 
+-# From Paul Eggert (2018-11-17):
++# From P Chan (2018-12-31):
++# * According to the Hong Kong Daylight-Saving Regulations, 1941, the
++#   1941 spring-forward transition was at 03:00.
++#	http://sunzi.lib.hku.hk/hkgro/view/g1941/304271.pdf
++#	http://sunzi.lib.hku.hk/hkgro/view/g1941/305516.pdf
++# * According to some articles from South China Morning Post, +08 was
++#   resumed on 1945-11-18 at 02:00.
++#	https://i.imgur.com/M2IsZ3c.png
++#	https://i.imgur.com/iOPqrVo.png
++#	https://i.imgur.com/fffcGDs.png
++# * Some newspapers ... said the 1946 spring-forward transition was on
++#   04-21 at 00:00.  The Kung Sheung Evening News 1946-04-20 (Chinese)
++#	https://i.imgur.com/ZSzent0.png
++#	https://mmis.hkpl.gov.hk///c/portal/cover?c=QF757YsWv5%2FH7zGe%2FKF%2BFLYsuqGhRBfe p.4
++#   The Kung Sheung Daily News 1946-04-21 (Chinese)
++#	https://i.imgur.com/7ecmRlcm.png
++#	https://mmis.hkpl.gov.hk///c/portal/cover?c=QF757YsWv5%2BQBGt1%2BwUj5qG2GqtwR3Wh p.4
++# * According to the Summer Time Ordinance (1946), the fallback
++#   transitions between 1946 and 1952 were at 03:30 Standard Time (+08)
++#	http://oelawhk.lib.hku.hk/archive/files/bb74b06a74d5294620a15de560ab33c6.pdf
++# * Some other laws and regulations related to DST from 1953 to 1979
++#   Summer Time Ordinance 1953
++#	https://i.imgur.com/IOlJMav.jpg
++#   Summer Time (Amendment) Ordinance 1965
++#	https://i.imgur.com/8rofeLa.jpg
++#   Interpretation and General Clauses Ordinance (1966)
++#	https://i.imgur.com/joy3msj.jpg
++#   Emergency (Summer Time) Regulation 1973 <https://i.imgur.com/OpRWrKz.jpg>
++#   Interpretation and General Clauses (Amendment) Ordinance 1977
++#	https://i.imgur.com/RaNqnc4.jpg
++#   Resolution of the Legislative Council passed on 9 May 1979
++#	https://www.legco.gov.hk/yr78-79/english/lc_sitg/hansard/h790509.pdf#page=39
++
++# From Paul Eggert (2019-05-31):
+ # Here are the dates given at
+ # https://www.hko.gov.hk/gts/time/Summertime.htm
+ # as of 2014-06-19:
+@@ -667,7 +697,7 @@
+ # 1944        Whole year
+ # 1945        Whole year
+ # 1946        20 Apr to 1 Dec
+-# 1947        13 Apr to 30 Dec
++# 1947        13 Apr to 30 Nov
+ # 1948        2 May to 31 Oct
+ # 1949        3 Apr to 30 Oct
+ # 1950        2 Apr to 29 Oct
+@@ -704,36 +734,28 @@
+ # The page does not give times of day for transitions,
+ # or dates for the 1942 and 1945 transitions.
+ # The Japanese occupation of Hong Kong began 1941-12-25.
+-# The Japanese surrender of Hong Kong was signed 1945-09-16; see:
+-# Heaver S. The days after the Pacific war ended: unsettling times
+-# in Hong Kong. Post Magazine. 2016-06-13.
+-# https://www.scmp.com/magazines/post-magazine/article/1852990/days-after-pacific-war-ended-unsettling-times-hong-kong
+-# For lack of anything better, use start of those days as the
+-# transition times.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	HK	1946	only	-	Apr	20	3:30	1:00	S
+-Rule	HK	1946	only	-	Dec	1	3:30	0	-
+-Rule	HK	1947	only	-	Apr	13	3:30	1:00	S
+-Rule	HK	1947	only	-	Dec	30	3:30	0	-
+-Rule	HK	1948	only	-	May	2	3:30	1:00	S
+-Rule	HK	1948	1951	-	Oct	lastSun	3:30	0	-
+-Rule	HK	1952	1953	-	Nov	Sun>=1	3:30	0	-
++Rule	HK	1946	only	-	Apr	21	0:00	1:00	S
++Rule	HK	1946	only	-	Dec	1	3:30s	0	-
++Rule	HK	1947	only	-	Apr	13	3:30s	1:00	S
++Rule	HK	1947	only	-	Nov	30	3:30s	0	-
++Rule	HK	1948	only	-	May	2	3:30s	1:00	S
++Rule	HK	1948	1952	-	Oct	Sun>=28	3:30s	0	-
+ Rule	HK	1949	1953	-	Apr	Sun>=1	3:30	1:00	S
++Rule	HK	1953	1964	-	Oct	Sun>=31	3:30	0	-
+ Rule	HK	1954	1964	-	Mar	Sun>=18	3:30	1:00	S
+-Rule	HK	1954	only	-	Oct	31	3:30	0	-
+-Rule	HK	1955	1964	-	Nov	Sun>=1	3:30	0	-
+ Rule	HK	1965	1976	-	Apr	Sun>=16	3:30	1:00	S
+ Rule	HK	1965	1976	-	Oct	Sun>=16	3:30	0	-
+ Rule	HK	1973	only	-	Dec	30	3:30	1:00	S
+-Rule	HK	1979	only	-	May	Sun>=8	3:30	1:00	S
+-Rule	HK	1979	only	-	Oct	Sun>=16	3:30	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++Rule	HK	1979	only	-	May	13	3:30	1:00	S
++Rule	HK	1979	only	-	Oct	21	3:30	0	-
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Hong_Kong	7:36:42 -	LMT	1904 Oct 30  0:36:42
+-			8:00	-	HKT	1941 Jun 15  3:30
++			8:00	-	HKT	1941 Jun 15  3:00
+ 			8:00	1:00	HKST	1941 Oct  1  4:00
+ 			8:30	-	HKT	1941 Dec 25
+-			9:00	-	JST	1945 Sep 16
++			9:00	-	JST	1945 Nov 18  2:00
+ 			8:00	HK	HK%sT
+ 
+ ###############################################################################
+@@ -857,7 +879,7 @@
+ Rule	Taiwan	1979	only	-	Jul	1	0:00	1:00	D
+ Rule	Taiwan	1979	only	-	Oct	1	0:00	0	S
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ # Taipei or Taibei or T'ai-pei
+ Zone	Asia/Taipei	8:06:00 -	LMT	1896 Jan  1
+ 			8:00	-	CST	1937 Oct  1
+@@ -995,7 +1017,7 @@
+ Rule	Macau	1979	only	-	May	13	03:30	1:00	D
+ Rule	Macau	1979	only	-	Oct	Sun>=16	03:30	0	S
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Macau	7:34:10 -	LMT	1904 Oct 30
+ 			8:00	-	CST	1941 Dec 21 23:00
+ 			9:00	Macau	+09/+10	1945 Sep 30 24:00
+@@ -1034,7 +1056,7 @@
+ Rule	Cyprus	1978	only	-	Oct	2	0:00	0	-
+ Rule	Cyprus	1979	1997	-	Sep	lastSun	0:00	0	-
+ Rule	Cyprus	1981	1998	-	Mar	lastSun	0:00	1:00	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Nicosia	2:13:28 -	LMT	1921 Nov 14
+ 			2:00	Cyprus	EE%sT	1998 Sep
+ 			2:00	EUAsia	EE%sT
+@@ -1083,7 +1105,7 @@
+ # Byalokoz 1919 says Georgia was 2:59:11.
+ # Go with Byalokoz.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Tbilisi	2:59:11 -	LMT	1880
+ 			2:59:11	-	TBMT	1924 May  2 # Tbilisi Mean Time
+ 			3:00	-	+03	1957 Mar
+@@ -1120,7 +1142,7 @@
+ # which will be permanent, with no seasonal adjustment, will happen at
+ # midnight on Saturday, September 16.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Dili	8:22:20 -	LMT	1912 Jan  1
+ 			8:00	-	+08	1942 Feb 21 23:00
+ 			9:00	-	+09	1976 May  3
+@@ -1186,7 +1208,7 @@
+ # time for 1870-1941.  Shanks is our only (and dubious) source for the
+ # 1941-1945 data.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Kolkata	5:53:28 -	LMT	1854 Jun 28 # Kolkata
+ 			5:53:20	-	HMT	1870	    # Howrah Mean Time?
+ 			5:21:10	-	MMT	1906 Jan  1 # Madras local time
+@@ -1238,7 +1260,7 @@
+ # WITA - +08 - Waktu Indonesia Tengah (Indonesia central time)
+ # WIT  - +09 - Waktu Indonesia Timur (Indonesia eastern time)
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ # Java, Sumatra
+ Zone Asia/Jakarta	7:07:12 -	LMT	1867 Aug 10
+ # Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
+@@ -1314,9 +1336,9 @@
+ # I used the following code in GNU Emacs 26.1 to generate the "Rule Iran"
+ # lines from 2008 through 2087.  Emacs 26.1 uses Ed Reingold's
+ # cal-persia implementation of Birashk's approximation, which in the
+-# 2008-2087 range disagrees with the the astronomical Persian calendar
+-# for Persian years 1404 (Gregorian 2025) and 1437 (Gregorian 2058),
+-# so the following code special-case those years.  See Table 15.1, page 264, of:
++# 2008-2087 range disagrees with the astronomical Persian calendar
++# for Persian years 1404 (Gregorian 2025) and 1437 (Gregorian 2058), so
++# the following code special-cases those years.  See Table 15.1, page 264, of:
+ # Edward M. Reingold and Nachum Dershowitz, Calendrical Calculations:
+ # The Ultimate Edition, Cambridge University Press (2018).
+ # https://www.cambridge.org/fr/academic/subjects/computer-science/computing-general-interest/calendrical-calculations-ultimate-edition-4th-edition
+@@ -1510,7 +1532,7 @@
+ Rule	Iran	2088	max	-	Mar	20	24:00	1:00	-
+ Rule	Iran	2088	max	-	Sep	20	24:00	0	-
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Tehran	3:25:44	-	LMT	1916
+ 			3:25:44	-	TMT	1946     # Tehran Mean Time
+ 			3:30	-	+0330	1977 Nov
+@@ -1555,7 +1577,7 @@
+ #
+ Rule	Iraq	1991	2007	-	Apr	 1	3:00s	1:00	-
+ Rule	Iraq	1991	2007	-	Oct	 1	3:00s	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Baghdad	2:57:40	-	LMT	1890
+ 			2:57:36	-	BMT	1918     # Baghdad Mean Time?
+ 			3:00	-	+03	1982 May
+@@ -1622,7 +1644,7 @@
+ Rule	Zion	1975	only	-	Aug	31	0:00	0	S
+ 
+ # From Alois Treindl (2019-03-06):
+-# http://www.moin.gov.il/Documents/שעון קיץ/clock-50-years-7-2014.pdf
++# http://www.moin.gov.il/Documents/שעון%20קיץ/clock-50-years-7-2014.pdf
+ # From Isaac Starkman (2019-03-06):
+ # Summer time was in that period in 1980 and 1984, see
+ # https://www.ynet.co.il/articles/0,7340,L-3951073,00.html
+@@ -1760,32 +1782,15 @@
+ #
+ #	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
+ 
+-# From Paul Eggert (2012-10-26):
+-# I used Ephraim Silverberg's dst-israel.el program
+-# <ftp://ftp.cs.huji.ac.il/pub/tz/software/dst-israel.el> (2005-02-20)
+-# along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,
+-# to generate the transitions from 2005 through 2012.
+-# (I replaced "lastFri" with "Fri>=26" by hand.)
+-# The spring transitions all correspond to the following Rule:
+-#
+-# Rule	Zion	2005	2012	-	Mar	Fri>=26	2:00	1:00	D
+-#
+-# but older zic implementations (e.g., Solaris 8) do not support
+-# "Fri>=26" to mean April 1 in years like 2005, so for now we list the
+-# springtime transitions explicitly.
+-
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Zion	2005	only	-	Apr	 1	2:00	1:00	D
++Rule	Zion	2005	2012	-	Apr	Fri<=1	2:00	1:00	D
+ Rule	Zion	2005	only	-	Oct	 9	2:00	0	S
+-Rule	Zion	2006	2010	-	Mar	Fri>=26	2:00	1:00	D
+ Rule	Zion	2006	only	-	Oct	 1	2:00	0	S
+ Rule	Zion	2007	only	-	Sep	16	2:00	0	S
+ Rule	Zion	2008	only	-	Oct	 5	2:00	0	S
+ Rule	Zion	2009	only	-	Sep	27	2:00	0	S
+ Rule	Zion	2010	only	-	Sep	12	2:00	0	S
+-Rule	Zion	2011	only	-	Apr	 1	2:00	1:00	D
+ Rule	Zion	2011	only	-	Oct	 2	2:00	0	S
+-Rule	Zion	2012	only	-	Mar	Fri>=26	2:00	1:00	D
+ Rule	Zion	2012	only	-	Sep	23	2:00	0	S
+ 
+ # From Ephraim Silverberg (2013-06-27):
+@@ -1801,7 +1806,7 @@
+ Rule	Zion	2013	max	-	Mar	Fri>=23	2:00	1:00	D
+ Rule	Zion	2013	max	-	Oct	lastSun	2:00	0	S
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Jerusalem	2:20:54 -	LMT	1880
+ 			2:20:40	-	JMT	1918 # Jerusalem Mean Time?
+ 			2:00	Zion	I%sT
+@@ -1893,7 +1898,7 @@
+ # Central Time (UT+9). The adoption began on Oct 1, 1937.
+ # https://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Tokyo	9:18:59	-	LMT	1887 Dec 31 15:00u
+ 			9:00	Japan	J%sT
+ # Since 1938, all Japanese possessions have been like Asia/Tokyo,
+@@ -1996,7 +2001,7 @@
+ Rule	Jordan	2013	only	-	Dec	20	0:00	0	-
+ Rule	Jordan	2014	max	-	Mar	lastThu	24:00	1:00	S
+ Rule	Jordan	2014	max	-	Oct	lastFri	0:00s	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Amman	2:23:44 -	LMT	1931
+ 			2:00	Jordan	EE%sT
+ 
+@@ -2037,8 +2042,8 @@
+ # text.
+ #
+ # According to Izvestia newspaper No. 68 (23334) from 1991-03-20
+-# (page 6; available at http://libinfo.org/newsr/newsr2574.djvu via
+-# http://libinfo.org/index.php?id=58564) on 1991-03-31 at 2:00 during
++# -- page 6; available at http://libinfo.org/newsr/newsr2574.djvu via
++# http://libinfo.org/index.php?id=58564 -- on 1991-03-31 at 2:00 during
+ # transition to "summer" time:
+ # Republic of Georgia, Latvian SSR, Lithuanian SSR, SSR Moldova,
+ # Estonian SSR; Komi ASSR; Kaliningrad oblast; Nenets autonomous okrug
+@@ -2054,7 +2059,7 @@
+ # Apparently there were last minute changes. Apparently Kazakh act No. 170
+ # was one of such changes.
+ #
+-# https://ru.wikipedia.org/wiki/Декретное время
++# https://ru.wikipedia.org/wiki/Декретное_время
+ # claims that Sovetskaya Rossiya newspaper on 1991-03-29 published that
+ # Nenets autonomous okrug, Komi and Kazakhstan (excluding Uralsk oblast)
+ # were to not move clocks and Uralsk oblast was to move clocks
+@@ -2193,7 +2198,7 @@
+ # UTC+6 to UTC+5 effective December 21st, 2018. The legal document is
+ # located here: http://adilet.zan.kz/rus/docs/P1800000817 (russian language).
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ #
+ # Almaty (formerly Alma-Ata), representing most locations in Kazakhstan
+ # This includes KZ-AKM, KZ-ALA, KZ-ALM, KZ-AST, KZ-BAY, KZ-VOS, KZ-ZHA,
+@@ -2295,7 +2300,7 @@
+ Rule	Kyrgyz	1992	1996	-	Sep	lastSun	0:00	0	-
+ Rule	Kyrgyz	1997	2005	-	Mar	lastSun	2:30	1:00	-
+ Rule	Kyrgyz	1997	2004	-	Oct	lastSun	2:30	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Bishkek	4:58:24 -	LMT	1924 May  2
+ 			5:00	-	+05	1930 Jun 21
+ 			6:00 RussiaAsia +06/+07	1991 Mar 31  2:00s
+@@ -2410,7 +2415,7 @@
+ # The BBC reported that the transition was from 23:30 to 24:00 today.
+ # https://www.bbc.com/news/world-asia-44010705
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Seoul	8:27:52	-	LMT	1908 Apr  1
+ 			8:30	-	KST	1912 Jan  1
+ 			9:00	-	JST	1945 Sep  8
+@@ -2459,7 +2464,7 @@
+ Rule	Lebanon	1993	max	-	Mar	lastSun	0:00	1:00	S
+ Rule	Lebanon	1993	1998	-	Sep	lastSun	0:00	0	-
+ Rule	Lebanon	1999	max	-	Oct	lastSun	0:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Beirut	2:22:00 -	LMT	1880
+ 			2:00	Lebanon	EE%sT
+ 
+@@ -2471,7 +2476,7 @@
+ # peninsular Malaysia
+ # taken from Mok Ly Yng (2003-10-30)
+ # http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Asia/Kuala_Lumpur	6:46:46 -	LMT	1901 Jan  1
+ 			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
+ 			7:00	-	+07	1933 Jan  1
+@@ -2485,7 +2490,7 @@
+ # From Paul Eggert (2014-08-12):
+ # The data entries here are mostly from Shanks & Pottenger, but the 1942, 1945
+ # and 1982 transition dates are from Mok Ly Yng.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Asia/Kuching	7:21:20	-	LMT	1926 Mar
+ 			7:30	-	+0730	1933
+ 			8:00 NBorneo  +08/+0820	1942 Feb 16
+@@ -2493,7 +2498,7 @@
+ 			8:00	-	+08
+ 
+ # Maldives
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Indian/Maldives	4:54:00 -	LMT	1880 # Malé
+ 			4:54:00	-	MMT	1960 # Malé Mean Time
+ 			5:00	-	+05
+@@ -2636,7 +2641,7 @@
+ Rule	Mongol	2015	2016	-	Mar	lastSat	2:00	1:00	-
+ Rule	Mongol	2015	2016	-	Sep	lastSat	0:00	0	-
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ # Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
+ Zone	Asia/Hovd	6:06:36 -	LMT	1905 Aug
+ 			6:00	-	+06	1978
+@@ -2654,7 +2659,7 @@
+ 			8:00	Mongol	+08/+09
+ 
+ # Nepal
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Kathmandu	5:41:16 -	LMT	1920
+ 			5:30	-	+0530	1986
+ 			5:45	-	+0545
+@@ -2804,7 +2809,7 @@
+ Rule Pakistan	2008	2009	-	Nov	1	0:00	0	-
+ Rule Pakistan	2009	only	-	Apr	15	0:00	1:00	S
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Karachi	4:28:12 -	LMT	1907
+ 			5:30	-	+0530	1942 Sep
+ 			5:30	1:00	+0630	1945 Oct 15
+@@ -3091,13 +3096,21 @@
+ # http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817
+ 
+ # From Even Scharning (2019-03-23):
+-# DST in Palestine will start on 30 March this year, not 23 March as the time
+-# zone database predicted.
+-# https://ramallah.news/post/123610
++# http://pnn.ps/news/401130
++# http://palweather.ps/ar/node/50136.html
+ #
+-# From Tim Parenti (2019-03-23):
+-# Combining this with the rules observed since 2016, adjust our spring
+-# transition guess to Mar Sat>=24.
++# From Sharif Mustafa (2019-03-26):
++# The Palestinian cabinet announced today that the switch to DST will
++# be on Fri Mar 29th 2019 by advancing the clock by 60 minutes.
++# The decree signing date is Mar 12th but it was not published till today.
++# The decree does not specify the exact time of switch.
++# http://palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e54e9ea1-50ee-4137-84df-0d6c78da259b
++#
++# From Even Scharning (2019-04-10):
++# Our source in Palestine said it happened Friday 29 at 00:00 local time....
++#
++# From Paul Eggert (2019-04-10):
++# For now, guess spring-ahead transitions are March's last Friday at 00:00.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
+@@ -3128,10 +3141,11 @@
+ Rule Palestine	2013	only	-	Sep	Fri>=21	0:00	0	-
+ Rule Palestine	2014	2015	-	Oct	Fri>=21	0:00	0	-
+ Rule Palestine	2015	only	-	Mar	lastFri	24:00	1:00	S
+-Rule Palestine	2016	max	-	Mar	Sat>=24	1:00	1:00	S
++Rule Palestine	2016	2018	-	Mar	Sat>=24	1:00	1:00	S
+ Rule Palestine	2016	max	-	Oct	lastSat	1:00	0	-
++Rule Palestine	2019	max	-	Mar	lastFri	0:00	1:00	S
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Gaza	2:17:52	-	LMT	1900 Oct
+ 			2:00	Zion	EET/EEST 1948 May 15
+ 			2:00 EgyptAsia	EE%sT	1967 Jun  5
+@@ -3205,7 +3219,7 @@
+ Rule	Phil	1954	only	-	Jul	1	0:00	0	S
+ Rule	Phil	1978	only	-	Mar	22	0:00	1:00	D
+ Rule	Phil	1978	only	-	Sep	21	0:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Manila	-15:56:00 -	LMT	1844 Dec 31
+ 			8:04:00 -	LMT	1899 May 11
+ 			8:00	Phil	P%sT	1942 May
+@@ -3213,7 +3227,7 @@
+ 			8:00	Phil	P%sT
+ 
+ # Qatar
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Qatar	3:26:08 -	LMT	1920     # Al Dawhah / Doha
+ 			4:00	-	+04	1972 Jun
+ 			3:00	-	+03
+@@ -3261,7 +3275,7 @@
+ # the country.  Presumably this is documenting airline time.  Ignore this,
+ # as it's before our 1970 cutoff.
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Riyadh	3:06:52 -	LMT	1947 Mar 14
+ 			3:00	-	+03
+ Link Asia/Riyadh Asia/Aden	# Yemen
+@@ -3270,7 +3284,7 @@
+ # Singapore
+ # taken from Mok Ly Yng (2003-10-30)
+ # http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Singapore	6:55:25 -	LMT	1901 Jan  1
+ 			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
+ 			7:00	-	+07	1933 Jan  1
+@@ -3334,7 +3348,7 @@
+ # even worse.  For now, let's use a numeric abbreviation; we can
+ # switch to "SLST" if it catches on.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Colombo	5:19:24 -	LMT	1880
+ 			5:19:32	-	MMT	1906        # Moratuwa Mean Time
+ 			5:30	-	+0530	1942 Jan  5
+@@ -3504,13 +3518,13 @@
+ Rule	Syria	2012	max	-	Mar	lastFri	0:00	1:00	S
+ Rule	Syria	2009	max	-	Oct	lastFri	0:00	0	-
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Damascus	2:25:12 -	LMT	1920 # Dimashq
+ 			2:00	Syria	EE%sT
+ 
+ # Tajikistan
+ # From Shanks & Pottenger.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Dushanbe	4:35:12 -	LMT	1924 May  2
+ 			5:00	-	+05	1930 Jun 21
+ 			6:00 RussiaAsia +06/+07	1991 Mar 31  2:00s
+@@ -3518,7 +3532,7 @@
+ 			5:00	-	+05
+ 
+ # Thailand
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Bangkok	6:42:04	-	LMT	1880
+ 			6:42:04	-	BMT	1920 Apr # Bangkok Mean Time
+ 			7:00	-	+07
+@@ -3527,7 +3541,7 @@
+ 
+ # Turkmenistan
+ # From Shanks & Pottenger.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Ashgabat	3:53:32 -	LMT	1924 May  2 # or Ashkhabad
+ 			4:00	-	+04	1930 Jun 21
+ 			5:00 RussiaAsia	+05/+06	1991 Mar 31  2:00
+@@ -3535,7 +3549,7 @@
+ 			5:00	-	+05
+ 
+ # United Arab Emirates
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Dubai	3:41:12 -	LMT	1920
+ 			4:00	-	+04
+ Link Asia/Dubai Asia/Muscat	# Oman
+@@ -3542,7 +3556,7 @@
+ 
+ # Uzbekistan
+ # Byalokoz 1919 says Uzbekistan was 4:27:53.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Samarkand	4:27:53 -	LMT	1924 May  2
+ 			4:00	-	+04	1930 Jun 21
+ 			5:00	-	+05	1981 Apr  1
+@@ -3608,7 +3622,7 @@
+ # Lê Thành Lân: "Lịch hai thế kỷ (1802-2010) và các lịch vĩnh cửu",
+ # NXB Thuận Hoá, Huế, 1995.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Asia/Ho_Chi_Minh	7:06:40 -	LMT	1906 Jul  1
+ 			7:06:30	-	PLMT	1911 May  1 # Phù Liễn MT
+ 			7:00	-	+07	1942 Dec 31 23:00
+--- contrib/tzdata/australasia.orig
++++ contrib/tzdata/australasia
+@@ -25,7 +25,7 @@
+ # says W Australia didn't use DST in 1943/1944.  Ignore Whitman's claim that
+ # 1944/1945 was just like 1943/1944.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ # Northern Territory
+ Zone Australia/Darwin	 8:43:20 -	LMT	1895 Feb
+ 			 9:00	-	ACST	1899 May
+@@ -102,7 +102,7 @@
+ Rule	AS	2007	only	-	Mar	lastSun	2:00s	0	S
+ Rule	AS	2008	max	-	Apr	Sun>=1	2:00s	0	S
+ Rule	AS	2008	max	-	Oct	Sun>=1	2:00s	1:00	D
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Adelaide	9:14:20 -	LMT	1895 Feb
+ 			9:00	-	ACST	1899 May
+ 			9:30	Aus	AC%sT	1971
+@@ -134,7 +134,7 @@
+ Rule	AT	2006	only	-	Apr	Sun>=1	2:00s	0	S
+ Rule	AT	2007	only	-	Mar	lastSun	2:00s	0	S
+ Rule	AT	2008	max	-	Apr	Sun>=1	2:00s	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Hobart	9:49:16	-	LMT	1895 Sep
+ 			10:00	-	AEST	1916 Oct  1  2:00
+ 			10:00	1:00	AEDT	1917 Feb
+@@ -162,7 +162,7 @@
+ Rule	AV	2007	only	-	Mar	lastSun	2:00s	0	S
+ Rule	AV	2008	max	-	Apr	Sun>=1	2:00s	0	S
+ Rule	AV	2008	max	-	Oct	Sun>=1	2:00s	1:00	D
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Melbourne 9:39:52 -	LMT	1895 Feb
+ 			10:00	Aus	AE%sT	1971
+ 			10:00	AV	AE%sT
+@@ -185,7 +185,7 @@
+ Rule	AN	2007	only	-	Mar	lastSun	2:00s	0	S
+ Rule	AN	2008	max	-	Apr	Sun>=1	2:00s	0	S
+ Rule	AN	2008	max	-	Oct	Sun>=1	2:00s	1:00	D
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Sydney	10:04:52 -	LMT	1895 Feb
+ 			10:00	Aus	AE%sT	1971
+ 			10:00	AN	AE%sT
+@@ -256,7 +256,7 @@
+ 			11:00	-	+11
+ 
+ # Christmas
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Indian/Christmas	7:02:52 -	LMT	1895 Feb
+ 			7:00	-	+07
+ 
+@@ -263,7 +263,7 @@
+ # Cocos (Keeling) Is
+ # These islands were ruled by the Ross family from about 1830 to 1978.
+ # We don't know when standard time was introduced; for now, we guess 1900.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Indian/Cocos	6:27:40	-	LMT	1900
+ 			6:30	-	+0630
+ 
+@@ -386,12 +386,12 @@
+ Rule	Fiji	2014	only	-	Jan	Sun>=18	2:00	0	-
+ Rule	Fiji	2014	max	-	Nov	Sun>=1	2:00	1:00	-
+ Rule	Fiji	2015	max	-	Jan	Sun>=13	3:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Fiji	11:55:44 -	LMT	1915 Oct 26 # Suva
+ 			12:00	Fiji	+12/+13
+ 
+ # French Polynesia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Gambier	 -8:59:48 -	LMT	1912 Oct # Rikitea
+ 			 -9:00	-	-09
+ Zone	Pacific/Marquesas -9:18:00 -	LMT	1912 Oct
+@@ -434,7 +434,7 @@
+ # http://documents.guam.gov/wp-content/uploads/E.O.-77-18-Guam-Standard-Time.pdf
+ Rule	Guam	1977	only	-	Aug	28	2:00	0	S
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Guam	-14:21:00 -	LMT	1844 Dec 31
+ 			 9:39:00 -	LMT	1901        # Agana
+ 			10:00	-	GST	1941 Dec 10 # Guam
+@@ -444,7 +444,7 @@
+ Link Pacific/Guam Pacific/Saipan # N Mariana Is
+ 
+ # Kiribati
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Tarawa	 11:32:04 -	LMT	1901 # Bairiki
+ 			 12:00	-	+12
+ Zone Pacific/Enderbury	-11:24:20 -	LMT	1901
+@@ -460,7 +460,7 @@
+ # See Pacific/Guam.
+ 
+ # Marshall Is
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Majuro	 11:24:48 -	LMT	1901
+ 			 11:00	-	+11	1914 Oct
+ 			  9:00	-	+09	1919 Feb  1
+@@ -478,7 +478,7 @@
+ 			 12:00	-	+12
+ 
+ # Micronesia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Chuuk	-13:52:52 -	LMT	1844 Dec 31
+ 			 10:07:08 -	LMT	1901
+ 			 10:00	-	+10	1914 Oct
+@@ -506,7 +506,7 @@
+ 			 11:00	-	+11
+ 
+ # Nauru
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Nauru	11:07:40 -	LMT	1921 Jan 15 # Uaobe
+ 			11:30	-	+1130	1942 Aug 29
+ 			 9:00	-	+09	1945 Sep  8
+@@ -520,7 +520,7 @@
+ Rule	NC	1996	only	-	Dec	 1	2:00s	1:00	-
+ # Shanks & Pottenger say the following was at 2:00; go with IATA.
+ Rule	NC	1997	only	-	Mar	 2	2:00s	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Noumea	11:05:48 -	LMT	1912 Jan 13 # Nouméa
+ 			11:00	NC	+11/+12
+ 
+@@ -559,7 +559,7 @@
+ Rule	Chatham	2007	max	-	Sep	lastSun	2:45s	1:00	-
+ Rule	NZ	2008	max	-	Apr	Sun>=1	2:00s	0	S
+ Rule	Chatham	2008	max	-	Apr	Sun>=1	2:45s	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Auckland	11:39:04 -	LMT	1868 Nov  2
+ 			11:30	NZ	NZ%sT	1946 Jan  1
+ 			12:00	NZ	NZ%sT
+@@ -585,7 +585,7 @@
+ Rule	Cook	1978	only	-	Nov	12	0:00	0:30	-
+ Rule	Cook	1979	1991	-	Mar	Sun>=1	0:00	0	-
+ Rule	Cook	1979	1990	-	Oct	lastSun	0:00	0:30	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Rarotonga	-10:39:04 -	LMT	1901        # Avarua
+ 			-10:30	-	-1030	1978 Nov 12
+ 			-10:00	Cook	-10/-0930
+@@ -594,7 +594,7 @@
+ 
+ 
+ # Niue
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Niue	-11:19:40 -	LMT	1901        # Alofi
+ 			-11:20	-	-1120	1951
+ 			-11:30	-	-1130	1978 Oct  1
+@@ -601,7 +601,7 @@
+ 			-11:00	-	-11
+ 
+ # Norfolk
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Norfolk	11:11:52 -	LMT	1901 # Kingston
+ 			11:12	-	+1112	1951
+ 			11:30	-	+1130	1974 Oct 27 02:00
+@@ -610,13 +610,13 @@
+ 			11:00	-	+11
+ 
+ # Palau (Belau)
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Palau	-15:02:04 -	LMT	1844 Dec 31	# Koror
+ 			  8:57:56 -	LMT	1901
+ 			  9:00	-	+09
+ 
+ # Papua New Guinea
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Port_Moresby 9:48:40 -	LMT	1880
+ 			9:48:32	-	PMMT	1895 # Port Moresby Mean Time
+ 			10:00	-	+10
+@@ -646,7 +646,7 @@
+ 			11:00	-	+11
+ 
+ # Pitcairn
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Pitcairn	-8:40:20 -	LMT	1901        # Adamstown
+ 			-8:30	-	-0830	1998 Apr 27  0:00
+ 			-8:00	-	-08
+@@ -731,7 +731,7 @@
+ Rule	WS	2011	only	-	Sep	lastSat	3:00	1	-
+ Rule	WS	2012	max	-	Apr	Sun>=1	4:00	0	-
+ Rule	WS	2012	max	-	Sep	lastSun	3:00	1	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Apia	 12:33:04 -	LMT	1892 Jul  5
+ 			-11:26:56 -	LMT	1911
+ 			-11:30	-	-1130	1950
+@@ -740,7 +740,7 @@
+ 
+ # Solomon Is
+ # excludes Bougainville, for which see Papua New Guinea
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Guadalcanal 10:39:48 -	LMT	1912 Oct # Honiara
+ 			11:00	-	+11
+ 
+@@ -763,7 +763,7 @@
+ # was "11 hours slow on G.M.T."  Go with Thorsen and assume Shanks & Pottenger
+ # are off by an hour starting in 1901.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Fakaofo	-11:24:56 -	LMT	1901
+ 			-11:00	-	-11	2011 Dec 30
+ 			13:00	-	+13
+@@ -776,7 +776,7 @@
+ Rule	Tonga	2001	2002	-	Jan	lastSun	2:00	0	-
+ Rule	Tonga	2016	only	-	Nov	Sun>=1	2:00	1:00	-
+ Rule	Tonga	2017	only	-	Jan	Sun>=15	3:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Tongatapu	12:19:20 -	LMT	1901
+ 			12:20	-	+1220	1941
+ 			13:00	-	+13	1999
+@@ -783,7 +783,7 @@
+ 			13:00	Tonga	+13/+14
+ 
+ # Tuvalu
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Funafuti	11:56:52 -	LMT	1901
+ 			12:00	-	+12
+ 
+@@ -844,7 +844,7 @@
+ # uninhabited since World War II; was probably like Pacific/Kiritimati
+ 
+ # Wake
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Wake	11:06:28 -	LMT	1901
+ 			12:00	-	+12
+ 
+@@ -857,12 +857,12 @@
+ Rule	Vanuatu	1985	1991	-	Sep	Sun>=23	0:00	1:00	-
+ Rule	Vanuatu	1992	1993	-	Jan	Sun>=23	0:00	0	-
+ Rule	Vanuatu	1992	only	-	Oct	Sun>=23	0:00	1:00	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Efate	11:13:16 -	LMT	1912 Jan 13 # Vila
+ 			11:00	Vanuatu	+11/+12
+ 
+ # Wallis and Futuna
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Wallis	12:15:20 -	LMT	1901
+ 			12:00	-	+12
+ 
+@@ -1248,6 +1248,22 @@
+ # in WA or its introduction in SA had anything to do with the genesis
+ # of this time zone.  My hunch is that it's been around since well
+ # before 1975.  I remember seeing it noted on road maps decades ago.
++#
++# From Gilmore Davidson (2019-04-08):
++# https://www.abc.net.au/news/2019-04-08/this-remote-stretch-of-desert-has-its-own-custom-time-zone/10981000
++# ... include[s] a rough description of the geographical boundaries...
++# "The time zone exists for about 340 kilometres and takes in the tiny
++# roadhouse communities of Cocklebiddy, Madura, Eucla and Border Village."
++# ... and an indication that the zone has definitely been in existence
++# since before the 1970 cut-off of the database ...
++# From Paul Eggert (2019-05-17):
++# That ABC Esperance story by Christien de Garis also says:
++#    Although the Central Western Time Zone is not officially recognised (your
++#    phones won't automatically change), there is a sign instructing you which
++#    way to wind your clocks 45 minutes and scrawled underneath one of them in
++#    Texta is the word: 'Why'?
++#    "Good question," Mr Pike said.
++#    "I don't even know that, and it's been going for over 50 years."
+ 
+ # From Paul Eggert (2006-12-15):
+ # For lack of better info, assume the tradition dates back to the
+@@ -1566,6 +1582,42 @@
+ ###############################################################################
+ 
+ 
++# Bonin (Ogasawara) Islands and Marcus Island (Minami-Tori-shima)
++
++# From Wakaba (2019-01-28) via Phake Nick:
++# National Diet Library of Japan has several reports by Japanese Government
++# officers that describe the time used in islands when they visited there.
++# According to them (and other sources such as newspapers), standard time UTC
++# + 10 (JST + 1) and DST UTC + 11 (JST + 2) was used until its return to Japan
++# at 1968-06-26 00:00 JST.  The exact periods of DST are still unknown.
++# I guessed Guam, Mariana, and Bonin and Marcus districts might have
++# synchronized their DST periods, but reports imply they had their own
++# decisions, i.e. there were three or more different time zones....
++#
++# https://wiki.suikawiki.org/n/小笠原諸島の標準時
++
++# From Phake Nick (2019-02-12):
++# Because their last time change to return to Japanese time when they returned
++# to Japanese rule was right before 1970, ... per the current tz database
++# rule, the information doesn't warrant creation of a new timezone for Bonin
++# Islands itself and is thus as an anecdotal note for interest purpose only.
++# ... [The abovementioned link] described some special timekeeping phenomenon
++# regarding Marcus island, another remote island currently owned by Japanese
++# in the same administrative unit as Bonin Islands.  Many reports claim that
++# the American coastal guard on the American quarter of the island use its own
++# coastal guard time, and most sources describe the time as UTC+11, being two
++# hours faster than JST used by some Japanese personnel on the island.  Some
++# sites describe it as same as Wake Island/Guam time although it would be
++# incorrect to be same as Guam.  And then in a few Japanese governmental
++# report from 1980s (from National Institute of Information and Communications
++# Technology) regarding the construction of VLBI facility on the Marcus
++# Island, it claimed that there are three time standards being used on the
++# island at the time which include not just JST (UTC+9) or [US]CG time
++# (UTC+11) but also a JMSDF time (UTC+10) (Japan Maritime Self-Defense
++# Force).  Unfortunately there are no other sources that mentioned such time
++# and there are also no information on things like how the time was used.
++
++
+ # Fiji
+ 
+ # Howse writes (p 153) that in 1879 the British governor of Fiji
+--- contrib/tzdata/backzone.orig
++++ contrib/tzdata/backzone
+@@ -38,7 +38,7 @@
+ # commentary and rules associated with the entry.
+ #
+ # As explained in the zic man page, the zone columns are:
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ 
+ # Ethiopia
+ # From Paul Eggert (2014-07-31):
+--- contrib/tzdata/checktab.awk.orig
++++ contrib/tzdata/checktab.awk
+@@ -63,12 +63,19 @@
+ 		coordinates = $2
+ 		tz = $3
+ 		comments = $4
+-		if (cc < cc0) {
++
++		# Don't complain about a special case for Crimea in zone.tab.
++		# FIXME: zone.tab should be removed, since it is obsolete.
++		# Or at least put just "XX" in its country-code column.
++		if (cc < cc0 \
++		    && !(zone_table == "zone.tab" \
++			 && tz0 == "Europe/Simferopol")) {
+ 			printf "%s:%d: country code '%s' is out of order\n", \
+ 				zone_table, zone_NR, cc >>"/dev/stderr"
+ 			status = 1
+ 		}
+ 		cc0 = cc
++		tz0 = tz
+ 		tztab[tz] = 1
+ 		tz2comments[tz] = comments
+ 		tz2NR[tz] = zone_NR
+--- contrib/tzdata/europe.orig
++++ contrib/tzdata/europe
+@@ -122,7 +122,7 @@
+ # position is 51° 28' 30" N, 0° 18' 45" W. The longitude should
+ # be within about ±2". The Ordnance Survey grid reference is TQ172761.
+ #
+-# [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.]
++# [This yields STDOFF = -0:01:15 for London LMT in the 18th century.]
+ 
+ # From Paul Eggert (1993-11-18):
+ #
+@@ -500,7 +500,7 @@
+ #
+ # Use Europe/London for Jersey, Guernsey, and the Isle of Man.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/London	-0:01:15 -	LMT	1847 Dec  1  0:00s
+ 			 0:00	GB-Eire	%s	1968 Oct 27
+ 			 1:00	-	BST	1971 Oct 31  2:00u
+@@ -538,7 +538,7 @@
+ Rule	Eire	1990	1995	-	Oct	Sun>=22	 1:00u	-1:00	-
+ Rule	Eire	1996	max	-	Oct	lastSun	 1:00u	-1:00	-
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Dublin	-0:25:00 -	LMT	1880 Aug  2
+ 			-0:25:21 -	DMT	1916 May 21  2:00s
+ 			-0:25:21 1:00	IST	1916 Oct  1  2:00s
+@@ -737,7 +737,7 @@
+ 
+ # These are for backward compatibility with older versions.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	WET		0:00	EU	WE%sT
+ Zone	CET		1:00	C-Eur	CE%sT
+ Zone	MET		1:00	C-Eur	ME%sT
+@@ -797,7 +797,7 @@
+ Rule	Albania	1983	only	-	Apr	18	0:00	1:00	S
+ Rule	Albania	1983	only	-	Oct	 1	0:00	0	-
+ Rule	Albania	1984	only	-	Apr	 1	0:00	1:00	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Tirane	1:19:20 -	LMT	1914
+ 			1:00	-	CET	1940 Jun 16
+ 			1:00	Albania	CE%sT	1984 Jul
+@@ -804,7 +804,7 @@
+ 			1:00	EU	CE%sT
+ 
+ # Andorra
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Andorra	0:06:04 -	LMT	1901
+ 			0:00	-	WET	1946 Sep 30
+ 			1:00	-	CET	1985 Mar 31  2:00
+@@ -830,7 +830,7 @@
+ Rule	Austria	1948	only	-	Apr	18	2:00s	1:00	S
+ Rule	Austria	1980	only	-	Apr	 6	0:00	1:00	S
+ Rule	Austria	1980	only	-	Sep	28	0:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Vienna	1:05:21 -	LMT	1893 Apr
+ 			1:00	C-Eur	CE%sT	1920
+ 			1:00	Austria	CE%sT	1940 Apr  1  2:00s
+@@ -862,7 +862,7 @@
+ # Belarussian government decided against changing to winter time....
+ # http://eng.belta.by/all_news/society/Belarus-decides-against-adjusting-time-in-Russias-wake_i_76335.html
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Minsk	1:50:16 -	LMT	1880
+ 			1:50	-	MMT	1924 May  2 # Minsk Mean Time
+ 			2:00	-	EET	1930 Jun 21
+@@ -926,7 +926,7 @@
+ Rule	Belgium	1945	only	-	Sep	16	 2:00s	0	-
+ Rule	Belgium	1946	only	-	May	19	 2:00s	1:00	S
+ Rule	Belgium	1946	only	-	Oct	 7	 2:00s	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Brussels	0:17:30 -	LMT	1880
+ 			0:17:30	-	BMT	1892 May  1 12:00  # Brussels MT
+ 			0:00	-	WET	1914 Nov  8
+@@ -953,7 +953,7 @@
+ Rule	Bulg	1980	1982	-	Apr	Sat>=1	23:00	1:00	S
+ Rule	Bulg	1980	only	-	Sep	29	 1:00	0	-
+ Rule	Bulg	1981	only	-	Sep	27	 2:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Sofia	1:33:16 -	LMT	1880
+ 			1:56:56	-	IMT	1894 Nov 30 # Istanbul MT?
+ 			2:00	-	EET	1942 Nov  2  3:00
+@@ -986,7 +986,7 @@
+ Rule	Czech	1946	1949	-	Oct	Sun>=1	2:00s	0	-
+ Rule	Czech	1947	1948	-	Apr	Sun>=15	2:00s	1:00	S
+ Rule	Czech	1949	only	-	Apr	 9	2:00s	1:00	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Prague	0:57:44 -	LMT	1850
+ 			0:57:44	-	PMT	1891 Oct    # Prague Mean Time
+ 			1:00	C-Eur	CE%sT	1945 May  9
+@@ -1048,7 +1048,7 @@
+ Rule	Denmark	1948	only	-	May	 9	 2:00s	1:00	S
+ Rule	Denmark	1948	only	-	Aug	 8	 2:00s	0	-
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Copenhagen	 0:50:20 -	LMT	1890
+ 			 0:50:20 -	CMT	1894 Jan  1 # Copenhagen MT
+ 			 1:00	Denmark	CE%sT	1942 Nov  2  2:00s
+@@ -1145,7 +1145,7 @@
+ Rule	Thule	2007	max	-	Mar	Sun>=8	2:00	1:00	D
+ Rule	Thule	2007	max	-	Nov	Sun>=1	2:00	0	S
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Danmarkshavn -1:14:40 -	LMT	1916 Jul 28
+ 			-3:00	-	-03	1980 Apr  6  2:00
+ 			-3:00	EU	-03/-02	1996
+@@ -1211,7 +1211,7 @@
+ # From Urmet Jänes (2002-03-28):
+ # The legislative reference is Government decree No. 84 on 2002-02-21.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Tallinn	1:39:00	-	LMT	1880
+ 			1:39:00	-	TMT	1918 Feb    # Tallinn Mean Time
+ 			1:00	C-Eur	CE%sT	1919 Jul
+@@ -1274,7 +1274,7 @@
+ # Milne says Helsinki (Helsingfors) time was 1:39:49.2 (official document);
+ # round to nearest.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Helsinki	1:39:49 -	LMT	1878 May 31
+ 			1:39:49	-	HMT	1921 May    # Helsinki Mean Time
+ 			2:00	Finland	EE%sT	1983
+@@ -1364,7 +1364,7 @@
+ # but Howse quotes the actual French legislation as saying 0:09:21.
+ # Go with Howse.  Howse writes that the time in France was officially based
+ # on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Paris	0:09:21 -	LMT	1891 Mar 15  0:01
+ 			0:09:21	-	PMT	1911 Mar 11  0:01 # Paris MT
+ # Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
+@@ -1412,7 +1412,7 @@
+ Rule SovietZone	1945	only	-	Sep	24	3:00	1:00	S
+ Rule SovietZone	1945	only	-	Nov	18	2:00s	0	-
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Berlin	0:53:28 -	LMT	1893 Apr
+ 			1:00	C-Eur	CE%sT	1945 May 24  2:00
+ 			1:00 SovietZone	CE%sT	1946
+@@ -1440,7 +1440,7 @@
+ # is in Europe.  Our reference location Tbilisi is in the Asian part.
+ 
+ # Gibraltar
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Gibraltar	-0:21:24 -	LMT	1880 Aug  2  0:00s
+ 			0:00	GB-Eire	%s	1957 Apr 14  2:00
+ 			1:00	-	CET	1982
+@@ -1471,7 +1471,7 @@
+ Rule	Greece	1979	only	-	Sep	29	2:00	0	-
+ Rule	Greece	1980	only	-	Apr	 1	0:00	1:00	S
+ Rule	Greece	1980	only	-	Sep	28	0:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Athens	1:34:52 -	LMT	1895 Sep 14
+ 			1:34:52	-	AMT	1916 Jul 28  0:01 # Athens MT
+ 			2:00	Greece	EE%sT	1941 Apr 30
+@@ -1508,7 +1508,7 @@
+ Rule	Hungary	1957	only	-	Jun	Sun>=1	 1:00	1:00	S
+ Rule	Hungary	1957	only	-	Sep	lastSun	 3:00	0	-
+ Rule	Hungary	1980	only	-	Apr	 6	 1:00	1:00	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Budapest	1:16:20 -	LMT	1890 Oct
+ 			1:00	C-Eur	CE%sT	1918
+ 			1:00	Hungary	CE%sT	1941 Apr  8
+@@ -1569,7 +1569,7 @@
+ Rule	Iceland	1949	only	-	Oct	30	 1:00s	0	-
+ Rule	Iceland	1950	1966	-	Oct	Sun>=22	 1:00s	0	-
+ Rule	Iceland	1967	only	-	Oct	29	 1:00s	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Atlantic/Reykjavik	-1:28	-	LMT	1908
+ 			-1:00	Iceland	-01/+00	1968 Apr  7  1:00s
+ 			 0:00	-	GMT
+@@ -1583,6 +1583,25 @@
+ # But these events all occurred before the 1970 cutoff,
+ # so record only the time in Rome.
+ #
++# From Stephen Trainor (2019-05-06):
++# http://www.ac-ilsestante.it/MERIDIANE/ora_legale/ORA_LEGALE_ESTIVA_IN_ITALIA.htm
++# ... the [1866] law went into effect on 12 December 1866, rather than
++# the date of the decree (22 Sep 1866)
++# https://web.archive.org/web/20070824155341/http://www.iav.it/planetario/didastro/didastro/english.htm
++# ... "In Italy in 1866 there were 6 railway times (Torino, Verona, Firenze,
++# Roma, Napoli, Palermo). On that year it was decided to unify them, adopting
++# the average time of Rome (even if this city was not yet part of the
++# kingdom).  On the 12th December 1866, on the starting of the winter time
++# table, it took effect in the railways, the post office and the telegraph,
++# not only for the internal service but also for the public....  Milano set
++# the public watches on the Rome time on the same day (12th December 1866),
++# Torino and Bologna on the 1st January 1867, Venezia the 1st May 1880 and the
++# last city was Cagliari in 1886."
++#
++# From Luigi Rosa (2019-05-07):
++# this is the scan of the decree:
++# http://www.radiomarconi.com/marconi/filopanti/1866c.jpg
++#
+ # From Michael Deckers (2016-10-24):
+ # http://www.ac-ilsestante.it/MERIDIANE/ora_legale quotes a law of 1893-08-10
+ # ... [translated as] "The preceding dispositions will enter into
+@@ -1593,6 +1612,7 @@
+ # The authoritative source for time in Italy is the national metrological
+ # institute, which has a summary page of historical DST data at
+ # http://www.inrim.it/res/tf/ora_legale_i.shtml
++# [now at http://oldsite.inrim.it/res/tf/ora_legale_i.shtml as of 2017]
+ # (2016-10-24):
+ # http://www.renzobaldini.it/le-ore-legali-in-italia/
+ # has still different data for 1944.  It divides Italy in two, as
+@@ -1656,8 +1676,8 @@
+ Rule	Italy	1977	1979	-	May	Sun>=22	 0:00s	1:00	S
+ Rule	Italy	1978	only	-	Oct	 1	 0:00s	0	-
+ Rule	Italy	1979	only	-	Sep	30	 0:00s	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Europe/Rome	0:49:56 -	LMT	1866 Sep 22
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
++Zone	Europe/Rome	0:49:56 -	LMT	1866 Dec 12
+ 			0:49:56	-	RMT	1893 Oct 31 23:49:56 # Rome Mean
+ 			1:00	Italy	CE%sT	1943 Sep 10
+ 			1:00	C-Eur	CE%sT	1944 Jun  4
+@@ -1732,7 +1752,7 @@
+ # Byalokoz 1919 says Latvia was 1:36:34.
+ # Go with Byalokoz.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Riga	1:36:34	-	LMT	1880
+ 			1:36:34	-	RMT	1918 Apr 15  2:00 # Riga MT
+ 			1:36:34	1:00	LST	1918 Sep 16  3:00 # Latvian ST
+@@ -1802,7 +1822,7 @@
+ # http://www.lrvk.lt/nut/11/n1749.htm
+ 
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Vilnius	1:41:16	-	LMT	1880
+ 			1:24:00	-	WMT	1917        # Warsaw Mean Time
+ 			1:35:36	-	KMT	1919 Oct 10 # Kaunas Mean Time
+@@ -1846,7 +1866,7 @@
+ Rule	Lux	1927	only	-	Apr	 9	23:00	1:00	S
+ Rule	Lux	1928	only	-	Apr	14	23:00	1:00	S
+ Rule	Lux	1929	only	-	Apr	20	23:00	1:00	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Luxembourg	0:24:36 -	LMT	1904 Jun
+ 			1:00	Lux	CE%sT	1918 Nov 25
+ 			0:00	Lux	WE%sT	1929 Oct  6  2:00s
+@@ -1871,7 +1891,7 @@
+ Rule	Malta	1975	1979	-	Apr	Sun>=15	2:00	1:00	S
+ Rule	Malta	1975	1980	-	Sep	Sun>=15	2:00	0	-
+ Rule	Malta	1980	only	-	Mar	31	2:00	1:00	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Malta	0:58:04 -	LMT	1893 Nov  2  0:00s # Valletta
+ 			1:00	Italy	CE%sT	1973 Mar 31
+ 			1:00	Malta	CE%sT	1981
+@@ -1940,7 +1960,7 @@
+ Rule	Moldova	1997	max	-	Mar	lastSun	 2:00	1:00	S
+ Rule	Moldova	1997	max	-	Oct	lastSun	 3:00	0	-
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Chisinau	1:55:20 -	LMT	1880
+ 			1:55	-	CMT	1918 Feb 15 # Chisinau MT
+ 			1:44:24	-	BMT	1931 Jul 24 # Bucharest MT
+@@ -1956,7 +1976,7 @@
+ # Monaco
+ # Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+ # more precise 0:09:21.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Monaco	0:29:32 -	LMT	1891 Mar 15
+ 			0:09:21	-	PMT	1911 Mar 11 # Paris Mean Time
+ 			0:00	France	WE%sT	1945 Sep 16  3:00
+@@ -2031,8 +2051,8 @@
+ Rule	Neth	1945	only	-	Sep	16	2:00s	0	-
+ #
+ # Amsterdam Mean Time was +00:19:32.13, but the .13 is omitted
+-# below because the current format requires GMTOFF to be an integer.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# below because the current format requires STDOFF to be an integer.
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Amsterdam	0:19:32 -	LMT	1835
+ 			0:19:32	Neth	%s	1937 Jul  1
+ 			0:20	Neth +0020/+0120 1940 May 16  0:00
+@@ -2051,7 +2071,7 @@
+ Rule	Norway	1959	1964	-	Mar	Sun>=15	2:00s	1:00	S
+ Rule	Norway	1959	1965	-	Sep	Sun>=15	2:00s	0	-
+ Rule	Norway	1965	only	-	Apr	25	2:00s	1:00	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Oslo	0:43:00 -	LMT	1895 Jan  1
+ 			1:00	Norway	CE%sT	1940 Aug 10 23:00
+ 			1:00	C-Eur	CE%sT	1945 Apr  2  2:00
+@@ -2142,7 +2162,7 @@
+ Rule	Poland	1960	only	-	Apr	 3	1:00s	1:00	S
+ Rule	Poland	1961	1964	-	May	lastSun	1:00s	1:00	S
+ Rule	Poland	1962	1964	-	Sep	lastSun	1:00s	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Warsaw	1:24:00 -	LMT	1880
+ 			1:24:00	-	WMT	1915 Aug  5 # Warsaw Mean Time
+ 			1:00	C-Eur	CE%sT	1918 Sep 16  3:00
+@@ -2247,7 +2267,7 @@
+ Rule	Port	1981	1982	-	Mar	lastSun	 1:00s	1:00	S
+ Rule	Port	1983	only	-	Mar	lastSun	 2:00s	1:00	S
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Lisbon	-0:36:45 -	LMT	1884
+ 			-0:36:45 -	LMT	1912 Jan  1  0:00u # Lisbon MT
+ 			 0:00	Port	WE%sT	1966 Apr  3  2:00
+@@ -2306,7 +2326,7 @@
+ Rule	Romania	1980	only	-	Sep	lastSun	 1:00	0	-
+ Rule	Romania	1991	1993	-	Mar	lastSun	 0:00s	1:00	S
+ Rule	Romania	1991	1993	-	Sep	lastSun	 0:00s	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Bucharest	1:44:24 -	LMT	1891 Oct
+ 			1:44:24	-	BMT	1931 Jul 24 # Bucharest MT
+ 			2:00	Romania	EE%sT	1981 Mar 29  2:00s
+@@ -3345,7 +3365,7 @@
+ # See Europe/Rome.
+ 
+ # Serbia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Belgrade	1:22:00	-	LMT	1884
+ 			1:00	-	CET	1941 Apr 18 23:00
+ 			1:00	C-Eur	CE%sT	1945
+@@ -3451,7 +3471,7 @@
+ Rule SpainAfrica 1977	only	-	Sep	28	 0:00	0	-
+ Rule SpainAfrica 1978	only	-	Jun	 1	 0:00	1:00	S
+ Rule SpainAfrica 1978	only	-	Aug	 4	 0:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Madrid	-0:14:44 -	LMT	1900 Dec 31 23:45:16
+ 			 0:00	Spain	WE%sT	1940 Mar 16 23:00
+ 			 1:00	Spain	CE%sT	1979
+@@ -3519,7 +3539,7 @@
+ #
+ # Source: The newspaper "Dagens Nyheter", 1916-10-01, page 7 upper left.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Stockholm	1:12:12 -	LMT	1879 Jan  1
+ 			1:00:14	-	SET	1900 Jan  1 # Swedish Time
+ 			1:00	-	CET	1916 May 14 23:00
+@@ -3622,7 +3642,7 @@
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Swiss	1941	1942	-	May	Mon>=1	1:00	1:00	S
+ Rule	Swiss	1941	1942	-	Oct	Mon>=1	2:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Zurich	0:34:08 -	LMT	1853 Jul 16 # See above comment.
+ 			0:29:46	-	BMT	1894 Jun    # Bern Mean Time
+ 			1:00	Swiss	CE%sT	1981
+@@ -3772,7 +3792,7 @@
+ Rule	Turkey	1994	only	-	Mar	20	1:00s	1:00	S
+ Rule	Turkey	1995	2006	-	Mar	lastSun	1:00s	1:00	S
+ Rule	Turkey	1996	2006	-	Oct	lastSun	1:00s	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Istanbul	1:55:52 -	LMT	1880
+ 			1:56:56	-	IMT	1910 Oct # Istanbul Mean Time?
+ 			2:00	Turkey	EE%sT	1978 Oct 15
+@@ -3869,16 +3889,8 @@
+ # controversial, and some day "Kyiv" may become substantially more popular in
+ # English; in the meantime, stick with the traditional English "Kiev" as that
+ # means less disruption for our users.
+-#
+-# Anyway, none of the common English-language spellings (Kiev, Kyiv, Kieff,
+-# Kijeff, Kijev, Kiyef, Kiyeff) do justice to the common pronunciation in
+-# Ukrainian, namely [ˈkɪjiu̯] (IPA).  This pronunciation has nothing like an
+-# English "v" or "f", and instead trails off with what an English-speaker
+-# would call a demure "oo" sound, and it would would be better anglicized as
+-# "Kuiyu".  Here's a sound file, if you would like to do as the Kuiyuvians do:
+-# https://commons.wikimedia.org/wiki/File:Uk-Київ.ogg
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ # This represents most of Ukraine.  See above for the spelling of "Kiev".
+ Zone Europe/Kiev	2:02:04 -	LMT	1880
+ 			2:02:04	-	KMT	1924 May  2 # Kiev Mean Time
+--- contrib/tzdata/factory.orig
++++ contrib/tzdata/factory
+@@ -8,5 +8,5 @@
+ # time zone abbreviation "-00", indicating that the actual time zone
+ # is unknown.
+ 
+-# Zone	NAME	GMTOFF	RULES	FORMAT
++# Zone	NAME	STDOFF	RULES	FORMAT
+ Zone	Factory	0	- "Local time zone must be set--use tzsetup"
+--- contrib/tzdata/northamerica.orig
++++ contrib/tzdata/northamerica
+@@ -93,10 +93,33 @@
+ # was the first nationwide legal time standard, and apparently
+ # time was just called "Standard Time" or "Daylight Saving Time".
+ 
+-# From Arthur David Olson:
+-# US Daylight Saving Time ended on the last Sunday of *October* in 1974.
+-# See, for example, the front page of the Saturday, 1974-10-26
+-# and Sunday, 1974-10-27 editions of the Washington Post.
++# From Paul Eggert (2019-06-04):
++# Here is the legal basis for the US federal rules.
++# * Public Law 65-106 (1918-03-19) implemented standard and daylight saving
++#   time for the first time across the US, springing forward on March's last
++#   Sunday and falling back on October's last Sunday.
++#   https://www.loc.gov/law/help/statutes-at-large/65th-congress/session-2/c65s2ch24.pdf
++# * Public Law 66-40 (1919-08-20) repealed DST on October 1919's last Sunday.
++#   https://www.loc.gov/law/help/statutes-at-large/66th-congress/session-1/c66s1ch51.pdf
++# * Public Law 77-403 (1942-01-20) started wartime DST on 1942-02-09.
++#   https://www.loc.gov/law/help/statutes-at-large/77th-congress/session-2/c77s2ch7.pdf
++# * Public Law 79-187 (1945-09-25) ended wartime DST on 1945-09-30.
++#   https://www.loc.gov/law/help/statutes-at-large/79th-congress/session-1/c79s1ch388.pdf
++# * Public Law 89-387 (1966-04-13) reinstituted a national standard for DST,
++#   from April's last Sunday to October's last Sunday, effective 1967.
++#   https://www.govinfo.gov/content/pkg/STATUTE-80/pdf/STATUTE-80-Pg107.pdf
++# * Public Law 93-182 (1973-12-15) moved the 1974 spring-forward to 01-06.
++#   https://www.govinfo.gov/content/pkg/STATUTE-87/pdf/STATUTE-87-Pg707.pdf
++# * Public Law 93-434 (1974-10-05) moved the 1975 spring-forward to
++#   February's last Sunday.
++#   https://www.govinfo.gov/content/pkg/STATUTE-88/pdf/STATUTE-88-Pg1209.pdf
++# * Public Law 99-359 (1986-07-08) moved the spring-forward to April's first
++#   Sunday.
++#   https://www.govinfo.gov/content/pkg/STATUTE-100/pdf/STATUTE-100-Pg764.pdf
++# * Public Law 109-58 (2005-08-08), effective 2007, moved the spring-forward
++#   to March's second Sunday and the fall-back to November's first Sunday.
++#   https://www.govinfo.gov/content/pkg/PLAW-109publ58/pdf/PLAW-109publ58.pdf
++# All transitions are at 02:00 local time.
+ 
+ # From Arthur David Olson:
+ # Before the Uniform Time Act of 1966 took effect in 1967, observance of
+@@ -152,11 +175,11 @@
+ Rule	US	1918	1919	-	Oct	lastSun	2:00	0	S
+ Rule	US	1942	only	-	Feb	9	2:00	1:00	W # War
+ Rule	US	1945	only	-	Aug	14	23:00u	1:00	P # Peace
+-Rule	US	1945	only	-	Sep	lastSun	2:00	0	S
++Rule	US	1945	only	-	Sep	30	2:00	0	S
+ Rule	US	1967	2006	-	Oct	lastSun	2:00	0	S
+ Rule	US	1967	1973	-	Apr	lastSun	2:00	1:00	D
+ Rule	US	1974	only	-	Jan	6	2:00	1:00	D
+-Rule	US	1975	only	-	Feb	23	2:00	1:00	D
++Rule	US	1975	only	-	Feb	lastSun	2:00	1:00	D
+ Rule	US	1976	1986	-	Apr	lastSun	2:00	1:00	D
+ Rule	US	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
+ Rule	US	2007	max	-	Mar	Sun>=8	2:00	1:00	D
+@@ -173,7 +196,7 @@
+ # increase the chances that they'll actually get compiled and to
+ # avoid the need to duplicate the US rules in another file.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	EST		 -5:00	-	EST
+ Zone	MST		 -7:00	-	MST
+ Zone	HST		-10:00	-	HST
+@@ -330,7 +353,7 @@
+ Rule	NYC	1921	1966	-	Apr	lastSun	2:00	1:00	D
+ Rule	NYC	1921	1954	-	Sep	lastSun	2:00	0	S
+ Rule	NYC	1955	1966	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/New_York	-4:56:02 -	LMT	1883 Nov 18 12:03:58
+ 			-5:00	US	E%sT	1920
+ 			-5:00	NYC	E%sT	1942
+@@ -390,7 +413,7 @@
+ Rule	Chicago	1922	1966	-	Apr	lastSun	2:00	1:00	D
+ Rule	Chicago	1922	1954	-	Sep	lastSun	2:00	0	S
+ Rule	Chicago	1955	1966	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Chicago	-5:50:36 -	LMT	1883 Nov 18 12:09:24
+ 			-6:00	US	C%sT	1920
+ 			-6:00	Chicago	C%sT	1936 Mar  1  2:00
+@@ -458,7 +481,7 @@
+ Rule	Denver	1921	only	-	May	22	2:00	0	S
+ Rule	Denver	1965	1966	-	Apr	lastSun	2:00	1:00	D
+ Rule	Denver	1965	1966	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Denver	-6:59:56 -	LMT	1883 Nov 18 12:00:04
+ 			-7:00	US	M%sT	1920
+ 			-7:00	Denver	M%sT	1942
+@@ -511,7 +534,7 @@
+ Rule	CA	1950	1966	-	Apr	lastSun	1:00	1:00	D
+ Rule	CA	1950	1961	-	Sep	lastSun	2:00	0	S
+ Rule	CA	1962	1966	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Los_Angeles -7:52:58 -	LMT	1883 Nov 18 12:07:02
+ 			-8:00	US	P%sT	1946
+ 			-8:00	CA	P%sT	1967
+@@ -619,7 +642,7 @@
+ # So they won't be waiting for Alaska to join them on 2019-03-10, but will
+ # rather change their clocks twice in seven weeks.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Juneau	 15:02:19 -	LMT	1867 Oct 19 15:33:32
+ 			 -8:57:41 -	LMT	1900 Aug 20 12:00
+ 			 -8:00	-	PST	1942
+@@ -739,7 +762,7 @@
+ # Note that 1933-05-21 was a Sunday.
+ # We're left to guess the time of day when Act 163 was approved; guess noon.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Honolulu	-10:31:26 -	LMT	1896 Jan 13 12:00
+ 			-10:30	-	HST	1933 Apr 30  2:00
+ 			-10:30	1:00	HDT	1933 May 21 12:00
+@@ -769,7 +792,7 @@
+ # Shanks says the 1944 experiment came to an end on 1944-03-17.
+ # Go with the Arizona State Library instead.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Phoenix	-7:28:18 -	LMT	1883 Nov 18 11:31:42
+ 			-7:00	US	M%sT	1944 Jan  1  0:01
+ 			-7:00	-	MST	1944 Apr  1  0:01
+@@ -795,7 +818,7 @@
+ # quarter of Idaho county) and eastern Oregon (most of Malheur County)
+ # switched four weeks late in 1974.
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Boise	-7:44:49 -	LMT	1883 Nov 18 12:15:11
+ 			-8:00	US	P%sT	1923 May 13  2:00
+ 			-7:00	US	M%sT	1974
+@@ -867,7 +890,7 @@
+ Rule Indianapolis 1941	only	-	Jun	22	2:00	1:00	D
+ Rule Indianapolis 1941	1954	-	Sep	lastSun	2:00	0	S
+ Rule Indianapolis 1946	1954	-	Apr	lastSun	2:00	1:00	D
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Indianapolis -5:44:38 - LMT	1883 Nov 18 12:15:22
+ 			-6:00	US	C%sT	1920
+ 			-6:00 Indianapolis C%sT	1942
+@@ -887,7 +910,7 @@
+ Rule	Marengo	1951	only	-	Sep	lastSun	2:00	0	S
+ Rule	Marengo	1954	1960	-	Apr	lastSun	2:00	1:00	D
+ Rule	Marengo	1954	1960	-	Sep	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Marengo -5:45:23 -	LMT	1883 Nov 18 12:14:37
+ 			-6:00	US	C%sT	1951
+ 			-6:00	Marengo	C%sT	1961 Apr 30  2:00
+@@ -911,7 +934,7 @@
+ Rule Vincennes	1960	only	-	Oct	lastSun	2:00	0	S
+ Rule Vincennes	1961	only	-	Sep	lastSun	2:00	0	S
+ Rule Vincennes	1962	1963	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Vincennes -5:50:07 - LMT	1883 Nov 18 12:09:53
+ 			-6:00	US	C%sT	1946
+ 			-6:00 Vincennes	C%sT	1964 Apr 26  2:00
+@@ -932,7 +955,7 @@
+ Rule Perry	1960	only	-	Oct	lastSun	2:00	0	S
+ Rule Perry	1961	only	-	Sep	lastSun	2:00	0	S
+ Rule Perry	1962	1963	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Tell_City -5:47:03 - LMT	1883 Nov 18 12:12:57
+ 			-6:00	US	C%sT	1946
+ 			-6:00 Perry	C%sT	1964 Apr 26  2:00
+@@ -948,7 +971,7 @@
+ Rule	Pike	1955	1960	-	Sep	lastSun	2:00	0	S
+ Rule	Pike	1956	1964	-	Apr	lastSun	2:00	1:00	D
+ Rule	Pike	1961	1964	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Petersburg -5:49:07 - LMT	1883 Nov 18 12:10:53
+ 			-6:00	US	C%sT	1955
+ 			-6:00	Pike	C%sT	1965 Apr 25  2:00
+@@ -970,7 +993,7 @@
+ Rule	Starke	1955	1956	-	Oct	lastSun	2:00	0	S
+ Rule	Starke	1957	1958	-	Sep	lastSun	2:00	0	S
+ Rule	Starke	1959	1961	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Knox -5:46:30 -	LMT	1883 Nov 18 12:13:30
+ 			-6:00	US	C%sT	1947
+ 			-6:00	Starke	C%sT	1962 Apr 29  2:00
+@@ -986,7 +1009,7 @@
+ Rule	Pulaski	1946	1954	-	Sep	lastSun	2:00	0	S
+ Rule	Pulaski	1955	1956	-	Oct	lastSun	2:00	0	S
+ Rule	Pulaski	1957	1960	-	Sep	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Winamac -5:46:25 - LMT	1883 Nov 18 12:13:35
+ 			-6:00	US	C%sT	1946
+ 			-6:00	Pulaski	C%sT	1961 Apr 30  2:00
+@@ -997,7 +1020,7 @@
+ 			-5:00	US	E%sT
+ #
+ # Switzerland County, Indiana, did not observe DST from 1973 through 2005.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Vevay -5:40:16 -	LMT	1883 Nov 18 12:19:44
+ 			-6:00	US	C%sT	1954 Apr 25  2:00
+ 			-5:00	-	EST	1969
+@@ -1022,7 +1045,7 @@
+ Rule Louisville	1946	only	-	Jun	2	2:00	0	S
+ Rule Louisville	1950	1955	-	Sep	lastSun	2:00	0	S
+ Rule Louisville	1956	1960	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Kentucky/Louisville -5:43:02 -	LMT	1883 Nov 18 12:16:58
+ 			-6:00	US	C%sT	1921
+ 			-6:00 Louisville C%sT	1942
+@@ -1128,7 +1151,7 @@
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+ Rule	Detroit	1948	only	-	Apr	lastSun	2:00	1:00	D
+ Rule	Detroit	1948	only	-	Sep	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Detroit	-5:32:11 -	LMT	1905
+ 			-6:00	-	CST	1915 May 15  2:00
+ 			-5:00	-	EST	1942
+@@ -1145,7 +1168,7 @@
+ Rule Menominee	1946	only	-	Sep	lastSun	2:00	0	S
+ Rule Menominee	1966	only	-	Apr	lastSun	2:00	1:00	D
+ Rule Menominee	1966	only	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Menominee	-5:50:27 -	LMT	1885 Sep 18 12:00
+ 			-6:00	US	C%sT	1946
+ 			-6:00 Menominee	C%sT	1969 Apr 27  2:00
+@@ -1379,7 +1402,7 @@
+ Rule	StJohns	2007	2010	-	Nov	Sun>=1	0:01	0	S
+ #
+ # St John's has an apostrophe, but Posix file names can't have apostrophes.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/St_Johns	-3:30:52 -	LMT	1884
+ 			-3:30:52 StJohns N%sT	1918
+ 			-3:30:52 Canada	N%sT	1919
+@@ -1392,7 +1415,7 @@
+ # most of east Labrador
+ 
+ # The name 'Happy Valley-Goose Bay' is too long; use 'Goose Bay'.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Goose_Bay	-4:01:40 -	LMT	1884 # Happy Valley-Goose Bay
+ 			-3:30:52 -	NST	1918
+ 			-3:30:52 Canada N%sT	1919
+@@ -1466,7 +1489,7 @@
+ Rule	Halifax	1956	1959	-	Sep	lastSun	2:00	0	S
+ Rule	Halifax	1962	1973	-	Apr	lastSun	2:00	1:00	D
+ Rule	Halifax	1962	1973	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Halifax	-4:14:24 -	LMT	1902 Jun 15
+ 			-4:00	Halifax	A%sT	1918
+ 			-4:00	Canada	A%sT	1919
+@@ -1504,7 +1527,7 @@
+ Rule	Moncton	1957	1972	-	Oct	lastSun	2:00	0	S
+ Rule	Moncton	1993	2006	-	Apr	Sun>=1	0:01	1:00	D
+ Rule	Moncton	1993	2006	-	Oct	lastSun	0:01	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Moncton	-4:19:08 -	LMT	1883 Dec  9
+ 			-5:00	-	EST	1902 Jun 15
+ 			-4:00	Canada	A%sT	1933
+@@ -1533,7 +1556,7 @@
+ # For lack of better info, guess this practice began around 1970, contra to
+ # Shanks & Pottenger who have this region observing AST/ADT.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Blanc-Sablon -3:48:28 -	LMT	1884
+ 			-4:00	Canada	A%sT	1970
+ 			-4:00	-	AST
+@@ -1701,19 +1724,10 @@
+ # was meant.
+ Rule	Toronto	1922	1926	-	Sep	Sun>=15	2:00	0	S
+ Rule	Toronto	1924	1927	-	May	Sun>=1	2:00	1:00	D
+-# The 1927-to-1939 rules can be expressed more simply as
+-# Rule	Toronto	1927	1937	-	Sep	Sun>=25	2:00	0	S
+-# Rule	Toronto	1928	1937	-	Apr	Sun>=25	2:00	1:00	D
+-# Rule	Toronto	1938	1940	-	Apr	lastSun	2:00	1:00	D
+-# Rule	Toronto	1938	1939	-	Sep	lastSun	2:00	0	S
+-# The rules below avoid use of Sun>=25
+-# (which pre-2004 versions of zic cannot handle).
+-Rule	Toronto	1927	1932	-	Sep	lastSun	2:00	0	S
+-Rule	Toronto	1928	1931	-	Apr	lastSun	2:00	1:00	D
+-Rule	Toronto	1932	only	-	May	1	2:00	1:00	D
+-Rule	Toronto	1933	1940	-	Apr	lastSun	2:00	1:00	D
+-Rule	Toronto	1933	only	-	Oct	1	2:00	0	S
+-Rule	Toronto	1934	1939	-	Sep	lastSun	2:00	0	S
++Rule	Toronto	1927	1937	-	Sep	Sun>=25	2:00	0	S
++Rule	Toronto	1928	1937	-	Apr	Sun>=25	2:00	1:00	D
++Rule	Toronto	1938	1940	-	Apr	lastSun	2:00	1:00	D
++Rule	Toronto	1938	1939	-	Sep	lastSun	2:00	0	S
+ Rule	Toronto	1945	1946	-	Sep	lastSun	2:00	0	S
+ Rule	Toronto	1946	only	-	Apr	lastSun	2:00	1:00	D
+ Rule	Toronto	1947	1949	-	Apr	lastSun	0:00	1:00	D
+@@ -1746,7 +1760,7 @@
+ # War,... [t]he cities agreed to implement DST during the summer
+ # months for the remainder of the war years.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Toronto	-5:17:32 -	LMT	1895
+ 			-5:00	Canada	E%sT	1919
+ 			-5:00	Toronto	E%sT	1942 Feb  9  2:00s
+@@ -1821,7 +1835,7 @@
+ Rule	Winn	1966	1986	-	Apr	lastSun	2:00s	1:00	D
+ Rule	Winn	1966	2005	-	Oct	lastSun	2:00s	0	S
+ Rule	Winn	1987	2005	-	Apr	Sun>=1	2:00s	1:00	D
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Winnipeg	-6:28:36 -	LMT	1887 Jul 16
+ 			-6:00	Winn	C%sT	2006
+ 			-6:00	Canada	C%sT
+@@ -1843,6 +1857,13 @@
+ # Willett (1914-03) notes that DST "has been in operation ... in the
+ # City of Moose Jaw, Saskatchewan, for one year."
+ 
++# From Paul Eggert (2019-04-26):
++# Chris Pearce's book "The Great Daylight Saving Time Controversy" (2017)
++# says that Regina observed DST in 1914-1917.  No dates and times,
++# unfortunately.  It also says that in 1914 Saskatoon observed DST
++# from 1 June to 6 July, and that DST was also tried out in Davidson,
++# Melfort, and Prince Albert.
++
+ # From Paul Eggert (2006-03-22):
+ # Shanks & Pottenger say that since 1970 this region has mostly been as Regina.
+ # Some western towns (e.g. Swift Current) switched from MST/MDT to CST in 1972.
+@@ -1905,7 +1926,7 @@
+ Rule	Swift	1959	1961	-	Apr	lastSun	2:00	1:00	D
+ Rule	Swift	1959	only	-	Oct	lastSun	2:00	0	S
+ Rule	Swift	1960	1961	-	Sep	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Regina	-6:58:36 -	LMT	1905 Sep
+ 			-7:00	Regina	M%sT	1960 Apr lastSun  2:00
+ 			-6:00	-	CST
+@@ -1936,7 +1957,7 @@
+ Rule	Edm	1969	only	-	Oct	lastSun	2:00	0	S
+ Rule	Edm	1972	1986	-	Apr	lastSun	2:00	1:00	D
+ Rule	Edm	1972	2006	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Edmonton	-7:33:52 -	LMT	1906 Sep
+ 			-7:00	Edm	M%sT	1987
+ 			-7:00	Canada	M%sT
+@@ -2029,7 +2050,7 @@
+ Rule	Vanc	1946	only	-	Oct	13	2:00	0	S
+ Rule	Vanc	1947	1961	-	Sep	lastSun	2:00	0	S
+ Rule	Vanc	1962	2006	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Vancouver	-8:12:28 -	LMT	1884
+ 			-8:00	Vanc	P%sT	1987
+ 			-8:00	Canada	P%sT
+@@ -2100,7 +2121,7 @@
+ #     varying the manner of reckoning standard time.
+ #
+ # * Yukon Territory Commissioner's Order 1966-20 Interpretation Ordinance
+-#   http://? - no online source found
++#   [no online source found]
+ #
+ # * Standard Time and Time Zones in Canada; Thomson, Malcolm M.; JRASC,
+ #   Vol. 64, pp.129-162; June 1970; SAO/NASA Astrophysics Data System (ADS)
+@@ -2133,7 +2154,7 @@
+ #     to say eight hours behind Greenwich Time.
+ #
+ # * O.I.C. 1980/02 INTERPRETATION ACT
+-#   http://? - no online source found
++#   [no online source found]
+ #
+ # * Yukon Daylight Saving Time, YOIC 1987/56
+ #   https://www.canlii.org/en/yk/laws/regu/yoic-1987-56/latest/yoic-1987-56.html
+@@ -2349,7 +2370,7 @@
+ Rule	NT_YK	1980	1986	-	Apr	lastSun	2:00	1:00	D
+ Rule	NT_YK	1980	2006	-	Oct	lastSun	2:00	0	S
+ Rule	NT_YK	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ # aka Panniqtuuq
+ Zone America/Pangnirtung 0	-	-00	1921 # trading post est.
+ 			-4:00	NT_YK	A%sT	1995 Apr Sun>=1  2:00
+@@ -2496,7 +2517,7 @@
+ 
+ # From Paul Eggert (2001-03-03):
+ #
+-# http://www.latimes.com/news/nation/20010303/t000018766.html
++# https://www.latimes.com/archives/la-xpm-2001-mar-03-mn-32561-story.html
+ # James F. Smith writes in today's LA Times
+ # * Sonora will continue to observe standard time.
+ # * Last week Mexico City's mayor Andrés Manuel López Obrador decreed that
+@@ -2623,7 +2644,7 @@
+ Rule	Mexico	2001	only	-	Sep	lastSun	2:00	0	S
+ Rule	Mexico	2002	max	-	Apr	Sun>=1	2:00	1:00	D
+ Rule	Mexico	2002	max	-	Oct	lastSun	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ # Quintana Roo; represented by Cancún
+ Zone America/Cancun	-5:47:04 -	LMT	1922 Jan  1  0:12:56
+ 			-6:00	-	CST	1981 Dec 23
+@@ -2816,7 +2837,7 @@
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Bahamas	1964	1975	-	Oct	lastSun	2:00	0	S
+ Rule	Bahamas	1964	1975	-	Apr	lastSun	2:00	1:00	D
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Nassau	-5:09:30 -	LMT	1912 Mar 2
+ 			-5:00	Bahamas	E%sT	1976
+ 			-5:00	US	E%sT
+@@ -2831,7 +2852,7 @@
+ Rule	Barb	1978	1980	-	Apr	Sun>=15	2:00	1:00	D
+ Rule	Barb	1979	only	-	Sep	30	2:00	0	S
+ Rule	Barb	1980	only	-	Sep	25	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Barbados	-3:58:29 -	LMT	1924 # Bridgetown
+ 			-3:58:29 -	BMT	1932 # Bridgetown Mean Time
+ 			-4:00	Barb	A%sT
+@@ -2845,7 +2866,7 @@
+ Rule	Belize	1974	only	-	Feb	 9	0:00	0	CST
+ Rule	Belize	1982	only	-	Dec	18	0:00	1:00	CDT
+ Rule	Belize	1983	only	-	Feb	12	0:00	0	CST
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Belize	-5:52:48 -	LMT	1912 Apr
+ 			-6:00	Belize	%s
+ 
+@@ -2862,7 +2883,7 @@
+ # Friday, the same thing will happen in Bermuda.
+ # http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Atlantic/Bermuda	-4:19:18 -	LMT	1930 Jan  1  2:00 # Hamilton
+ 			-4:00	-	AST	1974 Apr 28  2:00
+ 			-4:00	Canada	A%sT	1976
+@@ -2884,7 +2905,7 @@
+ Rule	CR	1991	only	-	Jul	 1	0:00	0	S
+ Rule	CR	1992	only	-	Mar	15	0:00	0	S
+ # There are too many San Josés elsewhere, so we'll use 'Costa Rica'.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Costa_Rica	-5:36:13 -	LMT	1890        # San José
+ 			-5:36:13 -	SJMT	1921 Jan 15 # San José Mean Time
+ 			-6:00	CR	C%sT
+@@ -3090,7 +3111,7 @@
+ Rule	Cuba	2012	max	-	Nov	Sun>=1	0:00s	0	S
+ Rule	Cuba	2013	max	-	Mar	Sun>=8	0:00s	1:00	D
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Havana	-5:29:28 -	LMT	1890
+ 			-5:29:36 -	HMT	1925 Jul 19 12:00 # Havana MT
+ 			-5:00	Cuba	C%sT
+@@ -3125,7 +3146,7 @@
+ Rule	DR	1970	only	-	Feb	21	0:00	0	EST
+ Rule	DR	1971	only	-	Jan	20	0:00	0	EST
+ Rule	DR	1972	1974	-	Jan	21	0:00	0	EST
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Santo_Domingo -4:39:36 -	LMT	1890
+ 			-4:40	-	SDMT	1933 Apr  1 12:00 # S. Dom. MT
+ 			-5:00	DR	%s	1974 Oct 27
+@@ -3140,7 +3161,7 @@
+ Rule	Salv	1987	1988	-	Sep	lastSun	0:00	0	S
+ # There are too many San Salvadors elsewhere, so use America/El_Salvador
+ # instead of America/San_Salvador.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/El_Salvador -5:56:48 -	LMT	1921 # San Salvador
+ 			-6:00	Salv	C%sT
+ 
+@@ -3173,7 +3194,7 @@
+ Rule	Guat	1991	only	-	Sep	 7	0:00	0	S
+ Rule	Guat	2006	only	-	Apr	30	0:00	1:00	D
+ Rule	Guat	2006	only	-	Oct	 1	0:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Guatemala	-6:02:04 -	LMT	1918 Oct 5
+ 			-6:00	Guat	C%sT
+ 
+@@ -3259,7 +3280,7 @@
+ Rule	Haiti	2012	2015	-	Nov	Sun>=1	2:00	0	S
+ Rule	Haiti	2017	max	-	Mar	Sun>=8	2:00	1:00	D
+ Rule	Haiti	2017	max	-	Nov	Sun>=1	2:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Port-au-Prince -4:49:20 -	LMT	1890
+ 			-4:49	-	PPMT	1917 Jan 24 12:00 # P-a-P MT
+ 			-5:00	Haiti	E%sT
+@@ -3298,7 +3319,7 @@
+ Rule	Hond	1987	1988	-	Sep	lastSun	0:00	0	S
+ Rule	Hond	2006	only	-	May	Sun>=1	0:00	1:00	D
+ Rule	Hond	2006	only	-	Aug	Mon>=1	0:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Tegucigalpa -5:48:52 -	LMT	1921 Apr
+ 			-6:00	Hond	C%sT
+ #
+@@ -3319,7 +3340,7 @@
+ # Neita L. The politician in all of us. Jamaica Observer 2014-09-20
+ # http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Jamaica	-5:07:10 -	LMT	1890        # Kingston
+ 			-5:07:10 -	KMT	1912 Feb    # Kingston Mean Time
+ 			-5:00	-	EST	1974
+@@ -3327,7 +3348,7 @@
+ 			-5:00	-	EST
+ 
+ # Martinique
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Martinique	-4:04:20 -      LMT	1890        # Fort-de-France
+ 			-4:04:20 -	FFMT	1911 May    # Fort-de-France MT
+ 			-4:00	-	AST	1980 Apr  6
+@@ -3391,7 +3412,7 @@
+ Rule	Nic	2005	only	-	Oct	Sun>=1	0:00	0	S
+ Rule	Nic	2006	only	-	Apr	30	2:00	1:00	D
+ Rule	Nic	2006	only	-	Oct	Sun>=1	1:00	0	S
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Managua	-5:45:08 -	LMT	1890
+ 			-5:45:12 -	MMT	1934 Jun 23 # Managua Mean Time?
+ 			-6:00	-	CST	1973 May
+@@ -3403,7 +3424,7 @@
+ 			-6:00	Nic	C%sT
+ 
+ # Panama
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Panama	-5:18:08 -	LMT	1890
+ 			-5:19:36 -	CMT	1908 Apr 22 # Colón Mean Time
+ 			-5:00	-	EST
+@@ -3411,7 +3432,7 @@
+ 
+ # Puerto Rico
+ # There are too many San Juans elsewhere, so we'll use 'Puerto_Rico'.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Puerto_Rico -4:24:25 -	LMT	1899 Mar 28 12:00 # San Juan
+ 			-4:00	-	AST	1942 May  3
+ 			-4:00	US	A%sT	1946
+@@ -3423,7 +3444,7 @@
+ 
+ # St Pierre and Miquelon
+ # There are too many St Pierres elsewhere, so we'll use 'Miquelon'.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Miquelon	-3:44:40 -	LMT	1911 May 15 # St Pierre
+ 			-4:00	-	AST	1980 May
+ 			-3:00	-	-03	1987
+@@ -3469,7 +3490,7 @@
+ # by March 2018 for TCI. Magnetic Media. 2017-08-25.
+ # http://magneticmediatv.com/2017/08/time-change-back-by-march-2018-for-tci/
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Grand_Turk	-4:44:32 -	LMT	1890
+ 			-5:07:10 -	KMT	1912 Feb # Kingston Mean Time
+ 			-5:00	-	EST	1979
+--- contrib/tzdata/pacificnew.orig
++++ contrib/tzdata/pacificnew
+@@ -21,7 +21,7 @@
+ ## Rule	Twilite	XXXX	max	uspres	Nov	Sun>=7	2:00	0	S
+ ## Rule	Twilite	XXXX	max	nonpres	Oct	lastSun	2:00	0	S
+ 
+-# Zone	NAME			GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
++# Zone	NAME			STDOFF	RULES/SAVE	FORMAT	[UNTIL]
+ ## Zone	America/Los_Angeles-PET	-8:00	US		P%sT	XXXX
+ ##				-8:00	Twilite		P%sT
+ 
+--- contrib/tzdata/southamerica.orig
++++ contrib/tzdata/southamerica
+@@ -396,7 +396,7 @@
+ # plus is that this silences a zic complaint that there's no POSIX TZ
+ # setting for timestamps past 2038.
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ #
+ # Buenos Aires (BA), Capital Federal (CF),
+ Zone America/Argentina/Buenos_Aires -3:53:48 - LMT	1894 Oct 31
+@@ -577,7 +577,7 @@
+ Link America/Curacao America/Aruba
+ 
+ # Bolivia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/La_Paz	-4:32:36 -	LMT	1890
+ 			-4:32:36 -	CMT	1931 Oct 15 # Calamarca MT
+ 			-4:32:36 1:00	BST	1932 Mar 21 # Bolivia ST
+@@ -920,14 +920,13 @@
+ # removed Tocantins.
+ Rule	Brazil	2013	2014	-	Feb	Sun>=15	0:00	0	-
+ Rule	Brazil	2015	only	-	Feb	Sun>=22	0:00	0	-
+-Rule	Brazil	2016	2022	-	Feb	Sun>=15	0:00	0	-
++Rule	Brazil	2016	2019	-	Feb	Sun>=15	0:00	0	-
+ # From Steffen Thorsen (2017-12-18):
+ # According to many media sources, next year's DST start in Brazil will move to
+-# the first Sunday of November, and it will stay like that for the years after.
++# the first Sunday of November
+ # ... https://www.timeanddate.com/news/time/brazil-delays-dst-2018.html
+ # From Steffen Thorsen (2017-12-20):
+ # http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2017/decreto/D9242.htm
+-#
+ # From Fábio Gomes (2018-10-04):
+ # The Brazilian president just announced a new change on this year DST.
+ # It was scheduled to start on November 4th and it was changed to November 18th.
+@@ -935,22 +934,21 @@
+ # The Brazilian government just announced that the change in DST was
+ # canceled....  Maybe the president Michel Temer also woke up one hour
+ # earlier today. :)
+-Rule	Brazil	2018	max	-	Nov	Sun>=1	0:00	1:00	-
+-Rule	Brazil	2023	only	-	Feb	Sun>=22	0:00	0	-
+-Rule	Brazil	2024	2025	-	Feb	Sun>=15	0:00	0	-
+-Rule	Brazil	2026	only	-	Feb	Sun>=22	0:00	0	-
+-Rule	Brazil	2027	2033	-	Feb	Sun>=15	0:00	0	-
+-Rule	Brazil	2034	only	-	Feb	Sun>=22	0:00	0	-
+-Rule	Brazil	2035	2036	-	Feb	Sun>=15	0:00	0	-
+-Rule	Brazil	2037	only	-	Feb	Sun>=22	0:00	0	-
+-# From Arthur David Olson (2008-09-29):
+-# The next is wrong in some years but is better than nothing.
+-Rule	Brazil	2038	max	-	Feb	Sun>=15	0:00	0	-
+-
+-# The latest ruleset listed above says that the following states observe DST:
++Rule	Brazil	2018	only	-	Nov	Sun>=1	0:00	1:00	-
++# The last ruleset listed above says that the following states observed DST:
+ # DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.
++#
++# From Steffen Thorsen (2019-04-05):
++# According to multiple sources the Brazilian president wants to get rid of DST.
++# https://gmconline.com.br/noticias/politica/bolsonaro-horario-de-verao-deve-acabar-este-ano
++# https://g1.globo.com/economia/noticia/2019/04/05/governo-anuncia-fim-do-horario-de-verao.ghtml
++# From Marcus Diniz (2019-04-25):
++# Brazil no longer has DST changes - decree signed today
++# https://g1.globo.com/politica/noticia/2019/04/25/bolsonaro-assina-decreto-que-acaba-com-o-horario-de-verao.ghtml
++# From Daniel Soares de Oliveira (2019-04-26):
++# http://www.planalto.gov.br/ccivil_03/_Ato2019-2022/2019/Decreto/D9772.htm
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ #
+ # Fernando de Noronha (administratively part of PE)
+ Zone America/Noronha	-2:09:40 -	LMT	1914
+@@ -1258,6 +1256,8 @@
+ # https://twitter.com/MinEnergia/status/1029009354001973248
+ # "We will keep the new time policy unchanged for at least the next 4 years."
+ # So we extend the new rules on Saturdays at 24:00 mainland time indefinitely.
++# From Juan Correa (2019-02-04):
++# http://www.diariooficial.interior.gob.cl/publicaciones/2018/11/23/42212/01/1498738.pdf
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Chile	1927	1931	-	Sep	 1	0:00	1:00	-
+@@ -1298,7 +1298,7 @@
+ Rule	Chile	2019	max	-	Sep	Sun>=2	4:00u	1:00	-
+ # IATA SSIM anomalies: (1992-02) says 1992-03-14;
+ # (1996-09) says 1998-03-08.  Ignore these.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Santiago	-4:42:46 -	LMT	1890
+ 			-4:42:46 -	SMT	1910 Jan 10 # Santiago Mean Time
+ 			-5:00	-	-05	1916 Jul  1
+@@ -1347,7 +1347,7 @@
+ # Palmer has followed Chile.  Prior to that, before the Falklands War,
+ # Palmer used to be supplied from Argentina.
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Antarctica/Palmer	0	-	-00	1965
+ 			-4:00	Arg	-04/-03	1969 Oct  5
+ 			-3:00	Arg	-03/-02	1982 May
+@@ -1362,7 +1362,7 @@
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	CO	1992	only	-	May	 3	0:00	1:00	-
+ Rule	CO	1993	only	-	Apr	 4	0:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Bogota	-4:56:16 -	LMT	1884 Mar 13
+ 			-4:56:16 -	BMT	1914 Nov 23 # Bogotá Mean Time
+ 			-5:00	CO	-05/-04
+@@ -1387,7 +1387,7 @@
+ # Netherlands as Kingdom Islands.  This won't affect their time zones
+ # though, as far as we know.
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Curacao	-4:35:47 -	LMT	1912 Feb 12 # Willemstad
+ 			-4:30	-	-0430	1965
+ 			-4:00	-	AST
+@@ -1423,7 +1423,7 @@
+ Rule	Ecuador	1992	only	-	Nov	28	0:00	1:00	-
+ Rule	Ecuador	1993	only	-	Feb	 5	0:00	0	-
+ #
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Guayaquil	-5:19:20 -	LMT	1890
+ 			-5:14:00 -	QMT	1931 # Quito Mean Time
+ 			-5:00	Ecuador	-05/-04
+@@ -1526,7 +1526,7 @@
+ Rule	Falk	1986	2000	-	Apr	Sun>=16	0:00	0	-
+ Rule	Falk	2001	2010	-	Apr	Sun>=15	2:00	0	-
+ Rule	Falk	2001	2010	-	Sep	Sun>=1	2:00	1:00	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
+ 			-3:51:24 -	SMT	1912 Mar 12 # Stanley Mean Time
+ 			-4:00	Falk	-04/-03	1983 May
+@@ -1535,13 +1535,13 @@
+ 			-3:00	-	-03
+ 
+ # French Guiana
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Cayenne	-3:29:20 -	LMT	1911 Jul
+ 			-4:00	-	-04	1967 Oct
+ 			-3:00	-	-03
+ 
+ # Guyana
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar    # Georgetown
+ 			-3:45	-	-0345	1975 Jul 31
+ 			-3:00	-	-03	1991
+@@ -1635,7 +1635,7 @@
+ # http://www.presidencia.gov.py/archivos/documentos/DECRETO1264_ey9r8zai.pdf
+ Rule	Para	2013	max	-	Mar	Sun>=22	0:00	0	-
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Asuncion	-3:50:40 -	LMT	1890
+ 			-3:50:40 -	AMT	1931 Oct 10 # Asunción Mean Time
+ 			-4:00	-	-04	1972 Oct
+@@ -1664,13 +1664,13 @@
+ # IATA is ambiguous for 1993/1995; go with Shanks & Pottenger.
+ Rule	Peru	1994	only	-	Jan	 1	0:00	1:00	-
+ Rule	Peru	1994	only	-	Apr	 1	0:00	0	-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Lima	-5:08:12 -	LMT	1890
+ 			-5:08:36 -	LMT	1908 Jul 28 # Lima Mean Time?
+ 			-5:00	Peru	-05/-04
+ 
+ # South Georgia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone Atlantic/South_Georgia -2:26:08 -	LMT	1890 # Grytviken
+ 			-2:00	-	-02
+ 
+@@ -1678,7 +1678,7 @@
+ # uninhabited; scientific personnel have wintered
+ 
+ # Suriname
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Paramaribo	-3:40:40 -	LMT	1911
+ 			-3:40:52 -	PMT	1935     # Paramaribo Mean Time
+ 			-3:40:36 -	PMT	1945 Oct    # The capital moved?
+@@ -1686,7 +1686,7 @@
+ 			-3:00	-	-03
+ 
+ # Trinidad and Tobago
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Port_of_Spain -4:06:04 -	LMT	1912 Mar 2
+ 			-4:00	-	AST
+ 
+@@ -1957,7 +1957,7 @@
+ # ... published in the official Gazette [2016-04-18], here:
+ # http://historico.tsj.gob.ve/gaceta_ext/abril/1842016/E-1842016-4551.pdf
+ 
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Caracas	-4:27:44 -	LMT	1890
+ 			-4:27:40 -	CMT	1912 Feb 12 # Caracas Mean Time?
+ 			-4:30	-	-0430	1965 Jan  1  0:00
+--- contrib/tzdata/systemv.orig
++++ contrib/tzdata/systemv
+@@ -23,7 +23,7 @@
+ Rule	SystemV	1976	max	-	Apr	lastSun	2:00	1:00	D
+ Rule	SystemV	1976	max	-	Oct	lastSun	2:00	0	S
+ 
+-# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
++# Zone	NAME		STDOFF	RULES/SAVE	FORMAT	[UNTIL]
+ ## Zone	SystemV/AST4ADT	-4:00	SystemV		A%sT
+ ## Zone	SystemV/EST5EDT	-5:00	SystemV		E%sT
+ ## Zone	SystemV/CST6CDT	-6:00	SystemV		C%sT
+--- contrib/tzdata/theory.html.orig
++++ contrib/tzdata/theory.html
+@@ -88,7 +88,7 @@
+ standard for <a
+ href="https://en.wikipedia.org/wiki/Unix">UNIX</a>-like systems.
+ As of this writing, the current edition of POSIX is: <a
+-href="http://pubs.opengroup.org/onlinepubs/9699919799/"> The Open
++href="https://pubs.opengroup.org/onlinepubs/9699919799/"> The Open
+ Group Base Specifications Issue 7</a>, IEEE Std 1003.1-2017, 2018
+ Edition.
+ Because the database's scope encompasses real-world changes to civil
+@@ -186,7 +186,7 @@
+     href="https://en.wikipedia.org/wiki/ASCII">ASCII</a> letters,
+     '<code>.</code>', '<code>-</code>' and '<code>_</code>'.
+     Do not use digits, as that might create an ambiguity with <a
+-    href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03">POSIX
++    href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03">POSIX
+     <code>TZ</code> strings</a>.
+     A file name component must not exceed 14 characters or start with
+     '<code>-</code>'.
+@@ -301,7 +301,7 @@
+ 
+ <p>
+ Guidelines have evolved with time, and names following old versions of
+-this guideline might not follow the current version. When guidelines
++these guidelines might not follow the current version. When guidelines
+ have changed, old names continue to be supported. Guideline changes
+ have included the following:
+ </p>
+@@ -330,7 +330,7 @@
+ </li>
+ 
+ <li>
+-Older versions of this guideline said that
++Older versions of these guidelines said that
+ there should typically be at least one name for each <a
+ href="https://en.wikipedia.org/wiki/ISO_3166-1"><abbr
+ title="International Organization for Standardization">ISO</abbr>
+@@ -379,8 +379,8 @@
+     special meaning to the
+     <a href="https://en.wikipedia.org/wiki/Unix_shell">UNIX shell</a>
+     and cause commands like
+-    '<code><a href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#set">set</a>
+-    `<a href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html">date</a>`</code>'
++    '<code><a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#set">set</a>
++    `<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html">date</a>`</code>'
+     to have unexpected effects.
+     Previous editions of this guideline required upper-case letters, but the
+     Congressman who introduced
+@@ -955,7 +955,7 @@
+   </li>
+   <li>
+     In POSIX, there is no tamper-proof way for a process to learn the
+-    system's best idea of local wall clock.
++    system's best idea of local (wall clock) time.
+     This is important for applications that an administrator wants
+     used only at certain times &ndash; without regard to whether the
+     user has fiddled the
+@@ -1052,14 +1052,14 @@
+   </li>
+   <li>
+     A function <code>tzsetwall</code> has been added to arrange for the
+-    system's best approximation to local wall clock time to be delivered
++    system's best approximation to local (wall clock) time to be delivered
+     by subsequent calls to <code>localtime</code>.
+-    Source code for portable applications that "must" run on local wall
+-    clock time should call <code>tzsetwall</code>;
++    Source code for portable applications that "must" run on local
++    time should call <code>tzsetwall</code>;
+     if such code is moved to "old" systems that do not
+     provide <code>tzsetwall</code>, you will not be able to generate an
+     executable program.
+-    (These functions also arrange for local wall clock time to
++    (These functions also arrange for local time to
+     be used if <code>tzset</code> is called &ndash; directly or
+     indirectly &ndash; and there is no <code>TZ</code> environment
+     variable; portable applications should not, however, rely on this
+@@ -1354,11 +1354,11 @@
+     Michael Allison and Robert Schmunk,
+     "<a href="https://www.giss.nasa.gov/tools/mars24/help/notes.html">Technical
+       Notes on Mars Solar Time as Adopted by the Mars24 Sunclock</a>"
+-    (2015-06-30).
++    (2018-12-13).
+   </li>
+   <li>
+     Jia-Rui Chong,
+-    "<a href="http://articles.latimes.com/2004/jan/14/science/sci-marstime14">Workdays
++    "<a href="https://www.latimes.com/archives/la-xpm-2004-jan-14-sci-marstime14-story.html">Workdays
+     Fit for a Martian</a>", <cite>Los Angeles Times</cite>
+     (2004-01-14), pp A1, A20&ndash;A21.
+   </li>
+--- contrib/tzdata/version.orig
++++ contrib/tzdata/version
+@@ -1 +1 @@
+-2019a
++2019b
+--- contrib/tzdata/zishrink.awk.orig
++++ contrib/tzdata/zishrink.awk
+@@ -20,7 +20,8 @@
+ # Return a shortened rule name representing NAME,
+ # and record this relationship to the hash table.
+ 
+-function gen_rule_name(name, n)
++function gen_rule_name(name, \
++		       n)
+ {
+   # Use a simple memonic: the first two letters.
+   n = substr(name, 1, 2)
+@@ -29,7 +30,8 @@
+   return n
+ }
+ 
+-function prehash_rule_names(name)
++function prehash_rule_names( \
++			    name)
+ {
+   # Rule names are not part of the tzdb API, so substitute shorter
+   # ones.  Shortening them consistently from one release to the next
+@@ -148,9 +150,11 @@
+   }
+ }
+ 
+-# Process an input line and save it for later output.
++# Process the input line LINE and save it for later output.
+ 
+-function process_input_line(line, field, end, i, n, startdef)
++function process_input_line(line, \
++			    field, end, i, n, startdef, \
++			    linkline, ruleline, zoneline)
+ {
+   # Remove comments, normalize spaces, and append a space to each line.
+   sub(/#.*/, "", line)
+@@ -157,11 +161,10 @@
+   line = line " "
+   gsub(/[\t ]+/, " ", line)
+ 
+-  # Abbreviate keywords.  Do not abbreviate "Link" to just "L",
+-  # as pre-2017c zic erroneously diagnoses "Li" as ambiguous.
+-  sub(/^Link /, "Li ", line)
+-  sub(/^Rule /, "R ", line)
+-  sub(/^Zone /, "Z ", line)
++  # Abbreviate keywords and determine line type.
++  linkline = sub(/^Link /, "L ", line)
++  ruleline = sub(/^Rule /, "R ", line)
++  zoneline = sub(/^Zone /, "Z ", line)
+ 
+   # SystemV rules are not needed.
+   if (line ~ /^R SystemV /) return
+@@ -169,7 +172,7 @@
+   # Replace FooAsia rules with the same rules without "Asia", as they
+   # are duplicates.
+   if (match(line, /[^ ]Asia /)) {
+-    if (line ~ /^R /) return
++    if (ruleline) return
+     line = substr(line, 1, RSTART) substr(line, RSTART + 5)
+   }
+ 
+@@ -179,21 +182,19 @@
+   while (match(line, /:0[^:]/))
+     line = substr(line, 1, RSTART - 1) substr(line, RSTART + 2)
+ 
+-  # Abbreviate weekday names.  Do not abbreviate "Sun" and "Sat", as
+-  # pre-2017c zic erroneously diagnoses "Su" and "Sa" as ambiguous.
++  # Abbreviate weekday names.
+   while (match(line, / (last)?(Mon|Wed|Fri)[ <>]/)) {
+     end = RSTART + RLENGTH
+     line = substr(line, 1, end - 4) substr(line, end - 1)
+   }
+-  while (match(line, / (last)?(Tue|Thu)[ <>]/)) {
++  while (match(line, / (last)?(Sun|Tue|Thu|Sat)[ <>]/)) {
+     end = RSTART + RLENGTH
+     line = substr(line, 1, end - 3) substr(line, end - 1)
+   }
+ 
+-  # Abbreviate "max", "only" and month names.
+-  # Do not abbreviate "min", as pre-2017c zic erroneously diagnoses "mi"
+-  # as ambiguous.
++  # Abbreviate "max", "min", "only" and month names.
+   gsub(/ max /, " ma ", line)
++  gsub(/ min /, " mi ", line)
+   gsub(/ only /, " o ", line)
+   gsub(/ Jan /, " Ja ", line)
+   gsub(/ Feb /, " F ", line)
+@@ -221,7 +222,7 @@
+   n = split(line, field)
+ 
+   # Abbreviate rule names.
+-  i = field[1] == "Z" ? 4 : field[1] == "Li" ? 0 : 2
++  i = zoneline ? 4 : linkline ? 0 : 2
+   if (i && field[i] ~ /^[^-+0-9]/) {
+     if (!rule[field[i]])
+       rule[field[i]] = gen_rule_name(field[i])
+@@ -231,11 +232,11 @@
+   # If this zone supersedes an earlier one, delete the earlier one
+   # from the saved output lines.
+   startdef = ""
+-  if (field[1] == "Z")
++  if (zoneline)
+     zonename = startdef = field[2]
+-  else if (field[1] == "Li")
++  else if (linkline)
+     zonename = startdef = field[3]
+-  else if (field[1] == "R")
++  else if (ruleline)
+     zonename = ""
+   if (startdef) {
+     i = zonedef[startdef]
+@@ -254,7 +255,8 @@
+   output_line[nout++] = line
+ }
+ 
+-function output_saved_lines(i)
++function output_saved_lines( \
++			    i)
+ {
+   for (i = 0; i < nout; i++)
+     if (output_line[i])
+--- contrib/tzdata/zone.tab.orig
++++ contrib/tzdata/zone.tab
+@@ -332,7 +332,10 @@
+ RS	+4450+02030	Europe/Belgrade
+ RU	+5443+02030	Europe/Kaliningrad	MSK-01 - Kaliningrad
+ RU	+554521+0373704	Europe/Moscow	MSK+00 - Moscow area
+-RU	+4457+03406	Europe/Simferopol	MSK+00 - Crimea
++# The obsolescent zone.tab format cannot represent Europe/Simferopol well.
++# Put it in RU section and list as UA.  See "territorial claims" above.
++# Programs should use zone1970.tab instead; see above.
++UA	+4457+03406	Europe/Simferopol	MSK+00 - Crimea
+ RU	+5836+04939	Europe/Kirov	MSK+00 - Kirov
+ RU	+4621+04803	Europe/Astrakhan	MSK+01 - Astrakhan
+ RU	+4844+04425	Europe/Volgograd	MSK+01 - Volgograd
+--- contrib/tzdata/zone1970.tab.orig
++++ contrib/tzdata/zone1970.tab
+@@ -290,7 +290,8 @@
+ RS,BA,HR,ME,MK,SI	+4450+02030	Europe/Belgrade
+ RU	+5443+02030	Europe/Kaliningrad	MSK-01 - Kaliningrad
+ RU	+554521+0373704	Europe/Moscow	MSK+00 - Moscow area
+-RU	+4457+03406	Europe/Simferopol	MSK+00 - Crimea
++# Mention RU and UA alphabetically.  See "territorial claims" above.
++RU,UA	+4457+03406	Europe/Simferopol	MSK+00 - Crimea
+ RU	+5836+04939	Europe/Kirov	MSK+00 - Kirov
+ RU	+4621+04803	Europe/Astrakhan	MSK+01 - Astrakhan
+ RU	+4844+04425	Europe/Volgograd	MSK+01 - Volgograd
+--- contrib/tzdata/zoneinfo2tdf.pl.orig
++++ contrib/tzdata/zoneinfo2tdf.pl
+@@ -28,7 +28,7 @@
+ 
+   $contZone = '';
+   if ($type eq 'zone') {
+-    # Zone  NAME  GMTOFF  RULES/SAVE  FORMAT  [UNTIL]
++    # Zone  NAME  STDOFF  RULES/SAVE  FORMAT  [UNTIL]
+     my $nfields = @fields;
+     $nfields >= 5 or warn "bad zone line";
+     if ($nfields > 6) {
diff --git a/share/security/patches/EN-19:12/tzdata-2019b.patch.asc b/share/security/patches/EN-19:12/tzdata-2019b.patch.asc
new file mode 100644
index 0000000000..df3c6d2dfd
--- /dev/null
+++ b/share/security/patches/EN-19:12/tzdata-2019b.patch.asc
@@ -0,0 +1,18 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAl0b9XxfFIAAAAAALgAo
+aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD
+MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n
+5cJuRg//X8SzMWUt3ZqAQEVqRxYPouBZFuL9avfKo6vTjJZ27nKNHjtmeoElhKw7
+9bffgA9nbeWnzmo9EtOmVLGVmRYe/doqtZN/2tc8w9W1RmoUYd/MsqCg0qt9Y14v
+8wUPtfWlz5BRkWHCAyamEz/sK7LRvYfniS+vVX3bo/Rw7l+txp+fhER9zBloTuW5
+/4b1pjIPmWJMPAORCUeUc/4ZOBiI3MDb5HYQgoOo3yWGn6SMs7RHtLZBbaqy8LVW
+KZyAjBn3TNoqxxLZZ0VfomFzrnc45Sm2PxoqSwGbP1hsom4hKfvdFpWybYgGqnUx
+JRjvA8rAyHvr64NhoVavEKg514HYVZZT9qPe3hFvTD7oCvtuRTLYF0N7huF9R2h6
+E51iCAPlPKelyxv5FUhyD6FAKtZWkBhda52ZlFZSMmLxShAvbGibwkKVj49mcKBT
+yBJ9+Ik3W3FaWQmgZ+G73imZlXwV7DHR4UDuG/DWuT77wPO9nk5M2SQxe7tsO/qo
+WeT5P8rGk/ZJxTBrJR6JBa17JpsuHS3spMx8I5lp4tqZWP089bjyzfcdKUYVqju0
+sIonbeuzzvwMvrRoJ7a/j9cP44P7Bet11xtcoucJkB6WxLiDX++FyWdBzUaKnG3Z
+d27co2rLq/xoHGPFYkj4UhBVyRzz5E1rY00BrVmN9FrgFZdG/fw=
+=n8zD
+-----END PGP SIGNATURE-----
diff --git a/share/security/patches/SA-19:09/iconv.patch b/share/security/patches/SA-19:09/iconv.patch
new file mode 100644
index 0000000000..46ea1b6c9a
--- /dev/null
+++ b/share/security/patches/SA-19:09/iconv.patch
@@ -0,0 +1,11 @@
+--- lib/libc/iconv/citrus_none.c.orig
++++ lib/libc/iconv/citrus_none.c
+@@ -144,7 +144,7 @@
+ 		s[2] = (char)(idx >> 16);
+ 		*nresult = 3;
+ 	} else {
+-		if (n < 3) {
++		if (n < 4) {
+ 			*nresult = (size_t)-1;
+ 			return (E2BIG);
+ 		}
diff --git a/share/security/patches/SA-19:09/iconv.patch.asc b/share/security/patches/SA-19:09/iconv.patch.asc
new file mode 100644
index 0000000000..4f258e27a7
--- /dev/null
+++ b/share/security/patches/SA-19:09/iconv.patch.asc
@@ -0,0 +1,18 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAl0b9YlfFIAAAAAALgAo
+aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD
+MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n
+5cJR6xAAmPrRDXyil1P/HfAKIsjxoUx1C+fg99S2IEebgZYleUOr16m6TWmp8miT
+5yEgGFKEc1WF9ieryIDITgvDrh44wSmI2r4V1WNocHB89x+IAVZgbmNXyTiTcbZA
+G1QDwH97oNAB38+L1Ev0qDjgwX+mhnLpIV846NDNUiXBb4iTRjOejCTYyfd+t6Hr
+fHsGN5WllKYegx7j8taEFaix4SzgZmwOxEnJpx/WG9cfZDkKBsRC+Vg7haIdFsNY
+fHBPeLWpokYyZu8i7m2Hnw36z+1FQTFXCF7ZqGL5nLsYghkSXFYN9u/w2MJKgbkB
+uMWC1DxE+3UmdaStx+2gZc9t/pM/AyU/eCeV+T3guCj8pHb8A125HaGWCgYVVVcd
+4rvhFUqBERqLKk+Kp8SZO5Iu8zdhawk9fAaPX9zriLKoDukfJYjWcMLKlq2lTFjS
+/39ULR+iIcVAkNyqIkcw8FT2+s+iVjZZqTioQabDQPAFeGpK0VPIg/R6qGG1qNu0
+itOTwi9eaea7Bp3sGgKcoQZrwkPI1AD3DHHeVqqvEyPNfbyZ3JjCtO7XctTRAlB4
+SXQfq1mZ93z/FHwLAK/iRBhKcqoJtFF8a9qa0AWX76RoNDkywhxyDk65Zomw+ffk
+kUHguRj433i4db/yBKcqfOVG9zU5tUgsMAQMwBTHBXeW/5BHnQ4=
+=wCOy
+-----END PGP SIGNATURE-----
diff --git a/share/security/patches/SA-19:10/ufs.11.patch b/share/security/patches/SA-19:10/ufs.11.patch
new file mode 100644
index 0000000000..495e516b95
--- /dev/null
+++ b/share/security/patches/SA-19:10/ufs.11.patch
@@ -0,0 +1,311 @@
+--- sbin/fsck_ffs/dir.c.orig
++++ sbin/fsck_ffs/dir.c
+@@ -145,6 +145,7 @@
+ 	struct direct *dp, *ndp;
+ 	struct bufarea *bp;
+ 	long size, blksiz, fix, dploc;
++	int dc;
+ 
+ 	blksiz = idesc->id_numfrags * sblock.fs_fsize;
+ 	bp = getdirblk(idesc->id_blkno, blksiz);
+@@ -151,8 +152,16 @@
+ 	if (idesc->id_loc % DIRBLKSIZ == 0 && idesc->id_filesize > 0 &&
+ 	    idesc->id_loc < blksiz) {
+ 		dp = (struct direct *)(bp->b_un.b_buf + idesc->id_loc);
+-		if (dircheck(idesc, dp))
++		if ((dc = dircheck(idesc, dp)) > 0) {
++			if (dc == 2) {
++				/*
++				 * dircheck() cleared unused directory space.
++				 * Mark the buffer as dirty to write it out.
++				 */
++				dirty(bp);
++			}
+ 			goto dpok;
++		}
+ 		if (idesc->id_fix == IGNORE)
+ 			return (0);
+ 		fix = dofix(idesc, "DIRECTORY CORRUPTED");
+@@ -179,19 +188,26 @@
+ 	if ((idesc->id_loc % DIRBLKSIZ) == 0)
+ 		return (dp);
+ 	ndp = (struct direct *)(bp->b_un.b_buf + idesc->id_loc);
+-	if (idesc->id_loc < blksiz && idesc->id_filesize > 0 &&
+-	    dircheck(idesc, ndp) == 0) {
+-		size = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
+-		idesc->id_loc += size;
+-		idesc->id_filesize -= size;
+-		if (idesc->id_fix == IGNORE)
+-			return (0);
+-		fix = dofix(idesc, "DIRECTORY CORRUPTED");
+-		bp = getdirblk(idesc->id_blkno, blksiz);
+-		dp = (struct direct *)(bp->b_un.b_buf + dploc);
+-		dp->d_reclen += size;
+-		if (fix)
++	if (idesc->id_loc < blksiz && idesc->id_filesize > 0) {
++		if ((dc = dircheck(idesc, ndp)) == 0) {
++			size = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
++			idesc->id_loc += size;
++			idesc->id_filesize -= size;
++			if (idesc->id_fix == IGNORE)
++				return (0);
++			fix = dofix(idesc, "DIRECTORY CORRUPTED");
++			bp = getdirblk(idesc->id_blkno, blksiz);
++			dp = (struct direct *)(bp->b_un.b_buf + dploc);
++			dp->d_reclen += size;
++			if (fix)
++				dirty(bp);
++		} else if (dc == 2) {
++			/*
++			 * dircheck() cleared unused directory space.
++			 * Mark the buffer as dirty to write it out.
++			 */
+ 			dirty(bp);
++		}
+ 	}
+ 	return (dp);
+ }
+@@ -199,6 +215,11 @@
+ /*
+  * Verify that a directory entry is valid.
+  * This is a superset of the checks made in the kernel.
++ * Also optionally clears padding and unused directory space.
++ *
++ * Returns 0 if the entry is bad, 1 if the entry is good and no changes
++ * were made, and 2 if the entry is good but modified to clear out padding
++ * and unused space and needs to be written back to disk.
+  */
+ static int
+ dircheck(struct inodesc *idesc, struct direct *dp)
+@@ -207,15 +228,39 @@
+ 	char *cp;
+ 	u_char type;
+ 	u_int8_t namlen;
+-	int spaceleft;
++	int spaceleft, modified, unused;
+ 
++	modified = 0;
+ 	spaceleft = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
+ 	if (dp->d_reclen == 0 ||
+ 	    dp->d_reclen > spaceleft ||
+-	    (dp->d_reclen & 0x3) != 0)
++	    (dp->d_reclen & (DIR_ROUNDUP - 1)) != 0)
+ 		goto bad;
+-	if (dp->d_ino == 0)
+-		return (1);
++	if (dp->d_ino == 0) {
++		/*
++		 * Special case of an unused directory entry. Normally
++		 * the kernel would coalesce unused space with the previous
++		 * entry by extending its d_reclen, but there are situations
++		 * (e.g. fsck) where that doesn't occur.
++		 * If we're clearing out directory cruft (-z flag), then make
++		 * sure this entry gets fully cleared as well.
++		 */
++		if (zflag && fswritefd >= 0) {
++			if (dp->d_type != 0) {
++				dp->d_type = 0;
++				modified = 1;
++			}
++			if (dp->d_namlen != 0) {
++				dp->d_namlen = 0;
++				modified = 1;
++			}
++			if (dp->d_name[0] != '\0') {
++				dp->d_name[0] = '\0';
++				modified = 1;
++			}
++		}
++		goto good;
++	}
+ 	size = DIRSIZ(0, dp);
+ 	namlen = dp->d_namlen;
+ 	type = dp->d_type;
+@@ -229,7 +274,37 @@
+ 			goto bad;
+ 	if (*cp != '\0')
+ 		goto bad;
++
++good:
++	if (zflag && fswritefd >= 0) {
++		/*
++		 * Clear unused directory entry space, including the d_name
++		 * padding.
++		 */
++		/* First figure the number of pad bytes. */
++		unused = roundup2(namlen + 1, DIR_ROUNDUP) - (namlen + 1);
++
++		/* Add in the free space to the end of the record. */
++		unused += dp->d_reclen - DIRSIZ(0, dp);
++
++		/*
++		 * Now clear out the unused space, keeping track if we actually
++		 * changed anything.
++		 */
++		for (cp = &dp->d_name[namlen + 1]; unused > 0; unused--, cp++) {
++			if (*cp != '\0') {
++				*cp = '\0';
++				modified = 1;
++			}
++		}
++		
++		if (modified) {
++			return 2;
++		}
++	}
++
+ 	return (1);
++
+ bad:
+ 	if (debug)
+ 		printf("Bad dir: ino %d reclen %d namlen %d type %d name %s\n",
+--- sbin/fsck_ffs/fsck.h.orig
++++ sbin/fsck_ffs/fsck.h
+@@ -313,6 +313,7 @@
+ extern int	debug;			/* output debugging info */
+ extern int	Eflag;			/* delete empty data blocks */
+ extern int	Zflag;			/* zero empty data blocks */
++extern int	zflag;			/* zero unused directory space */
+ extern int	inoopt;			/* trim out unused inodes */
+ extern char	ckclean;		/* only do work if not cleanly unmounted */
+ extern int	cvtlevel;		/* convert to newer file system format */
+--- sbin/fsck_ffs/fsck_ffs.8.orig
++++ sbin/fsck_ffs/fsck_ffs.8
+@@ -29,7 +29,7 @@
+ .\"	@(#)fsck.8	8.4 (Berkeley) 5/9/95
+ .\" $FreeBSD$
+ .\"
+-.Dd January 13, 2018
++.Dd May 3, 2019
+ .Dt FSCK_FFS 8
+ .Os
+ .Sh NAME
+@@ -38,7 +38,7 @@
+ .Nd file system consistency check and interactive repair
+ .Sh SYNOPSIS
+ .Nm
+-.Op Fl BCdEFfnpRrSyZ
++.Op Fl BCdEFfnpRrSyZz
+ .Op Fl b Ar block
+ .Op Fl c Ar level
+ .Op Fl m Ar mode
+@@ -301,6 +301,9 @@
+ and
+ .Fl Z
+ are specified, blocks are first zeroed and then erased.
++.It Fl z
++Clear unused directory space.
++The cleared space includes deleted file names and name padding.
+ .El
+ .Pp
+ Inconsistencies checked are as follows:
+--- sbin/fsck_ffs/globs.c.orig
++++ sbin/fsck_ffs/globs.c
+@@ -83,6 +83,7 @@
+ int	debug;			/* output debugging info */
+ int	Eflag;			/* delete empty data blocks */
+ int	Zflag;			/* zero empty data blocks */
++int	zflag;			/* zero unused directory space */
+ int	inoopt;			/* trim out unused inodes */
+ char	ckclean;		/* only do work if not cleanly unmounted */
+ int	cvtlevel;		/* convert to newer file system format */
+--- sbin/fsck_ffs/main.c.orig
++++ sbin/fsck_ffs/main.c
+@@ -86,7 +86,7 @@
+ 	sync();
+ 	skipclean = 1;
+ 	inoopt = 0;
+-	while ((ch = getopt(argc, argv, "b:Bc:CdEfFm:npRrSyZ")) != -1) {
++	while ((ch = getopt(argc, argv, "b:Bc:CdEfFm:npRrSyZz")) != -1) {
+ 		switch (ch) {
+ 		case 'b':
+ 			skipclean = 0;
+@@ -163,6 +163,10 @@
+ 			Zflag++;
+ 			break;
+ 
++		case 'z':
++			zflag++;
++			break;
++
+ 		default:
+ 			usage();
+ 		}
+--- sys/ufs/ufs/dir.h.orig
++++ sys/ufs/ufs/dir.h
+@@ -105,13 +105,11 @@
+  * The DIRSIZ macro gives the minimum record length which will hold
+  * the directory entry.  This requires the amount of space in struct direct
+  * without the d_name field, plus enough space for the name with a terminating
+- * null byte (dp->d_namlen+1), rounded up to a 4 byte boundary.
+- *
+- * 
++ * null byte (dp->d_namlen + 1), rounded up to a 4 byte boundary.
+  */
+-#define	DIRECTSIZ(namlen)						\
+-	((__offsetof(struct direct, d_name) +				\
+-	  ((namlen)+1)*sizeof(((struct direct *)0)->d_name[0]) + 3) & ~3)
++#define	DIR_ROUNDUP	4	/* Directory name roundup size */
++#define	DIRECTSIZ(namlen) \
++    (roundup2(__offsetof(struct direct, d_name) + (namlen) + 1, DIR_ROUNDUP))
+ #if (BYTE_ORDER == LITTLE_ENDIAN)
+ #define	DIRSIZ(oldfmt, dp) \
+     ((oldfmt) ? DIRECTSIZ((dp)->d_type) : DIRECTSIZ((dp)->d_namlen))
+--- sys/ufs/ufs/ufs_lookup.c.orig
++++ sys/ufs/ufs/ufs_lookup.c
+@@ -823,14 +823,21 @@
+ 	struct componentname *cnp;
+ 	struct direct *newdirp;
+ {
++	u_int namelen;
+ 
+-#ifdef INVARIANTS
+-	if ((cnp->cn_flags & SAVENAME) == 0)
+-		panic("ufs_makedirentry: missing name");
+-#endif
++	namelen = (unsigned)cnp->cn_namelen;
++	KASSERT((cnp->cn_flags & SAVENAME) != 0,
++		("ufs_makedirentry: missing name"));
++	KASSERT(namelen <= MAXNAMLEN,
++		("ufs_makedirentry: name too long"));
+ 	newdirp->d_ino = ip->i_number;
+-	newdirp->d_namlen = cnp->cn_namelen;
+-	bcopy(cnp->cn_nameptr, newdirp->d_name, (unsigned)cnp->cn_namelen + 1);
++	newdirp->d_namlen = namelen;
++
++	/* Zero out after-name padding */
++	*(u_int32_t *)(&newdirp->d_name[namelen & ~(DIR_ROUNDUP - 1)]) = 0;
++
++	bcopy(cnp->cn_nameptr, newdirp->d_name, namelen);
++
+ 	if (ITOV(ip)->v_mount->mnt_maxsymlinklen > 0)
+ 		newdirp->d_type = IFTODT(ip->i_mode);
+ 	else {
+@@ -1209,16 +1216,21 @@
+ 	if (ip && rep->d_ino != ip->i_number)
+ 		panic("ufs_dirremove: ip %ju does not match dirent ino %ju\n",
+ 		    (uintmax_t)ip->i_number, (uintmax_t)rep->d_ino);
+-	if (dp->i_count == 0) {
++	/*
++	 * Zero out the file directory entry metadata to reduce disk
++	 * scavenging disclosure.
++	 */
++	bzero(&rep->d_name[0], rep->d_namlen);
++	rep->d_namlen = 0;
++	rep->d_type = 0;
++	rep->d_ino = 0;
++
++	if (dp->i_count != 0) {
+ 		/*
+-		 * First entry in block: set d_ino to zero.
+-		 */
+-		ep->d_ino = 0;
+-	} else {
+-		/*
+ 		 * Collapse new free space into previous entry.
+ 		 */
+ 		ep->d_reclen += rep->d_reclen;
++		rep->d_reclen = 0;
+ 	}
+ #ifdef UFS_DIRHASH
+ 	if (dp->i_dirhash != NULL)
diff --git a/share/security/patches/SA-19:10/ufs.11.patch.asc b/share/security/patches/SA-19:10/ufs.11.patch.asc
new file mode 100644
index 0000000000..6ce1c6c173
--- /dev/null
+++ b/share/security/patches/SA-19:10/ufs.11.patch.asc
@@ -0,0 +1,18 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAl0b9ZNfFIAAAAAALgAo
+aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD
+MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n
+5cLSAw//fBSV+MIQNSJaq2Ux5SMQ1zvGG2vVbdX3pTFH764EL6A8s1cdQnLkFqCT
+W93kH1lyMqxb64WQ6gC1sLk41GHTDUGRM94KjkqqmkfCAy+q24ZFnSHEsq11Umks
+quVJQ4yehJXnFjfFNtIbat0FAVl1t2YzEtu33UzWyefoeQh6jOdebN22gYV5X4Od
+FiaKngO83tr7dHkamvrQ7eQZNgeC05kJYsKLTlkhoujnGfNyelmaiRj/KmICjWYj
+M9uCEccfSqTPaqYfE7qj7CzH4+rUCmBmULiuUVJEoxWGxQndhULqvSpAglq90bN5
+iZgVrfodheWBROtIJaov+0d2+GWjQ63jN6KHYKPOY75vQf/l9s8TxCXxCQ6pT3xB
+JHjLV6tRRaSnLZj/Xzd4RKHlg1tMxkjp0vtSRKaltyJISAu+gzqFUBkylGx9mvSb
+ar2iAvOWAlmCOfCbIG2xs/sPY4U8GV0JixEGPv8ghdusDnVxJeQa724vbnd9hWox
+UjE7VM3ynDtx+zQJ0aWr1K6JYZNgZ3KQjJvAN4vVWbw3ta/cyQ0uyaBrqk6zJZov
+R/E5DHV9LHQUfA7FC7tXMgHJLAAlMYWkRimmdKnsHbHSLjbgBpPhbOsSg4LpSDn5
+GCjkeA9XpuKd40YIixWUuM9X7GYS/yHamfofpWPIQTMXnGbNxSk=
+=WvjT
+-----END PGP SIGNATURE-----
diff --git a/share/security/patches/SA-19:10/ufs.12.patch b/share/security/patches/SA-19:10/ufs.12.patch
new file mode 100644
index 0000000000..4b99ddb0e7
--- /dev/null
+++ b/share/security/patches/SA-19:10/ufs.12.patch
@@ -0,0 +1,311 @@
+--- sbin/fsck_ffs/dir.c.orig
++++ sbin/fsck_ffs/dir.c
+@@ -147,6 +147,7 @@
+ 	struct direct *dp, *ndp;
+ 	struct bufarea *bp;
+ 	long size, blksiz, fix, dploc;
++	int dc;
+ 
+ 	blksiz = idesc->id_numfrags * sblock.fs_fsize;
+ 	bp = getdirblk(idesc->id_blkno, blksiz);
+@@ -153,8 +154,16 @@
+ 	if (idesc->id_loc % DIRBLKSIZ == 0 && idesc->id_filesize > 0 &&
+ 	    idesc->id_loc < blksiz) {
+ 		dp = (struct direct *)(bp->b_un.b_buf + idesc->id_loc);
+-		if (dircheck(idesc, dp))
++		if ((dc = dircheck(idesc, dp)) > 0) {
++			if (dc == 2) {
++				/*
++				 * dircheck() cleared unused directory space.
++				 * Mark the buffer as dirty to write it out.
++				 */
++				dirty(bp);
++			}
+ 			goto dpok;
++		}
+ 		if (idesc->id_fix == IGNORE)
+ 			return (0);
+ 		fix = dofix(idesc, "DIRECTORY CORRUPTED");
+@@ -181,19 +190,26 @@
+ 	if ((idesc->id_loc % DIRBLKSIZ) == 0)
+ 		return (dp);
+ 	ndp = (struct direct *)(bp->b_un.b_buf + idesc->id_loc);
+-	if (idesc->id_loc < blksiz && idesc->id_filesize > 0 &&
+-	    dircheck(idesc, ndp) == 0) {
+-		size = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
+-		idesc->id_loc += size;
+-		idesc->id_filesize -= size;
+-		if (idesc->id_fix == IGNORE)
+-			return (0);
+-		fix = dofix(idesc, "DIRECTORY CORRUPTED");
+-		bp = getdirblk(idesc->id_blkno, blksiz);
+-		dp = (struct direct *)(bp->b_un.b_buf + dploc);
+-		dp->d_reclen += size;
+-		if (fix)
++	if (idesc->id_loc < blksiz && idesc->id_filesize > 0) {
++		if ((dc = dircheck(idesc, ndp)) == 0) {
++			size = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
++			idesc->id_loc += size;
++			idesc->id_filesize -= size;
++			if (idesc->id_fix == IGNORE)
++				return (0);
++			fix = dofix(idesc, "DIRECTORY CORRUPTED");
++			bp = getdirblk(idesc->id_blkno, blksiz);
++			dp = (struct direct *)(bp->b_un.b_buf + dploc);
++			dp->d_reclen += size;
++			if (fix)
++				dirty(bp);
++		} else if (dc == 2) {
++			/*
++			 * dircheck() cleared unused directory space.
++			 * Mark the buffer as dirty to write it out.
++			 */
+ 			dirty(bp);
++		}
+ 	}
+ 	return (dp);
+ }
+@@ -201,6 +217,11 @@
+ /*
+  * Verify that a directory entry is valid.
+  * This is a superset of the checks made in the kernel.
++ * Also optionally clears padding and unused directory space.
++ *
++ * Returns 0 if the entry is bad, 1 if the entry is good and no changes
++ * were made, and 2 if the entry is good but modified to clear out padding
++ * and unused space and needs to be written back to disk.
+  */
+ static int
+ dircheck(struct inodesc *idesc, struct direct *dp)
+@@ -209,15 +230,39 @@
+ 	char *cp;
+ 	u_char type;
+ 	u_int8_t namlen;
+-	int spaceleft;
++	int spaceleft, modified, unused;
+ 
++	modified = 0;
+ 	spaceleft = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
+ 	if (dp->d_reclen == 0 ||
+ 	    dp->d_reclen > spaceleft ||
+-	    (dp->d_reclen & 0x3) != 0)
++	    (dp->d_reclen & (DIR_ROUNDUP - 1)) != 0)
+ 		goto bad;
+-	if (dp->d_ino == 0)
+-		return (1);
++	if (dp->d_ino == 0) {
++		/*
++		 * Special case of an unused directory entry. Normally
++		 * the kernel would coalesce unused space with the previous
++		 * entry by extending its d_reclen, but there are situations
++		 * (e.g. fsck) where that doesn't occur.
++		 * If we're clearing out directory cruft (-z flag), then make
++		 * sure this entry gets fully cleared as well.
++		 */
++		if (zflag && fswritefd >= 0) {
++			if (dp->d_type != 0) {
++				dp->d_type = 0;
++				modified = 1;
++			}
++			if (dp->d_namlen != 0) {
++				dp->d_namlen = 0;
++				modified = 1;
++			}
++			if (dp->d_name[0] != '\0') {
++				dp->d_name[0] = '\0';
++				modified = 1;
++			}
++		}
++		goto good;
++	}
+ 	size = DIRSIZ(0, dp);
+ 	namlen = dp->d_namlen;
+ 	type = dp->d_type;
+@@ -231,7 +276,37 @@
+ 			goto bad;
+ 	if (*cp != '\0')
+ 		goto bad;
++
++good:
++	if (zflag && fswritefd >= 0) {
++		/*
++		 * Clear unused directory entry space, including the d_name
++		 * padding.
++		 */
++		/* First figure the number of pad bytes. */
++		unused = roundup2(namlen + 1, DIR_ROUNDUP) - (namlen + 1);
++
++		/* Add in the free space to the end of the record. */
++		unused += dp->d_reclen - DIRSIZ(0, dp);
++
++		/*
++		 * Now clear out the unused space, keeping track if we actually
++		 * changed anything.
++		 */
++		for (cp = &dp->d_name[namlen + 1]; unused > 0; unused--, cp++) {
++			if (*cp != '\0') {
++				*cp = '\0';
++				modified = 1;
++			}
++		}
++		
++		if (modified) {
++			return 2;
++		}
++	}
++
+ 	return (1);
++
+ bad:
+ 	if (debug)
+ 		printf("Bad dir: ino %d reclen %d namlen %d type %d name %s\n",
+--- sbin/fsck_ffs/fsck.h.orig
++++ sbin/fsck_ffs/fsck.h
+@@ -315,6 +315,7 @@
+ extern int	debug;			/* output debugging info */
+ extern int	Eflag;			/* delete empty data blocks */
+ extern int	Zflag;			/* zero empty data blocks */
++extern int	zflag;			/* zero unused directory space */
+ extern int	inoopt;			/* trim out unused inodes */
+ extern char	ckclean;		/* only do work if not cleanly unmounted */
+ extern int	cvtlevel;		/* convert to newer file system format */
+--- sbin/fsck_ffs/fsck_ffs.8.orig
++++ sbin/fsck_ffs/fsck_ffs.8
+@@ -29,7 +29,7 @@
+ .\"	@(#)fsck.8	8.4 (Berkeley) 5/9/95
+ .\" $FreeBSD$
+ .\"
+-.Dd January 13, 2018
++.Dd May 3, 2019
+ .Dt FSCK_FFS 8
+ .Os
+ .Sh NAME
+@@ -38,7 +38,7 @@
+ .Nd file system consistency check and interactive repair
+ .Sh SYNOPSIS
+ .Nm
+-.Op Fl BCdEFfnpRrSyZ
++.Op Fl BCdEFfnpRrSyZz
+ .Op Fl b Ar block
+ .Op Fl c Ar level
+ .Op Fl m Ar mode
+@@ -301,6 +301,9 @@
+ and
+ .Fl Z
+ are specified, blocks are first zeroed and then erased.
++.It Fl z
++Clear unused directory space.
++The cleared space includes deleted file names and name padding.
+ .El
+ .Pp
+ Inconsistencies checked are as follows:
+--- sbin/fsck_ffs/globs.c.orig
++++ sbin/fsck_ffs/globs.c
+@@ -85,6 +85,7 @@
+ int	debug;			/* output debugging info */
+ int	Eflag;			/* delete empty data blocks */
+ int	Zflag;			/* zero empty data blocks */
++int	zflag;			/* zero unused directory space */
+ int	inoopt;			/* trim out unused inodes */
+ char	ckclean;		/* only do work if not cleanly unmounted */
+ int	cvtlevel;		/* convert to newer file system format */
+--- sbin/fsck_ffs/main.c.orig
++++ sbin/fsck_ffs/main.c
+@@ -89,7 +89,7 @@
+ 	sync();
+ 	skipclean = 1;
+ 	inoopt = 0;
+-	while ((ch = getopt(argc, argv, "b:Bc:CdEfFm:npRrSyZ")) != -1) {
++	while ((ch = getopt(argc, argv, "b:Bc:CdEfFm:npRrSyZz")) != -1) {
+ 		switch (ch) {
+ 		case 'b':
+ 			skipclean = 0;
+@@ -166,6 +166,10 @@
+ 			Zflag++;
+ 			break;
+ 
++		case 'z':
++			zflag++;
++			break;
++
+ 		default:
+ 			usage();
+ 		}
+--- sys/ufs/ufs/dir.h.orig
++++ sys/ufs/ufs/dir.h
+@@ -108,13 +108,11 @@
+  * The DIRSIZ macro gives the minimum record length which will hold
+  * the directory entry.  This requires the amount of space in struct direct
+  * without the d_name field, plus enough space for the name with a terminating
+- * null byte (dp->d_namlen+1), rounded up to a 4 byte boundary.
+- *
+- * 
++ * null byte (dp->d_namlen + 1), rounded up to a 4 byte boundary.
+  */
+-#define	DIRECTSIZ(namlen)						\
+-	((__offsetof(struct direct, d_name) +				\
+-	  ((namlen)+1)*sizeof(((struct direct *)0)->d_name[0]) + 3) & ~3)
++#define	DIR_ROUNDUP	4	/* Directory name roundup size */
++#define	DIRECTSIZ(namlen) \
++    (roundup2(__offsetof(struct direct, d_name) + (namlen) + 1, DIR_ROUNDUP))
+ #if (BYTE_ORDER == LITTLE_ENDIAN)
+ #define	DIRSIZ(oldfmt, dp) \
+     ((oldfmt) ? DIRECTSIZ((dp)->d_type) : DIRECTSIZ((dp)->d_namlen))
+--- sys/ufs/ufs/ufs_lookup.c.orig
++++ sys/ufs/ufs/ufs_lookup.c
+@@ -825,14 +825,21 @@
+ 	struct componentname *cnp;
+ 	struct direct *newdirp;
+ {
++	u_int namelen;
+ 
+-#ifdef INVARIANTS
+-	if ((cnp->cn_flags & SAVENAME) == 0)
+-		panic("ufs_makedirentry: missing name");
+-#endif
++	namelen = (unsigned)cnp->cn_namelen;
++	KASSERT((cnp->cn_flags & SAVENAME) != 0,
++		("ufs_makedirentry: missing name"));
++	KASSERT(namelen <= UFS_MAXNAMLEN,
++		("ufs_makedirentry: name too long"));
+ 	newdirp->d_ino = ip->i_number;
+-	newdirp->d_namlen = cnp->cn_namelen;
+-	bcopy(cnp->cn_nameptr, newdirp->d_name, (unsigned)cnp->cn_namelen + 1);
++	newdirp->d_namlen = namelen;
++
++	/* Zero out after-name padding */
++	*(u_int32_t *)(&newdirp->d_name[namelen & ~(DIR_ROUNDUP - 1)]) = 0;
++
++	bcopy(cnp->cn_nameptr, newdirp->d_name, namelen);
++
+ 	if (ITOV(ip)->v_mount->mnt_maxsymlinklen > 0)
+ 		newdirp->d_type = IFTODT(ip->i_mode);
+ 	else {
+@@ -1211,16 +1218,21 @@
+ 	if (ip && rep->d_ino != ip->i_number)
+ 		panic("ufs_dirremove: ip %ju does not match dirent ino %ju\n",
+ 		    (uintmax_t)ip->i_number, (uintmax_t)rep->d_ino);
+-	if (dp->i_count == 0) {
++	/*
++	 * Zero out the file directory entry metadata to reduce disk
++	 * scavenging disclosure.
++	 */
++	bzero(&rep->d_name[0], rep->d_namlen);
++	rep->d_namlen = 0;
++	rep->d_type = 0;
++	rep->d_ino = 0;
++
++	if (dp->i_count != 0) {
+ 		/*
+-		 * First entry in block: set d_ino to zero.
+-		 */
+-		ep->d_ino = 0;
+-	} else {
+-		/*
+ 		 * Collapse new free space into previous entry.
+ 		 */
+ 		ep->d_reclen += rep->d_reclen;
++		rep->d_reclen = 0;
+ 	}
+ #ifdef UFS_DIRHASH
+ 	if (dp->i_dirhash != NULL)
diff --git a/share/security/patches/SA-19:10/ufs.12.patch.asc b/share/security/patches/SA-19:10/ufs.12.patch.asc
new file mode 100644
index 0000000000..947b643727
--- /dev/null
+++ b/share/security/patches/SA-19:10/ufs.12.patch.asc
@@ -0,0 +1,18 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAl0b9ZdfFIAAAAAALgAo
+aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD
+MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n
+5cKqKRAAjnl9PFeoSWEWhpszLDoMxytsZbCE+paF7FrNnEgIzuhaE8k+uah+okP2
+7schte688xS+zav1rBlc+WSChzV6UsAiUZsU/UDojhJeFmeOFsThiKJo/Ccp2hr0
+7k7pv3NyAylBhVoUTH/QKuGO7UktPzC5KbWXjBv0gB4N+2fHfpY7iIB5/SF5LVnl
+DNVSA/JsDn8Iyk2ymqJTJUFe6jzJzMZQgcO7NxkKZnhsv6sYkJHDmOSmYhi7fly5
++hg4t3gg2UMUlHDnIY/NmM4OaC5UiznW7wcXgU7ID+w35R8h2sMN0pwEZk3U+h4N
+Xpe9y16MuPQX2u6RVBDl2GTEJEZLvPMt/eS9lH4grIQ2maU7UyTHxpraQ01i83NX
+eLSHnnZuArrQZ4c5NAo4j8+kCrxgoqVhl0987pt8VKmPRqteTRhgX6k5OCxRFneQ
+mO8OvtTzNKDMXjDymMbP4WoLn1bMgXvqM/9CGD1K5j78BkzioZemlUlly9t56I8b
+RVUDL8dDajIpmAbzlq0JgDQ8SYzEj2qowmjaTKhKihbSlF1riC0bXcRAgufmt8FH
+RFF4m8cjq4FKMX5t6ZLlHSoW6hC7yOpVe2IPfbnTV8PT6Fpot5SOkyw8plBAAu87
+YZdxZp/jdczLFQCI2M/4BafAEHIQOlx3Vm7bPlw+ZLMN/u+k6R0=
+=MGNg
+-----END PGP SIGNATURE-----
diff --git a/share/security/patches/SA-19:11/cd_ioctl.11.patch b/share/security/patches/SA-19:11/cd_ioctl.11.patch
new file mode 100644
index 0000000000..fb63c3394b
--- /dev/null
+++ b/share/security/patches/SA-19:11/cd_ioctl.11.patch
@@ -0,0 +1,184 @@
+--- sys/cam/scsi/scsi_cd.c.orig
++++ sys/cam/scsi/scsi_cd.c
+@@ -1281,7 +1281,7 @@
+ 
+ 	struct 	cam_periph *periph;
+ 	struct	cd_softc *softc;
+-	int	nocopyout, error = 0;
++	int	error = 0;
+ 
+ 	periph = (struct cam_periph *)dp->d_drv1;
+ 	cam_periph_lock(periph);
+@@ -1323,7 +1323,6 @@
+ 	 */
+ 	cam_periph_unlock(periph);
+ 
+-	nocopyout = 0;
+ 	switch (cmd) {
+ 
+ 	case CDIOCPLAYTRACKS:
+@@ -1499,9 +1498,6 @@
+ 			cam_periph_unlock(periph);
+ 		}
+ 		break;
+-	case CDIOCREADSUBCHANNEL_SYSSPACE:
+-		nocopyout = 1;
+-		/* Fallthrough */
+ 	case CDIOCREADSUBCHANNEL:
+ 		{
+ 			struct ioc_read_subchannel *args
+@@ -1546,13 +1542,7 @@
+ 				data->header.data_len[1] +
+ 				sizeof(struct cd_sub_channel_header)));
+ 			cam_periph_unlock(periph);
+-			if (nocopyout == 0) {
+-				if (copyout(data, args->data, len) != 0) {
+-					error = EFAULT;
+-				}
+-			} else {
+-				bcopy(data, args->data, len);
+-			}
++			error = copyout(data, args->data, len);
+ 			free(data, M_SCSICD);
+ 		}
+ 		break;
+--- sys/compat/linux/linux_ioctl.c.orig
++++ sys/compat/linux/linux_ioctl.c
+@@ -1549,16 +1549,26 @@
+ 		struct ioc_read_subchannel bsdsc;
+ 		struct cd_sub_channel_info bsdinfo;
+ 
++		error = copyin((void *)args->arg, &sc, sizeof(sc));
++		if (error)
++			break;
++
++		/*
++		 * Invoke the native ioctl and bounce the returned data through
++		 * the userspace buffer.  This works because the Linux structure
++		 * is the same size as our structures for the subchannel header
++		 * and position data.
++		 */
+ 		bsdsc.address_format = CD_LBA_FORMAT;
+ 		bsdsc.data_format = CD_CURRENT_POSITION;
+ 		bsdsc.track = 0;
+-		bsdsc.data_len = sizeof(bsdinfo);
+-		bsdsc.data = &bsdinfo;
+-		error = fo_ioctl(fp, CDIOCREADSUBCHANNEL_SYSSPACE,
+-		    (caddr_t)&bsdsc, td->td_ucred, td);
++		bsdsc.data_len = sizeof(sc);
++		bsdsc.data = (void *)args->arg;
++		error = fo_ioctl(fp, CDIOCREADSUBCHANNEL, (caddr_t)&bsdsc,
++		    td->td_ucred, td);
+ 		if (error)
+ 			break;
+-		error = copyin((void *)args->arg, &sc, sizeof(sc));
++		error = copyin((void *)args->arg, &bsdinfo, sizeof(bsdinfo));
+ 		if (error)
+ 			break;
+ 		sc.cdsc_audiostatus = bsdinfo.header.audio_status;
+--- sys/dev/mcd/mcd.c.orig
++++ sys/dev/mcd/mcd.c
+@@ -134,8 +134,7 @@
+ static int	mcd_hard_reset(struct mcd_softc *);
+ static int 	mcd_setmode(struct mcd_softc *, int mode);
+ static int	mcd_getqchan(struct mcd_softc *, struct mcd_qchninfo *q);
+-static int	mcd_subchan(struct mcd_softc *, struct ioc_read_subchannel *sc,
+-		    int nocopyout);
++static int	mcd_subchan(struct mcd_softc *, struct ioc_read_subchannel *sc);
+ static int	mcd_toc_header(struct mcd_softc *, struct ioc_toc_header *th);
+ static int	mcd_read_toc(struct mcd_softc *);
+ static int	mcd_toc_entrys(struct mcd_softc *, struct ioc_read_toc_entry *te);
+@@ -482,10 +481,8 @@
+ 	case CDIOCPLAYMSF:
+ 		r = mcd_playmsf(sc, (struct ioc_play_msf *) addr);
+ 		break;
+-	case CDIOCREADSUBCHANNEL_SYSSPACE:
+-		return mcd_subchan(sc, (struct ioc_read_subchannel *) addr, 1);
+ 	case CDIOCREADSUBCHANNEL:
+-		return mcd_subchan(sc, (struct ioc_read_subchannel *) addr, 0);
++		return mcd_subchan(sc, (struct ioc_read_subchannel *) addr);
+ 	case CDIOREADTOCHEADER:
+ 		r = mcd_toc_header(sc, (struct ioc_toc_header *) addr);
+ 		break;
+@@ -1411,7 +1408,7 @@
+ }
+ 
+ static int
+-mcd_subchan(struct mcd_softc *sc, struct ioc_read_subchannel *sch, int nocopyout)
++mcd_subchan(struct mcd_softc *sc, struct ioc_read_subchannel *sch)
+ {
+ 	struct mcd_qchninfo q;
+ 	struct cd_sub_channel_info data;
+@@ -1478,10 +1475,7 @@
+ 	}
+ 
+ 	MCD_UNLOCK(sc);
+-	if (nocopyout == 0)
+-		return copyout(&data, sch->data, min(sizeof(struct cd_sub_channel_info), sch->data_len));
+-	bcopy(&data, sch->data, min(sizeof(struct cd_sub_channel_info), sch->data_len));
+-	return (0);
++	return (copyout(&data, sch->data, min(sizeof(struct cd_sub_channel_info), sch->data_len)));
+ }
+ 
+ static int
+--- sys/dev/scd/scd.c.orig
++++ sys/dev/scd/scd.c
+@@ -130,7 +130,7 @@
+ static int scd_playtracks(struct scd_softc *, struct ioc_play_track *pt);
+ static int scd_playmsf(struct scd_softc *, struct ioc_play_msf *msf);
+ static int scd_play(struct scd_softc *, struct ioc_play_msf *msf);
+-static int scd_subchan(struct scd_softc *, struct ioc_read_subchannel *sch, int nocopyout);
++static int scd_subchan(struct scd_softc *, struct ioc_read_subchannel *sch);
+ static int read_subcode(struct scd_softc *, struct sony_subchannel_position_data *sch);
+ 
+ /* for xcdplayer */
+@@ -357,10 +357,8 @@
+ 	case CDIOCPLAYMSF:
+ 		error = scd_playmsf(sc, (struct ioc_play_msf *) addr);
+ 		break;
+-	case CDIOCREADSUBCHANNEL_SYSSPACE:
+-		return scd_subchan(sc, (struct ioc_read_subchannel *) addr, 1);
+ 	case CDIOCREADSUBCHANNEL:
+-		return scd_subchan(sc, (struct ioc_read_subchannel *) addr, 0);
++		return scd_subchan(sc, (struct ioc_read_subchannel *) addr);
+ 	case CDIOREADTOCHEADER:
+ 		error = scd_toc_header (sc, (struct ioc_toc_header *) addr);
+ 		break;
+@@ -564,7 +562,7 @@
+ }
+ 
+ static int
+-scd_subchan(struct scd_softc *sc, struct ioc_read_subchannel *sch, int nocopyout)
++scd_subchan(struct scd_softc *sc, struct ioc_read_subchannel *sch)
+ {
+ 	struct sony_subchannel_position_data q;
+ 	struct cd_sub_channel_info data;
+@@ -594,12 +592,8 @@
+ 	data.what.position.absaddr.msf.frame = bcd2bin(q.abs_msf[2]);
+ 	SCD_UNLOCK(sc);
+ 
+-	if (nocopyout == 0) {
+-		if (copyout(&data, sch->data, min(sizeof(struct cd_sub_channel_info), sch->data_len))!=0)
+-			return (EFAULT);
+-	} else {
+-		bcopy(&data, sch->data, min(sizeof(struct cd_sub_channel_info), sch->data_len));
+-	}
++	if (copyout(&data, sch->data, min(sizeof(struct cd_sub_channel_info), sch->data_len))!=0)
++		return (EFAULT);
+ 	return (0);
+ }
+ 
+--- sys/sys/cdio.h.orig
++++ sys/sys/cdio.h
+@@ -274,11 +274,4 @@
+ 
+ #define	CDIOCCAPABILITY	_IOR('c',30,struct ioc_capability)	/*<2>*/
+ 
+-/*
+- * Special version of CDIOCREADSUBCHANNEL which assumes that
+- * ioc_read_subchannel->data points to the kernel memory. For
+- * use in compatibility layers.
+- */
+-#define CDIOCREADSUBCHANNEL_SYSSPACE _IOWR('c', 31, struct ioc_read_subchannel)
+-
+ #endif /* !_SYS_CDIO_H_ */
diff --git a/share/security/patches/SA-19:11/cd_ioctl.11.patch.asc b/share/security/patches/SA-19:11/cd_ioctl.11.patch.asc
new file mode 100644
index 0000000000..c0926c16ce
--- /dev/null
+++ b/share/security/patches/SA-19:11/cd_ioctl.11.patch.asc
@@ -0,0 +1,18 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAl0b9aFfFIAAAAAALgAo
+aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD
+MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n
+5cI3Vw/+Mc8GXRbl0iHi5N7Xyy0Myc7nFATusTCOJH/nf6eQO/BYgeJjxTgBuqxX
+1s9/ivxZE/V1wZiJ8HX99qXlHUYRTrCe0/eetkTRMkndohOloiE3gJ6PxmLv49pw
+TM/b9RZ/pNG9hKJmSMIx7fMGumN0Wk20TsYsAVm447ZOIj7DMQHIv9Rn5m0ZkLke
+7M70Hha9uJmAv4AYxJ1GI5R9ugw59jd9K1RuAe/htSv+quPWMCu0HEehRHN8dYNR
+59yuL4751ypGcDt7whl+CKU63ZwDCBy9DM21fd5kKw3xLBQDGU4bJcR+ncGLt8B3
+AJH27WuNnSZ8YS0bNs7YXRoUe4k7pedmTL2To9XiMSKrWza9dr8n++aIHe8gNWEF
+5JVKEds20tZo3s+SzLHIHRVKZC3MxoCaIRkkJ5uOD59PqBvYJKBFn83qQ71F6oyZ
+mnqhOqp0lrZ1Xckmr49iYNXgjpCu3cVHOUrGzDg3N4u6GlTr79bqkWzGnKwR+tim
+5Lq7Fy34ljzdVBqx2rsQN44GFwB0xiumXnTskDT6J0O8UQwZgcOABCrruA2DUli3
+vYIUyoHT0+sXe0nFEWLGI/RopEk9C+33lh7R+GUIDmln8iZYBHx0XipOuhlZVeCI
+YvO1uKixz9UuG3IStBidWpPZAsNAZI2RGR56c4bckB6KobovErg=
+=LP7V
+-----END PGP SIGNATURE-----
diff --git a/share/security/patches/SA-19:11/cd_ioctl.12.patch b/share/security/patches/SA-19:11/cd_ioctl.12.patch
new file mode 100644
index 0000000000..7987a3ed83
--- /dev/null
+++ b/share/security/patches/SA-19:11/cd_ioctl.12.patch
@@ -0,0 +1,92 @@
+--- sys/cam/scsi/scsi_cd.c.orig
++++ sys/cam/scsi/scsi_cd.c
+@@ -1314,7 +1314,7 @@
+ 
+ 	struct 	cam_periph *periph;
+ 	struct	cd_softc *softc;
+-	int	nocopyout, error = 0;
++	int	error = 0;
+ 
+ 	periph = (struct cam_periph *)dp->d_drv1;
+ 	cam_periph_lock(periph);
+@@ -1356,7 +1356,6 @@
+ 	 */
+ 	cam_periph_unlock(periph);
+ 
+-	nocopyout = 0;
+ 	switch (cmd) {
+ 
+ 	case CDIOCPLAYTRACKS:
+@@ -1532,9 +1531,6 @@
+ 			cam_periph_unlock(periph);
+ 		}
+ 		break;
+-	case CDIOCREADSUBCHANNEL_SYSSPACE:
+-		nocopyout = 1;
+-		/* Fallthrough */
+ 	case CDIOCREADSUBCHANNEL:
+ 		{
+ 			struct ioc_read_subchannel *args
+@@ -1579,13 +1575,7 @@
+ 				data->header.data_len[1] +
+ 				sizeof(struct cd_sub_channel_header)));
+ 			cam_periph_unlock(periph);
+-			if (nocopyout == 0) {
+-				if (copyout(data, args->data, len) != 0) {
+-					error = EFAULT;
+-				}
+-			} else {
+-				bcopy(data, args->data, len);
+-			}
++			error = copyout(data, args->data, len);
+ 			free(data, M_SCSICD);
+ 		}
+ 		break;
+--- sys/compat/linux/linux_ioctl.c.orig
++++ sys/compat/linux/linux_ioctl.c
+@@ -1489,16 +1489,26 @@
+ 		struct ioc_read_subchannel bsdsc;
+ 		struct cd_sub_channel_info bsdinfo;
+ 
++		error = copyin((void *)args->arg, &sc, sizeof(sc));
++		if (error)
++			break;
++
++		/*
++		 * Invoke the native ioctl and bounce the returned data through
++		 * the userspace buffer.  This works because the Linux structure
++		 * is the same size as our structures for the subchannel header
++		 * and position data.
++		 */
+ 		bsdsc.address_format = CD_LBA_FORMAT;
+ 		bsdsc.data_format = CD_CURRENT_POSITION;
+ 		bsdsc.track = 0;
+-		bsdsc.data_len = sizeof(bsdinfo);
+-		bsdsc.data = &bsdinfo;
+-		error = fo_ioctl(fp, CDIOCREADSUBCHANNEL_SYSSPACE,
+-		    (caddr_t)&bsdsc, td->td_ucred, td);
++		bsdsc.data_len = sizeof(sc);
++		bsdsc.data = (void *)args->arg;
++		error = fo_ioctl(fp, CDIOCREADSUBCHANNEL, (caddr_t)&bsdsc,
++		    td->td_ucred, td);
+ 		if (error)
+ 			break;
+-		error = copyin((void *)args->arg, &sc, sizeof(sc));
++		error = copyin((void *)args->arg, &bsdinfo, sizeof(bsdinfo));
+ 		if (error)
+ 			break;
+ 		sc.cdsc_audiostatus = bsdinfo.header.audio_status;
+--- sys/sys/cdio.h.orig
++++ sys/sys/cdio.h
+@@ -274,11 +274,4 @@
+ 
+ #define	CDIOCCAPABILITY	_IOR('c',30,struct ioc_capability)	/*<2>*/
+ 
+-/*
+- * Special version of CDIOCREADSUBCHANNEL which assumes that
+- * ioc_read_subchannel->data points to the kernel memory. For
+- * use in compatibility layers.
+- */
+-#define CDIOCREADSUBCHANNEL_SYSSPACE _IOWR('c', 31, struct ioc_read_subchannel)
+-
+ #endif /* !_SYS_CDIO_H_ */
diff --git a/share/security/patches/SA-19:11/cd_ioctl.12.patch.asc b/share/security/patches/SA-19:11/cd_ioctl.12.patch.asc
new file mode 100644
index 0000000000..a03a94b9e4
--- /dev/null
+++ b/share/security/patches/SA-19:11/cd_ioctl.12.patch.asc
@@ -0,0 +1,18 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAl0b9aRfFIAAAAAALgAo
+aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD
+MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n
+5cKFvA//c5t8a5Abb13ttJyT2EoBJYKVYA/i9cWqJLT8/whxVSMZKCI68hIebx0W
+qLJmuJOSdZJjLSZjvoFuQJTqeC4KkMXR+6xAjdVZjWCQDLA1QIKO0a+HedbIijZg
+NRCkkbSvu4pkBOpQjDkgJJIVsZmLvvWhHCdFvtTy/rS/cSEqBU/MNJXvsaTc9gz5
+byhXrFWg9/NS9t0mK++dI5Z6wTFqyhMKwPYA94IK4zDnyOFQlIvylRBNzQy0gs+v
++EWMeyqDJoh/GGqmF564xdY7XxFEwhxVuQNTrLv/ypQgUFprVcezDI4ZmqXM4ghw
+k8pIRfdn6QSwR2INx2mRWDJakNG1aZ3ijdXEZVt4kClnJpbBp/B/xtNem9US3+E1
+E2O31CxHm/FlkqhJxMYSZl8JSp3PWCJ7hc7xo3HYM28maLoziuPB9XBdVtqkdB3h
+01IIIsQzb9ZpR61OCV/eMohMVima7Os7iBl4SZY49Ke8X0NKcmxl2ZSFXmsjrhyh
+ZogBkAyIlO9GuQ46z4z8DhXwy5t1KB6fJmnP2lif6vFYJZopj183hF5qAaDf0jOD
+86YfXynXqGomizJm+BMd5/tFCTrnT5wIz0K5CDViL3iNEwBqE4j6+HeNNgvpAKkI
+tWPQa2R1MRiywDytEBYaPia9wSnhXH8sF1j8/FxvFiEG39NNCV8=
+=l/O+
+-----END PGP SIGNATURE-----
diff --git a/share/xml/advisories.xml b/share/xml/advisories.xml
index 5076dc305b..c4bcf06268 100644
--- a/share/xml/advisories.xml
+++ b/share/xml/advisories.xml
@@ -7,6 +7,28 @@
   <year>
     <name>2019</name>
 
+    <month>
+      <name>7</name>
+
+      <day>
+	<name>2</name>
+
+	<advisory>
+	  <name>FreeBSD-SA-19:11.cd_ioctl</name>
+	</advisory>
+
+	<advisory>
+	  <name>FreeBSD-SA-19:10.ufs</name>
+	</advisory>
+
+	<advisory>
+	  <name>FreeBSD-SA-19:09.iconv</name>
+	</advisory>
+
+      </day>
+
+    </month>
+
     <month>
       <name>6</name>
 
diff --git a/share/xml/notices.xml b/share/xml/notices.xml
index de6d41ed61..b1f4db1fc1 100644
--- a/share/xml/notices.xml
+++ b/share/xml/notices.xml
@@ -7,6 +7,19 @@
   <year>
     <name>2019</name>
 
+    <month>
+      <name>7</name>
+
+      <day>
+	<name>2</name>
+
+	<notice>
+	  <name>FreeBSD-EN-19:12.tzdata</name>
+	</notice>
+
+      </day>
+    </month>
+
     <month>
       <name>6</name>