#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# Copyright 2015 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Authoritative source for Chromium OS region/locale configuration.

Run this module to display all known regions (use --help to see options).
"""

from __future__ import print_function

import argparse
import collections
import json
import re
import sys

import yaml


# The regular expression to check values in Region.keyboards and Region.locales.
# Keyboards should come with xkb: protocol, or the input methods (ime:, m17n:).
# Examples: xkb:us:intl:eng, ime:ime:zh-t:cangjie
KEYBOARD_PATTERN = re.compile(r'^xkb:\w+:\w*:\w+$|'
                              r'^(ime|m17n|t13n):[\w:-]+$')
# Locale should be a combination of language and location.
# Examples: en-US, ja.
LOCALE_PATTERN = re.compile(r'^(\w+)(-[A-Z0-9]+)?$')


class Enum(frozenset):
  """An enumeration type.

  Usage:
    To create a enum object:
      dummy_enum = Enum(['A', 'B', 'C'])

    To access a enum object, use:
      dummy_enum.A
      dummy_enum.B
  """

  def __getattr__(self, name):
    if name in self:
      return name
    raise AttributeError


class RegionException(Exception):
  """Exception in Region handling."""
  pass


def MakeList(value):
  """Converts the given value to a list.

  Returns:
    A list of elements from "value" if it is iterable (except string);
    otherwise, a list contains only one element.
  """
  if (isinstance(value, collections.Iterable) and
      not isinstance(value, basestring)):
    return list(value)
  return [value]


class Region(object):
  """Comprehensive, standard locale configuration per country/region.

  See :ref:`regions-values` for detailed information on how to set these values.
  """
  # pylint gets confused by some of the docstrings.
  # pylint: disable=C0322

  # ANSI = US-like
  # ISO = UK-like
  # JIS = Japanese
  # KS = Korean (see http://crosbug.com/p/50753 for why this is not used yet)
  # ABNT2 = Brazilian (like ISO but with an extra key to the left of the
  #   right shift key)
  KeyboardMechanicalLayout = Enum(['ANSI', 'ISO', 'JIS', 'KS', 'ABNT2'])

  region_code = None
  """A unique identifier for the region.  This may be a lower-case
  `ISO 3166-1 alpha-2 code
  <http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2>`_ (e.g., ``us``),
  a variant within an alpha-2 entity (e.g., ``ca.fr``), or an
  identifier for a collection of countries or entities (e.g.,
  ``latam-es-419`` or ``nordic``).  See :ref:`region-codes`.

  Note that ``uk`` is not a valid identifier; ``gb`` is used as it is
  the real alpha-2 code for the UK."""

  keyboards = None
  """A list of keyboard layout identifiers (e.g., ``xkb:us:intl:eng``
  or ``m17n:ar``). This field was designed to be the physical keyboard layout
  in the beginning, and then becomes a list of OOBE keyboard selection, which
  then includes non-physical layout elements like input methods (``ime:``).
  To avoid confusion, physical layout is now defined by
  :py:attr:`keyboard_mechanical_layout`, and this is reserved for logical
  layouts.

  This is identical to the legacy VPD ``keyboard_layout`` value."""

  time_zones = None
  """A list of default `tz database time zone
  <http://en.wikipedia.org/wiki/List_of_tz_database_time_zones>`_
  identifiers (e.g., ``America/Los_Angeles``). See
  `timezone_settings.cc <http://goo.gl/WSVUeE>`_ for supported time
  zones.

  This is identical to the legacy VPD ``initial_timezone`` value."""

  locales = None
  """A list of default locale codes (e.g., ``en-US``); see
  `l10n_util.cc <http://goo.gl/kVkht>`_ for supported locales.

  This is identital to the legacy VPD ``initial_locale`` field."""

  keyboard_mechanical_layout = None
  """The keyboard's mechanical layout (``ANSI`` [US-like], ``ISO``
  [UK-like], ``JIS`` [Japanese], ``ABNT2`` [Brazilian] or ``KS`` [Korean])."""

  description = None
  """A human-readable description of the region.
  This defaults to :py:attr:`region_code` if not set."""

  notes = None
  """Implementation notes about the region.  This may be None."""

  numeric_id = None
  """An integer for mapping into Chrome OS HWID.
  Please never change this once it is assigned."""

  regulatory_domain = None
  """An ISO 3166-1 alpha 2 upper-cased two-letter region code for setting
  Wireless regulatory. See crosbug.com/p/38745 for more details.

  When omitted, this will derive from region_code."""

  confirmed = None
  """An optional boolean flag to indicate if the region data is confirmed."""

  FIELDS = ['numeric_id', 'region_code', 'description', 'keyboards',
            'time_zones', 'locales', 'keyboard_mechanical_layout',
            'regulatory_domain']
  """Names of fields that define the region."""

  def __init__(self, region_code, keyboards, time_zones, locales,
               keyboard_mechanical_layout, description=None, notes=None,
               numeric_id=None, regdomain=None):
    """Constructor.

    Args:
      region_code: See :py:attr:`region_code`.
      keyboards: See :py:attr:`keyboards`.  A single string is accepted for
        backward compatibility.
      time_zones: See :py:attr:`time_zones`.
      locales: See :py:attr:`locales`.  A single string is accepted
        for backward compatibility.
      keyboard_mechanical_layout: See :py:attr:`keyboard_mechanical_layout`.
      description: See :py:attr:`description`.
      notes: See :py:attr:`notes`.
      numeric_id: See :py:attr:`numeric_id`.  This must be None or a
        non-negative integer.
      regdomain: See :py:attr:`regulatory_domain`.
    """

    def regdomain_from_region(region):
      if region.find('.') >= 0:
        region = region[:region.index('.')]
      if len(region) == 2:
        return region.upper()
      return None

    # Quick check: should be 'gb', not 'uk'
    if region_code == 'uk':
      raise RegionException("'uk' is not a valid region code (use 'gb')")

    self.region_code = region_code
    self.keyboards = MakeList(keyboards)
    self.time_zones = MakeList(time_zones)
    self.locales = MakeList(locales)
    self.keyboard_mechanical_layout = keyboard_mechanical_layout
    self.description = description or region_code
    self.notes = notes
    self.numeric_id = numeric_id
    self.regulatory_domain = (regdomain or regdomain_from_region(region_code))
    self.confirmed = None

    if self.numeric_id is not None:
      if not isinstance(self.numeric_id, int):
        raise TypeError('Numeric ID is %r but should be an integer' %
                        (self.numeric_id,))
      if self.numeric_id < 0:
        raise ValueError('Numeric ID is %r but should be non-negative' %
                         self.numeric_id)

    for f in (self.keyboards, self.locales):
      assert all(isinstance(x, str) for x in f), (
          'Expected a list of strings, not %r' % f)
    for f in self.keyboards:
      assert KEYBOARD_PATTERN.match(f), (
          'Keyboard pattern %r does not match %r' % (
              f, KEYBOARD_PATTERN.pattern))
    for f in self.locales:
      assert LOCALE_PATTERN.match(f), (
          'Locale %r does not match %r' % (
              f, LOCALE_PATTERN.pattern))
    assert (self.regulatory_domain and
            len(self.regulatory_domain) == 2 and
            self.regulatory_domain.upper() == self.regulatory_domain), (
                'Regulatory domain settings error for region %s' % region_code)

  def __repr__(self):
    return 'Region(%s)' % (', '.join([getattr(self, x) for x in self.FIELDS]))

  def GetFieldsDict(self):
    """Returns a dict of all substantive fields.

    notes and description are excluded.
    """
    return dict((k, getattr(self, k)) for k in self.FIELDS)

_KML = Region.KeyboardMechanicalLayout
REGIONS_LIST = [
    Region(
        'au', 'xkb:us::eng', 'Australia/Sydney', 'en-AU', _KML.ANSI,
        'Australia', None, 1),
    Region(
        'be', 'xkb:be::nld', 'Europe/Brussels', 'en-GB', _KML.ISO,
        'Belgium',
        'Flemish (Belgian Dutch) keyboard; British English language for '
        'neutrality', 2),
    Region(
        'br', 'xkb:br::por', 'America/Sao_Paulo', 'pt-BR', _KML.ABNT2,
        'Brazil (ABNT2)',
        (
            'ABNT2 = ABNT NBR 10346 variant 2. This is the preferred layout '
            'for Brazil. ABNT2 is mostly an ISO layout, but it 12 keys between '
            'the shift keys; see http://goo.gl/twA5tq'), 3),
    Region(
        'br.abnt', 'xkb:br::por', 'America/Sao_Paulo', 'pt-BR',
        _KML.ISO, 'Brazil (ABNT)',
        (
            'Like ABNT2, but lacking the extra key to the left of the right '
            'shift key found in that layout. ABNT2 (the "br" region) is '
            'preferred to this layout'), 4),
    Region(
        'br.usintl', 'xkb:us:intl:eng', 'America/Sao_Paulo', 'pt-BR',
        _KML.ANSI, 'Brazil (US Intl)',
        'Brazil with US International keyboard layout. ABNT2 ("br") and '
        'ABNT1 ("br.abnt1 ") are both preferred to this.', 5),
    Region(
        'ca.ansi', 'xkb:us::eng', 'America/Toronto', 'en-CA', _KML.ANSI,
        'Canada (US keyboard)',
        'Canada with US (ANSI) keyboard. Only allowed if there are separate US '
        'English, Canadian English, and French SKUs. Not for en/fr hybrid ANSI '
        'keyboards; for that you would want ca.hybridansi. See '
        'http://goto/cros-canada', 6),
    Region(
        'ca.fr', 'xkb:ca::fra', 'America/Toronto', 'fr-CA', _KML.ISO,
        'Canada (French keyboard)',
        (
            'Canadian French (ISO) keyboard. The most common configuration for '
            'Canadian French SKUs.  See http://goto/cros-canada'), 7),
    Region(
        'ca.hybrid', 'xkb:ca:eng:eng', 'America/Toronto', 'en-CA',
        _KML.ISO, 'Canada (hybrid ISO)',
        (
            'Canada with hybrid (ISO) xkb:ca:eng:eng + xkb:ca::fra keyboard, '
            'defaulting to English language and keyboard.  Used only if there '
            'needs to be a single SKU for all of Canada.  See '
            'http://goto/cros-canada'), 8),
    Region(
        'ca.hybridansi', 'xkb:ca:eng:eng', 'America/Toronto', 'en-CA',
        _KML.ANSI, 'Canada (hybrid ANSI)',
        (
            'Canada with hybrid (ANSI) xkb:ca:eng:eng + xkb:ca::fra keyboard, '
            'defaulting to English language and keyboard.  Used only if there '
            'needs to be a single SKU for all of Canada.  See '
            'http://goto/cros-canada'), 9),
    Region(
        'ca.multix', 'xkb:ca:multix:fra', 'America/Toronto', 'fr-CA',
        _KML.ISO, 'Canada (multilingual)',
        (
            "Canadian Multilingual keyboard; you probably don't want this. See "
            'http://goto/cros-canada'), 10),
    Region(
        'ch', 'xkb:ch::ger', 'Europe/Zurich', 'de-CH', _KML.ISO,
        'Switzerland',
        'German keyboard', 11),
    Region(
        'de', 'xkb:de::ger', 'Europe/Berlin', 'de', _KML.ISO, 'Germany',
        None, 12),
    Region(
        'es', 'xkb:es::spa', 'Europe/Madrid', 'es', _KML.ISO, 'Spain',
        None, 13),
    Region(
        'fi', 'xkb:fi::fin', 'Europe/Helsinki', 'fi', _KML.ISO, 'Finland',
        None, 14),
    Region(
        'fr', 'xkb:fr::fra', 'Europe/Paris', 'fr', _KML.ISO, 'France',
        None, 15),
    Region(
        'gb', 'xkb:gb:extd:eng', 'Europe/London', 'en-GB', _KML.ISO, 'UK',
        None, 16),
    Region(
        'ie', 'xkb:gb:extd:eng', 'Europe/Dublin', 'en-GB', _KML.ISO,
        'Ireland', None, 17),
    Region(
        'in', 'xkb:us::eng', 'Asia/Calcutta', 'en-US', _KML.ANSI, 'India',
        None, 18),
    Region(
        'it', 'xkb:it::ita', 'Europe/Rome', 'it', _KML.ISO, 'Italy', None,
        19),
    Region(
        'latam-es-419', 'xkb:es::spa', 'America/Mexico_City', 'es-419',
        _KML.ISO, 'Hispanophone Latin America',
        (
            'Spanish-speaking countries in Latin America, using the Iberian '
            '(Spain) Spanish keyboard, which is increasingly dominant in '
            'Latin America. Known to be correct for '
            'Chile, Colombia, Mexico, Peru; '
            'still unconfirmed for other es-419 countries. The old Latin '
            'American layout (xkb:latam::spa) has not been approved; before '
            'using that you must seek review through http://goto/vpdsettings. '
            'See also http://goo.gl/Iffuqh. Note that 419 is the UN M.49 '
            'region code for Latin America'), 20, 'MX'),
    Region(
        'my', 'xkb:us::eng', 'Asia/Kuala_Lumpur', 'ms', _KML.ANSI,
        'Malaysia', None, 21),
    Region(
        'nl', 'xkb:us:intl:eng', 'Europe/Amsterdam', 'nl', _KML.ANSI,
        'Netherlands', None, 22),
    Region(
        'nordic', 'xkb:se::swe', 'Europe/Stockholm', 'en-US', _KML.ISO,
        'Nordics',
        (
            'Unified SKU for Sweden, Norway, and Denmark.  This defaults '
            'to Swedish keyboard layout, but starts with US English language '
            'for neutrality.  Use if there is a single combined SKU for Nordic '
            'countries.'), 23, 'SE'),
    Region(
        'nz', 'xkb:us::eng', 'Pacific/Auckland', 'en-NZ', _KML.ANSI,
        'New Zealand', None, 24),
    Region(
        'ph', 'xkb:us::eng', 'Asia/Manila', 'en-US', _KML.ANSI,
        'Philippines', None, 25),
    Region(
        'ru', ['xkb:us::eng', 'xkb:ru::rus'], 'Europe/Moscow', 'ru', _KML.ANSI,
        'Russia', 'For R31+ only; R30 and earlier must use US keyboard '
        'for login', 26),
    Region(
        'se', 'xkb:se::swe', 'Europe/Stockholm', 'sv', _KML.ISO, 'Sweden',
        (
            'Use this if there separate SKUs for Nordic countries (Sweden, '
            'Norway, and Denmark), or the device is only shipping to Sweden. '
            "If there is a single unified SKU, use 'nordic' instead."), 27),
    Region(
        'sg', 'xkb:us::eng', 'Asia/Singapore', 'en-GB', _KML.ANSI,
        'Singapore', None, 28),
    Region(
        'us', 'xkb:us::eng', 'America/Los_Angeles', 'en-US', _KML.ANSI,
        'United States', None, 29),
    Region(
        'jp', 'xkb:jp::jpn', 'Asia/Tokyo', 'ja', _KML.JIS, 'Japan', None,
        30),
    Region(
        'za', 'xkb:gb:extd:eng', 'Africa/Johannesburg', 'en-ZA',
        _KML.ISO, 'South Africa', None, 31),
    Region(
        'ng', 'xkb:us:intl:eng', 'Africa/Lagos', 'en-GB', _KML.ANSI,
        'Nigeria', None, 32),
    Region(
        'hk',
        ['xkb:us::eng', 'ime:zh-t:cangjie', 'ime:zh-t:quick',
         'ime:zh-t:array', 'ime:zh-t:dayi', 'ime:zh-t:zhuyin',
         'ime:zh-t:pinyin'], 'Asia/Hong_Kong',
        ['zh-TW', 'en-GB', 'zh-CN'], _KML.ANSI, 'Hong Kong', None, 33),
    Region(
        'gcc', ['xkb:us::eng', 'm17n:ar', 't13n:ar'], 'Asia/Riyadh',
        ['ar', 'en-GB'], _KML.ANSI, 'Gulf Cooperation Council (GCC)',
        (
            'GCC is a regional intergovernmental political and economic '
            'union consisting of all Arab states of the Persian Gulf except '
            'for Iraq. Its member states are the Islamic monarchies of '
            'Bahrain, Kuwait, Oman, Qatar, Saudi Arabia, and the United Arab '
            'Emirates.'), 34, 'SA'),
    Region(
        'cz', ['xkb:cz::cze', 'xkb:cz:qwerty:cze'], 'Europe/Prague',
        ['cs', 'en-GB'], _KML.ISO, 'Czech Republic', None, 35),
    Region(
        'th',
        ['xkb:us::eng', 'm17n:th', 'm17n:th_pattajoti', 'm17n:th_tis'],
        'Asia/Bangkok', ['th', 'en-GB'], _KML.ANSI, 'Thailand', None, 36),
    Region(
        'id', 'xkb:us::ind', 'Asia/Jakarta', ['id', 'en-GB'], _KML.ANSI,
        'Indonesia', None, 37),
    Region(
        'tw',
        ['xkb:us::eng', 'ime:zh-t:zhuyin', 'ime:zh-t:array',
         'ime:zh-t:dayi', 'ime:zh-t:cangjie', 'ime:zh-t:quick',
         'ime:zh-t:pinyin'], 'Asia/Taipei', ['zh-TW', 'en-US'],
        _KML.ANSI, 'Taiwan', None, 38),
    Region(
        'pl', 'xkb:pl::pol', 'Europe/Warsaw', ['pl', 'en-GB'],
        _KML.ANSI, 'Poland', None, 39),
    Region(
        'gr', ['xkb:us::eng', 'xkb:gr::gre', 't13n:el'], 'Europe/Athens',
        ['el', 'en-GB'], _KML.ANSI, 'Greece', None, 40),
    Region(
        'il', ['xkb:us::eng', 'xkb:il::heb', 't13n:he'], 'Asia/Jerusalem',
        ['he', 'en-US', 'ar'], _KML.ANSI, 'Israel', None, 41),
    Region(
        'pt', 'xkb:pt::por', 'Europe/Lisbon', ['pt-PT', 'en-GB'],
        _KML.ISO, 'Portugal', None, 42),
    Region(
        'ro', ['xkb:us::eng', 'xkb:ro::rum'], 'Europe/Bucharest',
        ['ro', 'hu', 'de', 'en-GB'], _KML.ISO, 'Romania', None, 43),
    Region(
        'kr', ['xkb:us::eng', 'ime:ko:hangul'], 'Asia/Seoul',
        ['ko', 'en-US'], _KML.ANSI, 'South Korea', None, 44),
    Region(
        'ae', 'xkb:us::eng', 'Asia/Dubai', 'ar', _KML.ANSI, 'UAE', None,
        45),
    Region(
        'za.us', 'xkb:us::eng', 'Africa/Johannesburg', 'en-ZA',
        _KML.ANSI, 'South Africa', None, 46),
    Region(
        'vn',
        ['xkb:us::eng', 'm17n:vi_telex', 'm17n:vi_vni', 'm17n:vi_viqr',
         'm17n:vi_tcvn'], 'Asia/Ho_Chi_Minh',
        ['vi', 'en-GB', 'en-US', 'fr', 'zh-TW'], _KML.ANSI, 'Vietnam',
        None, 47),
    Region(
        'at', ['xkb:de::ger', 'xkb:de:neo:ger'], 'Europe/Vienna',
        ['de', 'en-GB'], _KML.ISO, 'Austria', None, 48),
    Region(
        'sk', ['xkb:us::eng', 'xkb:sk::slo'], 'Europe/Bratislava',
        ['sk', 'hu', 'cs', 'en-GB'], _KML.ISO, 'Slovakia', None, 49),
    Region(
        'ch.usintl', 'xkb:us:intl:eng', 'Europe/Zurich', 'en-US',
        _KML.ANSI, 'Switzerland (US Intl)',
        'Switzerland with US International keyboard layout.', 50),
    Region(
        'pe', 'xkb:latam::spa', 'America/Lima', 'es-PE',
        _KML.ANSI, 'Peru', None, 115),
    Region(
        'sa', 'xkb:us::eng', 'Asia/Riyadh', ['ar-SA', 'en'], _KML.ANSI,
        'Saudi Arabia', None, 128),
    Region(
        'mx', 'xkb:latam::spa', 'America/Mexico_City', 'es-MX', _KML.ANSI,
        'Mexico', None, 154),
    Region(
        'cl', 'xkb:latam::spa', 'America/Santiago', 'es-CL', _KML.ANSI, 'Chile',
        None, 176),
    Region(
        'kw', ['xkb:us::eng', 'm17n:ar', 't13n:ar'], 'Asia/Kuwait',
        ['ar-KW', 'en'], _KML.ANSI, 'Kuwait', None, 201),
    Region(
        'uy', 'xkb:latam::spa', 'America/Montevideo', 'es-UY', _KML.ANSI,
        'Uruguay', None, 216),
    Region(
        'tr', ['xkb:tr::tur', 'xkb:tr:f:tur'], 'Europe/Istanbul',
        ['tr', 'en-GB'], _KML.ISO, 'Turkey', None, 224),
    Region(
        'ar', 'xkb:latam::spa', 'America/Argentina/Buenos_Aires',
        ['es-AR'], _KML.ANSI, 'Argentina', None, 251)]

"""A list of :py:class:`regions.Region` objects for
all **confirmed** regions.  A confirmed region is a region whose
properties are known to be correct and valid: all contents (locale / timezone /
keyboards) are supported by Chrome."""


UNCONFIRMED_REGIONS_LIST = [
    Region(
        'bd', 'xkb:bd::ben', 'Asia/Dhaka', ['bn-BD', 'en'], _KML.ANSI,
        'Bangladesh', None, 51),
    Region(
        'bf', 'xkb:bf::fra', 'Africa/Ouagadougou', 'fr-BF', _KML.ANSI,
        'Burkina Faso', None, 52),
    Region(
        'bg', ['xkb:bg::bul', 'xkb:bg:phonetic:bul'], 'Europe/Sofia',
        ['bg', 'tr', 'en-GB'], _KML.ANSI, 'Bulgaria', None, 53),
    Region(
        'ba', 'xkb:ba::bos', 'Europe/Sarajevo', ['bs', 'hr-BA', 'sr-BA'],
        _KML.ANSI, 'Bosnia and Herzegovina', None, 54),
    Region(
        'bb', 'xkb:bb::eng', 'America/Barbados', 'en-BB', _KML.ANSI,
        'Barbados', None, 55),
    Region(
        'wf', 'xkb:us::eng', 'Pacific/Wallis', ['wls', 'fud', 'fr-WF'],
        _KML.ANSI, 'Wallis and Futuna', None, 56),
    Region(
        'bl', 'xkb:bl::fra', 'America/St_Barthelemy', 'fr', _KML.ANSI,
        'Saint Barthelemy', None, 57),
    Region(
        'bm', 'xkb:bm::eng', 'Atlantic/Bermuda', ['en-BM', 'pt'],
        _KML.ANSI, 'Bermuda', None, 58),
    Region(
        'bn', 'xkb:bn::msa', 'Asia/Brunei', ['ms-BN', 'en-BN'],
        _KML.ANSI, 'Brunei', None, 59),
    Region(
        'bo', 'xkb:bo::spa', 'America/La_Paz', ['es-BO', 'qu', 'ay'],
        _KML.ANSI, 'Bolivia', None, 60),
    Region(
        'bh', 'xkb:bh::ara', 'Asia/Bahrain', ['ar-BH', 'en', 'fa', 'ur'],
        _KML.ANSI, 'Bahrain', None, 61),
    Region(
        'bi', 'xkb:bi::fra', 'Africa/Bujumbura', ['fr-BI', 'rn'],
        _KML.ANSI, 'Burundi', None, 62),
    Region(
        'bj', 'xkb:bj::fra', 'Africa/Porto-Novo', 'fr-BJ', _KML.ANSI,
        'Benin', None, 63),
    Region(
        'bt', 'xkb:bt::dzo', 'Asia/Thimphu', 'dz', _KML.ANSI, 'Bhutan',
        None, 64),
    Region(
        'jm', 'xkb:jm::eng', 'America/Jamaica', 'en-JM', _KML.ANSI,
        'Jamaica', None, 65),
    Region(
        'bw', 'xkb:bw::eng', 'Africa/Gaborone', ['en-BW', 'tn-BW'],
        _KML.ANSI, 'Botswana', None, 66),
    Region(
        'ws', 'xkb:ws::smo', 'Pacific/Apia', ['sm', 'en-WS'], _KML.ANSI,
        'Samoa', None, 67),
    Region(
        'bq', 'xkb:bq::nld', 'America/Kralendijk', ['nl', 'pap', 'en'],
        _KML.ANSI, 'Bonaire, Saint Eustatius and Saba ', None, 68),
    Region(
        'bs', 'xkb:bs::eng', 'America/Nassau', 'en-BS', _KML.ANSI,
        'Bahamas', None, 69),
    Region(
        'je', 'xkb:je::eng', 'Europe/Jersey', ['en', 'pt'], _KML.ANSI,
        'Jersey', None, 70),
    Region(
        'by', 'xkb:by::bel', 'Europe/Minsk', ['be', 'ru'], _KML.ANSI,
        'Belarus', None, 71),
    Region(
        'bz', 'xkb:bz::eng', 'America/Belize', ['en-BZ', 'es'],
        _KML.ANSI, 'Belize', None, 72),
    Region(
        'rw', 'xkb:rw::kin', 'Africa/Kigali',
        ['rw', 'en-RW', 'fr-RW', 'sw'], _KML.ANSI, 'Rwanda', None, 73),
    Region(
        'rs', 'xkb:rs::srp', 'Europe/Belgrade', ['sr', 'hu', 'bs', 'rom'],
        _KML.ANSI, 'Serbia', None, 74),
    Region(
        'tl', 'xkb:us::eng', 'Asia/Dili', ['tet', 'pt-TL', 'id', 'en'],
        _KML.ANSI, 'East Timor', None, 75),
    Region(
        're', 'xkb:re::fra', 'Indian/Reunion', 'fr-RE', _KML.ANSI,
        'Reunion', None, 76),
    Region(
        'tm', 'xkb:tm::tuk', 'Asia/Ashgabat', ['tk', 'ru', 'uz'],
        _KML.ANSI, 'Turkmenistan', None, 77),
    Region(
        'tj', 'xkb:tj::tgk', 'Asia/Dushanbe', ['tg', 'ru'], _KML.ANSI,
        'Tajikistan', None, 78),
    Region(
        'tk', 'xkb:us::eng', 'Pacific/Fakaofo', ['tkl', 'en-TK'],
        _KML.ANSI, 'Tokelau', None, 79),
    Region(
        'gw', 'xkb:gw::por', 'Africa/Bissau', ['pt-GW', 'pov'],
        _KML.ANSI, 'Guinea-Bissau', None, 80),
    Region(
        'gu', 'xkb:gu::eng', 'Pacific/Guam', ['en-GU', 'ch-GU'],
        _KML.ANSI, 'Guam', None, 81),
    Region(
        'gt', 'xkb:gt::spa', 'America/Guatemala', 'es-GT', _KML.ANSI,
        'Guatemala', None, 82),
    Region(
        'gs', 'xkb:gs::eng', 'Atlantic/South_Georgia', 'en', _KML.ANSI,
        'South Georgia and the South Sandwich Islands', None, 83),
    Region(
        'gq', 'xkb:gq::spa', 'Africa/Malabo', ['es-GQ', 'fr'],
        _KML.ANSI, 'Equatorial Guinea', None, 84),
    Region(
        'gp', 'xkb:gp::fra', 'America/Guadeloupe', 'fr-GP', _KML.ANSI,
        'Guadeloupe', None, 85),
    Region(
        'gy', 'xkb:gy::eng', 'America/Guyana', 'en-GY', _KML.ANSI,
        'Guyana', None, 86),
    Region(
        'gg', 'xkb:gg::eng', 'Europe/Guernsey', ['en', 'fr'], _KML.ANSI,
        'Guernsey', None, 87),
    Region(
        'gf', 'xkb:gf::fra', 'America/Cayenne', 'fr-GF', _KML.ANSI,
        'French Guiana', None, 88),
    Region(
        'ge', 'xkb:ge::geo', 'Asia/Tbilisi', 'ka', _KML.ANSI, 'Georgia', None,
        89),
    Region(
        'gd', 'xkb:gd::eng', 'America/Grenada', 'en-GD', _KML.ANSI,
        'Grenada', None, 90),
    Region(
        'ga', 'xkb:ga::fra', 'Africa/Libreville', 'fr-GA', _KML.ANSI,
        'Gabon', None, 91),
    Region(
        'sv', 'xkb:sv::spa', 'America/El_Salvador', 'es-SV', _KML.ANSI,
        'El Salvador', None, 92),
    Region(
        'gn', 'xkb:gn::fra', 'Africa/Conakry', 'fr-GN', _KML.ANSI,
        'Guinea', None, 93),
    Region(
        'gm', 'xkb:gm::eng', 'Africa/Banjul',
        ['en-GM', 'mnk', 'wof', 'wo', 'ff'], _KML.ANSI, 'Gambia', None, 94),
    Region(
        'gl', 'xkb:gl::kal',
        ['America/Godthab', 'America/Danmarkshavn',
         'America/Scoresbysund', 'America/Thule'], ['kl', 'da-GL', 'en'],
        _KML.ANSI, 'Greenland', None, 95),
    Region(
        'gi', 'xkb:gi::eng', 'Europe/Gibraltar',
        ['en-GI', 'es', 'it', 'pt'], _KML.ANSI, 'Gibraltar', None, 96),
    Region(
        'gh', 'xkb:gh::eng', 'Africa/Accra', ['en-GH', 'ak', 'ee', 'tw'],
        _KML.ANSI, 'Ghana', None, 97),
    Region(
        'om', 'xkb:om::ara', 'Asia/Muscat', ['ar-OM', 'en', 'bal', 'ur'],
        _KML.ANSI, 'Oman', None, 98),
    Region(
        'tn', 'xkb:tn::ara', 'Africa/Tunis', ['ar-TN', 'fr'], _KML.ANSI,
        'Tunisia', None, 99),
    Region(
        'jo', 'xkb:jo::ara', 'Asia/Amman', ['ar-JO', 'en'], _KML.ANSI,
        'Jordan', None, 100),
    Region(
        'hr', 'xkb:hr::scr', 'Europe/Zagreb', ['hr', 'en-GB'],
        _KML.ISO, 'Croatia', None, 101),
    Region(
        'ht', 'xkb:ht::hat', 'America/Port-au-Prince', ['ht', 'fr-HT'],
        _KML.ANSI, 'Haiti', None, 102),
    Region(
        'hu', ['xkb:us::eng', 'xkb:hu::hun'], 'Europe/Budapest',
        ['hu', 'en-GB'], _KML.ISO, 'Hungary', None, 103),
    Region(
        'hn', 'xkb:hn::spa', 'America/Tegucigalpa', 'es-HN', _KML.ANSI,
        'Honduras', None, 104),
    Region(
        've', 'xkb:ve::spa', 'America/Caracas', 'es-VE', _KML.ANSI,
        'Venezuela', None, 105),
    Region(
        'pr', 'xkb:pr::eng', 'America/Puerto_Rico', ['en-PR', 'es-PR'],
        _KML.ANSI, 'Puerto Rico', None, 106),
    Region(
        'ps', 'xkb:ps::ara', ['Asia/Gaza', 'Asia/Hebron'], 'ar-PS',
        _KML.ANSI, 'Palestinian Territory', None, 107),
    Region(
        'pw', 'xkb:us::eng', 'Pacific/Palau',
        ['pau', 'sov', 'en-PW', 'tox', 'ja', 'fil', 'zh'], _KML.ANSI,
        'Palau', None, 108),
    Region(
        'sj', 'xkb:sj::nor', 'Arctic/Longyearbyen', ['no', 'ru'],
        _KML.ANSI, 'Svalbard and Jan Mayen', None, 109),
    Region(
        'py', 'xkb:py::spa', 'America/Asuncion', ['es-PY', 'gn'],
        _KML.ANSI, 'Paraguay', None, 110),
    Region(
        'iq', 'xkb:iq::ara', 'Asia/Baghdad', ['ar-IQ', 'ku', 'hy'],
        _KML.ANSI, 'Iraq', None, 111),
    Region(
        'pa', 'xkb:pa::spa', 'America/Panama', ['es-PA', 'en'],
        _KML.ANSI, 'Panama', None, 112),
    Region(
        'pf', 'xkb:pf::fra',
        ['Pacific/Tahiti', 'Pacific/Marquesas', 'Pacific/Gambier'],
        ['fr-PF', 'ty'], _KML.ANSI, 'French Polynesia', None, 113),
    Region(
        'pg', 'xkb:pg::eng',
        ['Pacific/Port_Moresby', 'Pacific/Bougainville'],
        ['en-PG', 'ho', 'meu', 'tpi'], _KML.ANSI, 'Papua New Guinea', None,
        114),
    Region(
        'pk', 'xkb:pk::urd', 'Asia/Karachi',
        ['ur-PK', 'en-PK', 'pa', 'sd', 'ps', 'brh'], _KML.ANSI,
        'Pakistan', None, 116),
    Region(
        'pn', 'xkb:pn::eng', 'Pacific/Pitcairn', 'en-PN', _KML.ANSI,
        'Pitcairn', None, 117),
    Region(
        'pm', 'xkb:pm::fra', 'America/Miquelon', 'fr-PM', _KML.ANSI,
        'Saint Pierre and Miquelon', None, 118),
    Region(
        'zm', 'xkb:zm::eng', 'Africa/Lusaka',
        ['en-ZM', 'bem', 'loz', 'lun', 'lue', 'ny', 'toi'], _KML.ANSI,
        'Zambia', None, 119),
    Region(
        'eh', 'xkb:eh::ara', 'Africa/El_Aaiun', ['ar', 'mey'],
        _KML.ANSI, 'Western Sahara', None, 120),
    Region(
        'ee', 'xkb:ee::est', 'Europe/Tallinn', ['et', 'ru', 'en-GB'], _KML.ISO,
        'Estonia', None, 121),
    Region(
        'eg', 'xkb:eg::ara', 'Africa/Cairo', ['ar-EG', 'en', 'fr'],
        _KML.ANSI, 'Egypt', None, 122),
    Region(
        'ec', 'xkb:ec::spa', ['America/Guayaquil', 'Pacific/Galapagos'],
        'es-EC', _KML.ANSI, 'Ecuador', None, 123),
    Region(
        'sb', 'xkb:sb::eng', 'Pacific/Guadalcanal', ['en-SB', 'tpi'],
        _KML.ANSI, 'Solomon Islands', None, 124),
    Region(
        'et', 'xkb:et::amh', 'Africa/Addis_Ababa',
        ['am', 'en-ET', 'om-ET', 'ti-ET', 'so-ET', 'sid'], _KML.ANSI,
        'Ethiopia', None, 125),
    Region(
        'so', 'xkb:so::som', 'Africa/Mogadishu',
        ['so-SO', 'ar-SO', 'it', 'en-SO'], _KML.ANSI, 'Somalia', None, 126),
    Region(
        'zw', 'xkb:zw::eng', 'Africa/Harare', ['en-ZW', 'sn', 'nr', 'nd'],
        _KML.ANSI, 'Zimbabwe', None, 127),
    Region(
        'er', 'xkb:er::aar', 'Africa/Asmara',
        ['aa-ER', 'ar', 'tig', 'kun', 'ti-ER'], _KML.ANSI, 'Eritrea', None,
        129),
    Region(
        'me', 'xkb:me::srp', 'Europe/Podgorica',
        ['sr', 'hu', 'bs', 'sq', 'hr', 'rom'], _KML.ANSI, 'Montenegro',
        None, 130),
    Region(
        'md', 'xkb:md::ron', 'Europe/Chisinau', ['ro', 'ru', 'gag', 'tr'],
        _KML.ANSI, 'Moldova', None, 131),
    Region(
        'mg', 'xkb:mg::fra', 'Indian/Antananarivo', ['fr-MG', 'mg'],
        _KML.ANSI, 'Madagascar', None, 132),
    Region(
        'mf', 'xkb:mf::fra', 'America/Marigot', 'fr', _KML.ANSI,
        'Saint Martin', None, 133),
    Region(
        'ma', 'xkb:ma::ara', 'Africa/Casablanca', ['ar-MA', 'fr'],
        _KML.ANSI, 'Morocco', None, 134),
    Region(
        'mc', 'xkb:mc::fra', 'Europe/Monaco', ['fr-MC', 'en', 'it'],
        _KML.ANSI, 'Monaco', None, 135),
    Region(
        'uz', 'xkb:uz::uzb', ['Asia/Samarkand', 'Asia/Tashkent'],
        ['uz', 'ru', 'tg'], _KML.ANSI, 'Uzbekistan', None, 136),
    Region(
        'mm', 'xkb:mm::mya', 'Asia/Rangoon', 'my', _KML.ANSI, 'Myanmar',
        None, 137),
    Region(
        'ml', 'xkb:ml::fra', 'Africa/Bamako', ['fr-ML', 'bm'],
        _KML.ANSI, 'Mali', None, 138),
    Region(
        'mo', 'xkb:mo::zho', 'Asia/Macau', ['zh', 'zh-MO', 'pt'],
        _KML.ANSI, 'Macao', None, 139),
    Region(
        'mn', 'xkb:mn::mon',
        ['Asia/Ulaanbaatar', 'Asia/Hovd', 'Asia/Choibalsan'],
        ['mn', 'ru'], _KML.ANSI, 'Mongolia', None, 140),
    Region(
        'mh', 'xkb:mh::mah', ['Pacific/Majuro', 'Pacific/Kwajalein'],
        ['mh', 'en-MH'], _KML.ANSI, 'Marshall Islands', None, 141),
    Region(
        'mk', 'xkb:mk::mkd', 'Europe/Skopje',
        ['mk', 'sq', 'tr', 'rmm', 'sr'], _KML.ANSI, 'Macedonia', None, 142),
    Region(
        'mu', 'xkb:mu::eng', 'Indian/Mauritius', ['en-MU', 'bho', 'fr'],
        _KML.ANSI, 'Mauritius', None, 143),
    Region(
        'mt', ['xkb:us::eng', 'xkb:mt::mlt'], 'Europe/Malta', ['mt', 'en-GB'],
        _KML.ISO, 'Malta', None, 144),
    Region(
        'mw', 'xkb:mw::nya', 'Africa/Blantyre',
        ['ny', 'yao', 'tum', 'swk'], _KML.ANSI, 'Malawi', None, 145),
    Region(
        'mv', 'xkb:mv::div', 'Indian/Maldives', ['dv', 'en'], _KML.ANSI,
        'Maldives', None, 146),
    Region(
        'mq', 'xkb:mq::fra', 'America/Martinique', 'fr-MQ', _KML.ANSI,
        'Martinique', None, 147),
    Region(
        'mp', 'xkb:us::eng', 'Pacific/Saipan',
        ['fil', 'tl', 'zh', 'ch-MP', 'en-MP'], _KML.ANSI,
        'Northern Mariana Islands', None, 148),
    Region(
        'ms', 'xkb:ms::eng', 'America/Montserrat', 'en-MS', _KML.ANSI,
        'Montserrat', None, 149),
    Region(
        'mr', 'xkb:mr::ara', 'Africa/Nouakchott',
        ['ar-MR', 'fuc', 'snk', 'fr', 'mey', 'wo'], _KML.ANSI,
        'Mauritania', None, 150),
    Region(
        'im', 'xkb:im::eng', 'Europe/Isle_of_Man', ['en', 'gv'],
        _KML.ANSI, 'Isle of Man', None, 151),
    Region(
        'ug', 'xkb:ug::eng', 'Africa/Kampala',
        ['en-UG', 'lg', 'sw', 'ar'], _KML.ANSI, 'Uganda', None, 152),
    Region(
        'tz', 'xkb:tz::swa', 'Africa/Dar_es_Salaam',
        ['sw-TZ', 'en', 'ar'], _KML.ANSI, 'Tanzania', None, 153),
    Region(
        'io', 'xkb:io::eng', 'Indian/Chagos', 'en-IO', _KML.ANSI,
        'British Indian Ocean Territory', None, 155),
    Region(
        'sh', 'xkb:sh::eng', 'Atlantic/St_Helena', 'en-SH', _KML.ANSI,
        'Saint Helena', None, 156),
    Region(
        'fj', 'xkb:fj::eng', 'Pacific/Fiji', ['en-FJ', 'fj'], _KML.ANSI,
        'Fiji', None, 157),
    Region(
        'fk', 'xkb:fk::eng', 'Atlantic/Stanley', 'en-FK', _KML.ANSI,
        'Falkland Islands', None, 158),
    Region(
        'fm', 'xkb:fm::eng',
        ['Pacific/Chuuk', 'Pacific/Pohnpei', 'Pacific/Kosrae'],
        ['en-FM', 'chk', 'pon', 'yap', 'kos', 'uli', 'woe', 'nkr', 'kpg'],
        _KML.ANSI, 'Micronesia', None, 159),
    Region(
        'fo', 'xkb:fo::fao', 'Atlantic/Faroe', ['fo', 'da-FO'],
        _KML.ANSI, 'Faroe Islands', None, 160),
    Region(
        'ni', 'xkb:ni::spa', 'America/Managua', ['es-NI', 'en'],
        _KML.ANSI, 'Nicaragua', None, 161),
    Region(
        'no', 'xkb:no::nor', 'Europe/Oslo',
        ['no', 'nb', 'nn', 'se', 'fi'], _KML.ISO, 'Norway', None, 162),
    Region(
        'na', 'xkb:na::eng', 'Africa/Windhoek',
        ['en-NA', 'af', 'de', 'hz', 'naq'], _KML.ANSI, 'Namibia', None, 163),
    Region(
        'vu', 'xkb:vu::bis', 'Pacific/Efate', ['bi', 'en-VU', 'fr-VU'],
        _KML.ANSI, 'Vanuatu', None, 164),
    Region(
        'nc', 'xkb:nc::fra', 'Pacific/Noumea', 'fr-NC', _KML.ANSI,
        'New Caledonia', None, 165),
    Region(
        'ne', 'xkb:ne::fra', 'Africa/Niamey',
        ['fr-NE', 'ha', 'kr', 'dje'], _KML.ANSI, 'Niger', None, 166),
    Region(
        'nf', 'xkb:nf::eng', 'Pacific/Norfolk', 'en-NF', _KML.ANSI,
        'Norfolk Island', None, 167),
    Region(
        'np', 'xkb:np::nep', 'Asia/Kathmandu', ['ne', 'en'], _KML.ANSI,
        'Nepal', None, 168),
    Region(
        'nr', 'xkb:nr::nau', 'Pacific/Nauru', ['na', 'en-NR'],
        _KML.ANSI, 'Nauru', None, 169),
    Region(
        'nu', 'xkb:us::eng', 'Pacific/Niue', ['niu', 'en-NU'],
        _KML.ANSI, 'Niue', None, 170),
    Region(
        'ck', 'xkb:ck::eng', 'Pacific/Rarotonga', ['en-CK', 'mi'],
        _KML.ANSI, 'Cook Islands', None, 171),
    Region(
        'ci', 'xkb:ci::fra', 'Africa/Abidjan', 'fr-CI', _KML.ANSI,
        'Ivory Coast', None, 172),
    Region(
        'co', 'xkb:co::spa', 'America/Bogota', 'es-CO', _KML.ANSI,
        'Colombia', None, 173),
    Region(
        'cn', 'xkb:us::eng', 'Asia/Shanghai', 'zh-CN', _KML.ANSI, 'China',
        None, 174),
    Region(
        'cm', 'xkb:cm::eng', 'Africa/Douala', ['en-CM', 'fr-CM'],
        _KML.ANSI, 'Cameroon', None, 175),
    Region(
        'cc', 'xkb:cc::msa', 'Indian/Cocos', ['ms-CC', 'en'], _KML.ANSI,
        'Cocos Islands', None, 177),
    Region(
        'cg', 'xkb:cg::fra', 'Africa/Brazzaville',
        ['fr-CG', 'kg', 'ln-CG'], _KML.ANSI, 'Republic of the Congo', None,
        178),
    Region(
        'cf', 'xkb:cf::fra', 'Africa/Bangui', ['fr-CF', 'sg', 'ln', 'kg'],
        _KML.ANSI, 'Central African Republic', None, 179),
    Region(
        'cd', 'xkb:cd::fra', ['Africa/Kinshasa', 'Africa/Lubumbashi'],
        ['fr-CD', 'ln', 'kg'], _KML.ANSI,
        'Democratic Republic of the Congo', None, 180),
    Region(
        'cy', 'xkb:cy::ell', 'Asia/Nicosia', ['el-CY', 'tr-CY', 'en'],
        _KML.ANSI, 'Cyprus', None, 181),
    Region(
        'cx', 'xkb:cx::eng', 'Indian/Christmas', ['en', 'zh', 'ms-CC'],
        _KML.ANSI, 'Christmas Island', None, 182),
    Region(
        'cr', 'xkb:cr::spa', 'America/Costa_Rica', ['es-CR', 'en'],
        _KML.ANSI, 'Costa Rica', None, 183),
    Region(
        'cw', 'xkb:cw::nld', 'America/Curacao', ['nl', 'pap'],
        _KML.ANSI, 'Curacao', None, 184),
    Region(
        'cv', 'xkb:cv::por', 'Atlantic/Cape_Verde', 'pt-CV', _KML.ANSI,
        'Cape Verde', None, 185),
    Region(
        'cu', 'xkb:cu::spa', 'America/Havana', 'es-CU', _KML.ANSI, 'Cuba',
        None, 186),
    Region(
        'sz', 'xkb:sz::eng', 'Africa/Mbabane', ['en-SZ', 'ss-SZ'],
        _KML.ANSI, 'Swaziland', None, 187),
    Region(
        'sy', 'xkb:sy::ara', 'Asia/Damascus',
        ['ar-SY', 'ku', 'hy', 'arc', 'fr', 'en'], _KML.ANSI, 'Syria', None,
        188),
    Region(
        'sx', 'xkb:sx::nld', 'America/Lower_Princes', ['nl', 'en'],
        _KML.ANSI, 'Sint Maarten', None, 189),
    Region(
        'kg', 'xkb:kg::kir', 'Asia/Bishkek', ['ky', 'uz', 'ru'],
        _KML.ANSI, 'Kyrgyzstan', None, 190),
    Region(
        'ke', 'xkb:ke::eng', 'Africa/Nairobi', ['en-KE', 'sw-KE'],
        _KML.ANSI, 'Kenya', None, 191),
    Region(
        'ss', 'xkb:ss::eng', 'Africa/Juba', 'en', _KML.ANSI,
        'South Sudan', None, 192),
    Region(
        'sr', 'xkb:sr::nld', 'America/Paramaribo',
        ['nl-SR', 'en', 'srn', 'hns', 'jv'], _KML.ANSI, 'Suriname', None, 193),
    Region(
        'ki', 'xkb:ki::eng',
        ['Pacific/Tarawa', 'Pacific/Enderbury', 'Pacific/Kiritimati'],
        ['en-KI', 'gil'], _KML.ANSI, 'Kiribati', None, 194),
    Region(
        'kh', 'xkb:kh::khm', 'Asia/Phnom_Penh', ['km', 'fr', 'en'],
        _KML.ANSI, 'Cambodia', None, 195),
    Region(
        'kn', 'xkb:kn::eng', 'America/St_Kitts', 'en-KN', _KML.ANSI,
        'Saint Kitts and Nevis', None, 196),
    Region(
        'km', 'xkb:km::ara', 'Indian/Comoro', ['ar', 'fr-KM'],
        _KML.ANSI, 'Comoros', None, 197),
    Region(
        'st', 'xkb:st::por', 'Africa/Sao_Tome', 'pt-ST', _KML.ANSI,
        'Sao Tome and Principe', None, 198),
    Region(
        'si', 'xkb:si::slv', 'Europe/Ljubljana',
        ['sl', 'hu', 'it', 'sr', 'de', 'hr', 'en-GB'], _KML.ISO,
        'Slovenia', None, 199),
    Region(
        'kp', 'xkb:kp::kor', 'Asia/Pyongyang', 'ko-KP', _KML.ANSI,
        'North Korea', None, 200),
    Region(
        'sn', 'xkb:sn::fra', 'Africa/Dakar',
        ['fr-SN', 'wo', 'fuc', 'mnk'], _KML.ANSI, 'Senegal', None, 202),
    Region(
        'sm', 'xkb:sm::ita', 'Europe/San_Marino', 'it-SM', _KML.ANSI,
        'San Marino', None, 203),
    Region(
        'sl', 'xkb:sl::eng', 'Africa/Freetown', ['en-SL', 'men', 'tem'],
        _KML.ANSI, 'Sierra Leone', None, 204),
    Region(
        'sc', 'xkb:sc::eng', 'Indian/Mahe', ['en-SC', 'fr-SC'],
        _KML.ANSI, 'Seychelles', None, 205),
    Region(
        'kz', 'xkb:kz::kaz',
        ['Asia/Almaty', 'Asia/Qyzylorda', 'Asia/Aqtobe', 'Asia/Aqtau',
         'Asia/Oral'], ['kk', 'ru'], _KML.ANSI, 'Kazakhstan', None, 206),
    Region(
        'ky', 'xkb:ky::eng', 'America/Cayman', 'en-KY', _KML.ANSI,
        'Cayman Islands', None, 207),
    Region(
        'sd', 'xkb:sd::ara', 'Africa/Khartoum', ['ar-SD', 'en', 'fia'],
        _KML.ANSI, 'Sudan', None, 208),
    Region(
        'do', 'xkb:do::spa', 'America/Santo_Domingo', 'es-DO',
        _KML.ANSI, 'Dominican Republic', None, 209),
    Region(
        'dm', 'xkb:dm::eng', 'America/Dominica', 'en-DM', _KML.ANSI,
        'Dominica', None, 210),
    Region(
        'dj', 'xkb:dj::fra', 'Africa/Djibouti',
        ['fr-DJ', 'ar', 'so-DJ', 'aa'], _KML.ANSI, 'Djibouti', None, 211),
    Region(
        'dk', 'xkb:dk::dan', 'Europe/Copenhagen',
        ['da-DK', 'en', 'fo', 'de-DK'], _KML.ISO, 'Denmark', None, 212),
    Region(
        'vg', 'xkb:vg::eng', 'America/Tortola', 'en-VG', _KML.ANSI,
        'British Virgin Islands', None, 213),
    Region(
        'ye', 'xkb:ye::ara', 'Asia/Aden', 'ar-YE', _KML.ANSI, 'Yemen',
        None, 214),
    Region(
        'dz', 'xkb:dz::ara', 'Africa/Algiers', 'ar-DZ', _KML.ANSI,
        'Algeria', None, 215),
    Region(
        'yt', 'xkb:yt::fra', 'Indian/Mayotte', 'fr-YT', _KML.ANSI,
        'Mayotte', None, 217),
    Region(
        'um', 'xkb:um::eng',
        ['Pacific/Johnston', 'Pacific/Midway', 'Pacific/Wake'], 'en-UM',
        _KML.ANSI, 'United States Minor Outlying Islands', None, 218),
    Region(
        'lb', 'xkb:lb::ara', 'Asia/Beirut',
        ['ar-LB', 'fr-LB', 'en', 'hy'], _KML.ANSI, 'Lebanon', None, 219),
    Region(
        'lc', 'xkb:lc::eng', 'America/St_Lucia', 'en-LC', _KML.ANSI,
        'Saint Lucia', None, 220),
    Region(
        'la', 'xkb:la::lao', 'Asia/Vientiane', ['lo', 'fr', 'en'],
        _KML.ANSI, 'Laos', None, 221),
    Region(
        'tv', 'xkb:us::eng', 'Pacific/Funafuti',
        ['tvl', 'en', 'sm', 'gil'], _KML.ANSI, 'Tuvalu', None, 222),
    Region(
        'tt', 'xkb:tt::eng', 'America/Port_of_Spain',
        ['en-TT', 'hns', 'fr', 'es', 'zh'], _KML.ANSI,
        'Trinidad and Tobago', None, 223),
    Region(
        'lk', 'xkb:lk::sin', 'Asia/Colombo', ['si', 'ta', 'en'],
        _KML.ANSI, 'Sri Lanka', None, 225),
    Region(
        'li', 'xkb:ch::ger', 'Europe/Vaduz', ['de', 'en-GB'], _KML.ISO,
        'Liechtenstein', None, 226),
    Region(
        'lv', 'xkb:lv:apostrophe:lav', 'Europe/Riga',
        ['lv', 'lt', 'ru', 'en-GB'], _KML.ISO, 'Latvia', None, 227),
    Region(
        'to', 'xkb:to::ton', 'Pacific/Tongatapu', ['to', 'en-TO'],
        _KML.ANSI, 'Tonga', None, 228),
    Region(
        'lt', 'xkb:lt::lit', 'Europe/Vilnius', ['lt', 'ru', 'pl', 'en-GB'],
        _KML.ISO, 'Lithuania', None, 229),
    Region(
        'lu', 'xkb:lu::ltz', 'Europe/Luxembourg',
        ['lb', 'de-LU', 'fr-LU'], _KML.ANSI, 'Luxembourg', None, 230),
    Region(
        'lr', 'xkb:lr::eng', 'Africa/Monrovia', 'en-LR', _KML.ANSI,
        'Liberia', None, 231),
    Region(
        'ls', 'xkb:ls::eng', 'Africa/Maseru', ['en-LS', 'st', 'zu', 'xh'],
        _KML.ANSI, 'Lesotho', None, 232),
    Region(
        'tf', 'xkb:tf::fra', 'Indian/Kerguelen', 'fr', _KML.ANSI,
        'French Southern Territories', None, 233),
    Region(
        'tg', 'xkb:tg::fra', 'Africa/Lome',
        ['fr-TG', 'ee', 'hna', 'kbp', 'dag', 'ha'], _KML.ANSI, 'Togo',
        None, 234),
    Region(
        'td', 'xkb:td::fra', 'Africa/Ndjamena', ['fr-TD', 'ar-TD', 'sre'],
        _KML.ANSI, 'Chad', None, 235),
    Region(
        'tc', 'xkb:tc::eng', 'America/Grand_Turk', 'en-TC', _KML.ANSI,
        'Turks and Caicos Islands', None, 236),
    Region(
        'ly', 'xkb:ly::ara', 'Africa/Tripoli', ['ar-LY', 'it', 'en'],
        _KML.ANSI, 'Libya', None, 237),
    Region(
        'va', 'xkb:va::lat', 'Europe/Vatican', ['la', 'it', 'fr'],
        _KML.ANSI, 'Vatican', None, 238),
    Region(
        'vc', 'xkb:vc::eng', 'America/St_Vincent', ['en-VC', 'fr'],
        _KML.ANSI, 'Saint Vincent and the Grenadines', None, 239),
    Region(
        'ad', 'xkb:ad::cat', 'Europe/Andorra', 'ca', _KML.ANSI, 'Andorra',
        None, 240),
    Region(
        'ag', 'xkb:ag::eng', 'America/Antigua', 'en-AG', _KML.ANSI,
        'Antigua and Barbuda', None, 241),
    Region(
        'af', 'xkb:af::fas', 'Asia/Kabul', ['fa-AF', 'ps', 'uz-AF', 'tk'],
        _KML.ANSI, 'Afghanistan', None, 242),
    Region(
        'ai', 'xkb:ai::eng', 'America/Anguilla', 'en-AI', _KML.ANSI,
        'Anguilla', None, 243),
    Region(
        'vi', 'xkb:vi::eng', 'America/St_Thomas', 'en-VI', _KML.ANSI,
        'U.S. Virgin Islands', None, 244),
    Region(
        'is', 'xkb:is::ice', 'Atlantic/Reykjavik',
        ['is', 'en-GB', 'da', 'de'], _KML.ISO, 'Iceland', None, 245),
    Region(
        'ir', 'xkb:ir::fas', 'Asia/Tehran', ['fa-IR', 'ku'], _KML.ANSI,
        'Iran', None, 246),
    Region(
        'am', 'xkb:am::hye', 'Asia/Yerevan', 'hy', _KML.ANSI, 'Armenia',
        None, 247),
    Region(
        'al', 'xkb:al::sqi', 'Europe/Tirane', ['sq', 'el'], _KML.ANSI,
        'Albania', None, 248),
    Region(
        'ao', 'xkb:ao::por', 'Africa/Luanda', 'pt-AO', _KML.ANSI,
        'Angola', None, 249),
    Region(
        'as', 'xkb:as::eng', 'Pacific/Pago_Pago', ['en-AS', 'sm', 'to'],
        _KML.ANSI, 'American Samoa', None, 250),
    Region(
        'aw', 'xkb:aw::nld', 'America/Aruba', ['nl-AW', 'es', 'en'],
        _KML.ANSI, 'Aruba', None, 252),
    Region(
        'ax', 'xkb:ax::swe', 'Europe/Mariehamn', 'sv-AX', _KML.ANSI,
        'Aland Islands', None, 253),
    Region(
        'az', 'xkb:az::aze', 'Asia/Baku', ['az', 'ru', 'hy'], _KML.ANSI,
        'Azerbaijan', None, 254),
    Region(
        'ua', 'xkb:ua::ukr',
        ['Europe/Kiev', 'Europe/Uzhgorod', 'Europe/Zaporozhye'],
        ['uk', 'ru-UA', 'rom', 'pl', 'hu'], _KML.ANSI, 'Ukraine', None, 255),
    Region(
        'qa', 'xkb:qa::ara', 'Asia/Bahrain', ['ar-QA', 'en'], _KML.ANSI,
        'Qatar', None, 256),
    Region(
        'mz', 'xkb:mz::por', 'Africa/Maputo', ['pt-MZ', 'vmw'],
        _KML.ANSI, 'Mozambique', None, 257)]
"""A list of :py:class:`regions.Region` objects for
**unconfirmed** regions. These may contain incorrect information (or not
supported by Chrome browser yet), and all fields must be reviewed before launch.
See http://goto/vpdsettings.

Currently, non-Latin keyboards must use an underlying Latin keyboard
for VPD. (This assumption should be revisited when moving items to
:py:data:`regions.Region.REGIONS_LIST`.)  This is
currently being discussed on <http://crbug.com/325389>.

Some timezones or locales may be missing from ``timezone_settings.cc`` (see
http://crosbug.com/p/23902).  This must be rectified before moving
items to :py:data:`regions.Region.REGIONS_LIST`.
"""


def ConsolidateRegions(regions):
  """Consolidates a list of regions into a dict.

  Args:
    regions: A list of Region objects.  All objects for any given
      region code must be identical or we will throw an exception.
      (We allow duplicates in case identical region objects are
      defined in both regions.py and the overlay, e.g., when moving
      items to the public overlay.)

  Returns:
    A dict from region code to Region.

  Raises:
    RegionException: If there are multiple regions defined for a given
      region, and the values for those regions differ.
  """
  # Build a dict from region_code to the first Region with that code.
  region_dict = {}
  for r in regions:
    existing_region = region_dict.get(r.region_code)
    if existing_region:
      if existing_region.GetFieldsDict() != r.GetFieldsDict():
        raise RegionException(
            'Conflicting definitions for region %r: %r, %r' %
            (r.region_code, existing_region.GetFieldsDict(),
             r.GetFieldsDict()))
    else:
      region_dict[r.region_code] = r

  return region_dict


def BuildRegionsDict(include_all=False):
  """Builds a dictionary mapping from code to :py:class:`regions.Region` object.

  The regions include:

  * :py:data:`regions.REGIONS_LIST`
  * :py:data:`regions_overlay.REGIONS_LIST`
  * Only if ``include_all`` is true:

    * :py:data:`regions.UNCONFIRMED_REGIONS_LIST`
    * :py:data:`regions.INCOMPLETE_REGIONS_LIST`

  A region may only appear in one of the above lists, or this function
  will (deliberately) fail.
  """
  regions = list(REGIONS_LIST)
  if include_all:
    known_codes = [r.region_code for r in regions]
    regions += [r for r in UNCONFIRMED_REGIONS_LIST if r.region_code not in
                known_codes]

  # Build dictionary of region code to list of regions with that
  # region code.  Check manually for duplicates, since the region may
  # be present both in the overlay and the public repo.
  return ConsolidateRegions(regions)


REGIONS = BuildRegionsDict()


def main(args=sys.argv[1:], out=None):
  parser = argparse.ArgumentParser(description=(
      'Display all known regions and their parameters. '))
  parser.add_argument('--format',
                      choices=('human-readable', 'csv', 'json', 'yaml'),
                      default='human-readable',
                      help='Output format (default=%(default)s)')
  parser.add_argument('--all', action='store_true',
                      help='Include unconfirmed and incomplete regions')
  parser.add_argument('--output', default=None,
                      help='Specify output file')
  parser.add_argument('--overlay', default=None,
                      help='Specify a Python file to overlay extra data')
  args = parser.parse_args(args)

  if args.overlay is not None:
    execfile(args.overlay)

  if args.all:
    # Add an additional 'confirmed' property to help identifying region status,
    # for autotests, unit tests and factory module.
    Region.FIELDS.insert(1, 'confirmed')
    for r in REGIONS_LIST:
      r.confirmed = True
    for r in UNCONFIRMED_REGIONS_LIST:
      r.confirmed = False

  regions_dict = BuildRegionsDict(args.all)

  if out is None:
    if args.output is None:
      out = sys.stdout
    else:
      out = open(args.output, 'w')

  # Handle YAML and JSON output.
  if args.format == 'yaml' or args.format == 'json':
    data = {}
    for region in regions_dict.values():
      item = {}
      for field in Region.FIELDS:
        item[field] = getattr(region, field)
      data[region.region_code] = item
    if args.format == 'yaml':
      yaml.dump(data, out)
    else:
      json.dump(data, out)
    return

  # Handle CSV or plain-text output: build a list of lines to print.
  # The CSV format is for publishing discussion spreadsheet so 'notes' should be
  # added.
  if args.format == 'csv':
    Region.FIELDS += ['notes']
  lines = [Region.FIELDS]

  def CoerceToString(value):
    """Returns the arguments in simple string type.

    If value is a list, concatenate its values with commas.  Otherwise, just
    return value.
    """
    if isinstance(value, list):
      return ','.join(value)
    else:
      return str(value)

  for region in sorted(regions_dict.values(), key=lambda v: v.region_code):
    lines.append([CoerceToString(getattr(region, field))
                  for field in Region.FIELDS])

  if args.format == 'csv':
    # Just print the lines in CSV format. Note the values may include ',' so the
    # separator must be tab.
    for l in lines:
      print('\t'.join(l))
  elif args.format == 'human-readable':
    num_columns = len(lines[0])

    # Calculate maximum length of each column.
    max_lengths = []
    for column_no in xrange(num_columns):
      max_lengths.append(max(len(line[column_no]) for line in lines))

    # Print each line, padding as necessary to the max column length.
    for line in lines:
      for column_no in xrange(num_columns):
        out.write(line[column_no].ljust(max_lengths[column_no] + 2))
      out.write('\n')
  else:
    exit('Sorry, unknown format specified: %s' % args.format)


if __name__ == '__main__':
  main()
