# Copyright (C) 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html
######################################################################
# Copyright (C) 2007-2014, International Business Machines
# Corporation and others.  All Rights Reserved.
######################################################################
# This is an ICU-specific file with the same format as regular
# tzdata time zone files, for consistent parsing by the tools that
# turn "Olson" tzdata into ICU's zoneinfo.txt.
# The purpose of this file is to give ICU a superset of the time zones
# that are in CLDR and also include legacy ICU time zones originally
# in tz.alias for rataining backward compatibility.

# Add Etc/Unknown, defined by CLDR. Give it Etc/GMT behavior.

# Zone	NAME		GMTOFF	RULES	FORMAT
Zone	Etc/Unknown	0	-	Unknown

# SystemV time zones.
# The Olson systemv file has these commented out.

# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
Zone	SystemV/AST4ADT	-4:00	SystemV		A%sT
Zone	SystemV/EST5EDT	-5:00	SystemV		E%sT
Zone	SystemV/CST6CDT	-6:00	SystemV		C%sT
Zone	SystemV/MST7MDT	-7:00	SystemV		M%sT
Zone	SystemV/PST8PDT	-8:00	SystemV		P%sT
Zone	SystemV/YST9YDT	-9:00	SystemV		Y%sT
Zone	SystemV/AST4	-4:00	-		AST
Zone	SystemV/EST5	-5:00	-		EST
Zone	SystemV/CST6	-6:00	-		CST
Zone	SystemV/MST7	-7:00	-		MST
Zone	SystemV/PST8	-8:00	-		PST
Zone	SystemV/YST9	-9:00	-		YST
Zone	SystemV/HST10	-10:00	-		HST


# The list below is for supporting legacy ICU zone aliases.
# These definitions were originally defined in tz.alias.

#### Aliases that conflict with Olson compatibility Zone definition

Link Australia/Darwin ACT
Link Australia/Sydney AET
Link America/Argentina/Buenos_Aires AGT
Link Africa/Cairo ART
Link America/Anchorage AST
Link America/Sao_Paulo BET
Link Asia/Dhaka BST
Link Africa/Maputo CAT
Link America/St_Johns CNT
Link America/Chicago CST
Link Asia/Shanghai CTT
Link Africa/Addis_Ababa EAT
Link Europe/Paris ECT
#Link Europe/Istanbul EET # EET is a standard UNIX zone
####Link EST America/New_York EST # Defined as -05:00
####Link Pacific/Honolulu HST # Defined as -10:00
Link America/Indiana/Indianapolis IET
Link Asia/Kolkata IST
Link Asia/Tokyo JST
#Link Asia/Tehran MET # MET is a standard UNIX zone
Link Pacific/Apia MIT
####Link America/Denver MST # Defined as -07:00
Link Asia/Yerevan NET
Link Pacific/Auckland NST
Link Asia/Karachi PLT
Link America/Phoenix PNT
Link America/Puerto_Rico PRT
Link America/Los_Angeles PST
Link Pacific/Guadalcanal SST
#Link Etc/UTC UTC # Olson LINK
Link Asia/Ho_Chi_Minh VST

#
# Aliases already dropped from the TZ database.
# ICU may also remove these aliases.
#
Link America/Regina Canada/East-Saskatchewan # removed from backward in 2017c
