######################################################################
# Copyright (C) 2006, 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.
# It would be possible with the existing tz.alias file to add more
# aliases, but it is not possible to add a new time zone like
# Etc/Unknown which wants to work like Etc/GMT but not be an alias.
# The aliases in tz.alias could probably be moved here.

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

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

# Add SystemV/XXX time zones as aliases according to CLDR.
# The Olson systemv file has these commented out.
# An alternative to making these aliases according to CLDR would be
# to copy and un-comment the data from the systemv file.

# Link canonical alias
Link America/Halifax SystemV/AST4ADT
Link America/New_York SystemV/EST5EDT
Link America/Chicago SystemV/CST6CDT
Link America/Denver SystemV/MST7MDT
Link America/Los_Angeles SystemV/PST8PDT
Link America/Anchorage SystemV/YST9YDT
Link America/Puerto_Rico SystemV/AST4
Link America/Indianapolis SystemV/EST5
Link America/Regina SystemV/CST6
Link America/Phoenix SystemV/MST7
Link Pacific/Pitcairn SystemV/PST8
Link Pacific/Gambier SystemV/YST9
Link Pacific/Honolulu SystemV/HST10
