summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Wang <gwang@php.net>2015-06-22 23:39:53 -0400
committerGeorge Wang <gwang@php.net>2015-06-22 23:39:53 -0400
commitb0954ebb79faf53176e528dd9a3038d2a16ab1ef (patch)
tree76f9dacf00a2fe17215e355979ec0357384914d1
parent8877feaeec7442c459eb923a00ad6ce68edf186a (diff)
parent5fe078abba7dc87ecc05fa3b9bf544867e947567 (diff)
downloadphp-git-b0954ebb79faf53176e528dd9a3038d2a16ab1ef.tar.gz
Merge branch 'PHP-5.5' of git.php.net:php-src into PHP-5.5
-rw-r--r--NEWS69
-rw-r--r--Zend/tests/bug69551.phpt16
-rw-r--r--Zend/tests/bug69892.phpt10
-rw-r--r--Zend/zend_hash.c5
-rw-r--r--Zend/zend_ini_scanner.c2
-rw-r--r--Zend/zend_ini_scanner.l2
-rw-r--r--configure.in2
-rw-r--r--ext/date/lib/timezonedb.h1559
-rw-r--r--ext/dom/document.c22
-rw-r--r--ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt4
-rw-r--r--ext/gd/gd.c17
-rw-r--r--ext/gd/tests/bug61221.phpt23
-rw-r--r--ext/iconv/config.m44
-rw-r--r--ext/pcre/pcrelib/pcre.h4
-rw-r--r--ext/pdo_pgsql/pgsql_driver.c59
-rw-r--r--ext/pdo_pgsql/pgsql_statement.c12
-rw-r--r--ext/pdo_pgsql/tests/bug69344.phpt44
-rw-r--r--ext/pdo_pgsql/tests/bug69362.phpt63
-rw-r--r--ext/pdo_pgsql/tests/bug69752.phpt55
-rw-r--r--ext/pgsql/tests/pg_insert_002.phpt2
-rw-r--r--ext/sockets/conversions.c4
-rw-r--r--ext/standard/exec.c8
-rw-r--r--ext/standard/info.c227
-rw-r--r--ext/standard/mail.c43
-rw-r--r--ext/standard/tests/general_functions/bug69646.phpt47
-rw-r--r--ext/standard/tests/mail/mail_basic6.phpt329
-rw-r--r--ext/standard/winver.h102
-rwxr-xr-xgenfiles11
-rw-r--r--main/php_version.h6
-rw-r--r--win32/install.txt144
30 files changed, 1870 insertions, 1025 deletions
diff --git a/NEWS b/NEWS
index 982d82c3ce..822ff10303 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,44 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-?? ??? 2015, PHP 5.5.26
+?? ??? 2015, PHP 5.5.27
+
+- Core:
+ . Fixed bug #69703 (Use __builtin_clzl on PowerPC).
+ (dja at axtens dot net, Kalle)
+ . Fixed bug #69732 (can induce segmentation fault with basic php code).
+ (Dmitry)
+ . Fixed bug #69642 (Windows 10 reported as Windows 8).
+ (Christian Wenz, Anatol Belski)
+ . Fixed bug #69551 (parse_ini_file() and parse_ini_string() segmentation
+ fault). (Christoph M. Becker)
+ . Fixed bug #69781 (phpinfo() reports Professional Editions of Windows
+ 7/8/8.1/10 as "Business"). (Christian Wenz)
+ . Fixed bug #69835 (phpinfo() does not report many Windows SKUs).
+ (Christian Wenz)
+ . Fixed bug #69892 (Different arrays compare indentical due to integer key
+ truncation). (Nikita)
+
+- GD:
+ . Fixed bug #61221 (imagegammacorrect function loses alpha channel). (cmb)
+
+- PDO_pgsql:
+ . Fixed bug #69752 (PDOStatement::execute() leaks memory with DML
+ Statements when closeCuror() is u). (Philip Hofstetter)
+ . Fixed bug #69362 (PDO-pgsql fails to connect if password contains a
+ leading single quote). (Matteo)
+ . Fixed bug #69344 (PDO PgSQL Incorrect binding numeric array with gaps).
+ (Matteo)
+
+- SimpleXML:
+ . Refactored the fix for bug #66084 (simplexml_load_string() mangles empty
+ node name). (Christoph Michael Becker)
+
+- SPL:
+ . Fixed bug #69737 (Segfault when SplMinHeap::compare produces fatal error).
+ (Stas)
+ . Fixed bug #67805 (SplFileObject setMaxLineLength). (Willian Gustavo Veiga).
+
+11 Jun 2015, PHP 5.5.26
- Core:
. Fixed bug #69566 (Conditional jump or move depends on uninitialised value
@@ -9,12 +47,11 @@
(Julien)
. Fixed bug #69628 (complex GLOB_BRACE fails on Windows).
(Christoph M. Becker)
- . Fixed bug #69703 (Use __builtin_clzl on PowerPC).
- (dja at axtens dot net, Kalle)
- . Fixed bug #69732 (can induce segmentation fault with basic php code).
- (Dmitry)
- . Fixed #69642 (Windows 10 reported as Windows 8).
- (Christian Wenz, Anatol Belski)
+ . Improved fix for bug #69545 (Integer overflow in ftp_genlist() resulting in
+ heap overflow). (CVE-2015-4643) (Max Spelsberg)
+ . Fixed bug #69646 (OS command injection vulnerability in escapeshellarg).
+ (CVE-2015-4642) (Anatol Belski)
+ . Fixed bug #69719 (Incorrect handling of paths with NULs). (Stas)
- GD:
. Fixed bug #69479 (GD fails to build with newer libvpx). (Remi)
@@ -22,6 +59,13 @@
- Iconv:
. Fixed bug #48147 (iconv with //IGNORE cuts the string). (Stas)
+- Litespeed SAPI:
+ . Fixed bug #68812 (Unchecked return value). (George Wang)
+
+- Mail:
+ . Fixed bug #68776 (mail() does not have mail header injection prevention for
+ additional headers). (Yasuo)
+
- MCrypt:
. Added file descriptor caching to mcrypt_create_iv() (Leigh)
@@ -33,21 +77,12 @@
(Matteo Bernardini, Remi)
- Postgres:
- . Fixed bug #69667 (segfault in php_pgsql_meta_data). (Remi)
+ . Fixed bug #69667 (segfault in php_pgsql_meta_data). (CVE-2015-4644) (Remi)
- Opcache
. Fixed bug #69549 (Memory leak with opcache.optimization_level=0xFFFFFFFF).
(Laruence, Dmitry)
-- SimpleXML:
- . Refactored the fix for bug #66084 (simplexml_load_string() mangles empty
- node name). (Christoph Michael Becker)
-
-- SPL:
- . Fixed bug #69737 (Segfault when SplMinHeap::compare produces fatal error).
- (Stas)
- . Fixed bug #67805 (SplFileObject setMaxLineLength). (Willian Gustavo Veiga).
-
- Sqlite3:
. Upgrade bundled sqlite to 3.8.10.2. (CVE-2015-3414, CVE-2015-3415,
CVE-2015-3416) (Kaplan)
diff --git a/Zend/tests/bug69551.phpt b/Zend/tests/bug69551.phpt
new file mode 100644
index 0000000000..096852a2fa
--- /dev/null
+++ b/Zend/tests/bug69551.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Bug #69551 - parse_ini_file() and parse_ini_string() segmentation fault
+--FILE--
+<?php
+$ini = <<<INI
+[Network.eth0]
+SubnetMask = "
+"
+INI;
+$settings = parse_ini_string($ini, false, INI_SCANNER_RAW);
+var_dump($settings);
+?>
+--EXPECTF--
+Warning: syntax error, unexpected '"' in Unknown on line %d
+ in %s on line %d
+bool(false)
diff --git a/Zend/tests/bug69892.phpt b/Zend/tests/bug69892.phpt
new file mode 100644
index 0000000000..d14f85fa52
--- /dev/null
+++ b/Zend/tests/bug69892.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Bug #69892: Different arrays compare indentical due to integer key truncation
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platforms only"); ?>
+--FILE--
+<?php
+var_dump([0 => 0] === [0x100000000 => 0]);
+?>
+--EXPECT--
+bool(false)
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c
index b18fd59da8..065172c12a 100644
--- a/Zend/zend_hash.c
+++ b/Zend/zend_hash.c
@@ -1534,11 +1534,10 @@ ZEND_API int zend_hash_compare(HashTable *ht1, HashTable *ht2, compare_func_t co
}
if (ordered) {
if (p1->nKeyLength==0 && p2->nKeyLength==0) { /* numeric indices */
- result = p1->h - p2->h;
- if (result!=0) {
+ if (p1->h != p2->h) {
HASH_UNPROTECT_RECURSION(ht1);
HASH_UNPROTECT_RECURSION(ht2);
- return result;
+ return p1->h > p2->h ? 1 : -1;
}
} else { /* string indices */
result = p1->nKeyLength - p2->nKeyLength;
diff --git a/Zend/zend_ini_scanner.c b/Zend/zend_ini_scanner.c
index 8f6f7035b2..b31410295e 100644
--- a/Zend/zend_ini_scanner.c
+++ b/Zend/zend_ini_scanner.c
@@ -1926,7 +1926,7 @@ end_raw_value_chars:
}
/* Eat leading and trailing double quotes */
- if (yytext[0] == '"' && yytext[yyleng - 1] == '"') {
+ if (yyleng > 1 && yytext[0] == '"' && yytext[yyleng - 1] == '"') {
SCNG(yy_text)++;
yyleng = yyleng - 2;
} else if (sc) {
diff --git a/Zend/zend_ini_scanner.l b/Zend/zend_ini_scanner.l
index a0a4df7d49..6019bf2fbc 100644
--- a/Zend/zend_ini_scanner.l
+++ b/Zend/zend_ini_scanner.l
@@ -472,7 +472,7 @@ end_raw_value_chars:
}
/* Eat leading and trailing double quotes */
- if (yytext[0] == '"' && yytext[yyleng - 1] == '"') {
+ if (yyleng > 1 && yytext[0] == '"' && yytext[yyleng - 1] == '"') {
SCNG(yy_text)++;
yyleng = yyleng - 2;
} else if (sc) {
diff --git a/configure.in b/configure.in
index ba1ecb7609..cc36598bfd 100644
--- a/configure.in
+++ b/configure.in
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const char *format, ...);
PHP_MAJOR_VERSION=5
PHP_MINOR_VERSION=5
-PHP_RELEASE_VERSION=26
+PHP_RELEASE_VERSION=27
PHP_EXTRA_VERSION="-dev"
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h
index ff6c1724c0..b8d61e052b 100644
--- a/ext/date/lib/timezonedb.h
+++ b/ext/date/lib/timezonedb.h
@@ -14,577 +14,577 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[583] = {
{ "Africa/Bujumbura" , 0x000EF0 },
{ "Africa/Cairo" , 0x000FA7 },
{ "Africa/Casablanca" , 0x001767 },
- { "Africa/Ceuta" , 0x001DEC },
- { "Africa/Conakry" , 0x002622 },
- { "Africa/Dakar" , 0x0026D8 },
- { "Africa/Dar_es_Salaam" , 0x00278E },
- { "Africa/Djibouti" , 0x0028B5 },
- { "Africa/Douala" , 0x0029DC },
- { "Africa/El_Aaiun" , 0x002A93 },
- { "Africa/Freetown" , 0x00306E },
- { "Africa/Gaborone" , 0x003124 },
- { "Africa/Harare" , 0x0031DB },
- { "Africa/Johannesburg" , 0x003292 },
- { "Africa/Juba" , 0x0033AD },
- { "Africa/Kampala" , 0x003664 },
- { "Africa/Khartoum" , 0x00378B },
- { "Africa/Kigali" , 0x003A42 },
- { "Africa/Kinshasa" , 0x003AF9 },
- { "Africa/Lagos" , 0x003BC7 },
- { "Africa/Libreville" , 0x003C7E },
- { "Africa/Lome" , 0x003D35 },
- { "Africa/Luanda" , 0x003DEB },
- { "Africa/Lubumbashi" , 0x003EA2 },
- { "Africa/Lusaka" , 0x003F70 },
- { "Africa/Malabo" , 0x004027 },
- { "Africa/Maputo" , 0x0040DE },
- { "Africa/Maseru" , 0x004195 },
- { "Africa/Mbabane" , 0x0042B0 },
- { "Africa/Mogadishu" , 0x0043CB },
- { "Africa/Monrovia" , 0x0044F2 },
- { "Africa/Nairobi" , 0x0045EF },
- { "Africa/Ndjamena" , 0x004716 },
- { "Africa/Niamey" , 0x004803 },
- { "Africa/Nouakchott" , 0x0048BA },
- { "Africa/Ouagadougou" , 0x004970 },
- { "Africa/Porto-Novo" , 0x004A26 },
- { "Africa/Sao_Tome" , 0x004ADD },
- { "Africa/Timbuktu" , 0x004B93 },
- { "Africa/Tripoli" , 0x004C49 },
- { "Africa/Tunis" , 0x004EE4 },
- { "Africa/Windhoek" , 0x0051B6 },
- { "America/Adak" , 0x0057F0 },
- { "America/Anchorage" , 0x006149 },
- { "America/Anguilla" , 0x006AB0 },
- { "America/Antigua" , 0x006B66 },
- { "America/Araguaina" , 0x006C1C },
- { "America/Argentina/Buenos_Aires" , 0x006FB1 },
- { "America/Argentina/Catamarca" , 0x007411 },
- { "America/Argentina/ComodRivadavia" , 0x0078A1 },
- { "America/Argentina/Cordoba" , 0x007D16 },
- { "America/Argentina/Jujuy" , 0x0081BA },
- { "America/Argentina/La_Rioja" , 0x008649 },
- { "America/Argentina/Mendoza" , 0x008AD9 },
- { "America/Argentina/Rio_Gallegos" , 0x008F86 },
- { "America/Argentina/Salta" , 0x00940A },
- { "America/Argentina/San_Juan" , 0x009873 },
- { "America/Argentina/San_Luis" , 0x009D03 },
- { "America/Argentina/Tucuman" , 0x00A1AF },
- { "America/Argentina/Ushuaia" , 0x00A64C },
- { "America/Aruba" , 0x00AAD6 },
- { "America/Asuncion" , 0x00ABB2 },
- { "America/Atikokan" , 0x00B3CC },
- { "America/Atka" , 0x00B575 },
- { "America/Bahia" , 0x00BEBE },
- { "America/Bahia_Banderas" , 0x00C2DB },
- { "America/Barbados" , 0x00C943 },
- { "America/Belem" , 0x00CAA7 },
- { "America/Belize" , 0x00CD0C },
- { "America/Blanc-Sablon" , 0x00D0E8 },
- { "America/Boa_Vista" , 0x00D25A },
- { "America/Bogota" , 0x00D4F1 },
- { "America/Boise" , 0x00D5FE },
- { "America/Buenos_Aires" , 0x00DF96 },
- { "America/Cambridge_Bay" , 0x00E3E1 },
- { "America/Campo_Grande" , 0x00EC3B },
- { "America/Cancun" , 0x00F438 },
- { "America/Caracas" , 0x00F798 },
- { "America/Catamarca" , 0x00F8AE },
- { "America/Cayenne" , 0x00FD23 },
- { "America/Cayman" , 0x00FDF7 },
- { "America/Chicago" , 0x00FECE },
- { "America/Chihuahua" , 0x010CE7 },
- { "America/Coral_Harbour" , 0x01131A },
- { "America/Cordoba" , 0x01147F },
- { "America/Costa_Rica" , 0x0118F4 },
- { "America/Creston" , 0x011A55 },
- { "America/Cuiaba" , 0x011B7C },
- { "America/Curacao" , 0x012356 },
- { "America/Danmarkshavn" , 0x012432 },
- { "America/Dawson" , 0x012729 },
- { "America/Dawson_Creek" , 0x012F7C },
- { "America/Denver" , 0x0133F4 },
- { "America/Detroit" , 0x013DA2 },
- { "America/Dominica" , 0x01467E },
- { "America/Edmonton" , 0x014734 },
- { "America/Eirunepe" , 0x0150E4 },
- { "America/El_Salvador" , 0x0153A6 },
- { "America/Ensenada" , 0x0154AC },
- { "America/Fort_Wayne" , 0x0160EE },
- { "America/Fortaleza" , 0x015DEC },
- { "America/Glace_Bay" , 0x016785 },
- { "America/Godthab" , 0x017076 },
- { "America/Goose_Bay" , 0x0177E5 },
- { "America/Grand_Turk" , 0x0184AD },
- { "America/Grenada" , 0x0189C0 },
- { "America/Guadeloupe" , 0x018A76 },
- { "America/Guatemala" , 0x018B2C },
- { "America/Guayaquil" , 0x018C6A },
- { "America/Guyana" , 0x018D49 },
- { "America/Halifax" , 0x018E63 },
- { "America/Havana" , 0x019C0B },
- { "America/Hermosillo" , 0x01A59C },
- { "America/Indiana/Indianapolis" , 0x01A78D },
- { "America/Indiana/Knox" , 0x01AE4B },
- { "America/Indiana/Marengo" , 0x01B802 },
- { "America/Indiana/Petersburg" , 0x01BEF9 },
- { "America/Indiana/Tell_City" , 0x01CD39 },
- { "America/Indiana/Vevay" , 0x01D431 },
- { "America/Indiana/Vincennes" , 0x01D9F7 },
- { "America/Indiana/Winamac" , 0x01E0EA },
- { "America/Indianapolis" , 0x01C6A2 },
- { "America/Inuvik" , 0x01E818 },
- { "America/Iqaluit" , 0x01EFD6 },
- { "America/Jamaica" , 0x01F80C },
- { "America/Jujuy" , 0x01FA13 },
- { "America/Juneau" , 0x01FE98 },
- { "America/Kentucky/Louisville" , 0x0207FC },
- { "America/Kentucky/Monticello" , 0x02130E },
- { "America/Knox_IN" , 0x021C79 },
- { "America/Kralendijk" , 0x02260A },
- { "America/La_Paz" , 0x0226E6 },
- { "America/Lima" , 0x0227E5 },
- { "America/Los_Angeles" , 0x022992 },
- { "America/Louisville" , 0x0234C7 },
- { "America/Lower_Princes" , 0x023FB0 },
- { "America/Maceio" , 0x02408C },
- { "America/Managua" , 0x02439C },
- { "America/Manaus" , 0x024577 },
- { "America/Marigot" , 0x0247F5 },
- { "America/Martinique" , 0x0248AB },
- { "America/Matamoros" , 0x0249B8 },
- { "America/Mazatlan" , 0x024F96 },
- { "America/Mendoza" , 0x0255E6 },
- { "America/Menominee" , 0x025A87 },
- { "America/Merida" , 0x0263C5 },
- { "America/Metlakatla" , 0x0269A1 },
- { "America/Mexico_City" , 0x026CA7 },
- { "America/Miquelon" , 0x027322 },
- { "America/Moncton" , 0x0279C2 },
- { "America/Monterrey" , 0x028646 },
- { "America/Montevideo" , 0x028C2E },
- { "America/Montreal" , 0x0294AA },
- { "America/Montserrat" , 0x02A265 },
- { "America/Nassau" , 0x02A31B },
- { "America/New_York" , 0x02AC13 },
- { "America/Nipigon" , 0x02BA04 },
- { "America/Nome" , 0x02C2AE },
- { "America/Noronha" , 0x02CC1B },
- { "America/North_Dakota/Beulah" , 0x02CF0F },
- { "America/North_Dakota/Center" , 0x02D89B },
- { "America/North_Dakota/New_Salem" , 0x02E227 },
- { "America/Ojinaga" , 0x02EBC8 },
- { "America/Panama" , 0x02F1F1 },
- { "America/Pangnirtung" , 0x02F2C8 },
- { "America/Paramaribo" , 0x02FB33 },
- { "America/Phoenix" , 0x02FC73 },
- { "America/Port-au-Prince" , 0x02FE10 },
- { "America/Port_of_Spain" , 0x030683 },
- { "America/Porto_Acre" , 0x0303E7 },
- { "America/Porto_Velho" , 0x030739 },
- { "America/Puerto_Rico" , 0x030999 },
- { "America/Rainy_River" , 0x030AA4 },
- { "America/Rankin_Inlet" , 0x031335 },
- { "America/Recife" , 0x031AE9 },
- { "America/Regina" , 0x031DD7 },
- { "America/Resolute" , 0x0321FA },
- { "America/Rio_Branco" , 0x0329B0 },
- { "America/Rosario" , 0x032C50 },
- { "America/Santa_Isabel" , 0x0330C5 },
- { "America/Santarem" , 0x033A3F },
- { "America/Santiago" , 0x033CC3 },
- { "America/Santo_Domingo" , 0x03444E },
- { "America/Sao_Paulo" , 0x034643 },
- { "America/Scoresbysund" , 0x034E60 },
- { "America/Shiprock" , 0x035610 },
- { "America/Sitka" , 0x035FB1 },
- { "America/St_Barthelemy" , 0x036913 },
- { "America/St_Johns" , 0x0369C9 },
- { "America/St_Kitts" , 0x03784D },
- { "America/St_Lucia" , 0x037903 },
- { "America/St_Thomas" , 0x0379B9 },
- { "America/St_Vincent" , 0x037A6F },
- { "America/Swift_Current" , 0x037B25 },
- { "America/Tegucigalpa" , 0x037D9D },
- { "America/Thule" , 0x037EBF },
- { "America/Thunder_Bay" , 0x0384D3 },
- { "America/Tijuana" , 0x038DA5 },
- { "America/Toronto" , 0x039715 },
- { "America/Tortola" , 0x03A500 },
- { "America/Vancouver" , 0x03A5B6 },
- { "America/Virgin" , 0x03B13B },
- { "America/Whitehorse" , 0x03B1F1 },
- { "America/Winnipeg" , 0x03BA44 },
- { "America/Yakutat" , 0x03C5C1 },
- { "America/Yellowknife" , 0x03CEFA },
- { "Antarctica/Casey" , 0x03D6EF },
- { "Antarctica/Davis" , 0x03D82A },
- { "Antarctica/DumontDUrville" , 0x03D975 },
- { "Antarctica/Macquarie" , 0x03DA89 },
- { "Antarctica/Mawson" , 0x03E09F },
- { "Antarctica/McMurdo" , 0x03E190 },
- { "Antarctica/Palmer" , 0x03EB65 },
- { "Antarctica/Rothera" , 0x03F116 },
- { "Antarctica/South_Pole" , 0x03F1EF },
- { "Antarctica/Syowa" , 0x03FB97 },
- { "Antarctica/Troll" , 0x03FC69 },
- { "Antarctica/Vostok" , 0x04011C },
- { "Arctic/Longyearbyen" , 0x0401F1 },
- { "Asia/Aden" , 0x040AC8 },
- { "Asia/Almaty" , 0x040B7F },
- { "Asia/Amman" , 0x040F41 },
- { "Asia/Anadyr" , 0x0416A2 },
- { "Asia/Aqtau" , 0x041B8E },
- { "Asia/Aqtobe" , 0x042041 },
- { "Asia/Ashgabat" , 0x042478 },
- { "Asia/Ashkhabad" , 0x042723 },
- { "Asia/Baghdad" , 0x0429CE },
- { "Asia/Bahrain" , 0x042DB6 },
- { "Asia/Baku" , 0x042E93 },
- { "Asia/Bangkok" , 0x043643 },
- { "Asia/Beirut" , 0x04371B },
- { "Asia/Bishkek" , 0x043FA6 },
- { "Asia/Brunei" , 0x0443D7 },
- { "Asia/Calcutta" , 0x0444AC },
- { "Asia/Chita" , 0x0445DB },
- { "Asia/Choibalsan" , 0x044AEF },
- { "Asia/Chongqing" , 0x04513E },
- { "Asia/Chungking" , 0x0452E8 },
- { "Asia/Colombo" , 0x045492 },
- { "Asia/Dacca" , 0x045623 },
- { "Asia/Damascus" , 0x0457B5 },
- { "Asia/Dhaka" , 0x0460D1 },
- { "Asia/Dili" , 0x046263 },
- { "Asia/Dubai" , 0x0463A4 },
- { "Asia/Dushanbe" , 0x04645B },
- { "Asia/Gaza" , 0x0466CA },
- { "Asia/Harbin" , 0x046FEA },
- { "Asia/Hebron" , 0x047194 },
- { "Asia/Ho_Chi_Minh" , 0x047ACF },
- { "Asia/Hong_Kong" , 0x047C50 },
- { "Asia/Hovd" , 0x048101 },
- { "Asia/Irkutsk" , 0x048721 },
- { "Asia/Istanbul" , 0x048C2F },
- { "Asia/Jakarta" , 0x0496F6 },
- { "Asia/Jayapura" , 0x049882 },
- { "Asia/Jerusalem" , 0x0499B0 },
- { "Asia/Kabul" , 0x04A295 },
- { "Asia/Kamchatka" , 0x04A368 },
- { "Asia/Karachi" , 0x04A843 },
- { "Asia/Kashgar" , 0x04A9E2 },
- { "Asia/Kathmandu" , 0x04AA99 },
- { "Asia/Katmandu" , 0x04AB79 },
- { "Asia/Khandyga" , 0x04AC59 },
- { "Asia/Kolkata" , 0x04B1B2 },
- { "Asia/Krasnoyarsk" , 0x04B2E1 },
- { "Asia/Kuala_Lumpur" , 0x04B7D0 },
- { "Asia/Kuching" , 0x04B97D },
- { "Asia/Kuwait" , 0x04BB9F },
- { "Asia/Macao" , 0x04BC56 },
- { "Asia/Macau" , 0x04BF7D },
- { "Asia/Magadan" , 0x04C2A4 },
- { "Asia/Makassar" , 0x04C7AB },
- { "Asia/Manila" , 0x04C917 },
- { "Asia/Muscat" , 0x04CA8C },
- { "Asia/Nicosia" , 0x04CB43 },
- { "Asia/Novokuznetsk" , 0x04D32F },
- { "Asia/Novosibirsk" , 0x04D84C },
- { "Asia/Omsk" , 0x04DD27 },
- { "Asia/Oral" , 0x04E215 },
- { "Asia/Phnom_Penh" , 0x04E67C },
- { "Asia/Pontianak" , 0x04E754 },
- { "Asia/Pyongyang" , 0x04E8EC },
- { "Asia/Qatar" , 0x04EA0F },
- { "Asia/Qyzylorda" , 0x04EAEC },
- { "Asia/Rangoon" , 0x04EF52 },
- { "Asia/Riyadh" , 0x04F07B },
- { "Asia/Saigon" , 0x04F132 },
- { "Asia/Sakhalin" , 0x04F2B3 },
- { "Asia/Samarkand" , 0x04F7A5 },
- { "Asia/Seoul" , 0x04FA73 },
- { "Asia/Shanghai" , 0x04FCBA },
- { "Asia/Singapore" , 0x04FE70 },
- { "Asia/Srednekolymsk" , 0x050028 },
- { "Asia/Taipei" , 0x050528 },
- { "Asia/Tashkent" , 0x050854 },
- { "Asia/Tbilisi" , 0x050B18 },
- { "Asia/Tehran" , 0x050F9A },
- { "Asia/Tel_Aviv" , 0x051623 },
- { "Asia/Thimbu" , 0x051F08 },
- { "Asia/Thimphu" , 0x051FE5 },
- { "Asia/Tokyo" , 0x0520C2 },
- { "Asia/Ujung_Pandang" , 0x052231 },
- { "Asia/Ulaanbaatar" , 0x052355 },
- { "Asia/Ulan_Bator" , 0x052958 },
- { "Asia/Urumqi" , 0x052F4D },
- { "Asia/Ust-Nera" , 0x053011 },
- { "Asia/Vientiane" , 0x053541 },
- { "Asia/Vladivostok" , 0x053619 },
- { "Asia/Yakutsk" , 0x053B06 },
- { "Asia/Yekaterinburg" , 0x053FF2 },
- { "Asia/Yerevan" , 0x054545 },
- { "Atlantic/Azores" , 0x054A4E },
- { "Atlantic/Bermuda" , 0x055800 },
- { "Atlantic/Canary" , 0x055FE0 },
- { "Atlantic/Cape_Verde" , 0x056773 },
- { "Atlantic/Faeroe" , 0x05687D },
- { "Atlantic/Faroe" , 0x056FAE },
- { "Atlantic/Jan_Mayen" , 0x0576DF },
- { "Atlantic/Madeira" , 0x057FB6 },
- { "Atlantic/Reykjavik" , 0x058D67 },
- { "Atlantic/South_Georgia" , 0x059219 },
- { "Atlantic/St_Helena" , 0x0597A3 },
- { "Atlantic/Stanley" , 0x0592B9 },
- { "Australia/ACT" , 0x059859 },
- { "Australia/Adelaide" , 0x05A114 },
- { "Australia/Brisbane" , 0x05A9ED },
- { "Australia/Broken_Hill" , 0x05ABD8 },
- { "Australia/Canberra" , 0x05B4E2 },
- { "Australia/Currie" , 0x05BD9D },
- { "Australia/Darwin" , 0x05C66E },
- { "Australia/Eucla" , 0x05C7CF },
- { "Australia/Hobart" , 0x05C9E0 },
- { "Australia/LHI" , 0x05D324 },
- { "Australia/Lindeman" , 0x05DA73 },
- { "Australia/Lord_Howe" , 0x05DCA5 },
- { "Australia/Melbourne" , 0x05E404 },
- { "Australia/North" , 0x05ECC7 },
- { "Australia/NSW" , 0x05EE16 },
- { "Australia/Perth" , 0x05F6D1 },
- { "Australia/Queensland" , 0x05F8DE },
- { "Australia/South" , 0x05FAAE },
- { "Australia/Sydney" , 0x060378 },
- { "Australia/Tasmania" , 0x060C53 },
- { "Australia/Victoria" , 0x06157E },
- { "Australia/West" , 0x061E39 },
- { "Australia/Yancowinna" , 0x062024 },
- { "Brazil/Acre" , 0x062912 },
- { "Brazil/DeNoronha" , 0x062BAE },
- { "Brazil/East" , 0x062E92 },
- { "Brazil/West" , 0x06367D },
- { "Canada/Atlantic" , 0x0638F1 },
- { "Canada/Central" , 0x06466B },
- { "Canada/East-Saskatchewan" , 0x065F7D },
- { "Canada/Eastern" , 0x0651C2 },
- { "Canada/Mountain" , 0x06636B },
- { "Canada/Newfoundland" , 0x066CD9 },
- { "Canada/Pacific" , 0x067B35 },
- { "Canada/Saskatchewan" , 0x068696 },
- { "Canada/Yukon" , 0x068A84 },
- { "CET" , 0x0692BD },
- { "Chile/Continental" , 0x069AFF },
- { "Chile/EasterIsland" , 0x06A27C },
- { "CST6CDT" , 0x06A8D6 },
- { "Cuba" , 0x06B1D8 },
- { "EET" , 0x06BB69 },
- { "Egypt" , 0x06C2C9 },
- { "Eire" , 0x06CA89 },
- { "EST" , 0x06D87C },
- { "EST5EDT" , 0x06D907 },
- { "Etc/GMT" , 0x06E209 },
- { "Etc/GMT+0" , 0x06E3AA },
- { "Etc/GMT+1" , 0x06E4C9 },
- { "Etc/GMT+10" , 0x06E5F4 },
- { "Etc/GMT+11" , 0x06E723 },
- { "Etc/GMT+12" , 0x06E852 },
- { "Etc/GMT+2" , 0x06EAAD },
- { "Etc/GMT+3" , 0x06EBD4 },
- { "Etc/GMT+4" , 0x06ECFB },
- { "Etc/GMT+5" , 0x06EE22 },
- { "Etc/GMT+6" , 0x06EF49 },
- { "Etc/GMT+7" , 0x06F070 },
- { "Etc/GMT+8" , 0x06F197 },
- { "Etc/GMT+9" , 0x06F2BE },
- { "Etc/GMT-0" , 0x06E31F },
- { "Etc/GMT-1" , 0x06E435 },
- { "Etc/GMT-10" , 0x06E55C },
- { "Etc/GMT-11" , 0x06E68B },
- { "Etc/GMT-12" , 0x06E7BA },
- { "Etc/GMT-13" , 0x06E8E9 },
- { "Etc/GMT-14" , 0x06E981 },
- { "Etc/GMT-2" , 0x06EA19 },
- { "Etc/GMT-3" , 0x06EB40 },
- { "Etc/GMT-4" , 0x06EC67 },
- { "Etc/GMT-5" , 0x06ED8E },
- { "Etc/GMT-6" , 0x06EEB5 },
- { "Etc/GMT-7" , 0x06EFDC },
- { "Etc/GMT-8" , 0x06F103 },
- { "Etc/GMT-9" , 0x06F22A },
- { "Etc/GMT0" , 0x06E294 },
- { "Etc/Greenwich" , 0x06F351 },
- { "Etc/UCT" , 0x06F3DC },
- { "Etc/Universal" , 0x06F467 },
- { "Etc/UTC" , 0x06F4F2 },
- { "Etc/Zulu" , 0x06F57D },
- { "Europe/Amsterdam" , 0x06F608 },
- { "Europe/Andorra" , 0x070193 },
- { "Europe/Athens" , 0x070876 },
- { "Europe/Belfast" , 0x071161 },
- { "Europe/Belgrade" , 0x071FD4 },
- { "Europe/Berlin" , 0x072785 },
- { "Europe/Bratislava" , 0x0730BE },
- { "Europe/Brussels" , 0x0739AA },
- { "Europe/Bucharest" , 0x074550 },
- { "Europe/Budapest" , 0x074E09 },
- { "Europe/Busingen" , 0x07577A },
- { "Europe/Chisinau" , 0x075F0C },
- { "Europe/Copenhagen" , 0x076899 },
- { "Europe/Dublin" , 0x077115 },
- { "Europe/Gibraltar" , 0x077F08 },
- { "Europe/Guernsey" , 0x078B09 },
- { "Europe/Helsinki" , 0x07997C },
- { "Europe/Isle_of_Man" , 0x07A0FD },
- { "Europe/Istanbul" , 0x07AF70 },
- { "Europe/Jersey" , 0x07BA37 },
- { "Europe/Kaliningrad" , 0x07C8AA },
- { "Europe/Kiev" , 0x07CEDB },
- { "Europe/Lisbon" , 0x07D726 },
- { "Europe/Ljubljana" , 0x07E4B7 },
- { "Europe/London" , 0x07EC68 },
- { "Europe/Luxembourg" , 0x07FADB },
- { "Europe/Madrid" , 0x080685 },
- { "Europe/Malta" , 0x0810D4 },
- { "Europe/Mariehamn" , 0x081B25 },
- { "Europe/Minsk" , 0x0822A6 },
- { "Europe/Monaco" , 0x08280A },
- { "Europe/Moscow" , 0x08339F },
- { "Europe/Nicosia" , 0x0839BA },
- { "Europe/Oslo" , 0x0841A6 },
- { "Europe/Paris" , 0x084A7D },
- { "Europe/Podgorica" , 0x085624 },
- { "Europe/Prague" , 0x085DD5 },
- { "Europe/Riga" , 0x0866C1 },
- { "Europe/Rome" , 0x086F88 },
- { "Europe/Samara" , 0x087A0A },
- { "Europe/San_Marino" , 0x087FC1 },
- { "Europe/Sarajevo" , 0x088A43 },
- { "Europe/Simferopol" , 0x0891F4 },
- { "Europe/Skopje" , 0x0897F2 },
- { "Europe/Sofia" , 0x089FA3 },
- { "Europe/Stockholm" , 0x08A801 },
- { "Europe/Tallinn" , 0x08AF8B },
- { "Europe/Tirane" , 0x08B830 },
- { "Europe/Tiraspol" , 0x08C06E },
- { "Europe/Uzhgorod" , 0x08C9FB },
- { "Europe/Vaduz" , 0x08D246 },
- { "Europe/Vatican" , 0x08D9D0 },
- { "Europe/Vienna" , 0x08E452 },
- { "Europe/Vilnius" , 0x08ED1B },
- { "Europe/Volgograd" , 0x08F5BE },
- { "Europe/Warsaw" , 0x08FB0E },
- { "Europe/Zagreb" , 0x0905AB },
- { "Europe/Zaporozhye" , 0x090D5C },
- { "Europe/Zurich" , 0x0915D5 },
- { "Factory" , 0x091D5F },
- { "GB" , 0x091E73 },
- { "GB-Eire" , 0x092CE6 },
- { "GMT" , 0x093B59 },
- { "GMT+0" , 0x093CFA },
- { "GMT-0" , 0x093C6F },
- { "GMT0" , 0x093BE4 },
- { "Greenwich" , 0x093D85 },
- { "Hongkong" , 0x093E10 },
- { "HST" , 0x0942C1 },
- { "Iceland" , 0x09434D },
- { "Indian/Antananarivo" , 0x0947FF },
- { "Indian/Chagos" , 0x094926 },
- { "Indian/Christmas" , 0x0949FB },
- { "Indian/Cocos" , 0x094A9C },
- { "Indian/Comoro" , 0x094B40 },
- { "Indian/Kerguelen" , 0x094C67 },
- { "Indian/Mahe" , 0x094D1E },
- { "Indian/Maldives" , 0x094DD5 },
- { "Indian/Mauritius" , 0x094EAD },
- { "Indian/Mayotte" , 0x094FB6 },
- { "Indian/Reunion" , 0x0950DD },
- { "Iran" , 0x095194 },
- { "Israel" , 0x09581D },
- { "Jamaica" , 0x096102 },
- { "Japan" , 0x096309 },
- { "Kwajalein" , 0x096478 },
- { "Libya" , 0x096571 },
- { "MET" , 0x09680C },
- { "Mexico/BajaNorte" , 0x09704E },
- { "Mexico/BajaSur" , 0x09798E },
- { "Mexico/General" , 0x097FB6 },
- { "MST" , 0x098614 },
- { "MST7MDT" , 0x09869F },
- { "Navajo" , 0x098FA1 },
- { "NZ" , 0x099942 },
- { "NZ-CHAT" , 0x09A2EA },
- { "Pacific/Apia" , 0x09AAFF },
- { "Pacific/Auckland" , 0x09AF59 },
- { "Pacific/Bougainville" , 0x09B90F },
- { "Pacific/Chatham" , 0x09BA3F },
- { "Pacific/Chuuk" , 0x09C263 },
- { "Pacific/Easter" , 0x09C31C },
- { "Pacific/Efate" , 0x09C983 },
- { "Pacific/Enderbury" , 0x09CB6D },
- { "Pacific/Fakaofo" , 0x09CC6E },
- { "Pacific/Fiji" , 0x09CD3F },
- { "Pacific/Funafuti" , 0x09D17D },
- { "Pacific/Galapagos" , 0x09D21F },
- { "Pacific/Gambier" , 0x09D30F },
- { "Pacific/Guadalcanal" , 0x09D3D7 },
- { "Pacific/Guam" , 0x09D48F },
- { "Pacific/Honolulu" , 0x09D57C },
- { "Pacific/Johnston" , 0x09D6A2 },
- { "Pacific/Kiritimati" , 0x09D7D0 },
- { "Pacific/Kosrae" , 0x09D8CE },
- { "Pacific/Kwajalein" , 0x09D9C6 },
- { "Pacific/Majuro" , 0x09DAC8 },
- { "Pacific/Marquesas" , 0x09DBA7 },
- { "Pacific/Midway" , 0x09DC74 },
- { "Pacific/Nauru" , 0x09DD9E },
- { "Pacific/Niue" , 0x09DEA8 },
- { "Pacific/Norfolk" , 0x09DF96 },
- { "Pacific/Noumea" , 0x09E072 },
- { "Pacific/Pago_Pago" , 0x09E1B8 },
- { "Pacific/Palau" , 0x09E2D4 },
- { "Pacific/Pitcairn" , 0x09E375 },
- { "Pacific/Pohnpei" , 0x09E44C },
- { "Pacific/Ponape" , 0x09E501 },
- { "Pacific/Port_Moresby" , 0x09E5A6 },
- { "Pacific/Rarotonga" , 0x09E66C },
- { "Pacific/Saipan" , 0x09E8B6 },
- { "Pacific/Samoa" , 0x09E9A3 },
- { "Pacific/Tahiti" , 0x09EABF },
- { "Pacific/Tarawa" , 0x09EB88 },
- { "Pacific/Tongatapu" , 0x09EC3C },
- { "Pacific/Truk" , 0x09ED9B },
- { "Pacific/Wake" , 0x09EE40 },
- { "Pacific/Wallis" , 0x09EEF0 },
- { "Pacific/Yap" , 0x09EF92 },
- { "Poland" , 0x09F037 },
- { "Portugal" , 0x09FAD4 },
- { "PRC" , 0x0A085D },
- { "PST8PDT" , 0x0A0A07 },
- { "ROC" , 0x0A1309 },
- { "ROK" , 0x0A1635 },
- { "Singapore" , 0x0A187C },
- { "Turkey" , 0x0A1A34 },
- { "UCT" , 0x0A24FB },
- { "Universal" , 0x0A2586 },
- { "US/Alaska" , 0x0A2611 },
- { "US/Aleutian" , 0x0A2F6D },
- { "US/Arizona" , 0x0A38B6 },
- { "US/Central" , 0x0A3A23 },
- { "US/East-Indiana" , 0x0A5615 },
- { "US/Eastern" , 0x0A4830 },
- { "US/Hawaii" , 0x0A5CAC },
- { "US/Indiana-Starke" , 0x0A5DCC },
- { "US/Michigan" , 0x0A675D },
- { "US/Mountain" , 0x0A7011 },
- { "US/Pacific" , 0x0A79B2 },
- { "US/Pacific-New" , 0x0A84DB },
- { "US/Samoa" , 0x0A9004 },
- { "UTC" , 0x0A9120 },
- { "W-SU" , 0x0A9908 },
- { "WET" , 0x0A91AB },
- { "Zulu" , 0x0A9F0C },
+ { "Africa/Ceuta" , 0x001DD0 },
+ { "Africa/Conakry" , 0x002606 },
+ { "Africa/Dakar" , 0x0026BC },
+ { "Africa/Dar_es_Salaam" , 0x002772 },
+ { "Africa/Djibouti" , 0x002899 },
+ { "Africa/Douala" , 0x0029C0 },
+ { "Africa/El_Aaiun" , 0x002A77 },
+ { "Africa/Freetown" , 0x003036 },
+ { "Africa/Gaborone" , 0x0030EC },
+ { "Africa/Harare" , 0x0031A3 },
+ { "Africa/Johannesburg" , 0x00325A },
+ { "Africa/Juba" , 0x003375 },
+ { "Africa/Kampala" , 0x00362C },
+ { "Africa/Khartoum" , 0x003753 },
+ { "Africa/Kigali" , 0x003A0A },
+ { "Africa/Kinshasa" , 0x003AC1 },
+ { "Africa/Lagos" , 0x003B8F },
+ { "Africa/Libreville" , 0x003C46 },
+ { "Africa/Lome" , 0x003CFD },
+ { "Africa/Luanda" , 0x003DB3 },
+ { "Africa/Lubumbashi" , 0x003E6A },
+ { "Africa/Lusaka" , 0x003F38 },
+ { "Africa/Malabo" , 0x003FEF },
+ { "Africa/Maputo" , 0x0040A6 },
+ { "Africa/Maseru" , 0x00415D },
+ { "Africa/Mbabane" , 0x004278 },
+ { "Africa/Mogadishu" , 0x004393 },
+ { "Africa/Monrovia" , 0x0044BA },
+ { "Africa/Nairobi" , 0x0045B7 },
+ { "Africa/Ndjamena" , 0x0046DE },
+ { "Africa/Niamey" , 0x0047CB },
+ { "Africa/Nouakchott" , 0x004882 },
+ { "Africa/Ouagadougou" , 0x004938 },
+ { "Africa/Porto-Novo" , 0x0049EE },
+ { "Africa/Sao_Tome" , 0x004AA5 },
+ { "Africa/Timbuktu" , 0x004B5B },
+ { "Africa/Tripoli" , 0x004C11 },
+ { "Africa/Tunis" , 0x004EAC },
+ { "Africa/Windhoek" , 0x00517E },
+ { "America/Adak" , 0x0057B8 },
+ { "America/Anchorage" , 0x006111 },
+ { "America/Anguilla" , 0x006A78 },
+ { "America/Antigua" , 0x006B2E },
+ { "America/Araguaina" , 0x006BE4 },
+ { "America/Argentina/Buenos_Aires" , 0x006F79 },
+ { "America/Argentina/Catamarca" , 0x0073D9 },
+ { "America/Argentina/ComodRivadavia" , 0x007869 },
+ { "America/Argentina/Cordoba" , 0x007CDE },
+ { "America/Argentina/Jujuy" , 0x008182 },
+ { "America/Argentina/La_Rioja" , 0x008611 },
+ { "America/Argentina/Mendoza" , 0x008AA1 },
+ { "America/Argentina/Rio_Gallegos" , 0x008F4E },
+ { "America/Argentina/Salta" , 0x0093D2 },
+ { "America/Argentina/San_Juan" , 0x00983B },
+ { "America/Argentina/San_Luis" , 0x009CCB },
+ { "America/Argentina/Tucuman" , 0x00A177 },
+ { "America/Argentina/Ushuaia" , 0x00A614 },
+ { "America/Aruba" , 0x00AA9E },
+ { "America/Asuncion" , 0x00AB7A },
+ { "America/Atikokan" , 0x00B394 },
+ { "America/Atka" , 0x00B53D },
+ { "America/Bahia" , 0x00BE86 },
+ { "America/Bahia_Banderas" , 0x00C2A3 },
+ { "America/Barbados" , 0x00C90B },
+ { "America/Belem" , 0x00CA6F },
+ { "America/Belize" , 0x00CCD4 },
+ { "America/Blanc-Sablon" , 0x00D0B0 },
+ { "America/Boa_Vista" , 0x00D222 },
+ { "America/Bogota" , 0x00D4B9 },
+ { "America/Boise" , 0x00D5C6 },
+ { "America/Buenos_Aires" , 0x00DF5E },
+ { "America/Cambridge_Bay" , 0x00E3A9 },
+ { "America/Campo_Grande" , 0x00EC03 },
+ { "America/Cancun" , 0x00F400 },
+ { "America/Caracas" , 0x00F760 },
+ { "America/Catamarca" , 0x00F876 },
+ { "America/Cayenne" , 0x00FCEB },
+ { "America/Cayman" , 0x00FDBF },
+ { "America/Chicago" , 0x010128 },
+ { "America/Chihuahua" , 0x010F41 },
+ { "America/Coral_Harbour" , 0x011574 },
+ { "America/Cordoba" , 0x0116D9 },
+ { "America/Costa_Rica" , 0x011B4E },
+ { "America/Creston" , 0x011CAF },
+ { "America/Cuiaba" , 0x011DD6 },
+ { "America/Curacao" , 0x0125B0 },
+ { "America/Danmarkshavn" , 0x01268C },
+ { "America/Dawson" , 0x012983 },
+ { "America/Dawson_Creek" , 0x0131D6 },
+ { "America/Denver" , 0x01364E },
+ { "America/Detroit" , 0x013FFC },
+ { "America/Dominica" , 0x0148D8 },
+ { "America/Edmonton" , 0x01498E },
+ { "America/Eirunepe" , 0x01533E },
+ { "America/El_Salvador" , 0x015600 },
+ { "America/Ensenada" , 0x015706 },
+ { "America/Fort_Wayne" , 0x016348 },
+ { "America/Fortaleza" , 0x016046 },
+ { "America/Glace_Bay" , 0x0169DF },
+ { "America/Godthab" , 0x0172D0 },
+ { "America/Goose_Bay" , 0x017A3F },
+ { "America/Grand_Turk" , 0x018707 },
+ { "America/Grenada" , 0x018C1A },
+ { "America/Guadeloupe" , 0x018CD0 },
+ { "America/Guatemala" , 0x018D86 },
+ { "America/Guayaquil" , 0x018EC4 },
+ { "America/Guyana" , 0x018FA3 },
+ { "America/Halifax" , 0x0190BD },
+ { "America/Havana" , 0x019E65 },
+ { "America/Hermosillo" , 0x01A7F6 },
+ { "America/Indiana/Indianapolis" , 0x01A9E7 },
+ { "America/Indiana/Knox" , 0x01B0A5 },
+ { "America/Indiana/Marengo" , 0x01BA5C },
+ { "America/Indiana/Petersburg" , 0x01C153 },
+ { "America/Indiana/Tell_City" , 0x01CF93 },
+ { "America/Indiana/Vevay" , 0x01D68B },
+ { "America/Indiana/Vincennes" , 0x01DC51 },
+ { "America/Indiana/Winamac" , 0x01E344 },
+ { "America/Indianapolis" , 0x01C8FC },
+ { "America/Inuvik" , 0x01EA72 },
+ { "America/Iqaluit" , 0x01F230 },
+ { "America/Jamaica" , 0x01FA66 },
+ { "America/Jujuy" , 0x01FC6D },
+ { "America/Juneau" , 0x0200F2 },
+ { "America/Kentucky/Louisville" , 0x020A56 },
+ { "America/Kentucky/Monticello" , 0x021568 },
+ { "America/Knox_IN" , 0x021ED3 },
+ { "America/Kralendijk" , 0x022864 },
+ { "America/La_Paz" , 0x022940 },
+ { "America/Lima" , 0x022A3F },
+ { "America/Los_Angeles" , 0x022BEC },
+ { "America/Louisville" , 0x023721 },
+ { "America/Lower_Princes" , 0x02420A },
+ { "America/Maceio" , 0x0242E6 },
+ { "America/Managua" , 0x0245F6 },
+ { "America/Manaus" , 0x0247D1 },
+ { "America/Marigot" , 0x024A4F },
+ { "America/Martinique" , 0x024B05 },
+ { "America/Matamoros" , 0x024C12 },
+ { "America/Mazatlan" , 0x0251F0 },
+ { "America/Mendoza" , 0x025840 },
+ { "America/Menominee" , 0x025CE1 },
+ { "America/Merida" , 0x02661F },
+ { "America/Metlakatla" , 0x026BFB },
+ { "America/Mexico_City" , 0x026F01 },
+ { "America/Miquelon" , 0x02757C },
+ { "America/Moncton" , 0x027C1C },
+ { "America/Monterrey" , 0x0288A0 },
+ { "America/Montevideo" , 0x028E88 },
+ { "America/Montreal" , 0x029704 },
+ { "America/Montserrat" , 0x02A4BF },
+ { "America/Nassau" , 0x02A575 },
+ { "America/New_York" , 0x02AE6D },
+ { "America/Nipigon" , 0x02BC5E },
+ { "America/Nome" , 0x02C508 },
+ { "America/Noronha" , 0x02CE75 },
+ { "America/North_Dakota/Beulah" , 0x02D169 },
+ { "America/North_Dakota/Center" , 0x02DAF5 },
+ { "America/North_Dakota/New_Salem" , 0x02E481 },
+ { "America/Ojinaga" , 0x02EE22 },
+ { "America/Panama" , 0x02F44B },
+ { "America/Pangnirtung" , 0x02F522 },
+ { "America/Paramaribo" , 0x02FD8D },
+ { "America/Phoenix" , 0x02FECD },
+ { "America/Port-au-Prince" , 0x03006A },
+ { "America/Port_of_Spain" , 0x0308DD },
+ { "America/Porto_Acre" , 0x030641 },
+ { "America/Porto_Velho" , 0x030993 },
+ { "America/Puerto_Rico" , 0x030BF3 },
+ { "America/Rainy_River" , 0x030CFE },
+ { "America/Rankin_Inlet" , 0x03158F },
+ { "America/Recife" , 0x031D43 },
+ { "America/Regina" , 0x032031 },
+ { "America/Resolute" , 0x032454 },
+ { "America/Rio_Branco" , 0x032C0A },
+ { "America/Rosario" , 0x032EAA },
+ { "America/Santa_Isabel" , 0x03331F },
+ { "America/Santarem" , 0x033C99 },
+ { "America/Santiago" , 0x033F1D },
+ { "America/Santo_Domingo" , 0x0346A8 },
+ { "America/Sao_Paulo" , 0x03489D },
+ { "America/Scoresbysund" , 0x0350BA },
+ { "America/Shiprock" , 0x03586A },
+ { "America/Sitka" , 0x03620B },
+ { "America/St_Barthelemy" , 0x036B6D },
+ { "America/St_Johns" , 0x036C23 },
+ { "America/St_Kitts" , 0x037AA7 },
+ { "America/St_Lucia" , 0x037B5D },
+ { "America/St_Thomas" , 0x037C13 },
+ { "America/St_Vincent" , 0x037CC9 },
+ { "America/Swift_Current" , 0x037D7F },
+ { "America/Tegucigalpa" , 0x037FF7 },
+ { "America/Thule" , 0x038119 },
+ { "America/Thunder_Bay" , 0x03872D },
+ { "America/Tijuana" , 0x038FFF },
+ { "America/Toronto" , 0x03996F },
+ { "America/Tortola" , 0x03A75A },
+ { "America/Vancouver" , 0x03A810 },
+ { "America/Virgin" , 0x03B395 },
+ { "America/Whitehorse" , 0x03B44B },
+ { "America/Winnipeg" , 0x03BC9E },
+ { "America/Yakutat" , 0x03C81B },
+ { "America/Yellowknife" , 0x03D154 },
+ { "Antarctica/Casey" , 0x03D949 },
+ { "Antarctica/Davis" , 0x03DA84 },
+ { "Antarctica/DumontDUrville" , 0x03DBCF },
+ { "Antarctica/Macquarie" , 0x03DCE3 },
+ { "Antarctica/Mawson" , 0x03E2F9 },
+ { "Antarctica/McMurdo" , 0x03E3EA },
+ { "Antarctica/Palmer" , 0x03EDBF },
+ { "Antarctica/Rothera" , 0x03F370 },
+ { "Antarctica/South_Pole" , 0x03F449 },
+ { "Antarctica/Syowa" , 0x03FDF1 },
+ { "Antarctica/Troll" , 0x03FEC3 },
+ { "Antarctica/Vostok" , 0x040376 },
+ { "Arctic/Longyearbyen" , 0x04044B },
+ { "Asia/Aden" , 0x040D22 },
+ { "Asia/Almaty" , 0x040DD9 },
+ { "Asia/Amman" , 0x04119B },
+ { "Asia/Anadyr" , 0x0418FC },
+ { "Asia/Aqtau" , 0x041DE8 },
+ { "Asia/Aqtobe" , 0x04229B },
+ { "Asia/Ashgabat" , 0x0426D2 },
+ { "Asia/Ashkhabad" , 0x04297D },
+ { "Asia/Baghdad" , 0x042C28 },
+ { "Asia/Bahrain" , 0x043010 },
+ { "Asia/Baku" , 0x0430ED },
+ { "Asia/Bangkok" , 0x04389D },
+ { "Asia/Beirut" , 0x043975 },
+ { "Asia/Bishkek" , 0x044200 },
+ { "Asia/Brunei" , 0x044631 },
+ { "Asia/Calcutta" , 0x044706 },
+ { "Asia/Chita" , 0x044835 },
+ { "Asia/Choibalsan" , 0x044D49 },
+ { "Asia/Chongqing" , 0x045398 },
+ { "Asia/Chungking" , 0x045542 },
+ { "Asia/Colombo" , 0x0456EC },
+ { "Asia/Dacca" , 0x04587D },
+ { "Asia/Damascus" , 0x045A0F },
+ { "Asia/Dhaka" , 0x04632B },
+ { "Asia/Dili" , 0x0464BD },
+ { "Asia/Dubai" , 0x0465FE },
+ { "Asia/Dushanbe" , 0x0466B5 },
+ { "Asia/Gaza" , 0x046924 },
+ { "Asia/Harbin" , 0x047244 },
+ { "Asia/Hebron" , 0x0473EE },
+ { "Asia/Ho_Chi_Minh" , 0x047D29 },
+ { "Asia/Hong_Kong" , 0x047EAA },
+ { "Asia/Hovd" , 0x04835B },
+ { "Asia/Irkutsk" , 0x04897B },
+ { "Asia/Istanbul" , 0x048E89 },
+ { "Asia/Jakarta" , 0x049950 },
+ { "Asia/Jayapura" , 0x049ADC },
+ { "Asia/Jerusalem" , 0x049C0A },
+ { "Asia/Kabul" , 0x04A4EF },
+ { "Asia/Kamchatka" , 0x04A5C2 },
+ { "Asia/Karachi" , 0x04AA9D },
+ { "Asia/Kashgar" , 0x04AC3C },
+ { "Asia/Kathmandu" , 0x04ACF3 },
+ { "Asia/Katmandu" , 0x04ADD3 },
+ { "Asia/Khandyga" , 0x04AEB3 },
+ { "Asia/Kolkata" , 0x04B40C },
+ { "Asia/Krasnoyarsk" , 0x04B53B },
+ { "Asia/Kuala_Lumpur" , 0x04BA2A },
+ { "Asia/Kuching" , 0x04BBD7 },
+ { "Asia/Kuwait" , 0x04BDF9 },
+ { "Asia/Macao" , 0x04BEB0 },
+ { "Asia/Macau" , 0x04C1D7 },
+ { "Asia/Magadan" , 0x04C4FE },
+ { "Asia/Makassar" , 0x04CA05 },
+ { "Asia/Manila" , 0x04CB71 },
+ { "Asia/Muscat" , 0x04CCE6 },
+ { "Asia/Nicosia" , 0x04CD9D },
+ { "Asia/Novokuznetsk" , 0x04D589 },
+ { "Asia/Novosibirsk" , 0x04DAA6 },
+ { "Asia/Omsk" , 0x04DF81 },
+ { "Asia/Oral" , 0x04E46F },
+ { "Asia/Phnom_Penh" , 0x04E8D6 },
+ { "Asia/Pontianak" , 0x04E9AE },
+ { "Asia/Pyongyang" , 0x04EB46 },
+ { "Asia/Qatar" , 0x04EC69 },
+ { "Asia/Qyzylorda" , 0x04ED46 },
+ { "Asia/Rangoon" , 0x04F1AC },
+ { "Asia/Riyadh" , 0x04F2D5 },
+ { "Asia/Saigon" , 0x04F38C },
+ { "Asia/Sakhalin" , 0x04F50D },
+ { "Asia/Samarkand" , 0x04F9FF },
+ { "Asia/Seoul" , 0x04FCCD },
+ { "Asia/Shanghai" , 0x04FF14 },
+ { "Asia/Singapore" , 0x0500CA },
+ { "Asia/Srednekolymsk" , 0x050282 },
+ { "Asia/Taipei" , 0x050782 },
+ { "Asia/Tashkent" , 0x050AAE },
+ { "Asia/Tbilisi" , 0x050D72 },
+ { "Asia/Tehran" , 0x0511F4 },
+ { "Asia/Tel_Aviv" , 0x05187D },
+ { "Asia/Thimbu" , 0x052162 },
+ { "Asia/Thimphu" , 0x05223F },
+ { "Asia/Tokyo" , 0x05231C },
+ { "Asia/Ujung_Pandang" , 0x05248B },
+ { "Asia/Ulaanbaatar" , 0x0525AF },
+ { "Asia/Ulan_Bator" , 0x052BB2 },
+ { "Asia/Urumqi" , 0x0531A7 },
+ { "Asia/Ust-Nera" , 0x05326B },
+ { "Asia/Vientiane" , 0x05379B },
+ { "Asia/Vladivostok" , 0x053873 },
+ { "Asia/Yakutsk" , 0x053D60 },
+ { "Asia/Yekaterinburg" , 0x05424C },
+ { "Asia/Yerevan" , 0x05479F },
+ { "Atlantic/Azores" , 0x054CA8 },
+ { "Atlantic/Bermuda" , 0x055A5A },
+ { "Atlantic/Canary" , 0x05623A },
+ { "Atlantic/Cape_Verde" , 0x0569CD },
+ { "Atlantic/Faeroe" , 0x056AD7 },
+ { "Atlantic/Faroe" , 0x057208 },
+ { "Atlantic/Jan_Mayen" , 0x057939 },
+ { "Atlantic/Madeira" , 0x058210 },
+ { "Atlantic/Reykjavik" , 0x058FC1 },
+ { "Atlantic/South_Georgia" , 0x059473 },
+ { "Atlantic/St_Helena" , 0x0599FD },
+ { "Atlantic/Stanley" , 0x059513 },
+ { "Australia/ACT" , 0x059AB3 },
+ { "Australia/Adelaide" , 0x05A36E },
+ { "Australia/Brisbane" , 0x05AC47 },
+ { "Australia/Broken_Hill" , 0x05AE32 },
+ { "Australia/Canberra" , 0x05B73C },
+ { "Australia/Currie" , 0x05BFF7 },
+ { "Australia/Darwin" , 0x05C8C8 },
+ { "Australia/Eucla" , 0x05CA29 },
+ { "Australia/Hobart" , 0x05CC3A },
+ { "Australia/LHI" , 0x05D57E },
+ { "Australia/Lindeman" , 0x05DCCD },
+ { "Australia/Lord_Howe" , 0x05DEFF },
+ { "Australia/Melbourne" , 0x05E65E },
+ { "Australia/North" , 0x05EF21 },
+ { "Australia/NSW" , 0x05F070 },
+ { "Australia/Perth" , 0x05F92B },
+ { "Australia/Queensland" , 0x05FB38 },
+ { "Australia/South" , 0x05FD08 },
+ { "Australia/Sydney" , 0x0605D2 },
+ { "Australia/Tasmania" , 0x060EAD },
+ { "Australia/Victoria" , 0x0617D8 },
+ { "Australia/West" , 0x062093 },
+ { "Australia/Yancowinna" , 0x06227E },
+ { "Brazil/Acre" , 0x062B6C },
+ { "Brazil/DeNoronha" , 0x062E08 },
+ { "Brazil/East" , 0x0630EC },
+ { "Brazil/West" , 0x0638D7 },
+ { "Canada/Atlantic" , 0x063B4B },
+ { "Canada/Central" , 0x0648C5 },
+ { "Canada/East-Saskatchewan" , 0x0661D7 },
+ { "Canada/Eastern" , 0x06541C },
+ { "Canada/Mountain" , 0x0665C5 },
+ { "Canada/Newfoundland" , 0x066F33 },
+ { "Canada/Pacific" , 0x067D8F },
+ { "Canada/Saskatchewan" , 0x0688F0 },
+ { "Canada/Yukon" , 0x068CDE },
+ { "CET" , 0x069517 },
+ { "Chile/Continental" , 0x069D59 },
+ { "Chile/EasterIsland" , 0x06A4D6 },
+ { "CST6CDT" , 0x06AB30 },
+ { "Cuba" , 0x06B432 },
+ { "EET" , 0x06BDC3 },
+ { "Egypt" , 0x06C523 },
+ { "Eire" , 0x06CCE3 },
+ { "EST" , 0x06DAD6 },
+ { "EST5EDT" , 0x06DB61 },
+ { "Etc/GMT" , 0x06E463 },
+ { "Etc/GMT+0" , 0x06E604 },
+ { "Etc/GMT+1" , 0x06E723 },
+ { "Etc/GMT+10" , 0x06E84E },
+ { "Etc/GMT+11" , 0x06E97D },
+ { "Etc/GMT+12" , 0x06EAAC },
+ { "Etc/GMT+2" , 0x06ED07 },
+ { "Etc/GMT+3" , 0x06EE2E },
+ { "Etc/GMT+4" , 0x06EF55 },
+ { "Etc/GMT+5" , 0x06F07C },
+ { "Etc/GMT+6" , 0x06F1A3 },
+ { "Etc/GMT+7" , 0x06F2CA },
+ { "Etc/GMT+8" , 0x06F3F1 },
+ { "Etc/GMT+9" , 0x06F518 },
+ { "Etc/GMT-0" , 0x06E579 },
+ { "Etc/GMT-1" , 0x06E68F },
+ { "Etc/GMT-10" , 0x06E7B6 },
+ { "Etc/GMT-11" , 0x06E8E5 },
+ { "Etc/GMT-12" , 0x06EA14 },
+ { "Etc/GMT-13" , 0x06EB43 },
+ { "Etc/GMT-14" , 0x06EBDB },
+ { "Etc/GMT-2" , 0x06EC73 },
+ { "Etc/GMT-3" , 0x06ED9A },
+ { "Etc/GMT-4" , 0x06EEC1 },
+ { "Etc/GMT-5" , 0x06EFE8 },
+ { "Etc/GMT-6" , 0x06F10F },
+ { "Etc/GMT-7" , 0x06F236 },
+ { "Etc/GMT-8" , 0x06F35D },
+ { "Etc/GMT-9" , 0x06F484 },
+ { "Etc/GMT0" , 0x06E4EE },
+ { "Etc/Greenwich" , 0x06F5AB },
+ { "Etc/UCT" , 0x06F636 },
+ { "Etc/Universal" , 0x06F6C1 },
+ { "Etc/UTC" , 0x06F74C },
+ { "Etc/Zulu" , 0x06F7D7 },
+ { "Europe/Amsterdam" , 0x06F862 },
+ { "Europe/Andorra" , 0x0703ED },
+ { "Europe/Athens" , 0x070AD0 },
+ { "Europe/Belfast" , 0x0713BB },
+ { "Europe/Belgrade" , 0x07222E },
+ { "Europe/Berlin" , 0x0729DF },
+ { "Europe/Bratislava" , 0x073318 },
+ { "Europe/Brussels" , 0x073C04 },
+ { "Europe/Bucharest" , 0x0747AA },
+ { "Europe/Budapest" , 0x075063 },
+ { "Europe/Busingen" , 0x0759D4 },
+ { "Europe/Chisinau" , 0x076166 },
+ { "Europe/Copenhagen" , 0x076AF3 },
+ { "Europe/Dublin" , 0x07736F },
+ { "Europe/Gibraltar" , 0x078162 },
+ { "Europe/Guernsey" , 0x078D63 },
+ { "Europe/Helsinki" , 0x079BD6 },
+ { "Europe/Isle_of_Man" , 0x07A357 },
+ { "Europe/Istanbul" , 0x07B1CA },
+ { "Europe/Jersey" , 0x07BC91 },
+ { "Europe/Kaliningrad" , 0x07CB04 },
+ { "Europe/Kiev" , 0x07D135 },
+ { "Europe/Lisbon" , 0x07D980 },
+ { "Europe/Ljubljana" , 0x07E711 },
+ { "Europe/London" , 0x07EEC2 },
+ { "Europe/Luxembourg" , 0x07FD35 },
+ { "Europe/Madrid" , 0x0808DF },
+ { "Europe/Malta" , 0x08132E },
+ { "Europe/Mariehamn" , 0x081D7F },
+ { "Europe/Minsk" , 0x082500 },
+ { "Europe/Monaco" , 0x082A64 },
+ { "Europe/Moscow" , 0x0835F9 },
+ { "Europe/Nicosia" , 0x083C14 },
+ { "Europe/Oslo" , 0x084400 },
+ { "Europe/Paris" , 0x084CD7 },
+ { "Europe/Podgorica" , 0x08587E },
+ { "Europe/Prague" , 0x08602F },
+ { "Europe/Riga" , 0x08691B },
+ { "Europe/Rome" , 0x0871E2 },
+ { "Europe/Samara" , 0x087C64 },
+ { "Europe/San_Marino" , 0x08821B },
+ { "Europe/Sarajevo" , 0x088C9D },
+ { "Europe/Simferopol" , 0x08944E },
+ { "Europe/Skopje" , 0x089A4C },
+ { "Europe/Sofia" , 0x08A1FD },
+ { "Europe/Stockholm" , 0x08AA5B },
+ { "Europe/Tallinn" , 0x08B1E5 },
+ { "Europe/Tirane" , 0x08BA8A },
+ { "Europe/Tiraspol" , 0x08C2C8 },
+ { "Europe/Uzhgorod" , 0x08CC55 },
+ { "Europe/Vaduz" , 0x08D4A0 },
+ { "Europe/Vatican" , 0x08DC2A },
+ { "Europe/Vienna" , 0x08E6AC },
+ { "Europe/Vilnius" , 0x08EF75 },
+ { "Europe/Volgograd" , 0x08F818 },
+ { "Europe/Warsaw" , 0x08FD68 },
+ { "Europe/Zagreb" , 0x090805 },
+ { "Europe/Zaporozhye" , 0x090FB6 },
+ { "Europe/Zurich" , 0x09182F },
+ { "Factory" , 0x091FB9 },
+ { "GB" , 0x0920CD },
+ { "GB-Eire" , 0x092F40 },
+ { "GMT" , 0x093DB3 },
+ { "GMT+0" , 0x093F54 },
+ { "GMT-0" , 0x093EC9 },
+ { "GMT0" , 0x093E3E },
+ { "Greenwich" , 0x093FDF },
+ { "Hongkong" , 0x09406A },
+ { "HST" , 0x09451B },
+ { "Iceland" , 0x0945A7 },
+ { "Indian/Antananarivo" , 0x094A59 },
+ { "Indian/Chagos" , 0x094B80 },
+ { "Indian/Christmas" , 0x094C55 },
+ { "Indian/Cocos" , 0x094CF6 },
+ { "Indian/Comoro" , 0x094D9A },
+ { "Indian/Kerguelen" , 0x094EC1 },
+ { "Indian/Mahe" , 0x094F78 },
+ { "Indian/Maldives" , 0x09502F },
+ { "Indian/Mauritius" , 0x095107 },
+ { "Indian/Mayotte" , 0x095210 },
+ { "Indian/Reunion" , 0x095337 },
+ { "Iran" , 0x0953EE },
+ { "Israel" , 0x095A77 },
+ { "Jamaica" , 0x09635C },
+ { "Japan" , 0x096563 },
+ { "Kwajalein" , 0x0966D2 },
+ { "Libya" , 0x0967CB },
+ { "MET" , 0x096A66 },
+ { "Mexico/BajaNorte" , 0x0972A8 },
+ { "Mexico/BajaSur" , 0x097BE8 },
+ { "Mexico/General" , 0x098210 },
+ { "MST" , 0x09886E },
+ { "MST7MDT" , 0x0988F9 },
+ { "Navajo" , 0x0991FB },
+ { "NZ" , 0x099B9C },
+ { "NZ-CHAT" , 0x09A544 },
+ { "Pacific/Apia" , 0x09AD59 },
+ { "Pacific/Auckland" , 0x09B1B3 },
+ { "Pacific/Bougainville" , 0x09BB69 },
+ { "Pacific/Chatham" , 0x09BC99 },
+ { "Pacific/Chuuk" , 0x09C4BD },
+ { "Pacific/Easter" , 0x09C576 },
+ { "Pacific/Efate" , 0x09CBDD },
+ { "Pacific/Enderbury" , 0x09CDC7 },
+ { "Pacific/Fakaofo" , 0x09CEC8 },
+ { "Pacific/Fiji" , 0x09CF99 },
+ { "Pacific/Funafuti" , 0x09D3D7 },
+ { "Pacific/Galapagos" , 0x09D479 },
+ { "Pacific/Gambier" , 0x09D569 },
+ { "Pacific/Guadalcanal" , 0x09D631 },
+ { "Pacific/Guam" , 0x09D6E9 },
+ { "Pacific/Honolulu" , 0x09D7D6 },
+ { "Pacific/Johnston" , 0x09D8FC },
+ { "Pacific/Kiritimati" , 0x09DA2A },
+ { "Pacific/Kosrae" , 0x09DB28 },
+ { "Pacific/Kwajalein" , 0x09DC20 },
+ { "Pacific/Majuro" , 0x09DD22 },
+ { "Pacific/Marquesas" , 0x09DE01 },
+ { "Pacific/Midway" , 0x09DECE },
+ { "Pacific/Nauru" , 0x09DFF8 },
+ { "Pacific/Niue" , 0x09E102 },
+ { "Pacific/Norfolk" , 0x09E1F0 },
+ { "Pacific/Noumea" , 0x09E2CC },
+ { "Pacific/Pago_Pago" , 0x09E412 },
+ { "Pacific/Palau" , 0x09E52E },
+ { "Pacific/Pitcairn" , 0x09E5CF },
+ { "Pacific/Pohnpei" , 0x09E6A6 },
+ { "Pacific/Ponape" , 0x09E75B },
+ { "Pacific/Port_Moresby" , 0x09E800 },
+ { "Pacific/Rarotonga" , 0x09E8C6 },
+ { "Pacific/Saipan" , 0x09EB10 },
+ { "Pacific/Samoa" , 0x09EBFD },
+ { "Pacific/Tahiti" , 0x09ED19 },
+ { "Pacific/Tarawa" , 0x09EDE2 },
+ { "Pacific/Tongatapu" , 0x09EE96 },
+ { "Pacific/Truk" , 0x09EFF5 },
+ { "Pacific/Wake" , 0x09F09A },
+ { "Pacific/Wallis" , 0x09F14A },
+ { "Pacific/Yap" , 0x09F1EC },
+ { "Poland" , 0x09F291 },
+ { "Portugal" , 0x09FD2E },
+ { "PRC" , 0x0A0AB7 },
+ { "PST8PDT" , 0x0A0C61 },
+ { "ROC" , 0x0A1563 },
+ { "ROK" , 0x0A188F },
+ { "Singapore" , 0x0A1AD6 },
+ { "Turkey" , 0x0A1C8E },
+ { "UCT" , 0x0A2755 },
+ { "Universal" , 0x0A27E0 },
+ { "US/Alaska" , 0x0A286B },
+ { "US/Aleutian" , 0x0A31C7 },
+ { "US/Arizona" , 0x0A3B10 },
+ { "US/Central" , 0x0A3C7D },
+ { "US/East-Indiana" , 0x0A586F },
+ { "US/Eastern" , 0x0A4A8A },
+ { "US/Hawaii" , 0x0A5F06 },
+ { "US/Indiana-Starke" , 0x0A6026 },
+ { "US/Michigan" , 0x0A69B7 },
+ { "US/Mountain" , 0x0A726B },
+ { "US/Pacific" , 0x0A7C0C },
+ { "US/Pacific-New" , 0x0A8735 },
+ { "US/Samoa" , 0x0A925E },
+ { "UTC" , 0x0A937A },
+ { "W-SU" , 0x0A9B62 },
+ { "WET" , 0x0A9405 },
+ { "Zulu" , 0x0AA166 },
};
/* This is a generated file, do not modify */
-const unsigned char timelib_timezone_db_data_builtin[696215] = {
+const unsigned char timelib_timezone_db_data_builtin[696817] = {
/* Africa/Abidjan */
@@ -1001,7 +1001,7 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = {
/* Africa/Casablanca */
0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00,
0x96, 0x51, 0xF9, 0x9C, 0xC6, 0xFF, 0x14, 0x80, 0xC7, 0x58, 0xAC, 0x70, 0xC7, 0xD9, 0xED, 0x80,
0xD2, 0xA1, 0x32, 0xF0, 0xDB, 0x35, 0xA4, 0x00, 0xDB, 0xEE, 0x27, 0xF0, 0xFB, 0x25, 0x72, 0x40,
0xFB, 0xC2, 0xEF, 0x70, 0x08, 0x6B, 0x84, 0x80, 0x08, 0xC6, 0x6D, 0xF0, 0x0B, 0xE8, 0x0C, 0x00,
@@ -1012,98 +1012,96 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = {
0x50, 0x08, 0xBB, 0xA0, 0x50, 0x31, 0x9A, 0x20, 0x50, 0x67, 0xA7, 0xA0, 0x51, 0x7C, 0x82, 0xA0,
0x51, 0xD8, 0xCB, 0xA0, 0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0, 0x53, 0x37, 0x7A, 0xA0,
0x53, 0xAE, 0x21, 0xA0, 0x53, 0xDC, 0x46, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0,
-0x55, 0x7B, 0x8E, 0xA0, 0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0,
-0x57, 0x52, 0x36, 0x20, 0x57, 0x80, 0x5A, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0,
-0x59, 0x1F, 0xA3, 0x20, 0x59, 0x57, 0x02, 0x20, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0,
-0x5A, 0xF6, 0x4A, 0xA0, 0x5B, 0x24, 0x6F, 0x20, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20,
-0x5C, 0xCC, 0xF2, 0x20, 0x5C, 0xFB, 0x16, 0xA0, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20,
-0x5E, 0x9A, 0x5F, 0x20, 0x5E, 0xD1, 0xBE, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20,
-0x60, 0x71, 0x06, 0xA0, 0x60, 0x9F, 0x2B, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20,
-0x62, 0x47, 0xAE, 0x20, 0x62, 0x75, 0xD2, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0,
-0x65, 0x3D, 0xBC, 0xA0, 0x66, 0x19, 0xE7, 0x20, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xF0, 0x8E, 0xA0,
-0x68, 0xFD, 0x80, 0xA0, 0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0,
-0x6C, 0xC6, 0x7F, 0x20, 0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0,
-0x70, 0x86, 0x43, 0x20, 0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20,
-0x74, 0x46, 0x07, 0x20, 0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20,
-0x78, 0x0F, 0x05, 0xA0, 0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20,
-0x7B, 0xCD, 0x78, 0x20, 0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA4, 0x1F, 0xA0, 0x7E, 0x79, 0xB2, 0xA0,
-0x7F, 0x7A, 0xC7, 0x20, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00,
-0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10,
-0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54,
-0x00, 0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xF8,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0x51, 0xF9, 0x9C, 0xFF,
-0xFF, 0xFF, 0xFF, 0xC6, 0xFF, 0x14, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xAC, 0x70, 0xFF,
-0xFF, 0xFF, 0xFF, 0xC7, 0xD9, 0xED, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xA1, 0x32, 0xF0, 0xFF,
-0xFF, 0xFF, 0xFF, 0xDB, 0x35, 0xA4, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xEE, 0x27, 0xF0, 0xFF,
-0xFF, 0xFF, 0xFF, 0xFB, 0x25, 0x72, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xC2, 0xEF, 0x70, 0x00,
-0x00, 0x00, 0x00, 0x08, 0x6B, 0x84, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0xC6, 0x6D, 0xF0, 0x00,
-0x00, 0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x00,
-0x00, 0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x8E, 0xF2, 0x70, 0x00,
-0x00, 0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0xA3, 0x70, 0x00,
-0x00, 0x00, 0x00, 0x1A, 0xB7, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x18, 0x6F, 0xF0, 0x00,
-0x00, 0x00, 0x00, 0x48, 0x41, 0xE6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x48, 0xBB, 0x22, 0x70, 0x00,
-0x00, 0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x00,
-0x00, 0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x5D, 0xE5, 0x70, 0x00,
-0x00, 0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x34, 0x8C, 0xF0, 0x00,
-0x00, 0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x08, 0xBB, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x50, 0x31, 0x9A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x50, 0x67, 0xA7, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0xD8, 0xCB, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x73, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xAE, 0x21, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x53, 0xDC, 0x46, 0x20, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x55, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x7B, 0x8E, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x55, 0xA9, 0xB3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x37, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x57, 0x52, 0x36, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x57, 0x80, 0x5A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x54, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x1F, 0xA3, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x59, 0x57, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x36, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xF6, 0x4A, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x5B, 0x24, 0x6F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x18, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x5C, 0xA0, 0x1F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xCC, 0xF2, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x5C, 0xFB, 0x16, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xFA, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x5E, 0x80, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x9A, 0x5F, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x5E, 0xD1, 0xBE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xDC, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x60, 0x5F, 0xE3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x71, 0x06, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x60, 0x9F, 0x2B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xF8, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x62, 0x3F, 0xC5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x62, 0x47, 0xAE, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x62, 0x75, 0xD2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xDA, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x64, 0x43, 0x3F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xBC, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x66, 0x19, 0xE7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x9E, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x67, 0xF0, 0x8E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x80, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x69, 0xC8, 0x87, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x62, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x6B, 0xA8, 0x69, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x7F, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x6D, 0x88, 0x4B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x61, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x6F, 0x68, 0x2D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x43, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x71, 0x51, 0x4A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x25, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x73, 0x31, 0x2C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x74, 0x46, 0x07, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x75, 0x11, 0x0E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x23, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x76, 0xF0, 0xF0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x05, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x78, 0xD0, 0xD2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xE7, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x7A, 0xB0, 0xB4, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCD, 0x78, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x7C, 0x99, 0xD0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xA4, 0x1F, 0xA0, 0x00,
-0x00, 0x00, 0x00, 0x7E, 0x79, 0xB2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7A, 0xC7, 0x20, 0x00,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x03, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01,
-0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00,
-0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x57,
-0x45, 0x54, 0x30, 0x57, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D,
-0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xBC, 0xAC, 0xC8, 0x01, 0x07, 0x16,
-0x42, 0x00, 0x00, 0x00, 0x00,
+0x55, 0x7C, 0xE0, 0x20, 0x55, 0xAB, 0x04, 0xA0, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0,
+0x57, 0x53, 0x87, 0xA0, 0x57, 0x81, 0xAC, 0x20, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0,
+0x59, 0x20, 0xF4, 0xA0, 0x59, 0x58, 0x53, 0xA0, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0,
+0x5A, 0xF7, 0x9C, 0x20, 0x5B, 0x25, 0xC0, 0xA0, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20,
+0x5C, 0xCE, 0x43, 0xA0, 0x5C, 0xFC, 0x68, 0x20, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20,
+0x5E, 0x9B, 0xB0, 0xA0, 0x5E, 0xC9, 0xD5, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20,
+0x60, 0x72, 0x58, 0x20, 0x60, 0xA0, 0x7C, 0xA0, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x77, 0x24, 0x20,
+0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x44, 0x91, 0x20, 0x65, 0x3D, 0xBC, 0xA0, 0x66, 0x1B, 0x38, 0xA0,
+0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xF1, 0xE0, 0x20, 0x68, 0xFD, 0x80, 0xA0, 0x69, 0xC8, 0x87, 0xA0,
+0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0, 0x6C, 0xC6, 0x7F, 0x20, 0x6D, 0x88, 0x4B, 0xA0,
+0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0, 0x70, 0x86, 0x43, 0x20, 0x71, 0x51, 0x4A, 0x20,
+0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20, 0x74, 0x46, 0x07, 0x20, 0x75, 0x11, 0x0E, 0x20,
+0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20, 0x78, 0x0F, 0x05, 0xA0, 0x78, 0xD0, 0xD2, 0x20,
+0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, 0x7B, 0xCE, 0xC9, 0xA0, 0x7C, 0x99, 0xD0, 0xA0,
+0x7D, 0xA5, 0x71, 0x20, 0x7E, 0x79, 0xB2, 0xA0, 0x7F, 0x72, 0xDE, 0x20, 0x00, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4C, 0x4D,
+0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00,
+0x05, 0x00, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+0xFF, 0x96, 0x51, 0xF9, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xFF, 0x14, 0x80, 0xFF, 0xFF, 0xFF,
+0xFF, 0xC7, 0x58, 0xAC, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xD9, 0xED, 0x80, 0xFF, 0xFF, 0xFF,
+0xFF, 0xD2, 0xA1, 0x32, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x35, 0xA4, 0x00, 0xFF, 0xFF, 0xFF,
+0xFF, 0xDB, 0xEE, 0x27, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x25, 0x72, 0x40, 0xFF, 0xFF, 0xFF,
+0xFF, 0xFB, 0xC2, 0xEF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x08, 0x6B, 0x84, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x08, 0xC6, 0x6D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x0C, 0x61, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x0E, 0x8E, 0xF2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x10, 0x27, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xB7, 0xA6, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x1E, 0x18, 0x6F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0xE6, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x48, 0xBB, 0x22, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x4C, 0x5D, 0xE5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x4E, 0x34, 0x8C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x50, 0x08, 0xBB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x31, 0x9A, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x50, 0x67, 0xA7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x51, 0xD8, 0xCB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x52, 0x6C, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x53, 0xAE, 0x21, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xDC, 0x46, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x54, 0x4C, 0x55, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x55, 0x7C, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x55, 0xAB, 0x04, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x56, 0x2C, 0x37, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x57, 0x53, 0x87, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x57, 0x81, 0xAC, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x58, 0x15, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x59, 0x20, 0xF4, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x58, 0x53, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x59, 0xF5, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x5A, 0xF7, 0x9C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x25, 0xC0, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x5B, 0xD5, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x1F, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x5C, 0xCE, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xFC, 0x68, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x5D, 0xB4, 0xFA, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x80, 0x01, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x5E, 0x9B, 0xB0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xC9, 0xD5, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x5F, 0x94, 0xDC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xE3, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x60, 0x72, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0xA0, 0x7C, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x61, 0x7D, 0xF8, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x77, 0x24, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x63, 0x5D, 0xDA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x64, 0x44, 0x91, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x65, 0x3D, 0xBC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x66, 0x1B, 0x38, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x67, 0x1D, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0xE0, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x68, 0xFD, 0x80, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x87, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x6A, 0xDD, 0x62, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x69, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x6C, 0xC6, 0x7F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x4B, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x6E, 0xA6, 0x61, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x2D, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x70, 0x86, 0x43, 0x20, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x4A, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x72, 0x66, 0x25, 0x20, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x2C, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x74, 0x46, 0x07, 0x20, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x0E, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x76, 0x2F, 0x23, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xF0, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x78, 0x0F, 0x05, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xD2, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x79, 0xEE, 0xE7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xB4, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x7B, 0xCE, 0xC9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xD0, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x7D, 0xA5, 0x71, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xB2, 0xA0, 0x00, 0x00, 0x00,
+0x00, 0x7F, 0x72, 0xDE, 0x20, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, 0x00,
+0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00,
+0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00,
+0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x0A, 0x57, 0x45, 0x54, 0x30, 0x57, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35,
+0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xBC, 0xAC,
+0xC8, 0x01, 0x07, 0x16, 0x42, 0x00, 0x00, 0x00, 0x00,
/* Africa/Ceuta */
0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1326,7 +1324,7 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = {
/* Africa/El_Aaiun */
0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00,
0xBC, 0x48, 0xF0, 0xE0, 0x0B, 0xD1, 0xB0, 0x90, 0x0B, 0xE8, 0x0C, 0x00, 0x0C, 0x61, 0x47, 0xF0,
0x0D, 0xC9, 0x3F, 0x80, 0x0E, 0x8E, 0xF2, 0x70, 0x0F, 0xD3, 0x51, 0x80, 0x10, 0x27, 0xA3, 0x70,
0x48, 0x41, 0xE6, 0x80, 0x48, 0xBB, 0x22, 0x70, 0x4A, 0x23, 0x1A, 0x00, 0x4A, 0x8D, 0xD5, 0x70,
@@ -1334,90 +1332,88 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = {
0x4F, 0x9C, 0xA0, 0xA0, 0x50, 0x08, 0xBB, 0xA0, 0x50, 0x31, 0x9A, 0x20, 0x50, 0x67, 0xA7, 0xA0,
0x51, 0x7C, 0x82, 0xA0, 0x51, 0xD8, 0xCB, 0xA0, 0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0,
0x53, 0x37, 0x7A, 0xA0, 0x53, 0xAE, 0x21, 0xA0, 0x53, 0xDC, 0x46, 0x20, 0x54, 0x4C, 0x55, 0xA0,
-0x55, 0x17, 0x5C, 0xA0, 0x55, 0x7B, 0x8E, 0xA0, 0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0,
-0x56, 0xF7, 0x3E, 0xA0, 0x57, 0x52, 0x36, 0x20, 0x57, 0x80, 0x5A, 0xA0, 0x58, 0x15, 0x54, 0x20,
-0x58, 0xD7, 0x20, 0xA0, 0x59, 0x1F, 0xA3, 0x20, 0x59, 0x57, 0x02, 0x20, 0x59, 0xF5, 0x36, 0x20,
-0x5A, 0xB7, 0x02, 0xA0, 0x5A, 0xF6, 0x4A, 0xA0, 0x5B, 0x24, 0x6F, 0x20, 0x5B, 0xD5, 0x18, 0x20,
-0x5C, 0xA0, 0x1F, 0x20, 0x5C, 0xCC, 0xF2, 0x20, 0x5C, 0xFB, 0x16, 0xA0, 0x5D, 0xB4, 0xFA, 0x20,
-0x5E, 0x80, 0x01, 0x20, 0x5E, 0x9A, 0x5F, 0x20, 0x5E, 0xD1, 0xBE, 0x20, 0x5F, 0x94, 0xDC, 0x20,
-0x60, 0x5F, 0xE3, 0x20, 0x60, 0x71, 0x06, 0xA0, 0x60, 0x9F, 0x2B, 0x20, 0x61, 0x7D, 0xF8, 0xA0,
-0x62, 0x3F, 0xC5, 0x20, 0x62, 0x47, 0xAE, 0x20, 0x62, 0x75, 0xD2, 0xA0, 0x63, 0x5D, 0xDA, 0xA0,
-0x64, 0x43, 0x3F, 0xA0, 0x65, 0x3D, 0xBC, 0xA0, 0x66, 0x19, 0xE7, 0x20, 0x67, 0x1D, 0x9E, 0xA0,
-0x67, 0xF0, 0x8E, 0xA0, 0x68, 0xFD, 0x80, 0xA0, 0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0,
-0x6B, 0xA8, 0x69, 0xA0, 0x6C, 0xC6, 0x7F, 0x20, 0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20,
-0x6F, 0x68, 0x2D, 0xA0, 0x70, 0x86, 0x43, 0x20, 0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20,
-0x73, 0x31, 0x2C, 0x20, 0x74, 0x46, 0x07, 0x20, 0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0,
-0x76, 0xF0, 0xF0, 0x20, 0x78, 0x0F, 0x05, 0xA0, 0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0,
-0x7A, 0xB0, 0xB4, 0x20, 0x7B, 0xCD, 0x78, 0x20, 0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA4, 0x1F, 0xA0,
-0x7E, 0x79, 0xB2, 0xA0, 0x7F, 0x7A, 0xC7, 0x20, 0x00, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00,
-0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x57,
-0x41, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11,
-0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x48, 0xF0, 0xE0,
-0x00, 0x00, 0x00, 0x00, 0x0B, 0xD1, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80,
-0x00, 0x00, 0x00, 0x00, 0x0E, 0x8E, 0xF2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80,
-0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0xE6, 0x80,
-0x00, 0x00, 0x00, 0x00, 0x48, 0xBB, 0x22, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80,
-0x00, 0x00, 0x00, 0x00, 0x4C, 0x5D, 0xE5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80,
-0x00, 0x00, 0x00, 0x00, 0x4E, 0x34, 0x8C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x50, 0x08, 0xBB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x31, 0x9A, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x50, 0x67, 0xA7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x51, 0xD8, 0xCB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x53, 0xAE, 0x21, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xDC, 0x46, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x55, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x55, 0x7B, 0x8E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0xA9, 0xB3, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x37, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x57, 0x52, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x57, 0x80, 0x5A, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x59, 0x1F, 0xA3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0x57, 0x02, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x5A, 0xF6, 0x4A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x24, 0x6F, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x1F, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x5C, 0xCC, 0xF2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xFB, 0x16, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xFA, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x80, 0x01, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x5E, 0x9A, 0x5F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xD1, 0xBE, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xDC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xE3, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x60, 0x71, 0x06, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x9F, 0x2B, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xF8, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xC5, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x62, 0x47, 0xAE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x62, 0x75, 0xD2, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xDA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x64, 0x43, 0x3F, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xBC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x66, 0x19, 0xE7, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF0, 0x8E, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x80, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x87, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x62, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x69, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x7F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x4B, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x61, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x2D, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x43, 0x20, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x4A, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x25, 0x20, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x2C, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x74, 0x46, 0x07, 0x20, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x0E, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x23, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xF0, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x05, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xD2, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xE7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xB4, 0x20,
-0x00, 0x00, 0x00, 0x00, 0x7B, 0xCD, 0x78, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xD0, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x7D, 0xA4, 0x1F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xB2, 0xA0,
-0x00, 0x00, 0x00, 0x00, 0x7F, 0x7A, 0xC7, 0x20, 0x00, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00,
-0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x57,
-0x41, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x0A, 0x57, 0x45, 0x54, 0x30, 0x57, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33,
-0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00,
-0xB2, 0xC1, 0xB8, 0x00, 0xFE, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00,
+0x55, 0x17, 0x5C, 0xA0, 0x55, 0x7C, 0xE0, 0x20, 0x55, 0xAB, 0x04, 0xA0, 0x56, 0x2C, 0x37, 0xA0,
+0x56, 0xF7, 0x3E, 0xA0, 0x57, 0x53, 0x87, 0xA0, 0x57, 0x81, 0xAC, 0x20, 0x58, 0x15, 0x54, 0x20,
+0x58, 0xD7, 0x20, 0xA0, 0x59, 0x20, 0xF4, 0xA0, 0x59, 0x58, 0x53, 0xA0, 0x59, 0xF5, 0x36, 0x20,
+0x5A, 0xB7, 0x02, 0xA0, 0x5A, 0xF7, 0x9C, 0x20, 0x5B, 0x25, 0xC0, 0xA0, 0x5B, 0xD5, 0x18, 0x20,
+0x5C, 0xA0, 0x1F, 0x20, 0x5C, 0xCE, 0x43, 0xA0, 0x5C, 0xFC, 0x68, 0x20, 0x5D, 0xB4, 0xFA, 0x20,
+0x5E, 0x80, 0x01, 0x20, 0x5E, 0x9B, 0xB0, 0xA0, 0x5E, 0xC9, 0xD5, 0x20, 0x5F, 0x94, 0xDC, 0x20,
+0x60, 0x5F, 0xE3, 0x20, 0x60, 0x72, 0x58, 0x20, 0x60, 0xA0, 0x7C, 0xA0, 0x61, 0x7D, 0xF8, 0xA0,
+0x62, 0x77, 0x24, 0x20, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x44, 0x91, 0x20, 0x65, 0x3D, 0xBC, 0xA0,
+0x66, 0x1B, 0x38, 0xA0, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xF1, 0xE0, 0x20, 0x68, 0xFD, 0x80, 0xA0,
+0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0, 0x6C, 0xC6, 0x7F, 0x20,
+0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0, 0x70, 0x86, 0x43, 0x20,
+0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20, 0x74, 0x46, 0x07, 0x20,
+0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20, 0x78, 0x0F, 0x05, 0xA0,
+0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, 0x7B, 0xCE, 0xC9, 0xA0,
+0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA5, 0x71, 0x20, 0x7E, 0x79, 0xB2, 0xA0, 0x7F, 0x72, 0xDE, 0x20,
+0x00, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF,
+0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45,
+0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00,
+0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+0xFF, 0xFF, 0xBC, 0x48, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xD1, 0xB0, 0x90, 0x00, 0x00,
+0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x8E, 0xF2, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0xA3, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x48, 0x41, 0xE6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x48, 0xBB, 0x22, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x5D, 0xE5, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x34, 0x8C, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x08, 0xBB, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x50, 0x31, 0x9A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x50, 0x67, 0xA7, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0xD8, 0xCB, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x73, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xAE, 0x21, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x53, 0xDC, 0x46, 0x20, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x55, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x7C, 0xE0, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x55, 0xAB, 0x04, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x37, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x57, 0x53, 0x87, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x57, 0x81, 0xAC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x54, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0xF4, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x59, 0x58, 0x53, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x36, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xF7, 0x9C, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x5B, 0x25, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x18, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x5C, 0xA0, 0x1F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xCE, 0x43, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x5C, 0xFC, 0x68, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xFA, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x5E, 0x80, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x9B, 0xB0, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x5E, 0xC9, 0xD5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xDC, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x60, 0x5F, 0xE3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x72, 0x58, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x60, 0xA0, 0x7C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xF8, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x62, 0x77, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xDA, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x64, 0x44, 0x91, 0x20, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xBC, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x66, 0x1B, 0x38, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x9E, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x67, 0xF1, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x80, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x69, 0xC8, 0x87, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x62, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x6B, 0xA8, 0x69, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x7F, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x6D, 0x88, 0x4B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x61, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x6F, 0x68, 0x2D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x43, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x71, 0x51, 0x4A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x25, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x73, 0x31, 0x2C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x74, 0x46, 0x07, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x75, 0x11, 0x0E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x23, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x76, 0xF0, 0xF0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x05, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x78, 0xD0, 0xD2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xE7, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x7A, 0xB0, 0xB4, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xC9, 0xA0, 0x00, 0x00,
+0x00, 0x00, 0x7C, 0x99, 0xD0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xA5, 0x71, 0x20, 0x00, 0x00,
+0x00, 0x00, 0x7E, 0x79, 0xB2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x72, 0xDE, 0x20, 0x00, 0x01,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1,
+0xF0, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x4C,
+0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x57, 0x45, 0x54, 0x30, 0x57, 0x45, 0x53,
+0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30,
+0x2F, 0x33, 0x0A, 0x00, 0xB2, 0xC1, 0xB8, 0x00, 0xFE, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00,
/* Africa/Freetown */
0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -4886,19 +4882,60 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = {
/* America/Cayman */
0x50, 0x48, 0x50, 0x32, 0x01, 0x4B, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00,
-0x8B, 0xF4, 0x61, 0xE8, 0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18,
-0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00,
-0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
-0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
-0xFF, 0xFF, 0x69, 0x87, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xF4, 0x61, 0xE8, 0x00, 0x01,
-0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, 0x00, 0x04, 0xFF, 0xFF, 0xB9,
-0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0xA6, 0xC7, 0x50, 0x00,
-0x96, 0x7A, 0x22, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00,
+0x93, 0x0F, 0xB4, 0xFF, 0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0,
+0x59, 0xFE, 0xA8, 0xE0, 0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0,
+0x5D, 0xBE, 0x6C, 0xE0, 0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70,
+0x61, 0x87, 0x6B, 0x60, 0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70,
+0x65, 0x47, 0x2F, 0x60, 0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70,
+0x69, 0x06, 0xF3, 0x60, 0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0,
+0x6C, 0xCF, 0xF1, 0xE0, 0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0,
+0x70, 0x8F, 0xB5, 0xE0, 0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0,
+0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70,
+0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70,
+0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70,
+0x7F, 0x98, 0x00, 0x60, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0xFF, 0xFF, 0xB3, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x01, 0x00, 0x04, 0xFF, 0xFF,
+0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D,
+0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xF8, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x27, 0xCC, 0xFF, 0xFF,
+0xFF, 0xFF, 0x93, 0x0F, 0xB4, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x0F, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x58, 0x1E, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC4, 0xF1, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x59, 0xFE, 0xA8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xD3, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x5B, 0xDE, 0x8A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xB5, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x5D, 0xBE, 0x6C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0x97, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x5F, 0x9E, 0x4E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xB4, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x61, 0x87, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0x96, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x63, 0x67, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x78, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x65, 0x47, 0x2F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x5A, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x67, 0x27, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x3C, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x69, 0x06, 0xF3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x1E, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x6A, 0xE6, 0xD5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x3A, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x6C, 0xCF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x1C, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x6E, 0xAF, 0xD3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x55, 0xFE, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x70, 0x8F, 0xB5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xE0, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x72, 0x6F, 0x97, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xC2, 0xF0, 0x00, 0x00,
+0x00, 0x00, 0x74, 0x4F, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xDF, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x76, 0x38, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xC1, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x78, 0x18, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xA3, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x79, 0xF8, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x85, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x7B, 0xD8, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x7D, 0xB8, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x49, 0x70, 0x00, 0x00,
+0x00, 0x00, 0x7F, 0x98, 0x00, 0x60, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0xFF, 0xFF, 0xB3, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x01, 0x00,
+0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x4C, 0x4D, 0x54,
+0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33,
+0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xA6, 0xC7,
+0x50, 0x00, 0x96, 0x7A, 0x22, 0x00, 0x00, 0x00, 0x00,
/* America/Chicago */
0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -45591,4 +45628,4 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = {
0x00, 0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x0A, 0x55, 0x54, 0x43, 0x30, 0x0A, 0x00,
0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,};
-const timelib_tzdb timezonedb_builtin = { "2015.4", 583, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
+const timelib_tzdb timezonedb_builtin = { "2015.5", 583, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
diff --git a/ext/dom/document.c b/ext/dom/document.c
index 8b62e92a19..d82ca92096 100644
--- a/ext/dom/document.c
+++ b/ext/dom/document.c
@@ -1761,7 +1761,7 @@ PHP_FUNCTION(dom_document_save)
char *file;
long options = 0;
- if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", &id, dom_document_class_entry, &file, &file_len, &options) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op|l", &id, dom_document_class_entry, &file, &file_len, &options) == FAILURE) {
return;
}
@@ -1991,7 +1991,7 @@ static void _dom_document_schema_validate(INTERNAL_FUNCTION_PARAMETERS, int type
int is_valid;
char resolved_path[MAXPATHLEN + 1];
- if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op|l", &id, dom_document_class_entry, &source, &source_len, &flags) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", &id, dom_document_class_entry, &source, &source_len, &flags) == FAILURE) {
return;
}
@@ -2004,6 +2004,10 @@ static void _dom_document_schema_validate(INTERNAL_FUNCTION_PARAMETERS, int type
switch (type) {
case DOM_LOAD_FILE:
+ if (CHECK_NULL_PATH(source, source_len)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Schema file source");
+ RETURN_FALSE;
+ }
valid_file = _dom_get_valid_file_path(source, resolved_path, MAXPATHLEN TSRMLS_CC);
if (!valid_file) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Schema file source");
@@ -2087,7 +2091,7 @@ static void _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAMETERS, int typ
int is_valid;
char resolved_path[MAXPATHLEN + 1];
- if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op", &id, dom_document_class_entry, &source, &source_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_document_class_entry, &source, &source_len) == FAILURE) {
return;
}
@@ -2100,6 +2104,10 @@ static void _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAMETERS, int typ
switch (type) {
case DOM_LOAD_FILE:
+ if (CHECK_NULL_PATH(source, source_len)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid RelaxNG file source");
+ RETURN_FALSE;
+ }
valid_file = _dom_get_valid_file_path(source, resolved_path, MAXPATHLEN TSRMLS_CC);
if (!valid_file) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid RelaxNG file source");
@@ -2180,7 +2188,7 @@ static void dom_load_html(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ */
id = getThis();
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|l", &source, &source_len, &options) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &source, &source_len, &options) == FAILURE) {
return;
}
@@ -2190,6 +2198,10 @@ static void dom_load_html(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ */
}
if (mode == DOM_LOAD_FILE) {
+ if (CHECK_NULL_PATH(source, source_len)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid file source");
+ RETURN_FALSE;
+ }
ctxt = htmlCreateFileParserCtxt(source, NULL);
} else {
source_len = xmlStrlen(source);
@@ -2278,7 +2290,7 @@ PHP_FUNCTION(dom_document_save_html_file)
char *file;
const char *encoding;
- if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_document_class_entry, &file, &file_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op", &id, dom_document_class_entry, &file, &file_len) == FAILURE) {
return;
}
diff --git a/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt b/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt
index 75004e2a74..e0d0923642 100644
--- a/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt
+++ b/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt
@@ -15,9 +15,9 @@ $result = $doc->loadHTMLFile("");
assert('$result === false');
$doc = new DOMDocument();
$result = $doc->loadHTMLFile("text.html\0something");
-assert('$result === null');
+assert('$result === false');
?>
--EXPECTF--
%r(PHP ){0,1}%rWarning: DOMDocument::loadHTMLFile(): Empty string supplied as input %s
-%r(PHP ){0,1}%rWarning: DOMDocument::loadHTMLFile() expects parameter 1 to be a valid path, string given %s
+%r(PHP ){0,1}%rWarning: DOMDocument::loadHTMLFile(): Invalid file source %s
diff --git a/ext/gd/gd.c b/ext/gd/gd.c
index 322325e47b..405229e4ee 100644
--- a/ext/gd/gd.c
+++ b/ext/gd/gd.c
@@ -1735,7 +1735,7 @@ PHP_FUNCTION(imagefilledarc)
long cx, cy, w, h, ST, E, col, style;
gdImagePtr im;
int e, st;
-
+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllllllll", &IM, &cx, &cy, &w, &h, &ST, &E, &col, &style) == FAILURE) {
return;
}
@@ -1976,7 +1976,7 @@ PHP_FUNCTION(imagegrabwindow)
if ( handle == 0 ) {
goto clean;
}
- pPrintWindow = (tPrintWindow) GetProcAddress(handle, "PrintWindow");
+ pPrintWindow = (tPrintWindow) GetProcAddress(handle, "PrintWindow");
if ( pPrintWindow ) {
pPrintWindow(window, memDC, (UINT) client_area);
@@ -3045,10 +3045,11 @@ PHP_FUNCTION(imagegammacorrect)
for (x = 0; x < gdImageSX(im); x++) {
c = gdImageGetPixel(im, x, y);
gdImageSetPixel(im, x, y,
- gdTrueColor(
+ gdTrueColorAlpha(
(int) ((pow((pow((gdTrueColorGetRed(c) / 255.0), input)), 1.0 / output) * 255) + .5),
(int) ((pow((pow((gdTrueColorGetGreen(c) / 255.0), input)), 1.0 / output) * 255) + .5),
- (int) ((pow((pow((gdTrueColorGetBlue(c) / 255.0), input)), 1.0 / output) * 255) + .5)
+ (int) ((pow((pow((gdTrueColorGetBlue(c) / 255.0), input)), 1.0 / output) * 255) + .5),
+ gdTrueColorGetAlpha(c)
)
);
}
@@ -3845,7 +3846,7 @@ static void php_imagettftext_common(INTERNAL_FUNCTION_PARAMETERS, int mode, int
if (zend_hash_get_current_data_ex(HASH_OF(EXT), (void **) &item, &pos) == FAILURE) {
continue;
}
-
+
if (strcmp("linespacing", key) == 0) {
convert_to_double_ex(item);
strex.flags |= gdFTEX_LINESPACE;
@@ -3924,7 +3925,7 @@ PHP_FUNCTION(imagepsloadfont)
struct stat st;
#endif
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &file, &file_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &file, &file_len) == FAILURE) {
return;
}
@@ -4264,11 +4265,11 @@ PHP_FUNCTION(imagepsbbox)
if (argc != 3 && argc != 6) {
ZEND_WRONG_PARAM_COUNT();
}
-
+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "srl|lld", &str, &str_len, &fnt, &sz, &sp, &wd, &angle) == FAILURE) {
return;
}
-
+
if (argc == 6) {
space = sp;
add_width = wd;
diff --git a/ext/gd/tests/bug61221.phpt b/ext/gd/tests/bug61221.phpt
new file mode 100644
index 0000000000..42365da71f
--- /dev/null
+++ b/ext/gd/tests/bug61221.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Bug #61221 - imagegammacorrect function loses alpha channel
+--SKIPIF--
+<?php
+if (!extension_loaded('gd')) die('skip gd extension not available');
+?>
+--FILE--
+<?php
+$imagew = 50;
+$imageh = 50;
+$img = imagecreatetruecolor($imagew, $imageh);
+$blacktransparent = imagecolorallocatealpha($img, 0, 0, 0, 127);
+$redsolid = imagecolorallocate($img, 255, 0, 0);
+imagefill($img, 0, 0, $blacktransparent);
+imageline($img, $imagew / 2, 0, $imagew / 2, $imageh - 1, $redsolid);
+imageline($img, 0, $imageh / 2, $imagew - 1, $imageh / 2, $redsolid);
+imagegammacorrect($img, 1, 1);
+$color = imagecolorat($img, 0, 0);
+var_dump($color === $blacktransparent);
+imagedestroy($img);
+?>
+--EXPECT--
+bool(true)
diff --git a/ext/iconv/config.m4 b/ext/iconv/config.m4
index fce59931b9..a6d50cfd9d 100644
--- a/ext/iconv/config.m4
+++ b/ext/iconv/config.m4
@@ -186,8 +186,8 @@ int main() {
AC_DEFINE([ICONV_BROKEN_IGNORE],1,[Whether iconv supports IGNORE])
],[
AC_MSG_RESULT(no, cross-compiling)
- PHP_DEFINE([ICONV_SUPPORTS_ERRNO],0,[ext/iconv])
- AC_DEFINE([ICONV_SUPPORTS_ERRNO],0,[Whether iconv supports IGNORE])
+ PHP_DEFINE([ICONV_BROKEN_IGNORE],0,[ext/iconv])
+ AC_DEFINE([ICONV_BROKEN_IGNORE],0,[Whether iconv supports IGNORE])
])
AC_MSG_CHECKING([if your cpp allows macro usage in include lines])
diff --git a/ext/pcre/pcrelib/pcre.h b/ext/pcre/pcrelib/pcre.h
index 9216d55b0a..58ed46a2a3 100644
--- a/ext/pcre/pcrelib/pcre.h
+++ b/ext/pcre/pcrelib/pcre.h
@@ -42,9 +42,9 @@ POSSIBILITY OF SUCH DAMAGE.
/* The current PCRE version information. */
#define PCRE_MAJOR 8
-#define PCRE_MINOR 36
+#define PCRE_MINOR 37
#define PCRE_PRERELEASE
-#define PCRE_DATE 2014-09-26
+#define PCRE_DATE 2015-04-28
/* When an application links to a PCRE DLL in Windows, the symbols that are
imported have to be identified as such. When building PCRE, the appropriate
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c
index a5c2d18ac9..b2c6189ee3 100644
--- a/ext/pdo_pgsql/pgsql_driver.c
+++ b/ext/pdo_pgsql/pgsql_driver.c
@@ -27,6 +27,7 @@
#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
+#include "ext/standard/php_string.h"
#include "pdo/php_pdo.h"
#include "pdo/php_pdo_driver.h"
#include "ext/standard/file.h"
@@ -60,6 +61,17 @@ static char * _pdo_pgsql_trim_message(const char *message, int persistent)
return tmp;
}
+static char * _pdo_pgsql_escape_credentials(char *str TSRMLS_DC)
+{
+ int len;
+
+ if (str) {
+ return php_addcslashes(str, strlen(str), &len, 0, "\\'", sizeof("\\'") TSRMLS_CC);
+ }
+
+ return NULL;
+}
+
int _pdo_pgsql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, int errcode, const char *sqlstate, const char *file, int line TSRMLS_DC) /* {{{ */
{
pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data;
@@ -1055,7 +1067,7 @@ static int pdo_pgsql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
pdo_pgsql_db_handle *H;
int ret = 0;
char *conn_str, *p, *e;
- char *tmp_pass;
+ char *tmp_user, *tmp_pass;
long connect_timeout = 30;
H = pecalloc(1, sizeof(pdo_pgsql_db_handle), dbh->is_persistent);
@@ -1063,7 +1075,7 @@ static int pdo_pgsql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
H->einfo.errcode = 0;
H->einfo.errmsg = NULL;
-
+
/* PostgreSQL wants params in the connect string to be separated by spaces,
* if the PDO standard semicolons are used, we convert them to spaces
*/
@@ -1077,42 +1089,27 @@ static int pdo_pgsql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
connect_timeout = pdo_attr_lval(driver_options, PDO_ATTR_TIMEOUT, 30 TSRMLS_CC);
}
- if (dbh->password) {
- if (dbh->password[0] != '\'' && dbh->password[strlen(dbh->password) - 1] != '\'') {
- char *pwd = dbh->password;
- int pos = 1;
-
- tmp_pass = safe_emalloc(2, strlen(dbh->password), 3);
- tmp_pass[0] = '\'';
-
- while (*pwd != '\0') {
- if (*pwd == '\\' || *pwd == '\'') {
- tmp_pass[pos++] = '\\';
- }
-
- tmp_pass[pos++] = *pwd++;
- }
-
- tmp_pass[pos++] = '\'';
- tmp_pass[pos] = '\0';
- } else {
- tmp_pass = dbh->password;
- }
- }
+ /* escape username and password, if provided */
+ tmp_user = _pdo_pgsql_escape_credentials(dbh->username TSRMLS_CC);
+ tmp_pass = _pdo_pgsql_escape_credentials(dbh->password TSRMLS_CC);
/* support both full connection string & connection string + login and/or password */
- if (dbh->username && dbh->password) {
- spprintf(&conn_str, 0, "%s user=%s password=%s connect_timeout=%ld", dbh->data_source, dbh->username, tmp_pass, connect_timeout);
- } else if (dbh->username) {
- spprintf(&conn_str, 0, "%s user=%s connect_timeout=%ld", dbh->data_source, dbh->username, connect_timeout);
- } else if (dbh->password) {
- spprintf(&conn_str, 0, "%s password=%s connect_timeout=%ld", dbh->data_source, tmp_pass, connect_timeout);
+ if (tmp_user && tmp_pass) {
+ spprintf(&conn_str, 0, "%s user='%s' password='%s' connect_timeout=%ld", dbh->data_source, tmp_user, tmp_pass, connect_timeout);
+ } else if (tmp_user) {
+ spprintf(&conn_str, 0, "%s user='%s' connect_timeout=%ld", dbh->data_source, tmp_user, connect_timeout);
+ } else if (tmp_pass) {
+ spprintf(&conn_str, 0, "%s password='%s' connect_timeout=%ld", dbh->data_source, tmp_pass, connect_timeout);
} else {
spprintf(&conn_str, 0, "%s connect_timeout=%ld", (char *) dbh->data_source, connect_timeout);
}
H->server = PQconnectdb(conn_str);
- if (dbh->password && tmp_pass != dbh->password) {
+
+ if (tmp_user) {
+ efree(tmp_user);
+ }
+ if (tmp_pass) {
efree(tmp_pass);
}
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c
index f541c86259..51402c3e53 100644
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@ -220,7 +220,7 @@ stmt_retry:
return 0;
}
- if (!stmt->executed && !stmt->column_count) {
+ if (!stmt->executed && (!stmt->column_count || S->cols == NULL)) {
stmt->column_count = (int) PQnfields(S->result);
S->cols = ecalloc(stmt->column_count, sizeof(pdo_pgsql_column));
}
@@ -294,8 +294,8 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
sizeof(Oid));
}
if (param->paramno >= 0) {
- if (param->paramno >= zend_hash_num_elements(stmt->bound_param_map)) {
- pdo_pgsql_error_stmt(stmt, PGRES_FATAL_ERROR, "HY105");
+ if (param->paramno >= zend_hash_num_elements(stmt->bound_params)) {
+ pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "parameter was not defined" TSRMLS_CC);
return 0;
}
@@ -614,6 +614,12 @@ done:
static int pdo_pgsql_stmt_cursor_closer(pdo_stmt_t *stmt TSRMLS_DC)
{
+ pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data;
+
+ if (S->cols != NULL){
+ efree(S->cols);
+ S->cols = NULL;
+ }
return 1;
}
diff --git a/ext/pdo_pgsql/tests/bug69344.phpt b/ext/pdo_pgsql/tests/bug69344.phpt
new file mode 100644
index 0000000000..d274e0608c
--- /dev/null
+++ b/ext/pdo_pgsql/tests/bug69344.phpt
@@ -0,0 +1,44 @@
+--TEST--
+PDO PgSQL Bug #69344 (PDO PgSQL Incorrect binding numeric array with gaps)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded');
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+$pdo = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+$pdo->setAttribute (\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
+$pdo->setAttribute (\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);
+
+$test = function () use ($pdo) {
+ $arr = [
+ 0 => "a",
+ 2 => "b",
+ ];
+
+ $stmt = $pdo->prepare("SELECT (?)::text AS a, (?)::text AS b");
+
+ try {
+ $stmt->execute($arr);
+ var_dump($stmt->fetch());
+ } catch (\Exception $e) {
+ echo $e->getMessage()."\n";
+ }
+};
+
+$test();
+
+$pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, true);
+
+$test();
+
+?>
+--EXPECT--
+SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
+SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
+
diff --git a/ext/pdo_pgsql/tests/bug69362.phpt b/ext/pdo_pgsql/tests/bug69362.phpt
new file mode 100644
index 0000000000..33212a8863
--- /dev/null
+++ b/ext/pdo_pgsql/tests/bug69362.phpt
@@ -0,0 +1,63 @@
+--TEST--
+PDO PgSQL Bug #69362 (PDO-pgsql fails to connect if password contains a leading single quote)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded');
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+PDOTest::skip();
+
+$dsn = getenv('PDOTEST_DSN');
+if (empty($dsn)) die('skip no dsn found in env');
+
+$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
+
+$user = 'pdo_test_'.rand(5, 400);
+$pass = 'testpass';
+
+// Assume that if we can't create or drop a user, this test needs to be skipped
+try {
+ $db->exec("DROP USER IF EXISTS $user");
+ $db->exec("CREATE USER $user WITH PASSWORD '$pass'");
+} catch (PDOException $e) {
+ die("skip You need CREATEUSER permissions to run the test");
+}
+
+// Peer authentication might prevent the test from properly running
+try {
+ $testConn = new PDO($dsn, $user, $pass);
+} catch (PDOException $e) {
+ echo "skip ".$e->getMessage();
+}
+
+$db->exec("DROP USER $user");
+
+?>
+--FILE--
+<?php
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+$pdo = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
+$rand = rand(5, 400);
+$user = "pdo_test_$rand";
+$template = "CREATE USER $user WITH PASSWORD '%s'";
+$dropUser = "DROP USER $user";
+$testQuery = 'SELECT 1 as verification';
+
+// Create temp user with leading single quote
+$sql = sprintf($template, "''mypassword");
+$pdo->query($sql);
+$testConn = new PDO($conf['ENV']['PDOTEST_DSN'], $user, "'mypassword");
+$result = $testConn->query($testQuery)->fetch();
+$check = $result[0];
+var_dump($check);
+
+// Remove the user
+$pdo->query($dropUser);
+
+?>
+--EXPECT--
+int(1)
+
diff --git a/ext/pdo_pgsql/tests/bug69752.phpt b/ext/pdo_pgsql/tests/bug69752.phpt
new file mode 100644
index 0000000000..bb7e5e87e7
--- /dev/null
+++ b/ext/pdo_pgsql/tests/bug69752.phpt
@@ -0,0 +1,55 @@
+--TEST--
+PDO PgSQL Bug #69752 (memory leak with closeCursor)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded');
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+$pdo = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+
+$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
+
+$pdo->beginTransaction();
+
+$pdo->exec("
+ create table foo (
+ id bigserial not null primary key,
+ field1 text not null,
+ field2 text not null,
+ field3 text not null,
+ field4 int4 not null
+ )
+");
+$stmt = $pdo->prepare("insert into foo (field1, field2, field3, field4) values (:field1, :field2, :field3, :field4)");
+$max = 1000;
+$first_time_usage = null;
+
+for($i = 0; $i < $max; $i++) {
+ $data = array(
+ 'field1' => "field1: $i",
+ 'field2' => "field2: $i",
+ 'field3' => "field3: $i",
+ 'field4' => $i
+ );
+ $stmt->execute($data);
+ $stmt->closeCursor();
+ $usage = intval(floor(memory_get_usage() / 1024));
+
+ if ($first_time_usage === null) $first_time_usage = $usage;
+
+ /* Use delta instead of direct comparison here */
+ if (abs($first_time_usage - $usage) > 3){
+ printf("Memory Leak Detected: %d != %d\n", $usage, $first_time_usage);
+ break;
+ }
+}
+$pdo->rollBack();
+echo "done\n"
+?>
+--EXPECTF--
+done
diff --git a/ext/pgsql/tests/pg_insert_002.phpt b/ext/pgsql/tests/pg_insert_002.phpt
index 87d87b8475..329f525b27 100644
--- a/ext/pgsql/tests/pg_insert_002.phpt
+++ b/ext/pgsql/tests/pg_insert_002.phpt
@@ -1,5 +1,5 @@
--TEST--
-PostgreSQL pg_select() - basic test using schema
+PostgreSQL pg_insert() - test for CVE-2015-1532
--SKIPIF--
<?php include("skipif.inc"); ?>
--FILE--
diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c
index d81484521d..30e895d97b 100644
--- a/ext/sockets/conversions.c
+++ b/ext/sockets/conversions.c
@@ -910,8 +910,8 @@ static void from_zval_write_control(const zval *arr,
if (space_left < req_space) {
*control_buf = safe_erealloc(*control_buf, 2, req_space, *control_len);
*control_len += 2 * req_space;
- memset(*control_buf, '\0', *control_len - *offset);
- memcpy(&alloc->data, *control_buf, sizeof *control_buf);
+ memset(*control_buf + *offset, '\0', *control_len - *offset);
+ memcpy(&alloc->data, control_buf, sizeof *control_buf);
}
cmsghdr = (struct cmsghdr*)(((char*)*control_buf) + *offset);
diff --git a/ext/standard/exec.c b/ext/standard/exec.c
index 683878877b..06c068399d 100644
--- a/ext/standard/exec.c
+++ b/ext/standard/exec.c
@@ -380,6 +380,14 @@ PHPAPI char *php_escape_shell_arg(char *str)
}
}
#ifdef PHP_WIN32
+ if (y > 0 && '\\' == cmd[y - 1]) {
+ int k = 0, n = y - 1;
+ for (; n >= 0 && '\\' == cmd[n]; n--, k++);
+ if (k % 2) {
+ cmd[y++] = '\\';
+ }
+ }
+
cmd[y++] = '"';
#else
cmd[y++] = '\'';
diff --git a/ext/standard/info.c b/ext/standard/info.c
index 82b6bf8b48..3e3eeeffdc 100644
--- a/ext/standard/info.c
+++ b/ext/standard/info.c
@@ -394,53 +394,242 @@ char* php_get_windows_name()
case PRODUCT_ULTIMATE:
sub = "Ultimate Edition";
break;
- case PRODUCT_HOME_PREMIUM:
- sub = "Home Premium Edition";
- break;
case PRODUCT_HOME_BASIC:
sub = "Home Basic Edition";
break;
+ case PRODUCT_HOME_PREMIUM:
+ sub = "Home Premium Edition";
+ break;
case PRODUCT_ENTERPRISE:
sub = "Enterprise Edition";
break;
- case PRODUCT_BUSINESS:
- sub = "Business Edition";
+ case PRODUCT_HOME_BASIC_N:
+ sub = "Home Basic N Edition";
break;
- case PRODUCT_STARTER:
- sub = "Starter Edition";
+ case PRODUCT_BUSINESS:
+ if ((osvi.dwMajorVersion > 6) || (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion > 0)) {
+ sub = "Professional Edition";
+ } else {
+ sub = "Business Edition";
+ }
break;
- case PRODUCT_CLUSTER_SERVER:
- sub = "Cluster Server Edition";
+ case PRODUCT_STANDARD_SERVER:
+ sub = "Standard Edition";
break;
case PRODUCT_DATACENTER_SERVER:
sub = "Datacenter Edition";
break;
- case PRODUCT_DATACENTER_SERVER_CORE:
- sub = "Datacenter Edition (core installation)";
+ case PRODUCT_SMALLBUSINESS_SERVER:
+ sub = "Small Business Server";
break;
case PRODUCT_ENTERPRISE_SERVER:
sub = "Enterprise Edition";
break;
+ case PRODUCT_STARTER:
+ if ((osvi.dwMajorVersion > 6) || (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion > 0)) {
+ sub = "Starter N Edition";
+ } else {
+ sub = "Starter Edition";
+ }
+ break;
+ case PRODUCT_DATACENTER_SERVER_CORE:
+ sub = "Datacenter Edition (core installation)";
+ break;
+ case PRODUCT_STANDARD_SERVER_CORE:
+ sub = "Standard Edition (core installation)";
+ break;
case PRODUCT_ENTERPRISE_SERVER_CORE:
sub = "Enterprise Edition (core installation)";
break;
case PRODUCT_ENTERPRISE_SERVER_IA64:
sub = "Enterprise Edition for Itanium-based Systems";
break;
- case PRODUCT_SMALLBUSINESS_SERVER:
- sub = "Small Business Server";
+ case PRODUCT_BUSINESS_N:
+ if ((osvi.dwMajorVersion > 6) || (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion > 0)) {
+ sub = "Professional N Edition";
+ } else {
+ sub = "Business N Edition";
+ }
+ break;
+ case PRODUCT_WEB_SERVER:
+ sub = "Web Server Edition";
+ break;
+ case PRODUCT_CLUSTER_SERVER:
+ sub = "HPC Edition";
+ break;
+ case PRODUCT_HOME_SERVER:
+ sub = "Storage Server Essentials Edition";
+ break;
+ case PRODUCT_STORAGE_EXPRESS_SERVER:
+ sub = "Storage Server Express Edition";
+ break;
+ case PRODUCT_STORAGE_STANDARD_SERVER:
+ sub = "Storage Server Standard Edition";
+ break;
+ case PRODUCT_STORAGE_WORKGROUP_SERVER:
+ sub = "Storage Server Workgroup Edition";
+ break;
+ case PRODUCT_STORAGE_ENTERPRISE_SERVER:
+ sub = "Storage Server Enterprise Edition";
+ break;
+ case PRODUCT_SERVER_FOR_SMALLBUSINESS:
+ sub = "Essential Server Solutions Edition";
break;
case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:
sub = "Small Business Server Premium Edition";
break;
- case PRODUCT_STANDARD_SERVER:
- sub = "Standard Edition";
+ case PRODUCT_HOME_PREMIUM_N:
+ sub = "Home Premium N Edition";
break;
- case PRODUCT_STANDARD_SERVER_CORE:
- sub = "Standard Edition (core installation)";
+ case PRODUCT_ENTERPRISE_N:
+ sub = "Enterprise N Edition";
break;
- case PRODUCT_WEB_SERVER:
- sub = "Web Server Edition";
+ case PRODUCT_ULTIMATE_N:
+ sub = "Ultimate N Edition";
+ break;
+ case PRODUCT_WEB_SERVER_CORE:
+ sub = "Web Server Edition (core installation)";
+ break;
+ case PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT:
+ sub = "Essential Business Server Management Server Edition";
+ break;
+ case PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY:
+ sub = "Essential Business Server Management Security Edition";
+ break;
+ case PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING:
+ sub = "Essential Business Server Management Messaging Edition";
+ break;
+ case PRODUCT_SERVER_FOUNDATION:
+ sub = "Foundation Edition";
+ break;
+ case PRODUCT_HOME_PREMIUM_SERVER:
+ sub = "Home Server 2011 Edition";
+ break;
+ case PRODUCT_SERVER_FOR_SMALLBUSINESS_V:
+ sub = "Essential Server Solutions Edition (without Hyper-V)";
+ break;
+ case PRODUCT_STANDARD_SERVER_V:
+ sub = "Standard Edition (without Hyper-V)";
+ break;
+ case PRODUCT_DATACENTER_SERVER_V:
+ sub = "Datacenter Edition (without Hyper-V)";
+ break;
+ case PRODUCT_ENTERPRISE_SERVER_V:
+ sub = "Enterprise Edition (without Hyper-V)";
+ break;
+ case PRODUCT_DATACENTER_SERVER_CORE_V:
+ sub = "Datacenter Edition (core installation, without Hyper-V)";
+ break;
+ case PRODUCT_STANDARD_SERVER_CORE_V:
+ sub = "Standard Edition (core installation, without Hyper-V)";
+ break;
+ case PRODUCT_ENTERPRISE_SERVER_CORE_V:
+ sub = "Enterprise Edition (core installation, without Hyper-V)";
+ break;
+ case PRODUCT_HYPERV:
+ sub = "Hyper-V Server";
+ break;
+ case PRODUCT_STORAGE_EXPRESS_SERVER_CORE:
+ sub = "Storage Server Express Edition (core installation)";
+ break;
+ case PRODUCT_STORAGE_STANDARD_SERVER_CORE:
+ sub = "Storage Server Standard Edition (core installation)";
+ break;
+ case PRODUCT_STORAGE_WORKGROUP_SERVER_CORE:
+ sub = "Storage Server Workgroup Edition (core installation)";
+ break;
+ case PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE:
+ sub = "Storage Server Enterprise Edition (core installation)";
+ break;
+ case PRODUCT_STARTER_N:
+ sub = "Starter N Edition";
+ break;
+ case PRODUCT_PROFESSIONAL:
+ sub = "Professional Edition";
+ break;
+ case PRODUCT_PROFESSIONAL_N:
+ sub = "Professional N Edition";
+ break;
+ case PRODUCT_SB_SOLUTION_SERVER:
+ sub = "Small Business Server 2011 Essentials Edition";
+ break;
+ case PRODUCT_SERVER_FOR_SB_SOLUTIONS:
+ sub = "Server For SB Solutions Edition";
+ break;
+ case PRODUCT_STANDARD_SERVER_SOLUTIONS:
+ sub = "Solutions Premium Edition";
+ break;
+ case PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE:
+ sub = "Solutions Premium Edition (core installation)";
+ break;
+ case PRODUCT_SB_SOLUTION_SERVER_EM:
+ sub = "Server For SB Solutions EM Edition";
+ break;
+ case PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM:
+ sub = "Server For SB Solutions EM Edition";
+ break;
+ case PRODUCT_SOLUTION_EMBEDDEDSERVER:
+ sub = "MultiPoint Server Edition";
+ break;
+ case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT:
+ sub = "Essential Server Solution Management Edition";
+ break;
+ case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL:
+ sub = "Essential Server Solution Additional Edition";
+ break;
+ case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC:
+ sub = "Essential Server Solution Management SVC Edition";
+ break;
+ case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC:
+ sub = "Essential Server Solution Additional SVC Edition";
+ break;
+ case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE:
+ sub = "Small Business Server Premium Edition (core installation)";
+ break;
+ case PRODUCT_CLUSTER_SERVER_V:
+ sub = "Hyper Core V Edition";
+ break;
+ case PRODUCT_STARTER_E:
+ sub = "Hyper Core V Edition";
+ break;
+ case PRODUCT_ENTERPRISE_EVALUATION:
+ sub = "Enterprise Edition (evaluation installation)";
+ break;
+ case PRODUCT_MULTIPOINT_STANDARD_SERVER:
+ sub = "MultiPoint Server Standard Edition (full installation)";
+ break;
+ case PRODUCT_MULTIPOINT_PREMIUM_SERVER:
+ sub = "MultiPoint Server Premium Edition (full installation)";
+ break;
+ case PRODUCT_STANDARD_EVALUATION_SERVER:
+ sub = "Standard Edition (evaluation installation)";
+ break;
+ case PRODUCT_DATACENTER_EVALUATION_SERVER:
+ sub = "Datacenter Edition (evaluation installation)";
+ break;
+ case PRODUCT_ENTERPRISE_N_EVALUATION:
+ sub = "Enterprise N Edition (evaluation installation)";
+ break;
+ case PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER:
+ sub = "Storage Server Workgroup Edition (evaluation installation)";
+ break;
+ case PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER:
+ sub = "Storage Server Standard Edition (evaluation installation)";
+ break;
+ case PRODUCT_CORE_N:
+ sub = "Windows 8 N Edition";
+ break;
+ case PRODUCT_CORE_COUNTRYSPECIFIC:
+ sub = "Windows 8 China Edition";
+ break;
+ case PRODUCT_CORE_SINGLELANGUAGE:
+ sub = "Windows 8 Single Language Edition";
+ break;
+ case PRODUCT_CORE:
+ sub = "Windows 8 Edition";
+ break;
+ case PRODUCT_PROFESSIONAL_WMC:
+ sub = "Professional with Media Center Edition";
break;
}
}
diff --git a/ext/standard/mail.c b/ext/standard/mail.c
index 4a20671af2..09e0a5546b 100644
--- a/ext/standard/mail.c
+++ b/ext/standard/mail.c
@@ -223,6 +223,43 @@ void php_mail_log_to_file(char *filename, char *message, size_t message_size TSR
}
+static int php_mail_detect_multiple_crlf(char *hdr) {
+ /* This function detects multiple/malformed multiple newlines. */
+
+ if (!hdr) {
+ return 0;
+ }
+
+ /* Should not have any newlines at the beginning. */
+ /* RFC 2822 2.2. Header Fields */
+ if (*hdr < 33 || *hdr > 126 || *hdr == ':') {
+ return 1;
+ }
+
+ while(*hdr) {
+ if (*hdr == '\r') {
+ if (*(hdr+1) == '\0' || *(hdr+1) == '\r' || (*(hdr+1) == '\n' && (*(hdr+2) == '\0' || *(hdr+2) == '\n' || *(hdr+2) == '\r'))) {
+ /* Malformed or multiple newlines. */
+ return 1;
+ } else {
+ hdr += 2;
+ }
+ } else if (*hdr == '\n') {
+ if (*(hdr+1) == '\0' || *(hdr+1) == '\r' || *(hdr+1) == '\n') {
+ /* Malformed or multiple newlines. */
+ return 1;
+ } else {
+ hdr += 2;
+ }
+ } else {
+ hdr++;
+ }
+ }
+
+ return 0;
+}
+
+
/* {{{ php_mail
*/
PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd TSRMLS_DC)
@@ -276,6 +313,7 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char
efree(tmp);
}
+
if (PG(mail_x_header)) {
const char *tmp = zend_get_executed_filename(TSRMLS_C);
char *f;
@@ -291,6 +329,11 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char
efree(f);
}
+ if (hdr && php_mail_detect_multiple_crlf(hdr)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Multiple or malformed newlines found in additional_header");
+ MAIL_RET(0);
+ }
+
if (!sendmail_path) {
#if (defined PHP_WIN32 || defined NETWARE)
/* handle old style win smtp sending */
diff --git a/ext/standard/tests/general_functions/bug69646.phpt b/ext/standard/tests/general_functions/bug69646.phpt
new file mode 100644
index 0000000000..b077c67319
--- /dev/null
+++ b/ext/standard/tests/general_functions/bug69646.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Bug #69646 OS command injection vulnerability in escapeshellarg()
+--SKIPIF--
+<?php
+if( substr(PHP_OS, 0, 3) != "WIN" )
+ die("skip.. Windows only");
+?>
+--FILE--
+<?php
+
+$a = 'a\\';
+$b = 'b -c d\\';
+var_dump( $a, escapeshellarg($a) );
+var_dump( $b, escapeshellarg($b) );
+
+$helper_script = <<<SCRIPT
+<?php
+
+print( "--- ARG INFO ---\n" );
+var_dump( \$argv );
+
+SCRIPT;
+
+$script = dirname(__FILE__) . DIRECTORY_SEPARATOR . "arginfo.php";
+file_put_contents($script, $helper_script);
+
+$cmd = PHP_BINARY . " " . $script . " " . escapeshellarg($a) . " " . escapeshellarg($b);
+
+system($cmd);
+
+unlink($script);
+?>
+--EXPECTF--
+string(2) "a\"
+string(5) ""a\\""
+string(7) "b -c d\"
+string(10) ""b -c d\\""
+--- ARG INFO ---
+array(3) {
+ [0]=>
+ string(%d) "%sarginfo.php"
+ [1]=>
+ string(2) "a\"
+ [2]=>
+ string(7) "b -c d\"
+}
+
diff --git a/ext/standard/tests/mail/mail_basic6.phpt b/ext/standard/tests/mail/mail_basic6.phpt
new file mode 100644
index 0000000000..d0d45b78f3
--- /dev/null
+++ b/ext/standard/tests/mail/mail_basic6.phpt
@@ -0,0 +1,329 @@
+--TEST--
+Test mail() function : basic functionality
+--INI--
+sendmail_path=tee mailBasic.out >/dev/null
+mail.add_x_header = Off
+--SKIPIF--
+<?php
+if(substr(PHP_OS, 0, 3) == "WIN")
+ die("skip Won't run on Windows");
+?>
+--FILE--
+<?php
+/* Prototype : int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])
+ * Description: Send an email message with invalid addtional_headers
+ * Source code: ext/standard/mail.c
+ * Alias to functions:
+ */
+
+echo "*** Testing mail() : basic functionality ***\n";
+
+
+// Valid header
+$to = 'user@example.com';
+$subject = 'Test Subject';
+$message = 'A Message';
+$additional_headers = "HEAD1: a\r\nHEAD2: b\r\n";
+$outFile = "mailBasic.out";
+@unlink($outFile);
+
+echo "-- Valid Header --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo file_get_contents($outFile);
+unlink($outFile);
+
+// Valid header
+$additional_headers = "HEAD1: a\nHEAD2: b\n";
+@unlink($outFile);
+
+echo "-- Valid Header --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Valid header
+// \r is accepted as valid. This may be changed to invalid.
+$additional_headers = "HEAD1: a\rHEAD2: b\r";
+@unlink($outFile);
+
+echo "-- Valid Header --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+//===============================================================================
+// Invalid header
+$additional_headers = "\nHEAD1: a\nHEAD2: b\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - preceeding newline--\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+$additional_headers = "\rHEAD1: a\nHEAD2: b\r";
+@unlink($outFile);
+
+echo "-- Invalid Header - preceeding newline--\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+$additional_headers = "\r\nHEAD1: a\r\nHEAD2: b\r\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - preceeding newline--\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+$additional_headers = "\r\n\r\nHEAD1: a\r\nHEAD2: b\r\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - preceeding newline--\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+$additional_headers = "\n\nHEAD1: a\r\nHEAD2: b\r\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - preceeding newline--\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+$additional_headers = "\r\rHEAD1: a\r\nHEAD2: b\r\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - preceeding newline--\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+$additional_headers = "HEAD1: a\r\n\r\nHEAD2: b\r\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - multiple newlines in the middle --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+$additional_headers = "HEAD1: a\r\n\nHEAD2: b\r\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - multiple newlines in the middle --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+$additional_headers = "HEAD1: a\n\nHEAD2: b\r\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - multiple newlines in the middle --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+$additional_headers = "HEAD1: a\r\rHEAD2: b\r\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - multiple newlines in the middle --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+$additional_headers = "HEAD1: a\n\rHEAD2: b\r\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - multiple newlines in the middle --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+$additional_headers = "HEAD1: a\n\r\nHEAD2: b\r\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - multiple newlines in the middle --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+// Invalid, but PHP_FUNCTION(mail) trims newlines
+$additional_headers = "HEAD1: a\r\nHEAD2: b\r\n\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - trailing newlines --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+// Invalid, but PHP_FUNCTION(mail) trims newlines
+$additional_headers = "HEAD1: a\r\nHEAD2: b\n\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - trailing newlines --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+// Invalid, but PHP_FUNCTION(mail) trims newlines
+$additional_headers = "HEAD1: a\r\nHEAD2: b\n";
+@unlink($outFile);
+
+echo "-- Invalid Header - trailing newlines --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+// Invalid header
+// Invalid, but PHP_FUNCTION(mail) trims newlines
+$additional_headers = "HEAD1: a\r\nHEAD2: b\r";
+@unlink($outFile);
+
+echo "-- Invalid Header - trailing newlines --\n";
+// Calling mail() with all additional headers
+var_dump( mail($to, $subject, $message, $additional_headers) );
+echo @file_get_contents($outFile);
+@unlink($outFile);
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing mail() : basic functionality ***
+-- Valid Header --
+bool(true)
+To: user@example.com
+Subject: Test Subject
+HEAD1: a
+HEAD2: b
+
+A Message
+-- Valid Header --
+bool(true)
+To: user@example.com
+Subject: Test Subject
+HEAD1: a
+HEAD2: b
+
+A Message
+-- Valid Header --
+bool(true)
+To: user@example.com
+Subject: Test Subject
+HEAD1: a HEAD2: b
+
+A Message
+-- Invalid Header - preceeding newline--
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - preceeding newline--
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - preceeding newline--
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - preceeding newline--
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - preceeding newline--
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - preceeding newline--
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - multiple newlines in the middle --
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - multiple newlines in the middle --
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - multiple newlines in the middle --
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - multiple newlines in the middle --
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - multiple newlines in the middle --
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - multiple newlines in the middle --
+
+Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d
+bool(false)
+-- Invalid Header - trailing newlines --
+bool(true)
+To: user@example.com
+Subject: Test Subject
+HEAD1: a
+HEAD2: b
+
+A Message
+-- Invalid Header - trailing newlines --
+bool(true)
+To: user@example.com
+Subject: Test Subject
+HEAD1: a
+HEAD2: b
+
+A Message
+-- Invalid Header - trailing newlines --
+bool(true)
+To: user@example.com
+Subject: Test Subject
+HEAD1: a
+HEAD2: b
+
+A Message
+-- Invalid Header - trailing newlines --
+bool(true)
+To: user@example.com
+Subject: Test Subject
+HEAD1: a
+HEAD2: b
+
+A Message
+===DONE===
diff --git a/ext/standard/winver.h b/ext/standard/winver.h
index 7152d60811..ba46c90a7c 100644
--- a/ext/standard/winver.h
+++ b/ext/standard/winver.h
@@ -18,32 +18,82 @@
#endif
#ifndef PRODUCT_ULTIMATE
-#define PRODUCT_UNDEFINED 0x00000000
-#define PRODUCT_ULTIMATE 0x00000001
-#define PRODUCT_HOME_BASIC 0x00000002
-#define PRODUCT_HOME_PREMIUM 0x00000003
-#define PRODUCT_ENTERPRISE 0x00000004
-#define PRODUCT_HOME_BASIC_N 0x00000005
-#define PRODUCT_BUSINESS 0x00000006
-#define PRODUCT_STANDARD_SERVER 0x00000007
-#define PRODUCT_DATACENTER_SERVER 0x00000008
-#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009
-#define PRODUCT_ENTERPRISE_SERVER 0x0000000A
-#define PRODUCT_STARTER 0x0000000B
-#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C
-#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D
-#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E
-#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F
-#define PRODUCT_BUSINESS_N 0x00000010
-#define PRODUCT_WEB_SERVER 0x00000011
-#define PRODUCT_CLUSTER_SERVER 0x00000012
-#define PRODUCT_HOME_SERVER 0x00000013
-#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014
-#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015
-#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016
-#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017
-#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018
-#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019
+#define PRODUCT_UNDEFINED 0x00000000
+#define PRODUCT_ULTIMATE 0x00000001
+#define PRODUCT_HOME_BASIC 0x00000002
+#define PRODUCT_HOME_PREMIUM 0x00000003
+#define PRODUCT_ENTERPRISE 0x00000004
+#define PRODUCT_HOME_BASIC_N 0x00000005
+#define PRODUCT_BUSINESS 0x00000006
+#define PRODUCT_STANDARD_SERVER 0x00000007
+#define PRODUCT_DATACENTER_SERVER 0x00000008
+#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009
+#define PRODUCT_ENTERPRISE_SERVER 0x0000000A
+#define PRODUCT_STARTER 0x0000000B
+#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C
+#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D
+#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E
+#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F
+#define PRODUCT_BUSINESS_N 0x00000010
+#define PRODUCT_WEB_SERVER 0x00000011
+#define PRODUCT_CLUSTER_SERVER 0x00000012
+#define PRODUCT_HOME_SERVER 0x00000013
+#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014
+#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015
+#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016
+#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017
+#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018
+#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019
+#define PRODUCT_HOME_PREMIUM_N 0x0000001A
+#define PRODUCT_ENTERPRISE_N 0x0000001B
+#define PRODUCT_ULTIMATE_N 0x0000001C
+#define PRODUCT_WEB_SERVER_CORE 0x0000001D
+#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x0000001E
+#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x0000001F
+#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x00000020
+#define PRODUCT_SERVER_FOUNDATION 0x00000021
+#define PRODUCT_HOME_PREMIUM_SERVER 0x00000022
+#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x00000023
+#define PRODUCT_STANDARD_SERVER_V 0x00000024
+#define PRODUCT_DATACENTER_SERVER_V 0x00000025
+#define PRODUCT_ENTERPRISE_SERVER_V 0x00000026
+#define PRODUCT_DATACENTER_SERVER_CORE_V 0x00000027
+#define PRODUCT_STANDARD_SERVER_CORE_V 0x00000028
+#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x00000029
+#define PRODUCT_HYPERV 0x0000002A
+#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x0000002B
+#define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x0000002C
+#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x0000002D
+#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x0000002E
+#define PRODUCT_STARTER_N 0x0000002F
+#define PRODUCT_PROFESSIONAL 0x00000030
+#define PRODUCT_PROFESSIONAL_N 0x00000031
+#define PRODUCT_SB_SOLUTION_SERVER 0x00000032
+#define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x00000033
+#define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x00000034
+#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x00000035
+#define PRODUCT_SB_SOLUTION_SERVER_EM 0x00000036
+#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x00000037
+#define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x00000038
+#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x0000003B
+#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x0000003C
+#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x0000003D
+#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x0000003E
+#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x0000003F
+#define PRODUCT_CLUSTER_SERVER_V 0x00000040
+#define PRODUCT_ENTERPRISE_EVALUATION 0x00000048
+#define PRODUCT_MULTIPOINT_STANDARD_SERVER 0x0000004C
+#define PRODUCT_MULTIPOINT_PREMIUM_SERVER 0x0000004D
+#define PRODUCT_STANDARD_EVALUATION_SERVER 0x0000004F
+#define PRODUCT_DATACENTER_EVALUATION_SERVER 0x00000050
+#define PRODUCT_ENTERPRISE_N_EVALUATION 0x00000054
+#define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER 0x0000005F
+#define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER 0x00000060
+#define PRODUCT_CORE_N 0x00000062
+#define PRODUCT_CORE_COUNTRYSPECIFIC 0x00000063
+#define PRODUCT_CORE_SINGLELANGUAGE 0x00000064
+#define PRODUCT_CORE 0x00000065
+#define PRODUCT_PROFESSIONAL_WMC 0x00000067
#endif
#ifndef VER_NT_WORKSTATION
diff --git a/genfiles b/genfiles
index 8a362c1e31..516b3316fb 100755
--- a/genfiles
+++ b/genfiles
@@ -1,6 +1,15 @@
#! /bin/sh
-STD='make -f Makefile.frag RE2C="re2c" RE2C_FLAGS="-i" YACC="bison -y -l" srcdir=Zend builddir=Zend top_srcdir=.'
+if [ -z $YACC ]; then
+ YACC="bison"
+fi
+YACC="$YACC -y -l"
+
+if [ -z $RE2C ]; then
+ RE2C="re2c"
+fi
+
+STD="make -f Makefile.frag RE2C='$RE2C' RE2C_FLAGS='-i' YACC='$YACC' srcdir=Zend builddir=Zend top_srcdir=."
(eval "$STD Zend/zend_language_parser.c Zend/zend_language_scanner.c Zend/zend_ini_parser.c Zend/zend_ini_scanner.c")
diff --git a/main/php_version.h b/main/php_version.h
index 2aa246653a..4ebff7f9ac 100644
--- a/main/php_version.h
+++ b/main/php_version.h
@@ -2,7 +2,7 @@
/* edit configure.in to change version number */
#define PHP_MAJOR_VERSION 5
#define PHP_MINOR_VERSION 5
-#define PHP_RELEASE_VERSION 26
+#define PHP_RELEASE_VERSION 27
#define PHP_EXTRA_VERSION "-dev"
-#define PHP_VERSION "5.5.26-dev"
-#define PHP_VERSION_ID 50526
+#define PHP_VERSION "5.5.27-dev"
+#define PHP_VERSION_ID 50527
diff --git a/win32/install.txt b/win32/install.txt
index b240ad2723..10478f6ffb 100644
--- a/win32/install.txt
+++ b/win32/install.txt
@@ -6,7 +6,6 @@ Installing PHP
1. General Installation Considerations
2. Installation on Windows systems
- Windows Installer
Manual Installation Steps
ActiveScript
Microsoft IIS
@@ -107,9 +106,6 @@ Chapter 2. Installation on Windows systems
refer to the supported Windows platforms as Win32. Windows 95 is no
longer supported as of PHP 4.3.0.
- There are two main ways to install PHP for Windows: either manually or
- by using the installer.
-
If you have Microsoft Visual Studio, you can also build PHP from the
original source code.
@@ -124,129 +120,6 @@ Chapter 2. Installation on Windows systems
optimised.
__________________________________________________________________
-Windows Installer (PHP 5.2 and later)
-
- The Windows PHP installer for later versions of PHP is built using MSI
- technology using the Wix Toolkit (http://wix.sourceforge.net/). It will
- install and configure PHP and all the built-in and PECL extensions, as
- well as configure many of the popular web servers such as IIS, Apache,
- and Xitami.
-
- First, install your selected HTTP (web) server on your system, and make
- sure that it works. Then proceed with one of the following install
- types.
- __________________________________________________________________
-
-Normal Install
-
- Run the MSI installer and follow the instructions provided by the
- installation wizard. You will be prompted to select the Web Server you
- wish to configure first, along with any configuration details needed.
-
- You will then be prompted to select which features and extensions you
- wish to install and enable. By selecting "Will be installed on local
- hard drive" in the drop-down menu for each item you can trigger whether
- to install the feature or not. By selecting "Entire feature will be
- installed on local hard drive", you will be able to install all
- sub-features of the included feature ( for example by selecting this
- options for the feature "PDO" you will install all PDO Drivers ).
-
- Warning
-
- It is not recommended to install all extensions by default, since many
- other them require dependencies from outside PHP in order to function
- properly. Instead, use the Installation Repair Mode that can be
- triggered thru the 'Add/Remove Programs' control panel to enable or
- disable extensions and features after installation.
-
- The installer then sets up PHP to be used in Windows and the php.ini
- file, and configures certain web servers to use PHP. The installer will
- currently configure IIS (CGI mode only), Apache, Xitami, and Sambar
- Server; if you are using a different web server you'll need to
- configure it manually.
- __________________________________________________________________
-
-Silent Install
-
- The installer also supports a silent mode, which is helpful for Systems
- Administrators to deploy PHP easily. To use silent mode:
- msiexec.exe /i php-VERSION-win32-install.msi /q
-
- You can control the install directory by passing it as a parameter to
- the install. For example, to install to e:\php:
- msiexec.exe /i php-VERSION-win32-install.msi /q INSTALLDIR=e:\php
-
- You can also use the same syntax to specify the Apache Configuration
- Directory (APACHEDIR), the Sambar Server directory (SAMBARDIR), and the
- Xitami Server directory (XITAMIDIR).
-
- You can also specify what features to install. For example, to install
- the mysqli extension and the CGI executable:
- msiexec.exe /i php-VERSION-win32-install.msi /q ADDLOCAL=cgi,ext_php_mysqli
-
- The current list of Features to install is as follows:
-MainExecutable - php.exe executable
-ScriptExecutable - php-win.exe executable
-ext_php_* - the various extensions ( for example: ext_php_mysql for MySQL )
-apache13 - Apache 1.3 module
-apache20 - Apache 2.0 module
-apache22 - Apache 2,2 module
-apacheCGI - Apache CGI executable
-iis4ISAPI - IIS ISAPI module
-iis4CGI - IIS CGI executable
-NSAPI - Sun/iPlanet/Netscape server module
-Xitami - Xitami CGI executable
-Sambar - Sambar Server ISAPI module
-CGI - php-cgi.exe executable
-PEAR - PEAR installer
-Manual - PHP Manual in CHM Format
-
- For more information on installing MSI installers from the command
- line, visit
- http://msdn.microsoft.com/library/en-us/msi/setup/command_line_options.
- asp
- __________________________________________________________________
-
-Windows Installer (PHP 5.1.0 and earlier)
-
- The Windows PHP installer is available from the downloads page at
- http://www.php.net/downloads.php. This installs the CGI version of PHP
- and for IIS and Xitami, it configures the web server as well. The
- installer does not include any extra external PHP extensions
- (php_*.dll) as you'll only find those in the Windows Zip Package and
- PECL downloads.
-
- Note: While the Windows installer is an easy way to make PHP work,
- it is restricted in many aspects as, for example, the automatic
- setup of extensions is not supported. Use of the installer isn't the
- preferred method for installing PHP.
-
- First, install your selected HTTP (web) server on your system, and make
- sure that it works.
-
- Run the executable installer and follow the instructions provided by
- the installation wizard. Two types of installation are supported -
- standard, which provides sensible defaults for all the settings it can,
- and advanced, which asks questions as it goes along.
-
- The installation wizard gathers enough information to set up the
- php.ini file, and configure certain web servers to use PHP. One of the
- web servers the PHP installer does not configure for is Apache, so
- you'll need to configure it manually.
-
- Once the installation has completed, the installer will inform you if
- you need to restart your system, restart the server, or just start
- using PHP.
-
- Warning
-
- Be aware, that this setup of PHP is not secure. If you would like to
- have a secure PHP setup, you'd better go on the manual way, and set
- every option carefully. This automatically working setup gives you an
- instantly working PHP installation, but it is not meant to be used on
- online servers.
- __________________________________________________________________
-
Manual Installation Steps
This install guide will help you manually install and configure PHP
@@ -254,11 +127,10 @@ Manual Installation Steps
download the zip binary distribution from the downloads page at
http://www.php.net/downloads.php.
- Although there are many all-in-one installation kits, and we also
- distribute a PHP installer for Microsoft Windows, we recommend you take
- the time to setup PHP yourself as this will provide you with a better
- understanding of the system, and enables you to install PHP extensions
- easily when needed.
+ Although there are many all-in-one installation kits, we recommend you
+ take the time to setup PHP yourself as this will provide you with a
+ better understanding of the system, and enables you to install PHP
+ extensions easily when needed.
Upgrading from a previous PHP version: Previous editions of the
manual suggest moving various ini and DLL files into your SYSTEM
@@ -533,10 +405,10 @@ General considerations for all installations of PHP with IIS
extensions_dir value is "c:\php\ext" and an example IIS doc_root
value is "c:\Inetpub\wwwroot".
* PHP extension DLL files, such as php_mysql.dll and php_curl.dll,
- are found in the zip package of the PHP download (not the PHP
- installer). In PHP 5, many extensions are part of PECL and can be
- downloaded in the "Collection of PECL modules" package. Files such
- as php_zip.dll and php_ssh2.dll. Download PHP files here.
+ are found in the zip package of the PHP download. In PHP 5, many
+ extensions are part of PECL and can be downloaded in the
+ "Collection of PECL modules" package. Files such as php_zip.dll and
+ php_ssh2.dll. Download PHP files here.
* When defining the executable, the 'check that file exists' box may
also be checked. For a small performance penalty, the IIS
will check that the script file exists and sort out authentication