# Copyright (C) 2012 The Libphonenumber Authors

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

# http://www.apache.org/licenses/LICENSE-2.0

# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

1|America/New_York&America/Chicago&America/Winnipeg&America/Los_Angeles
1201|America/New_York
1212812|America/New_York
1234|America/New_York
1604|America/Winnipeg
1617423|America/Chicago
1650960|America/Los_Angeles
1989|Ameriac/Los_Angeles
612|Australia/Sydney
82|Asia/Seoul
