Skip to content
Brok UI

Loading…

No results

Address Form

Open source

A postal address form shaped per country — which fields show, in what order, which are required and what they are called — from a built-in table for every country and territory (libaddressinput data: dependent locality, sorting code, region lists for sixty countries, and a country list) that the application can extend, with correct autocomplete tokens, Laravel validation errors, an error summary, and a country-specific extension slot.

Version
v1.2.2
Stability
stable
License
MIT
Related
Form
Field
Input
Native Select

Preview

previews.components.address-form.default.blade.php Blade
{{-- Zero configuration: every country and territory is built in. Pick one and
     the fields, their order, labels, required marks and region list follow. --}}
<x-ui.address-form action="#" :values="['name' => 'Avery Stone', 'locality' => 'Amsterdam', 'country' => 'NL']">
    <x-slot:countryFields>
        <x-ui.field name="address.delivery_note" label="Delivery note" class="sm:col-span-2">
            <x-ui.input autocomplete="off" />
        </x-ui.field>
    </x-slot:countryFields>
</x-ui.address-form>

Installation

terminal
php artisan ui:add address-form

Note

This component ships an Alpine behavior module at resources/js/ui/address-form.js. Import it once from your bundle so it registers on alpine:init:

resources/js/ui/index.js JS
import './address-form.js';

Registry contract

php artisan ui:add address-form writes only the files below. The CLI validates each file hash before writing and asks before it replaces a local change, unless you pass --force.

  • blade resources/views/components/ui/address-form.blade.php
  • js resources/js/ui/address-form.js
Registry dependencies
form field input select button alert
Packages
composer: jml/brok:^0.2
npm: alpinejs

Use with AI

A brief for your coding agent: install command, usage, props, guidance and the rules. Copy it, or open a prompt about this component in an assistant.

address-form.md
# Brok UI: Address Form (`address-form`)

A postal address form shaped per country — which fields show, in what order, which are required and what they are called — from a built-in table for every country and territory (libaddressinput data: dependent locality, sorting code, region lists for sixty countries, and a country list) that the application can extend, with correct autocomplete tokens, Laravel validation errors, an error summary, and a country-specific extension slot.

Brok UI is a Laravel Blade component registry. Installed components are plain Blade files the app owns.

## Install

```bash
php artisan ui:add address-form
```

## Usage

```blade
{{-- Zero configuration: every country and territory is built in. Pick one and
     the fields, their order, labels, required marks and region list follow. --}}
<x-ui.address-form action="#" :values="['name' => 'Avery Stone', 'locality' => 'Amsterdam', 'country' => 'NL']">
    <x-slot:countryFields>
        <x-ui.field name="address.delivery_note" label="Delivery note" class="sm:col-span-2">
            <x-ui.input autocomplete="off" />
        </x-ui.field>
    </x-slot:countryFields>
</x-ui.address-form>
```

## Props

- `action` (url|null, default `null`) — Application form endpoint.
- `method` (HTTP method, default `POST`) — Form method.
- `values` (AddressValue, default `[]`) — Existing field values.
- `countries` (map<stable-code,label>, default `[]`) — Country choices (ISO code => label). Defaults to the built-in list of every country and territory; pass a subset to restrict it.
- `regions` (map<country-code,map<code,label>>, default `[]`) — Per-country region choices merged over the built-in lists (states, provinces, prefectures for sixty countries); a country with a list gets a select for its region.
- `format` (map<country-code,AddressFormat>, default `[]`) — Per-country overrides merged over the built-in table: fields (order), required, labels.
- `showLine3` (bool, default `false`) — Show a third street line after line 2 in every format.
- `showPhone` (bool, default `false`) — Append a phone field (autocomplete tel) to every format.
- `submitLabel` (string, default `Save address`) — Localized submit label.
- `summary` (string, default `Check the address fields and try again.`) — Validation summary heading.

## Use when

- Use when users must enter freeform information that cannot be reliably selected from a list.
- Collect a postal address through a normal server-validated Laravel form.

## Avoid when

- Do not choose a freeform field when a constrained choice would reduce errors or cognitive load.
- Do not use this component as a postal validation service; the format table shapes the fields, the server still validates them.

## Anti-patterns

- Using freeform entry for a bounded answer set

## Rules

- Use the `<brok:address-form>` tag (or `<x-ui.address-form>`) in Blade; do not rewrite the component.
- Prefer the documented props and variants over utility-class overrides; when a utility must win, use the `!` important modifier.
- Use semantic design tokens (`bg-primary`, `text-muted-foreground`), never raw colour utilities.
- Keep the `data-slot` attributes; they are the styling and test hooks.

## Links

- Docs: https://brokui.dev/docs/components/address-form
- Registry JSON (files, props, contract): https://brokui.dev/r/open/address-form.json

Working in Claude Code, Cursor or Codex? Give the agent the whole registry through the MCP server or the Brok UI skill.

Examples

formats.blade.php Blade
{{-- Restrict the countries, override a format, and opt into the third street line and phone. --}}
@php
    $countries = ['NL' => __('Netherlands'), 'GB' => __('United Kingdom'), 'US' => __('United States')];
    $format = [
        // The UK format, with a required county and a "Post town" label.
        'GB' => ['fields' => ['line1', 'line2', 'locality', 'region', 'postal_code'], 'required' => ['line1', 'locality', 'region', 'postal_code'], 'labels' => ['locality' => 'Post town', 'region' => 'County', 'postal_code' => 'Postcode']],
    ];
@endphp
<x-ui.address-form action="#" :countries="$countries" :format="$format" :values="['country' => 'GB']" show-line3 show-phone />
long-content.blade.php Blade
<div class="max-w-sm">
    <x-ui.address-form :values="['name' => __('A deliberately long organization contact name that must wrap safely'), 'line1' => __('A long street address with building and department details'), 'locality' => __('A long translated locality name'), 'postal_code' => '12345', 'country' => __('Example territory')]" />
</div>

API

manifest knowledge + registry-derived coverage

Props

Props accepted by this component: name, type, default value and description.
Prop Type Default Description
action url | null null Application form endpoint.
method HTTP method POST Form method.
values AddressValue [] Existing field values.
countries map<stable-code,label> [] Country choices (ISO code => label). Defaults to the built-in list of every country and territory; pass a subset to restrict it.
regions map<country-code,map<code,label>> [] Per-country region choices merged over the built-in lists (states, provinces, prefectures for sixty countries); a country with a list gets a select for its region.
format map<country-code,AddressFormat> [] Per-country overrides merged over the built-in table: fields (order), required, labels.
showLine3 bool false Show a third street line after line 2 in every format.
showPhone bool false Append a phone field (autocomplete tel) to every format.
submitLabel string Save address Localized submit label.
summary string Check the address fields and try again. Validation summary heading.

Slots

  • countryFields — Country-dependent extension fields owned by the application.

Data slots

Stable hooks for CSS overrides and browser tests.

address-form address-form-country-fields field-label

Behavior

  • Uses Laravel's error bag and old input through field primitives.
  • Shapes the fields per country from the format table: the server renders the initial shape, the behaviour layer re-shapes on a country change, and hidden fields are disabled so they never submit.
  • Posts structured address fields (line1-3, dependent_locality, locality, region, postal_code, sorting_code, phone) and leaves validation to the server.
  • Installs a JavaScript behavior module when the registry item includes resources/js/ui files.
  • Declares registry capability flags: a11y, interactive, authoredStateFixtures, responsive, rtl, darkMode, localized.

Guidance

Freeform text input

Collect unpredictable freeform information.

Use when

  • Use when users must enter freeform information that cannot be reliably selected from a list.
  • Collect a postal address through a normal server-validated Laravel form.

Avoid when

  • Do not choose a freeform field when a constrained choice would reduce errors or cognitive load.
  • Do not use this component as a postal validation service; the format table shapes the fields, the server still validates them.

Use instead

  • Radio or checkbox for bounded choices
  • Select or combobox for known options

Anti-patterns

  • Using freeform entry for a bounded answer set
Anatomy
address-form
Theming hooks
Uses form, field, input, select, and button tokens.

Accessibility

WCAG 2.2 AA Keyboard focus-visible RTL-ready Localized labels Dark mode
Keyboard
managed
Focus
none
  • Every field has an associated label, autocomplete token, and server error link; the label follows the region control when it swaps to a select.
  • The form can render an assertive error summary.
  • Semantic HTML and a stable data-slot attribute for styling and scripting hooks.
  • Focus-visible rings use the ring token, so keyboard focus is always visible.
  • Disabled and invalid states are conveyed to assistive tech, not by color alone.
  • Targets WCAG 2.2 AA; verify contrast in light, dark, admin and customer surfaces in the preview.
  • Labels go through __() and layout uses logical properties (ms-*, text-start), so it mirrors under dir="rtl" — flip the preview to RTL to confirm.
  • Dark mode uses the same semantic tokens under the dark class; high contrast follows forced-color system tokens.

Livewire

Needs wire:ignore

Add wire:ignore to the component root because its behavior owns rendered DOM.

livewire-component.blade.php Blade
<div wire:ignore>
    {{-- Zero configuration: every country and territory is built in. Pick one and
         the fields, their order, labels, required marks and region list follow. --}}
    <x-ui.address-form action="#" :values="['name' => 'Avery Stone', 'locality' => 'Amsterdam', 'country' => 'NL']">
        <x-slot:countryFields>
            <x-ui.field name="address.delivery_note" label="Delivery note" class="sm:col-span-2">
                <x-ui.input autocomplete="off" />
            </x-ui.field>
        </x-slot:countryFields>
    </x-ui.address-form>
</div>

Source

The exact, editable files ui:add writes into your app. Previews render this same code; there are no preview-only components.

resources/views/components/ui/address-form.blade.php Blade
{{--
    Props:
    - countries: country choices (stable ISO code => label). Defaults to the built-in
      list of every country and territory; pass a subset to restrict it.
    - regions: per-country region choices (country code => [region code => label]),
      merged over the built-in lists (states, provinces, prefectures, …).
    - format: per-country overrides merged over the built-in table. Each entry:
      ['fields' => [...order...], 'required' => [...], 'labels' => [key => text]].
    - showLine3 / showPhone: opt-in fields the base form keeps hidden until asked for.
--}}
@props([
    'action' => null,
    'method' => 'POST',
    'values' => [],
    'countries' => [],
    'regions' => [],
    'format' => [],
    'showLine3' => false,
    'showPhone' => false,
    'submitLabel' => 'Save address',
    'summary' => 'Check the address fields and try again.',
])

@php
    $values = (array) $values;

    // Field vocabulary follows the international postal schema (libaddressinput):
    // A street lines, D dependent locality, C locality, S region, Z postal code,
    // X sorting code. Name, organization and country are always present.
    $fieldDefs = [
        'line1' => ['autocomplete' => 'address-line1', 'label' => 'Address line 1', 'span' => true],
        'line2' => ['autocomplete' => 'address-line2', 'label' => 'Address line 2', 'span' => true],
        'line3' => ['autocomplete' => 'address-line3', 'label' => 'Address line 3', 'span' => true],
        'dependent_locality' => ['autocomplete' => 'address-level3', 'label' => 'Suburb', 'span' => false],
        'locality' => ['autocomplete' => 'address-level2', 'label' => 'City', 'span' => false],
        'region' => ['autocomplete' => 'address-level1', 'label' => 'Province', 'span' => false],
        'postal_code' => ['autocomplete' => 'postal-code', 'label' => 'Postal code', 'span' => false],
        'sorting_code' => ['autocomplete' => 'off', 'label' => 'Sorting code', 'span' => false],
        'phone' => ['autocomplete' => 'tel', 'label' => 'Phone', 'span' => false],
    ];

    // What each field is called when a country names it differently.
    $labelTypes = [
        'zip' => __('ZIP code'), 'pin' => __('PIN code'), 'eircode' => __('Eircode'),
        'area' => __('Area'), 'county' => __('County'), 'department' => __('Department'), 'district' => __('District'),
        'do_si' => __('Province'), 'emirate' => __('Emirate'), 'island' => __('Island'), 'oblast' => __('Region'),
        'parish' => __('Parish'), 'prefecture' => __('Prefecture'), 'province' => __('Province'), 'state' => __('State'),
        'post_town' => __('Post town'), 'suburb' => __('Suburb'), 'neighborhood' => __('Neighborhood'),
        'townland' => __('Townland'), 'village_township' => __('Village or township'),
    ];

    // Generated from Google's libaddressinput metadata (chromium-i18n address data,
    // https://github.com/google/libaddressinput). Per country: [field order, required
    // fields, label types] with A street lines, D dependent locality, C locality,
    // S region, Z postal code, X sorting code. Regenerate rather than hand-edit.
    $addressTable = [
        'AC' => ['ACZ', 'AC', []],
        'AD' => ['AZC', 'AC', []],
        'AE' => ['AS', 'AS', ['S' => 'emirate']],
        'AF' => ['ACZ', 'AC', []],
        'AG' => ['AC', 'A', []],
        'AI' => ['ACZ', 'AC', []],
        'AL' => ['AZC', 'AC', []],
        'AM' => ['AZCS', 'AC', []],
        'AO' => ['AC', 'AC', []],
        'AQ' => ['AC', 'AC', []],
        'AR' => ['AZCS', 'AC', []],
        'AS' => ['ACSZ', 'ACSZ', ['Z' => 'zip', 'S' => 'state']],
        'AT' => ['AZC', 'ACZ', []],
        'AU' => ['ACSZ', 'ACSZ', ['S' => 'state', 'C' => 'suburb']],
        'AW' => ['AC', 'AC', []],
        'AX' => ['AZC', 'ACZ', []],
        'AZ' => ['AZC', 'AC', []],
        'BA' => ['AZC', 'AC', []],
        'BB' => ['ACSZ', 'AC', ['S' => 'parish']],
        'BD' => ['ACZ', 'AC', []],
        'BE' => ['AZC', 'ACZ', []],
        'BF' => ['ACX', 'AC', []],
        'BG' => ['AZC', 'AC', []],
        'BH' => ['ACZ', 'AC', []],
        'BI' => ['AC', 'AC', []],
        'BJ' => ['AC', 'AC', []],
        'BL' => ['AZCX', 'ACZ', []],
        'BM' => ['ACZ', 'AC', []],
        'BN' => ['ACZ', 'AC', []],
        'BO' => ['AC', 'AC', []],
        'BQ' => ['AC', 'AC', []],
        'BR' => ['ADCSZ', 'ASCZ', ['S' => 'state', 'D' => 'neighborhood']],
        'BS' => ['ACS', 'AC', ['S' => 'island']],
        'BT' => ['ACZ', 'AC', []],
        'BV' => ['AC', 'AC', []],
        'BW' => ['AC', 'AC', []],
        'BY' => ['AZCS', 'AC', []],
        'BZ' => ['AC', 'AC', []],
        'CA' => ['ACSZ', 'ACSZ', []],
        'CC' => ['ACSZ', 'AC', []],
        'CD' => ['AC', 'AC', []],
        'CF' => ['AC', 'AC', []],
        'CG' => ['AC', 'AC', []],
        'CH' => ['AZC', 'ACZ', []],
        'CI' => ['XAC', 'AC', []],
        'CK' => ['AC', 'AC', []],
        'CL' => ['AZCS', 'AC', []],
        'CM' => ['AC', 'AC', []],
        'CN' => ['ZSCDA', 'ACSZ', ['D' => 'district']],
        'CO' => ['ADCSZ', 'AS', ['S' => 'department']],
        'CR' => ['ASCZ', 'ACS', []],
        'CU' => ['ACSZ', 'AC', []],
        'CV' => ['AZCS', 'AC', ['S' => 'island']],
        'CW' => ['AC', 'AC', []],
        'CX' => ['ACSZ', 'AC', []],
        'CY' => ['AZC', 'AC', []],
        'CZ' => ['AZC', 'ACZ', []],
        'DE' => ['AZC', 'ACZ', []],
        'DJ' => ['AC', 'AC', []],
        'DK' => ['AZC', 'ACZ', []],
        'DM' => ['AC', 'AC', []],
        'DO' => ['AZC', 'AC', []],
        'DZ' => ['AZC', 'AC', []],
        'EC' => ['AZC', 'AC', []],
        'EE' => ['AZCS', 'ACZ', []],
        'EG' => ['ACSZ', 'AC', []],
        'EH' => ['AZC', 'AC', []],
        'ER' => ['AC', 'AC', []],
        'ES' => ['AZCS', 'ACSZ', []],
        'ET' => ['AZC', 'AC', []],
        'FI' => ['AZC', 'ACZ', []],
        'FJ' => ['AC', 'AC', []],
        'FK' => ['ACZ', 'ACZ', []],
        'FM' => ['ACSZ', 'ACSZ', ['Z' => 'zip', 'S' => 'state']],
        'FO' => ['AZC', 'AC', []],
        'FR' => ['AZC', 'ACZ', []],
        'GA' => ['AC', 'AC', []],
        'GB' => ['ACZ', 'ACZ', ['C' => 'post_town']],
        'GD' => ['AC', 'AC', []],
        'GE' => ['AZC', 'AC', []],
        'GF' => ['AZCX', 'ACZ', []],
        'GG' => ['ACZ', 'ACZ', []],
        'GH' => ['AC', 'AC', []],
        'GI' => ['AZ', 'A', []],
        'GL' => ['AZC', 'ACZ', []],
        'GM' => ['AC', 'AC', []],
        'GN' => ['ZAC', 'AC', []],
        'GP' => ['AZCX', 'ACZ', []],
        'GQ' => ['AC', 'AC', []],
        'GR' => ['AZC', 'ACZ', []],
        'GS' => ['ACZ', 'ACZ', []],
        'GT' => ['AZC', 'AC', []],
        'GU' => ['ACZ', 'ACZ', ['Z' => 'zip']],
        'GW' => ['AZC', 'AC', []],
        'GY' => ['AC', 'AC', []],
        'HK' => ['SCA', 'AS', ['S' => 'area', 'C' => 'district']],
        'HM' => ['ACSZ', 'AC', []],
        'HN' => ['ACSZ', 'ACS', ['S' => 'department']],
        'HR' => ['AZC', 'AC', []],
        'HT' => ['AZC', 'AC', []],
        'HU' => ['CAZ', 'ACZ', []],
        'ID' => ['ACSZ', 'AS', []],
        'IE' => ['ADCSZ', 'AC', ['Z' => 'eircode', 'S' => 'county', 'D' => 'townland']],
        'IL' => ['ACZ', 'AC', []],
        'IM' => ['ACZ', 'ACZ', []],
        'IN' => ['ACZS', 'ACSZ', ['Z' => 'pin', 'S' => 'state']],
        'IO' => ['ACZ', 'ACZ', []],
        'IQ' => ['ACSZ', 'ACS', []],
        'IR' => ['SCDAZ', 'AC', ['D' => 'neighborhood']],
        'IS' => ['AZC', 'AC', []],
        'IT' => ['AZCS', 'ACSZ', []],
        'JE' => ['ACZ', 'ACZ', []],
        'JM' => ['ACSX', 'ACS', ['S' => 'parish']],
        'JO' => ['ACZ', 'AC', []],
        'JP' => ['ZSA', 'ASZ', ['S' => 'prefecture']],
        'KE' => ['ACZ', 'AC', []],
        'KG' => ['AZC', 'AC', []],
        'KH' => ['ACZ', 'AC', []],
        'KI' => ['ASC', 'AC', ['S' => 'island']],
        'KM' => ['AC', 'AC', []],
        'KN' => ['ACS', 'ACS', ['S' => 'island']],
        'KR' => ['SCDAZ', 'ACSZ', ['S' => 'do_si', 'D' => 'district']],
        'KW' => ['AZC', 'AC', []],
        'KY' => ['ASZ', 'AS', ['S' => 'island']],
        'KZ' => ['ZSCA', 'AC', []],
        'LA' => ['AZC', 'AC', []],
        'LB' => ['ACZ', 'AC', []],
        'LC' => ['AC', 'AC', []],
        'LI' => ['AZC', 'ACZ', []],
        'LK' => ['ACZ', 'AC', []],
        'LR' => ['AZC', 'AC', []],
        'LS' => ['ACZ', 'AC', []],
        'LT' => ['AZCS', 'ACZ', []],
        'LU' => ['AZC', 'ACZ', []],
        'LV' => ['ASCZ', 'ACZ', []],
        'LY' => ['AC', 'AC', []],
        'MA' => ['AZC', 'AC', []],
        'MC' => ['AZCX', 'AC', []],
        'MD' => ['AZC', 'AC', []],
        'ME' => ['AZC', 'AC', []],
        'MF' => ['AZCX', 'ACZ', []],
        'MG' => ['AZC', 'AC', []],
        'MH' => ['ACSZ', 'ACSZ', ['Z' => 'zip', 'S' => 'state']],
        'MK' => ['AZC', 'AC', []],
        'ML' => ['AC', 'AC', []],
        'MM' => ['ACZ', 'AC', []],
        'MN' => ['ACSZ', 'AC', []],
        'MO' => ['A', 'A', []],
        'MP' => ['ACSZ', 'ACSZ', ['Z' => 'zip', 'S' => 'state']],
        'MQ' => ['AZCX', 'ACZ', []],
        'MR' => ['AC', 'AC', []],
        'MS' => ['AC', 'AC', []],
        'MT' => ['ACZ', 'AC', []],
        'MU' => ['AZC', 'AC', []],
        'MV' => ['ACZ', 'AC', []],
        'MW' => ['ACX', 'AC', []],
        'MY' => ['ADZCS', 'ACZS', ['S' => 'state']],
        'MX' => ['ADZCS', 'ACSZ', ['S' => 'state', 'D' => 'neighborhood']],
        'MZ' => ['AZCS', 'AC', []],
        'NA' => ['ACZ', 'AC', []],
        'NC' => ['AZCX', 'ACZ', []],
        'NE' => ['AZC', 'AC', []],
        'NF' => ['ACSZ', 'AC', []],
        'NG' => ['ADCZS', 'AC', ['S' => 'state']],
        'NI' => ['AZCS', 'AC', ['S' => 'department']],
        'NL' => ['AZC', 'ACZ', []],
        'NO' => ['AZC', 'ACZ', ['C' => 'post_town']],
        'NP' => ['ACZ', 'AC', []],
        'NR' => ['AS', 'AS', ['S' => 'district']],
        'NU' => ['AC', 'AC', []],
        'NZ' => ['ADCZ', 'ACDZ', []],
        'OM' => ['AZC', 'AC', []],
        'PA' => ['ACS', 'AC', []],
        'PE' => ['ACZS', 'AC', ['C' => 'district']],
        'PF' => ['AZCS', 'ACSZ', ['S' => 'island']],
        'PG' => ['ACZS', 'ACS', []],
        'PH' => ['ADCZS', 'AC', []],
        'PK' => ['ADCZ', 'AC', []],
        'PL' => ['AZC', 'ACZ', []],
        'PM' => ['AZCX', 'ACZ', []],
        'PN' => ['ACZ', 'ACZ', []],
        'PR' => ['ACZ', 'ACZ', ['Z' => 'zip']],
        'PS' => ['AC', 'AC', []],
        'PT' => ['AZC', 'ACZ', []],
        'PW' => ['ACSZ', 'ACSZ', ['Z' => 'zip', 'S' => 'state']],
        'PY' => ['AZC', 'AC', []],
        'QA' => ['AC', 'AC', []],
        'RE' => ['AZCX', 'ACZ', []],
        'RO' => ['AZSC', 'ACZ', []],
        'RS' => ['AZC', 'AC', []],
        'RU' => ['ACSZ', 'ACSZ', ['S' => 'oblast']],
        'RW' => ['AC', 'AC', []],
        'SA' => ['ACZ', 'AC', []],
        'SB' => ['AC', 'AC', []],
        'SC' => ['ACS', 'AC', ['S' => 'island']],
        'SD' => ['ACZ', 'AC', ['C' => 'district']],
        'SE' => ['AZC', 'ACZ', ['C' => 'post_town']],
        'SG' => ['AZ', 'AZ', []],
        'SH' => ['ACZ', 'ACZ', []],
        'SI' => ['AZC', 'AC', []],
        'SJ' => ['AZC', 'ACZ', ['C' => 'post_town']],
        'SK' => ['AZC', 'ACZ', []],
        'SL' => ['AC', 'AC', []],
        'SM' => ['AZC', 'AZ', []],
        'SN' => ['AZC', 'AC', []],
        'SO' => ['ACSZ', 'ACS', []],
        'SR' => ['ACS', 'AC', []],
        'SS' => ['AC', 'AC', []],
        'ST' => ['AC', 'AC', []],
        'SV' => ['AZCS', 'ACS', []],
        'SX' => ['AC', 'AC', []],
        'SZ' => ['ACZ', 'AC', []],
        'TA' => ['ACZ', 'AC', []],
        'TC' => ['ACZ', 'ACZ', []],
        'TD' => ['AC', 'AC', []],
        'TF' => ['AC', 'AC', []],
        'TG' => ['AC', 'AC', []],
        'TH' => ['ADCSZ', 'AC', []],
        'TJ' => ['AZC', 'AC', []],
        'TK' => ['AC', 'AC', []],
        'TL' => ['AC', 'AC', []],
        'TM' => ['AZC', 'AC', []],
        'TN' => ['AZC', 'AC', []],
        'TO' => ['AC', 'AC', []],
        'TR' => ['AZCS', 'ACZ', ['C' => 'district']],
        'TT' => ['ACZ', 'AC', []],
        'TV' => ['ACS', 'AC', ['S' => 'island']],
        'TW' => ['ZSCA', 'ACSZ', ['S' => 'county', 'C' => 'district']],
        'TZ' => ['AZC', 'AC', []],
        'UA' => ['ACSZ', 'ACZ', ['S' => 'oblast']],
        'UG' => ['AC', 'AC', []],
        'UM' => ['ACSZ', 'ACS', ['Z' => 'zip', 'S' => 'state']],
        'US' => ['ACSZ', 'ACSZ', ['Z' => 'zip', 'S' => 'state']],
        'UY' => ['AZCS', 'AC', []],
        'UZ' => ['AZCS', 'AC', []],
        'VA' => ['AZC', 'AC', []],
        'VC' => ['ACZ', 'AC', []],
        'VE' => ['ACZS', 'ACS', ['S' => 'state']],
        'VG' => ['ACZ', 'A', []],
        'VI' => ['ACSZ', 'ACSZ', ['Z' => 'zip', 'S' => 'state']],
        'VN' => ['ACSZ', 'AS', []],
        'VU' => ['AC', 'AC', []],
        'WF' => ['AZCX', 'ACZ', []],
        'WS' => ['AC', 'AC', []],
        'XK' => ['AZC', 'AC', []],
        'YE' => ['AC', 'AC', []],
        'YT' => ['AZCX', 'ACZ', []],
        'ZA' => ['ADCZ', 'ACZ', []],
        'ZM' => ['AZC', 'AC', []],
        'ZW' => ['AC', 'AC', []],
    ];
    $addressFallback = ['AC', 'AC', []];
    $addressCountries = [
        'AF' => 'Afghanistan',
        'AL' => 'Albania',
        'DZ' => 'Algeria',
        'AS' => 'American Samoa',
        'AD' => 'Andorra',
        'AO' => 'Angola',
        'AI' => 'Anguilla',
        'AQ' => 'Antarctica',
        'AG' => 'Antigua and Barbuda',
        'AR' => 'Argentina',
        'AM' => 'Armenia',
        'AW' => 'Aruba',
        'AC' => 'Ascension Island',
        'AU' => 'Australia',
        'AT' => 'Austria',
        'AZ' => 'Azerbaijan',
        'BS' => 'Bahamas',
        'BH' => 'Bahrain',
        'BD' => 'Bangladesh',
        'BB' => 'Barbados',
        'BY' => 'Belarus',
        'BE' => 'Belgium',
        'BZ' => 'Belize',
        'BJ' => 'Benin',
        'BM' => 'Bermuda',
        'BT' => 'Bhutan',
        'BO' => 'Bolivia',
        'BQ' => 'Bonaire, Sint Eustatius, and Saba',
        'BA' => 'Bosnia and Herzegovina',
        'BW' => 'Botswana',
        'BV' => 'Bouvet Island',
        'BR' => 'Brazil',
        'IO' => 'British Indian Ocean Territory',
        'BN' => 'Brunei Darussalam',
        'BG' => 'Bulgaria (Rep.)',
        'BF' => 'Burkina Faso',
        'BI' => 'Burundi',
        'KH' => 'Cambodia',
        'CM' => 'Cameroon',
        'CA' => 'Canada',
        'CV' => 'Cape Verde',
        'KY' => 'Cayman Islands',
        'CF' => 'Central African Republic',
        'TD' => 'Chad',
        'GG' => 'Channel Islands',
        'JE' => 'Channel Islands',
        'CL' => 'Chile',
        'CN' => 'China',
        'CX' => 'Christmas Island',
        'CC' => 'Cocos (Keeling) Islands',
        'CO' => 'Colombia',
        'KM' => 'Comoros',
        'CD' => 'Congo (Dem. Rep.)',
        'CG' => 'Congo (Rep.)',
        'CK' => 'Cook Islands',
        'CR' => 'Costa Rica',
        'CI' => 'Cote d\'Ivoire',
        'HR' => 'Croatia',
        'CU' => 'Cuba',
        'CW' => 'Curacao',
        'CY' => 'Cyprus',
        'CZ' => 'Czech Rep.',
        'DK' => 'Denmark',
        'DJ' => 'Djibouti',
        'DM' => 'Dominica',
        'DO' => 'Dominican Rep.',
        'EC' => 'Ecuador',
        'EG' => 'Egypt',
        'SV' => 'El Salvador',
        'GQ' => 'Equatorial Guinea',
        'ER' => 'Eritrea',
        'EE' => 'Estonia',
        'ET' => 'Ethiopia',
        'FK' => 'Falkland Islands (Malvinas)',
        'FO' => 'Faroe Islands',
        'FJ' => 'Fiji',
        'AX' => 'Finland',
        'FI' => 'Finland',
        'FR' => 'France',
        'GF' => 'French Guiana',
        'PF' => 'French Polynesia',
        'TF' => 'French Southern Territories',
        'GA' => 'Gabon',
        'GM' => 'Gambia',
        'GE' => 'Georgia',
        'DE' => 'Germany',
        'GH' => 'Ghana',
        'GI' => 'Gibraltar',
        'GR' => 'Greece',
        'GL' => 'Greenland',
        'GD' => 'Grenada (West Indies)',
        'GP' => 'Guadeloupe',
        'GU' => 'Guam',
        'GT' => 'Guatemala',
        'GN' => 'Guinea',
        'GW' => 'Guinea-Bissau',
        'GY' => 'Guyana',
        'HT' => 'Haiti',
        'HM' => 'Heard and Mcdonald Islands',
        'HN' => 'Honduras',
        'HK' => 'Hong Kong',
        'HU' => 'Hungary (Rep.)',
        'IS' => 'Iceland',
        'IN' => 'India',
        'ID' => 'Indonesia',
        'IR' => 'Iran',
        'IQ' => 'Iraq',
        'IE' => 'Ireland',
        'IM' => 'Isle of Man',
        'IL' => 'Israel',
        'IT' => 'Italy',
        'JM' => 'Jamaica',
        'JP' => 'Japan',
        'JO' => 'Jordan',
        'KZ' => 'Kazakhstan',
        'KE' => 'Kenya',
        'KI' => 'Kiribati',
        'XK' => 'Kosovo',
        'KW' => 'Kuwait',
        'KG' => 'Kyrgyzstan',
        'LA' => 'Lao (People\'s Dem. Rep.)',
        'LV' => 'Latvia',
        'LB' => 'Lebanon',
        'LS' => 'Lesotho',
        'LR' => 'Liberia',
        'LY' => 'Libya',
        'LI' => 'Liechtenstein',
        'LT' => 'Lithuania',
        'LU' => 'Luxembourg',
        'MO' => 'Macao',
        'MK' => 'Macedonia',
        'MG' => 'Madagascar',
        'MW' => 'Malawi',
        'MY' => 'Malaysia',
        'MV' => 'Maldives',
        'ML' => 'Mali',
        'MT' => 'Malta',
        'MH' => 'Marshall Islands',
        'MQ' => 'Martinique',
        'MR' => 'Mauritania',
        'MU' => 'Mauritius',
        'YT' => 'Mayotte',
        'MX' => 'Mexico',
        'FM' => 'Micronesia (Federated State Of)',
        'MC' => 'Monaco',
        'MN' => 'Mongolia',
        'ME' => 'Montenegro',
        'MS' => 'Montserrat',
        'MA' => 'Morocco',
        'MZ' => 'Mozambique',
        'MM' => 'Myanmar',
        'NA' => 'Namibia',
        'NR' => 'Nauru Central Pacific',
        'NP' => 'Nepal',
        'NL' => 'Netherlands',
        'NC' => 'New Caledonia',
        'NZ' => 'New Zealand',
        'NI' => 'Nicaragua',
        'NE' => 'Niger',
        'NG' => 'Nigeria',
        'NU' => 'Niue',
        'NF' => 'Norfolk Island',
        'MP' => 'Northern Mariana Islands',
        'KP' => 'North Korea',
        'NO' => 'Norway',
        'OM' => 'Oman',
        'PK' => 'Pakistan',
        'PW' => 'Palau',
        'PS' => 'Palestinian Territory',
        'PA' => 'Panama (Rep.)',
        'PG' => 'Papua New Guinea',
        'PY' => 'Paraguay',
        'PE' => 'Peru',
        'PH' => 'Philippines',
        'PN' => 'Pitcairn',
        'PL' => 'Poland',
        'PT' => 'Portugal',
        'PR' => 'Puerto Rico',
        'QA' => 'Qatar',
        'MD' => 'Rep. Moldova',
        'SG' => 'Rep. of Singapore',
        'RS' => 'Republic of Serbia',
        'RE' => 'Reunion',
        'RO' => 'Romania',
        'RU' => 'Russian Federation',
        'RW' => 'Rwanda',
        'BL' => 'Saint Barthelemy',
        'SH' => 'Saint Helena',
        'KN' => 'Saint Kitts and Nevis',
        'LC' => 'Saint Lucia',
        'MF' => 'Saint Martin',
        'VC' => 'Saint Vincent and the Grenadines (Antilles)',
        'WS' => 'Samoa',
        'SM' => 'San Marino',
        'ST' => 'Sao Tome and Principe',
        'SA' => 'Saudi Arabia',
        'SN' => 'Senegal',
        'SC' => 'Seychelles',
        'SL' => 'Sierra Leone',
        'SX' => 'Sint Maarten',
        'SK' => 'Slovakia',
        'SI' => 'Slovenia',
        'SB' => 'Solomon Islands',
        'SO' => 'Somalia',
        'ZA' => 'South Africa',
        'GS' => 'South Georgia',
        'KR' => 'South Korea',
        'SS' => 'South Sudan',
        'ES' => 'Spain',
        'LK' => 'Sri Lanka',
        'PM' => 'St. Pierre and Miquelon',
        'SD' => 'Sudan',
        'SR' => 'Suriname',
        'SJ' => 'Svalbard and Jan Mayen Islands',
        'SZ' => 'Swaziland',
        'SE' => 'Sweden',
        'SY' => 'Syria',
        'CH' => 'Switzerland',
        'TW' => 'Taiwan',
        'TJ' => 'Tajikistan',
        'TZ' => 'Tanzania (United Rep.)',
        'TH' => 'Thailand',
        'TL' => 'Timor-Leste',
        'TG' => 'Togo',
        'TK' => 'Tokelau',
        'TO' => 'Tonga',
        'TT' => 'Trinidad and Tobago',
        'TA' => 'Tristan da Cunha',
        'TN' => 'Tunisia',
        'TR' => 'Turkey',
        'TM' => 'Turkmenistan',
        'TC' => 'Turks and Caicos Islands',
        'TV' => 'Tuvalu',
        'UG' => 'Uganda',
        'UA' => 'Ukraine',
        'AE' => 'United Arab Emirates',
        'GB' => 'United Kingdom',
        'US' => 'United States',
        'UM' => 'United States Minor Outlying Islands',
        'UY' => 'Uruguay',
        'UZ' => 'Uzbekistan',
        'VU' => 'Vanuatu',
        'VA' => 'Vatican',
        'VE' => 'Venezuela',
        'VN' => 'Viet Nam',
        'VG' => 'Virgin Islands (British)',
        'VI' => 'Virgin Islands (U.S.)',
        'WF' => 'Wallis and Futuna Islands',
        'EH' => 'Western Sahara',
        'YE' => 'Yemen',
        'ZM' => 'Zambia',
        'ZW' => 'Zimbabwe',
    ];
    $addressRegions = [
        'AD' => ['Parròquia d\'Andorra la Vella' => 'Andorra la Vella', 'Canillo' => 'Canillo', 'Encamp' => 'Encamp', 'Escaldes-Engordany' => 'Escaldes-Engordany', 'La Massana' => 'La Massana', 'Ordino' => 'Ordino', 'Sant Julià de Lòria' => 'Sant Julià de Lòria'],
        'AE' => ['أبو ظبي' => 'Abu Dhabi', 'إمارة الشارقةّ' => 'Sharjah', 'الفجيرة' => 'Fujairah', 'ام القيوين' => 'Umm Al Quwain', 'إمارة دبيّ' => 'Dubai', 'إمارة رأس الخيمة' => 'Ras al Khaimah', 'عجمان' => 'Ajman'],
        'AM' => ['Արագածոտն' => 'Aragatsotn', 'Արարատ' => 'Ararat', 'Արմավիր' => 'Armavir', 'Գեղարքունիք' => 'Gegharkunik', 'Երևան' => 'Yerevan', 'Լոռի' => 'Lori', 'Կոտայք' => 'Kotayk', 'Շիրակ' => 'Shirak', 'Սյունիք' => 'Syunik', 'Վայոց ձոր' => 'Vayots Dzor', 'Տավուշ' => 'Tavush'],
        'AR' => ['Buenos Aires' => 'Buenos Aires', 'Catamarca' => 'Catamarca', 'Chaco' => 'Chaco', 'Chubut' => 'Chubut', 'Ciudad Autónoma de Buenos Aires' => 'Ciudad Autónoma de Buenos Aires', 'Córdoba' => 'Córdoba', 'Corrientes' => 'Corrientes', 'Entre Ríos' => 'Entre Ríos', 'Formosa' => 'Formosa', 'Jujuy' => 'Jujuy', 'La Pampa' => 'La Pampa', 'La Rioja' => 'La Rioja', 'Mendoza' => 'Mendoza', 'Misiones' => 'Misiones', 'Neuquén' => 'Neuquén', 'Río Negro' => 'Río Negro', 'Salta' => 'Salta', 'San Juan' => 'San Juan', 'San Luis' => 'San Luis', 'Santa Cruz' => 'Santa Cruz', 'Santa Fe' => 'Santa Fe', 'Santiago del Estero' => 'Santiago del Estero', 'Tierra del Fuego' => 'Tierra del Fuego', 'Tucumán' => 'Tucumán'],
        'AU' => ['ACT' => 'Australian Capital Territory', 'JBT' => 'Jervis Bay Territory', 'NSW' => 'New South Wales', 'NT' => 'Northern Territory', 'QLD' => 'Queensland', 'SA' => 'South Australia', 'TAS' => 'Tasmania', 'VIC' => 'Victoria', 'WA' => 'Western Australia'],
        'BB' => ['Christ Church' => 'Christ Church', 'Saint Andrew' => 'Saint Andrew', 'Saint George' => 'Saint George', 'Saint James' => 'Saint James', 'Saint John' => 'Saint John', 'Saint Joseph' => 'Saint Joseph', 'Saint Lucy' => 'Saint Lucy', 'Saint Michael' => 'Saint Michael', 'Saint Peter' => 'Saint Peter', 'Saint Philip' => 'Saint Philip', 'Saint Thomas' => 'Saint Thomas'],
        'BR' => ['AC' => 'Acre', 'AL' => 'Alagoas', 'AP' => 'Amapá', 'AM' => 'Amazonas', 'BA' => 'Bahia', 'CE' => 'Ceará', 'DF' => 'Distrito Federal', 'ES' => 'Espírito Santo', 'GO' => 'Goiás', 'MA' => 'Maranhão', 'MT' => 'Mato Grosso', 'MS' => 'Mato Grosso do Sul', 'MG' => 'Minas Gerais', 'PA' => 'Pará', 'PB' => 'Paraíba', 'PR' => 'Paraná', 'PE' => 'Pernambuco', 'PI' => 'Piauí', 'RJ' => 'Rio de Janeiro', 'RN' => 'Rio Grande do Norte', 'RS' => 'Rio Grande do Sul', 'RO' => 'Rondônia', 'RR' => 'Roraima', 'SC' => 'Santa Catarina', 'SP' => 'São Paulo', 'SE' => 'Sergipe', 'TO' => 'Tocantins'],
        'BS' => ['Abaco' => 'Abaco Islands', 'Acklins' => 'Acklins', 'Andros' => 'Andros Island', 'Berry Islands' => 'Berry Islands', 'Bimini' => 'Bimini', 'Cat Island' => 'Cat Island', 'Crooked Island' => 'Crooked Island', 'Eleuthera' => 'Eleuthera', 'Exuma' => 'Exuma and Cays', 'Grand Bahama' => 'Grand Bahama', 'Harbour Island' => 'Harbour Island', 'Inagua' => 'Inagua', 'Long Island' => 'Long Island', 'Mayaguana' => 'Mayaguana', 'N.P.' => 'New Providence', 'Ragged Island' => 'Ragged Island', 'Rum Cay' => 'Rum Cay', 'San Salvador' => 'San Salvador', 'Spanish Wells' => 'Spanish Wells'],
        'BY' => ['Брэсцкая вобласць' => 'Bresckaja voblasć', 'Віцебская вобласць' => 'Viciebskaja voblasć', 'Гомельская вобласць' => 'Homieĺskaja voblasć', 'горад Мінск' => 'Horad Minsk', 'Гродзенская вобласць' => 'Hrodzienskaja voblasć', 'Магілёўская вобласць' => 'Mahilioŭskaja voblasć', 'Мінская вобласць' => 'Minskaja voblasć'],
        'CA' => ['AB' => 'Alberta', 'BC' => 'British Columbia', 'MB' => 'Manitoba', 'NB' => 'New Brunswick', 'NL' => 'Newfoundland and Labrador', 'NT' => 'Northwest Territories', 'NS' => 'Nova Scotia', 'NU' => 'Nunavut', 'ON' => 'Ontario', 'PE' => 'Prince Edward Island', 'QC' => 'Quebec', 'SK' => 'Saskatchewan', 'YT' => 'Yukon'],
        'CL' => ['Antofagasta' => 'Antofagasta', 'Araucanía' => 'Araucanía', 'Arica y Parinacota' => 'Arica y Parinacota', 'Atacama' => 'Atacama', 'Aysén' => 'Aysén del General Carlos Ibáñez del Campo', 'Biobío' => 'Biobío', 'Coquimbo' => 'Coquimbo', 'O\'Higgins' => 'Libertador General Bernardo O\'Higgins', 'Los Lagos' => 'Los Lagos', 'Los Ríos' => 'Los Ríos', 'Magallanes' => 'Magallanes y de la Antártica Chilena', 'Maule' => 'Maule', 'Región Metropolitana' => 'Metropolitana de Santiago', 'Ñuble' => 'Ñuble', 'Tarapacá' => 'Tarapacá', 'Valparaíso' => 'Valparaíso'],
        'CN' => ['安徽省' => 'Anhui Sheng', '澳门' => 'Macau', '北京市' => 'Beijing Shi', '重庆市' => 'Chongqing Shi', '福建省' => 'Fujian Sheng', '甘肃省' => 'Gansu Sheng', '广东省' => 'Guangdong Sheng', '广西壮族自治区' => 'Guangxi Zhuangzuzizhiqu', '贵州省' => 'Guizhou Sheng', '海南省' => 'Hainan Sheng', '河北省' => 'Hebei Sheng', '河南省' => 'Henan Sheng', '黑龙江省' => 'Heilongjiang Sheng', '湖北省' => 'Hubei Sheng', '湖南省' => 'Hunan Sheng', '吉林省' => 'Jilin Sheng', '江苏省' => 'Jiangsu Sheng', '江西省' => 'Jiangxi Sheng', '辽宁省' => 'Liaoning Sheng', '内蒙古自治区' => 'Neimenggu Zizhiqu', '宁夏回族自治区' => 'Ningxia Huizuzizhiqu', '青海省' => 'Qinghai Sheng', '山东省' => 'Shandong Sheng', '山西省' => 'Shanxi Sheng', '陕西省' => 'Shaanxi Sheng', '上海市' => 'Shanghai Shi', '四川省' => 'Sichuan Sheng', '台湾' => 'Taiwan', '天津市' => 'Tianjin Shi', '西藏自治区' => 'Xizang Zizhiqu', '香港' => 'Hong Kong', '新疆维吾尔自治区' => 'Xinjiang Weiwuerzizhiqu', '云南省' => 'Yunnan Sheng', '浙江省' => 'Zhejiang Sheng'],
        'CO' => ['Amazonas' => 'Amazonas', 'Antioquia' => 'Antioquia', 'Arauca' => 'Arauca', 'Atlántico' => 'Atlántico', 'Bogotá' => 'Bogotá', 'Bolívar' => 'Bolívar', 'Boyacá' => 'Boyacá', 'Caldas' => 'Caldas', 'Caquetá' => 'Caquetá', 'Casanare' => 'Casanare', 'Cauca' => 'Cauca', 'Cesar' => 'Cesar', 'Chocó' => 'Chocó', 'Córdoba' => 'Córdoba', 'Cundinamarca' => 'Cundinamarca', 'Guainía' => 'Guainía', 'Guaviare' => 'Guaviare', 'Huila' => 'Huila', 'La Guajira' => 'La Guajira', 'Magdalena' => 'Magdalena', 'Meta' => 'Meta', 'Nariño' => 'Nariño', 'Norte de Santander' => 'Norte de Santander', 'Putumayo' => 'Putumayo', 'Quindío' => 'Quindío', 'Risaralda' => 'Risaralda', 'San Andrés y Providencia' => 'San Andrés y Providencia', 'Santander' => 'Santander', 'Sucre' => 'Sucre', 'Tolima' => 'Tolima', 'Valle del Cauca' => 'Valle del Cauca', 'Vaupés' => 'Vaupés', 'Vichada' => 'Vichada'],
        'CR' => ['Alajuela' => 'Alajuela', 'Cartago' => 'Cartago', 'Guanacaste' => 'Guanacaste', 'Heredia' => 'Heredia', 'Limón' => 'Limón', 'Puntarenas' => 'Puntarenas', 'San José' => 'San José'],
        'CU' => ['Artemisa' => 'Artemisa', 'Camagüey' => 'Camagüey', 'Ciego de Ávila' => 'Ciego de Ávila', 'Cienfuegos' => 'Cienfuegos', 'Granma' => 'Granma', 'Guantánamo' => 'Guantánamo', 'Holguín' => 'Holguín', 'Isla de la Juventud' => 'Isla de la Juventud', 'La Habana' => 'La Habana', 'Las Tunas' => 'Las Tunas', 'Matanzas' => 'Matanzas', 'Mayabeque' => 'Mayabeque', 'Pinar del Río' => 'Pinar del Río', 'Sancti Spíritus' => 'Sancti Spíritus', 'Santiago de Cuba' => 'Santiago de Cuba', 'Villa Clara' => 'Villa Clara'],
        'CV' => ['Boa Vista' => 'Boa Vista', 'Brava' => 'Brava', 'Fogo' => 'Fogo', 'Maio' => 'Maio', 'Sal' => 'Sal', 'Santiago' => 'Santiago', 'Santo Antão' => 'Santo Antão', 'São Nicolau' => 'São Nicolau', 'São Vicente' => 'São Vicente'],
        'EE' => ['Harjumaa' => 'Harjumaa', 'Hiiumaa' => 'Hiiumaa', 'Ida-Virumaa' => 'Ida-Virumaa', 'Jõgevamaa' => 'Jõgevamaa', 'Järvamaa' => 'Järvamaa', 'Lääne-Virumaa' => 'Lääne-Virumaa', 'Läänemaa' => 'Läänemaa', 'Põlvamaa' => 'Põlvamaa', 'Pärnumaa' => 'Pärnumaa', 'Raplamaa' => 'Raplamaa', 'Saaremaa' => 'Saaremaa', 'Tartumaa' => 'Tartumaa', 'Valgamaa' => 'Valgamaa', 'Viljandimaa' => 'Viljandimaa', 'Võrumaa' => 'Võrumaa'],
        'EG' => ['أسوان' => 'Aswan Governorate', 'أسيوط' => 'Asyut Governorate', 'الإسكندرية' => 'Alexandria Governorate', 'الإسماعيلية' => 'Ismailia Governorate', 'الأقصر' => 'Luxor Governorate', 'البحر الأحمر' => 'Red Sea Governorate', 'البحيرة' => 'El Beheira Governorate', 'الجيزة' => 'Giza Governorate', 'الدقهلية' => 'Dakahlia Governorate', 'السويس' => 'Suez Governorate', 'الشرقية' => 'Ash Sharqia Governorate', 'الغربية' => 'Gharbia Governorate', 'الفيوم' => 'Faiyum Governorate', 'القاهرة' => 'Cairo Governorate', 'القليوبية' => 'Qalyubia Governorate', 'المنوفية' => 'Menofia Governorate', 'المنيا' => 'Menia Governorate', 'الوادي الجديد' => 'New Valley Governorate', 'بني سويف' => 'Beni Suef Governorate', 'بورسعيد' => 'Port Said Governorate', 'جنوب سيناء' => 'South Sinai Governorate', 'دمياط' => 'Damietta Governorate', 'سوهاج' => 'Sohag Governorate', 'شمال سيناء' => 'North Sinai Governorate', 'قنا' => 'Qena Governorate', 'كفر الشيخ' => 'Kafr El Sheikh Governorate', 'مطروح' => 'Matrouh Governorate'],
        'ES' => ['VI' => 'Álava', 'AB' => 'Albacete', 'A' => 'Alicante', 'AL' => 'Almería', 'O' => 'Asturias', 'AV' => 'Ávila', 'BA' => 'Badajoz', 'B' => 'Barcelona', 'BU' => 'Burgos', 'CC' => 'Cáceres', 'CA' => 'Cádiz', 'S' => 'Cantabria', 'CS' => 'Castellón', 'CE' => 'Ceuta', 'CR' => 'Ciudad Real', 'CO' => 'Córdoba', 'CU' => 'Cuenca', 'GI' => 'Girona', 'GR' => 'Granada', 'GU' => 'Guadalajara', 'SS' => 'Guipúzcoa', 'H' => 'Huelva', 'HU' => 'Huesca', 'PM' => 'Islas Baleares', 'J' => 'Jaén', 'C' => 'La Coruña', 'LO' => 'La Rioja', 'GC' => 'Las Palmas', 'LE' => 'León', 'L' => 'Lérida', 'LU' => 'Lugo', 'M' => 'Madrid', 'MA' => 'Málaga', 'ML' => 'Melilla', 'MU' => 'Murcia', 'NA' => 'Navarra', 'OR' => 'Ourense', 'P' => 'Palencia', 'PO' => 'Pontevedra', 'SA' => 'Salamanca', 'TF' => 'Santa Cruz de Tenerife', 'SG' => 'Segovia', 'SE' => 'Sevilla', 'SO' => 'Soria', 'T' => 'Tarragona', 'TE' => 'Teruel', 'TO' => 'Toledo', 'V' => 'Valencia', 'VA' => 'Valladolid', 'BI' => 'Vizcaya', 'ZA' => 'Zamora', 'Z' => 'Zaragoza'],
        'FM' => ['Chuuk' => 'Chuuk', 'Kosrae' => 'Kosrae', 'Pohnpei' => 'Pohnpei', 'Yap' => 'Yap'],
        'HK' => ['Kowloon' => '九龍', 'Hong Kong Island' => '香港島', 'New Territories' => '新界'],
        'HN' => ['Atlántida' => 'Atlántida', 'Choluteca' => 'Choluteca', 'Colón' => 'Colón', 'Comayagua' => 'Comayagua', 'Copán' => 'Copán', 'Cortés' => 'Cortés', 'El Paraíso' => 'El Paraíso', 'Francisco Morazán' => 'Francisco Morazán', 'Gracias a Dios' => 'Gracias a Dios', 'Intibucá' => 'Intibucá', 'Islas de la Bahía' => 'Islas de la Bahía', 'La Paz' => 'La Paz', 'Lempira' => 'Lempira', 'Ocotepeque' => 'Ocotepeque', 'Olancho' => 'Olancho', 'Santa Bárbara' => 'Santa Bárbara', 'Valle' => 'Valle', 'Yoro' => 'Yoro'],
        'ID' => ['Aceh' => 'Aceh', 'Bali' => 'Bali', 'Banten' => 'Banten', 'Bengkulu' => 'Bengkulu', 'Daerah Istimewa Yogyakarta' => 'Special Region of Yogyakarta', 'DKI Jakarta' => 'Jakarta', 'Gorontalo' => 'Gorontalo', 'Jambi' => 'Jambi', 'Jawa Barat' => 'West Java', 'Jawa Tengah' => 'Central Java', 'Jawa Timur' => 'East Java', 'Kalimantan Barat' => 'West Kalimantan', 'Kalimantan Selatan' => 'South Kalimantan', 'Kalimantan Tengah' => 'Central Kalimantan', 'Kalimantan Timur' => 'East Kalimantan', 'Kalimantan Utara' => 'North Kalimantan', 'Kepulauan Bangka Belitung' => 'Bangka Belitung Islands', 'Kepulauan Riau' => 'Riau Islands', 'Lampung' => 'Lampung', 'Maluku' => 'Maluku', 'Maluku Utara' => 'North Maluku', 'Nusa Tenggara Barat' => 'West Nusa Tenggara', 'Nusa Tenggara Timur' => 'East Nusa Tenggara', 'Papua' => 'Papua', 'Papua Barat' => 'West Papua', 'Riau' => 'Riau', 'Sulawesi Barat' => 'West Sulawesi', 'Sulawesi Selatan' => 'South Sulawesi', 'Sulawesi Tengah' => 'Central Sulawesi', 'Sulawesi Tenggara' => 'South East Sulawesi', 'Sulawesi Utara' => 'North Sulawesi', 'Sumatera Barat' => 'West Sumatra', 'Sumatera Selatan' => 'South Sumatra', 'Sumatera Utara' => 'North Sumatra'],
        'IE' => ['Co. Carlow' => 'Co. Carlow', 'Co. Cavan' => 'Co. Cavan', 'Co. Clare' => 'Co. Clare', 'Co. Cork' => 'Co. Cork', 'Co. Donegal' => 'Co. Donegal', 'Co. Dublin' => 'Co. Dublin', 'Co. Galway' => 'Co. Galway', 'Co. Kerry' => 'Co. Kerry', 'Co. Kildare' => 'Co. Kildare', 'Co. Kilkenny' => 'Co. Kilkenny', 'Co. Laois' => 'Co. Laois', 'Co. Leitrim' => 'Co. Leitrim', 'Co. Limerick' => 'Co. Limerick', 'Co. Longford' => 'Co. Longford', 'Co. Louth' => 'Co. Louth', 'Co. Mayo' => 'Co. Mayo', 'Co. Meath' => 'Co. Meath', 'Co. Monaghan' => 'Co. Monaghan', 'Co. Offaly' => 'Co. Offaly', 'Co. Roscommon' => 'Co. Roscommon', 'Co. Sligo' => 'Co. Sligo', 'Co. Tipperary' => 'Co. Tipperary', 'Co. Waterford' => 'Co. Waterford', 'Co. Westmeath' => 'Co. Westmeath', 'Co. Wexford' => 'Co. Wexford', 'Co. Wicklow' => 'Co. Wicklow'],
        'IN' => ['Andaman and Nicobar Islands' => 'Andaman & Nicobar', 'Andhra Pradesh' => 'Andhra Pradesh', 'Arunachal Pradesh' => 'Arunachal Pradesh', 'Assam' => 'Assam', 'Bihar' => 'Bihar', 'Chandigarh' => 'Chandigarh', 'Chhattisgarh' => 'Chhattisgarh', 'Dadra and Nagar Haveli and Daman and Diu' => 'Dadra & Nagar Haveli & Daman & Diu', 'Delhi' => 'Delhi', 'Goa' => 'Goa', 'Gujarat' => 'Gujarat', 'Haryana' => 'Haryana', 'Himachal Pradesh' => 'Himachal Pradesh', 'Jammu and Kashmir' => 'Jammu & Kashmir', 'Jharkhand' => 'Jharkhand', 'Karnataka' => 'Karnataka', 'Kerala' => 'Kerala', 'Ladakh' => 'Ladakh', 'Lakshadweep' => 'Lakshadweep', 'Madhya Pradesh' => 'Madhya Pradesh', 'Maharashtra' => 'Maharashtra', 'Manipur' => 'Manipur', 'Meghalaya' => 'Meghalaya', 'Mizoram' => 'Mizoram', 'Nagaland' => 'Nagaland', 'Odisha' => 'Odisha', 'Puducherry' => 'Puducherry', 'Punjab' => 'Punjab', 'Rajasthan' => 'Rajasthan', 'Sikkim' => 'Sikkim', 'Tamil Nadu' => 'Tamil Nadu', 'Telangana' => 'Telangana', 'Tripura' => 'Tripura', 'Uttar Pradesh' => 'Uttar Pradesh', 'Uttarakhand' => 'Uttarakhand', 'West Bengal' => 'West Bengal'],
        'IQ' => ['أربيل' => 'Erbil', 'إقليم كوردستان' => 'Kurdistan Region', 'الانبار' => 'Al Anbar', 'البصرة' => 'Basra', 'السليمانية' => 'Sulaymaniyah', 'القادسية' => 'Al-Qādisiyyah', 'المثنى' => 'Al Muthanna', 'النجف' => 'Najaf', 'بابل' => 'Babylon', 'بغداد' => 'Baghdad', 'دهوك' => 'Duhok', 'ديالى' => 'Diyala', 'ذي قار' => 'Dhi Qar', 'صلاح الدين' => 'Saladin', 'كربلاء' => 'Karbala', 'كركوك' => 'Kirkuk', 'ميسان' => 'Maysan', 'نينوى' => 'Nineveh', 'واسط' => 'Wasit'],
        'IR' => ['استان آذربایجان شرقی' => 'East Azerbaijan Province', 'استان آذربایجان غربی' => 'West Azerbaijan Province', 'استان اردبیل' => 'Ardabil Province', 'استان اصفهان' => 'Isfahan Province', 'استان البرز' => 'Alborz Province', 'استان ایلام' => 'Ilam Province', 'استان بوشهر' => 'Bushehr Province', 'استان تهران' => 'Tehran Province', 'استان چهارمحال و بختیاری' => 'Chaharmahal and Bakhtiari Province', 'استان خراسان جنوبی' => 'South Khorasan Province', 'استان خراسان رضوی' => 'Razavi Khorasan Province', 'استان خراسان شمالی' => 'North Khorasan Province', 'استان خوزستان' => 'Khuzestan Province', 'استان زنجان' => 'Zanjan Province', 'استان سمنان' => 'Semnan Province', 'استان سیستان و بلوچستان' => 'Sistan and Baluchestan Province', 'استان فارس' => 'Fars Province', 'استان قزوین' => 'Qazvin Province', 'استان قم' => 'Qom Province', 'استان کردستان' => 'Kurdistan Province', 'استان کرمان' => 'Kerman Province', 'استان کرمانشاه' => 'Kermanshah Province', 'استان کهگیلویه و بویراحمد' => 'Kohgiluyeh and Boyer-Ahmad Province', 'استان گلستان' => 'Golestan Province', 'استان گیلان' => 'Gilan Province', 'استان لرستان' => 'Lorestan Province', 'استان مازندران' => 'Mazandaran Province', 'استان مرکزی' => 'Markazi Province', 'استان هرمزگان' => 'Hormozgan Province', 'استان همدان' => 'Hamadan Province', 'استان یزد' => 'Yazd Province'],
        'IT' => ['AG' => 'Agrigento', 'AL' => 'Alessandria', 'AN' => 'Ancona', 'AO' => 'Aosta', 'AR' => 'Arezzo', 'AP' => 'Ascoli Piceno', 'AT' => 'Asti', 'AV' => 'Avellino', 'BA' => 'Bari', 'BT' => 'Barletta-Andria-Trani', 'BL' => 'Belluno', 'BN' => 'Benevento', 'BG' => 'Bergamo', 'BI' => 'Biella', 'BO' => 'Bologna', 'BZ' => 'Bolzano', 'BS' => 'Brescia', 'BR' => 'Brindisi', 'CA' => 'Cagliari', 'CL' => 'Caltanissetta', 'CB' => 'Campobasso', 'CE' => 'Caserta', 'CT' => 'Catania', 'CZ' => 'Catanzaro', 'CH' => 'Chieti', 'CO' => 'Como', 'CS' => 'Cosenza', 'CR' => 'Cremona', 'KR' => 'Crotone', 'CN' => 'Cuneo', 'EN' => 'Enna', 'FM' => 'Fermo', 'FE' => 'Ferrara', 'FI' => 'Firenze', 'FG' => 'Foggia', 'FC' => 'Forlì-Cesena', 'FR' => 'Frosinone', 'GA' => 'Gallura Nord-Est Sardegna', 'GE' => 'Genova', 'GO' => 'Gorizia', 'GR' => 'Grosseto', 'IM' => 'Imperia', 'IS' => 'Isernia', 'AQ' => 'L\'Aquila', 'SP' => 'La Spezia', 'LT' => 'Latina', 'LE' => 'Lecce', 'LC' => 'Lecco', 'LI' => 'Livorno', 'LO' => 'Lodi', 'LU' => 'Lucca', 'MC' => 'Macerata', 'MN' => 'Mantova', 'MS' => 'Massa-Carrara', 'MT' => 'Matera', 'VS' => 'Medio Campidano', 'ME' => 'Messina', 'MI' => 'Milano', 'MO' => 'Modena', 'MB' => 'Monza e Brianza', 'NA' => 'Napoli', 'NO' => 'Novara', 'NU' => 'Nuoro', 'OG' => 'Ogliastra', 'OR' => 'Oristano', 'PD' => 'Padova', 'PA' => 'Palermo', 'PR' => 'Parma', 'PV' => 'Pavia', 'PG' => 'Perugia', 'PU' => 'Pesaro e Urbino', 'PE' => 'Pescara', 'PC' => 'Piacenza', 'PI' => 'Pisa', 'PT' => 'Pistoia', 'PN' => 'Pordenone', 'PZ' => 'Potenza', 'PO' => 'Prato', 'RG' => 'Ragusa', 'RA' => 'Ravenna', 'RC' => 'Reggio Calabria', 'RE' => 'Reggio Emilia', 'RI' => 'Rieti', 'RN' => 'Rimini', 'RM' => 'Roma', 'RO' => 'Rovigo', 'SA' => 'Salerno', 'SS' => 'Sassari', 'SV' => 'Savona', 'SI' => 'Siena', 'SR' => 'Siracusa', 'SO' => 'Sondrio', 'SU' => 'Sud Sardegna', 'SD' => 'Sulcis Iglesiente', 'TA' => 'Taranto', 'TE' => 'Teramo', 'TR' => 'Terni', 'TO' => 'Torino', 'TP' => 'Trapani', 'TN' => 'Trento', 'TV' => 'Treviso', 'TS' => 'Trieste', 'UD' => 'Udine', 'VA' => 'Varese', 'VE' => 'Venezia', 'VB' => 'Verbano-Cusio-Ossola', 'VC' => 'Vercelli', 'VR' => 'Verona', 'VV' => 'Vibo Valentia', 'VI' => 'Vicenza', 'VT' => 'Viterbo'],
        'JM' => ['Clarendon' => 'Clarendon', 'Hanover' => 'Hanover', 'Kingston' => 'Kingston', 'Manchester' => 'Manchester', 'Portland' => 'Portland', 'St. Andrew' => 'St. Andrew', 'St. Ann' => 'St. Ann', 'St. Catherine' => 'St. Catherine', 'St. Elizabeth' => 'St. Elizabeth', 'St. James' => 'St. James', 'St. Mary' => 'St. Mary', 'St. Thomas' => 'St. Thomas', 'Trelawny' => 'Trelawny', 'Westmoreland' => 'Westmoreland'],
        'JP' => ['北海道' => 'Hokkaido', '青森県' => 'Aomori', '岩手県' => 'Iwate', '宮城県' => 'Miyagi', '秋田県' => 'Akita', '山形県' => 'Yamagata', '福島県' => 'Fukushima', '茨城県' => 'Ibaraki', '栃木県' => 'Tochigi', '群馬県' => 'Gunma', '埼玉県' => 'Saitama', '千葉県' => 'Chiba', '東京都' => 'Tokyo', '神奈川県' => 'Kanagawa', '新潟県' => 'Niigata', '富山県' => 'Toyama', '石川県' => 'Ishikawa', '福井県' => 'Fukui', '山梨県' => 'Yamanashi', '長野県' => 'Nagano', '岐阜県' => 'Gifu', '静岡県' => 'Shizuoka', '愛知県' => 'Aichi', '三重県' => 'Mie', '滋賀県' => 'Shiga', '京都府' => 'Kyoto', '大阪府' => 'Osaka', '兵庫県' => 'Hyogo', '奈良県' => 'Nara', '和歌山県' => 'Wakayama', '鳥取県' => 'Tottori', '島根県' => 'Shimane', '岡山県' => 'Okayama', '広島県' => 'Hiroshima', '山口県' => 'Yamaguchi', '徳島県' => 'Tokushima', '香川県' => 'Kagawa', '愛媛県' => 'Ehime', '高知県' => 'Kochi', '福岡県' => 'Fukuoka', '佐賀県' => 'Saga', '長崎県' => 'Nagasaki', '熊本県' => 'Kumamoto', '大分県' => 'Oita', '宮崎県' => 'Miyazaki', '鹿児島県' => 'Kagoshima', '沖縄県' => 'Okinawa'],
        'KN' => ['Nevis' => 'Nevis', 'St. Kitts' => 'St. Kitts'],
        'KR' => ['강원도' => 'Gangwon-do', '경기도' => 'Gyeonggi-do', '경상남도' => 'Gyeongsangnam-do', '경상북도' => 'Gyeongsangbuk-do', '광주광역시' => 'Gwangju', '대구광역시' => 'Daegu', '대전광역시' => 'Daejeon', '부산광역시' => 'Busan', '서울특별시' => 'Seoul', '세종특별자치시' => 'Sejong', '울산광역시' => 'Ulsan', '인천광역시' => 'Incheon', '전라남도' => 'Jeollanam-do', '전라북도' => 'Jeollabuk-do', '제주특별자치도' => 'Jeju-do', '충청남도' => 'Chungcheongnam-do', '충청북도' => 'Chungcheongbuk-do'],
        'KY' => ['Cayman Brac' => 'Cayman Brac', 'Grand Cayman' => 'Grand Cayman', 'Little Cayman' => 'Little Cayman'],
        'KZ' => ['Абай облысы' => 'Abai Region', 'Ақмола облысы' => 'Akmola Region', 'Ақтөбе облысы' => 'Aktobe Region', 'Алматы' => 'Almaty', 'Алматы облысы' => 'Almaty Region', 'Астана' => 'Astana', 'Атырау облысы' => 'Atyrau Region', 'Батыс Қазақстан облысы' => 'West Kazakhstan Region', 'Жамбыл облысы' => 'Jambyl Region', 'Жетісу облысы' => 'Jetisu Region', 'Қарағанды облысы' => 'Karaganda Region', 'Қостанай облысы' => 'Kostanay Region', 'Қызылорда облысы' => 'Kyzylorda Region', 'Маңғыстау облысы' => 'Mangystau Region', 'Павлодар облысы' => 'Pavlodar Region', 'Солтүстік Қазақстан облысы' => 'North Kazakhstan Region', 'Түркістан облысы' => 'Turkistan Region', 'Ұлытау облысы' => 'Ulytau Region', 'Шығыс Қазақстан облысы' => 'East Kazakhstan Region', 'Шымкент' => 'Shymkent'],
        'MN' => ['Архангай' => 'Arkhangai', 'Баян-Өлгий' => 'Bayan-Ölgii', 'Баянхонгор' => 'Bayankhongor', 'Булган' => 'Bulgan', 'Говь-Алтай' => 'Govi-Altai', 'Говьсүмбэр' => 'Govisümber', 'Дархан-Уул' => 'Darkhan-Uul', 'Дорноговь' => 'Dornogovi', 'Дорнод' => 'Dornod', 'Дундговь' => 'Dundgovi', 'Завхан' => 'Zavkhan', 'Орхон' => 'Orkhon', 'Өвөрхангай' => 'Ovorkhangai', 'Өмнөговь' => 'Ömnögovi', 'Сүхбаатар' => 'Sükhbaatar', 'Сэлэнгэ' => 'Selenge', 'Төв' => 'Töv', 'Увс' => 'Uvs', 'Улаанбаатар' => 'Ulaanbaatar', 'Ховд' => 'Khovd', 'Хөвсгөл' => 'Khovsgol', 'Хэнтий' => 'Khentii'],
        'MY' => ['Johor' => 'Johor', 'Kedah' => 'Kedah', 'Kelantan' => 'Kelantan', 'Kuala Lumpur' => 'Kuala Lumpur', 'Labuan' => 'Labuan', 'Melaka' => 'Melaka', 'Negeri Sembilan' => 'Negeri Sembilan', 'Pahang' => 'Pahang', 'Perak' => 'Perak', 'Perlis' => 'Perlis', 'Pulau Pinang' => 'Pulau Pinang', 'Putrajaya' => 'Putrajaya', 'Sabah' => 'Sabah', 'Sarawak' => 'Sarawak', 'Selangor' => 'Selangor', 'Terengganu' => 'Terengganu'],
        'MX' => ['Ags.' => 'Aguascalientes', 'B.C.' => 'Baja California', 'B.C.S.' => 'Baja California Sur', 'Camp.' => 'Campeche', 'Chis.' => 'Chiapas', 'Chih.' => 'Chihuahua', 'CDMX' => 'Ciudad de México', 'Coah.' => 'Coahuila de Zaragoza', 'Col.' => 'Colima', 'Dgo.' => 'Durango', 'Méx.' => 'Estado de México', 'Gto.' => 'Guanajuato', 'Gro.' => 'Guerrero', 'Hgo.' => 'Hidalgo', 'Jal.' => 'Jalisco', 'Mich.' => 'Michoacán', 'Mor.' => 'Morelos', 'Nay.' => 'Nayarit', 'N.L.' => 'Nuevo León', 'Oax.' => 'Oaxaca', 'Pue.' => 'Puebla', 'Qro.' => 'Querétaro', 'Q.R.' => 'Quintana Roo', 'S.L.P.' => 'San Luis Potosí', 'Sin.' => 'Sinaloa', 'Son.' => 'Sonora', 'Tab.' => 'Tabasco', 'Tamps.' => 'Tamaulipas', 'Tlax.' => 'Tlaxcala', 'Ver.' => 'Veracruz', 'Yuc.' => 'Yucatán', 'Zac.' => 'Zacatecas'],
        'MZ' => ['Cabo Delgado' => 'Cabo Delgado', 'Cidade de Maputo' => 'Cidade de Maputo', 'Gaza' => 'Gaza', 'Inhambane' => 'Inhambane', 'Manica' => 'Manica', 'Maputo' => 'Maputo', 'Nampula' => 'Nampula', 'Niassa' => 'Niassa', 'Sofala' => 'Sofala', 'Tete' => 'Tete', 'Zambezia' => 'Zambezia'],
        'NG' => ['Abia' => 'Abia', 'Adamawa' => 'Adamawa', 'Akwa Ibom' => 'Akwa Ibom', 'Anambra' => 'Anambra', 'Bauchi' => 'Bauchi', 'Bayelsa' => 'Bayelsa', 'Benue' => 'Benue', 'Borno' => 'Borno', 'Cross River' => 'Cross River', 'Delta' => 'Delta', 'Ebonyi' => 'Ebonyi', 'Edo' => 'Edo', 'Ekiti' => 'Ekiti', 'Enugu' => 'Enugu', 'Federal Capital Territory' => 'Federal Capital Territory', 'Gombe' => 'Gombe', 'Imo' => 'Imo', 'Jigawa' => 'Jigawa', 'Kaduna' => 'Kaduna', 'Kano' => 'Kano', 'Katsina' => 'Katsina', 'Kebbi' => 'Kebbi', 'Kogi' => 'Kogi', 'Kwara' => 'Kwara', 'Lagos' => 'Lagos', 'Nasarawa' => 'Nasarawa', 'Niger' => 'Niger', 'Ogun State' => 'Ogun State', 'Ondo' => 'Ondo', 'Osun' => 'Osun', 'Oyo' => 'Oyo', 'Plateau' => 'Plateau', 'Rivers' => 'Rivers', 'Sokoto' => 'Sokoto', 'Taraba' => 'Taraba', 'Yobe' => 'Yobe', 'Zamfara' => 'Zamfara'],
        'NI' => ['Boaco' => 'Boaco', 'Carazo' => 'Carazo', 'Chinandega' => 'Chinandega', 'Chontales' => 'Chontales', 'Estelí' => 'Estelí', 'Granada' => 'Granada', 'Jinotega' => 'Jinotega', 'León' => 'León', 'Madriz' => 'Madriz', 'Managua' => 'Managua', 'Masaya' => 'Masaya', 'Matagalpa' => 'Matagalpa', 'Nueva Segovia' => 'Nueva Segovia', 'Región Autónoma de la Costa Caribe Norte' => 'Región Autónoma de la Costa Caribe Norte', 'Región Autónoma de la Costa Caribe Sur' => 'Región Autónoma de la Costa Caribe Sur', 'Río San Juan' => 'Río San Juan', 'Rivas' => 'Rivas'],
        'NR' => ['Aiwo District' => 'Aiwo District', 'Anabar District' => 'Anabar District', 'Anetan District' => 'Anetan District', 'Anibare District' => 'Anibare District', 'Baiti District' => 'Baiti District', 'Boe District' => 'Boe District', 'Buada District' => 'Buada District', 'Denigomodu District' => 'Denigomodu District', 'Ewa District' => 'Ewa District', 'Ijuw District' => 'Ijuw District', 'Meneng District' => 'Meneng District', 'Nibok District' => 'Nibok District', 'Uaboe District' => 'Uaboe District', 'Yaren District' => 'Yaren District'],
        'PA' => ['Bocas del Toro' => 'Bocas del Toro', 'Chiriquí' => 'Chiriquí', 'Coclé' => 'Coclé', 'Colón' => 'Colón', 'Darién' => 'Darién', 'Emberá' => 'Emberá', 'Guna Yala' => 'Guna Yala', 'Herrera' => 'Herrera', 'Los Santos' => 'Los Santos', 'Naso Tjër Di' => 'Naso Tjër Di', 'Ngäbe-Buglé' => 'Ngäbe-Buglé', 'Panamá' => 'Panamá', 'Panamá Oeste' => 'Panamá Oeste', 'Veraguas' => 'Veraguas'],
        'PE' => ['Amazonas' => 'Amazonas', 'Áncash' => 'Áncash', 'Apurímac' => 'Apurímac', 'Arequipa' => 'Arequipa', 'Ayacucho' => 'Ayacucho', 'Cajamarca' => 'Cajamarca', 'Callao' => 'Callao', 'Cuzco' => 'Cuzco', 'Gobierno Regional de Lima' => 'Gobierno Regional de Lima', 'Huancavelica' => 'Huancavelica', 'Huánuco' => 'Huánuco', 'Ica' => 'Ica', 'Junín' => 'Junín', 'La Libertad' => 'La Libertad', 'Lambayeque' => 'Lambayeque', 'Loreto' => 'Loreto', 'Madre de Dios' => 'Madre de Dios', 'Moquegua' => 'Moquegua', 'Municipalidad Metropolitana de Lima' => 'Municipalidad Metropolitana de Lima', 'Pasco' => 'Pasco', 'Piura' => 'Piura', 'Puno' => 'Puno', 'San Martín' => 'San Martín', 'Tacna' => 'Tacna', 'Tumbes' => 'Tumbes', 'Ucayali' => 'Ucayali'],
        'PG' => ['Bougainville' => 'Bougainville', 'Central Provins' => 'Central Provins', 'Enga Provins' => 'Enga Provins', 'Gulf Provins' => 'Gulf Provins', 'Hela Provins' => 'Hela Provins', 'Is Niu Briten Provins' => 'Is Niu Briten Provins', 'Is Sepik Provins' => 'Is Sepik Provins', 'Isten Hailans Provins' => 'Isten Hailans Provins', 'Jiwaka Provins' => 'Jiwaka Provins', 'Madang Provins' => 'Madang Provins', 'Manus Provins' => 'Manus Provins', 'Milen Be Provins' => 'Milen Be Provins', 'Morobe Provins' => 'Morobe Provins', 'Nesenel Kapitol Distrik' => 'Nesenel Kapitol Distrik', 'Niu Ailan Provins' => 'Niu Ailan Provins', 'Oro Provins' => 'Oro Provins', 'Sandaun Provins' => 'Sandaun Provins', 'Sauten Hailans Provins' => 'Sauten Hailans Provins', 'Simbu Provins' => 'Simbu Provins', 'Wes Niu Briten Provins' => 'Wes Niu Briten Provins', 'Western Hailans Provins' => 'Western Hailans Provins', 'Western Provins' => 'Western Provins'],
        'PH' => ['Abra' => 'Abra', 'Agusan del Norte' => 'Agusan del Norte', 'Agusan del Sur' => 'Agusan del Sur', 'Aklan' => 'Aklan', 'Albay' => 'Albay', 'Antique' => 'Antique', 'Apayao' => 'Apayao', 'Aurora' => 'Aurora', 'Basilan' => 'Basilan', 'Bataan' => 'Bataan', 'Batanes' => 'Batanes', 'Batangas' => 'Batangas', 'Benguet' => 'Benguet', 'Biliran' => 'Biliran', 'Bohol' => 'Bohol', 'Bukidnon' => 'Bukidnon', 'Bulacan' => 'Bulacan', 'Cagayan' => 'Cagayan', 'Camarines Norte' => 'Camarines Norte', 'Camarines Sur' => 'Camarines Sur', 'Camiguin' => 'Camiguin', 'Capiz' => 'Capiz', 'Catanduanes' => 'Catanduanes', 'Cavite' => 'Cavite', 'Cebu' => 'Cebu', 'Compostela Valley' => 'Compostela Valley', 'Cotabato' => 'Cotabato', 'Davao del Norte' => 'Davao del Norte', 'Davao del Sur' => 'Davao del Sur', 'Davao Occidental' => 'Davao Occidental', 'Davao Oriental' => 'Davao Oriental', 'Dinagat Islands' => 'Dinagat Islands', 'Eastern Samar' => 'Eastern Samar', 'Guimaras' => 'Guimaras', 'Ifugao' => 'Ifugao', 'Ilocos Norte' => 'Ilocos Norte', 'Ilocos Sur' => 'Ilocos Sur', 'Iloilo' => 'Iloilo', 'Isabela' => 'Isabela', 'Kalinga' => 'Kalinga', 'La Union' => 'La Union', 'Laguna' => 'Laguna', 'Lanao del Norte' => 'Lanao del Norte', 'Lanao del Sur' => 'Lanao del Sur', 'Leyte' => 'Leyte', 'Maguindanao' => 'Maguindanao', 'Marinduque' => 'Marinduque', 'Masbate' => 'Masbate', 'Metro Manila' => 'Metro Manila', 'Mindoro Occidental' => 'Mindoro Occidental', 'Mindoro Oriental' => 'Mindoro Oriental', 'Misamis Occidental' => 'Misamis Occidental', 'Misamis Oriental' => 'Misamis Oriental', 'Mountain Province' => 'Mountain Province', 'Negros Occidental' => 'Negros Occidental', 'Negros Oriental' => 'Negros Oriental', 'Northern Samar' => 'Northern Samar', 'Nueva Ecija' => 'Nueva Ecija', 'Nueva Vizcaya' => 'Nueva Vizcaya', 'Palawan' => 'Palawan', 'Pampanga' => 'Pampanga', 'Pangasinan' => 'Pangasinan', 'Quezon Province' => 'Quezon Province', 'Quirino' => 'Quirino', 'Rizal' => 'Rizal', 'Romblon' => 'Romblon', 'Samar' => 'Samar', 'Sarangani' => 'Sarangani', 'Siquijor' => 'Siquijor', 'Sorsogon' => 'Sorsogon', 'South Cotabato' => 'South Cotabato', 'Southern Leyte' => 'Southern Leyte', 'Sultan Kudarat' => 'Sultan Kudarat', 'Sulu' => 'Sulu', 'Surigao del Norte' => 'Surigao del Norte', 'Surigao del Sur' => 'Surigao del Sur', 'Tarlac' => 'Tarlac', 'Tawi-Tawi' => 'Tawi-Tawi', 'Zambales' => 'Zambales', 'Zamboanga del Norte' => 'Zamboanga del Norte', 'Zamboanga del Sur' => 'Zamboanga del Sur', 'Zamboanga Sibuguey' => 'Zamboanga Sibuguey'],
        'PW' => ['Aimeliik' => 'Aimeliik', 'Airai' => 'Airai', 'Angaur' => 'Angaur', 'Hatohobei' => 'Hatohobei', 'Kayangel' => 'Kayangel', 'Koror' => 'Koror', 'Melekeok' => 'Melekeok', 'Ngaraard' => 'Ngaraard', 'Ngarchelong' => 'Ngarchelong', 'Ngardmau' => 'Ngardmau', 'Ngaremlengui' => 'Ngaremlengui', 'Ngatpang' => 'Ngatpang', 'Ngchesar' => 'Ngchesar', 'Ngiwal' => 'Ngiwal', 'Peleliu' => 'Peleliu', 'Sonsorol' => 'Sonsorol'],
        'RO' => ['Alba' => 'Alba', 'Arad' => 'Arad', 'Argeș' => 'Argeș', 'Bacău' => 'Bacău', 'Bihor' => 'Bihor', 'Bistrița-Năsăud' => 'Bistrița-Năsăud', 'Botoșani' => 'Botoșani', 'Brașov' => 'Brașov', 'Brăila' => 'Brăila', 'București' => 'București', 'Buzău' => 'Buzău', 'Caraș-Severin' => 'Caraș-Severin', 'Călărași' => 'Călărași', 'Cluj' => 'Cluj', 'Constanța' => 'Constanța', 'Covasna' => 'Covasna', 'Dâmbovița' => 'Dâmbovița', 'Dolj' => 'Dolj', 'Galați' => 'Galați', 'Giurgiu' => 'Giurgiu', 'Gorj' => 'Gorj', 'Harghita' => 'Harghita', 'Hunedoara' => 'Hunedoara', 'Ialomița' => 'Ialomița', 'Iași' => 'Iași', 'Ilfov' => 'Ilfov', 'Maramureș' => 'Maramureș', 'Mehedinți' => 'Mehedinți', 'Mureș' => 'Mureș', 'Neamț' => 'Neamț', 'Olt' => 'Olt', 'Prahova' => 'Prahova', 'Satu Mare' => 'Satu Mare', 'Sălaj' => 'Sălaj', 'Sibiu' => 'Sibiu', 'Suceava' => 'Suceava', 'Teleorman' => 'Teleorman', 'Timiș' => 'Timiș', 'Tulcea' => 'Tulcea', 'Vaslui' => 'Vaslui', 'Vâlcea' => 'Vâlcea', 'Vrancea' => 'Vrancea'],
        'RU' => ['Алтайский край' => 'Altayskiy kray', 'Амурская область' => 'Amurskaya oblast\'', 'Архангельская область' => 'Arkhangelskaya oblast\'', 'Астраханская область' => 'Astrakhanskaya oblast\'', 'Белгородская область' => 'Belgorodskaya oblast\'', 'Брянская область' => 'Bryanskaya oblast\'', 'Владимирская область' => 'Vladimirskaya oblast\'', 'Волгоградская область' => 'Volgogradskaya oblast\'', 'Вологодская область' => 'Vologodskaya oblast\'', 'Воронежская область' => 'Voronezhskaya oblast\'', 'Еврейская автономная область' => 'Evreyskaya avtonomnaya oblast\'', 'Забайкальский край' => 'Zabaykalskiy kray', 'Ивановская область' => 'Ivanovskaya oblast\'', 'Иркутская область' => 'Irkutskaya oblast\'', 'Кабардино-Балкарская Республика' => 'Kabardino-Balkarskaya Republits', 'Калининградская область' => 'Kaliningradskaya oblast\'', 'Калужская область' => 'Kaluzhskaya oblast\'', 'Камчатский край' => 'Kamchatskiy kray', 'Карачаево-Черкесская Республика' => 'Karachaevo-Cherkesskaya Republits', 'Кемеровская область' => 'Kemerovskaya oblast\'', 'Кировская область' => 'Kirovskaya oblast\'', 'Костромская область' => 'Kostromskaya oblast\'', 'Краснодарский край' => 'Krasnodarskiy kray', 'Красноярский край' => 'Krasnoyarskiy kray', 'Курганская область' => 'Kurganskaya oblast\'', 'Курская область' => 'Kurskaya oblast\'', 'Ленинградская область' => 'Leningradskaya oblast\'', 'Липецкая область' => 'Lipetskaya oblast\'', 'Магаданская область' => 'Magadanskaya oblast\'', 'Москва' => 'Moskva', 'Московская область' => 'Moskovskaya oblast\'', 'Мурманская область' => 'Murmanskaya oblast\'', 'Ненецкий автономный округ' => 'Nenetskiy', 'Нижегородская область' => 'Nizhegorodskaya oblast\'', 'Новгородская область' => 'Novgorodskaya oblast\'', 'Новосибирская область' => 'Novosibirskaya oblast\'', 'Омская область' => 'Omskaya oblast\'', 'Оренбургская область' => 'Orenburgskaya oblast\'', 'Орловская область' => 'Orlovskaya oblast\'', 'Пензенская область' => 'Penzenskaya oblast\'', 'Пермский край' => 'Permskiy kray', 'Приморский край' => 'Primorskiy kray', 'Псковская область' => 'Pskovskaya oblast\'', 'Республика Адыгея' => 'Respublika Adygeya', 'Республика Алтай' => 'Altay Republits', 'Республика Башкортостан' => 'Bashkortostan Republits', 'Республика Бурятия' => 'Buryatiya Republits', 'Республика Дагестан' => 'Dagestan Republits', 'Республика Ингушетия' => 'Ingushetiya Republits', 'Республика Калмыкия' => 'Respublika Kalmykiya', 'Республика Карелия' => 'Kareliya Republits', 'Республика Коми' => 'Komi Republits', 'Автономна Республіка Крим' => 'Respublika Krym', 'Республика Марий Эл' => 'Respublika Mariy El', 'Республика Мордовия' => 'Respublika Mordoviya', 'Республика Саха (Якутия)' => 'Sakha (Yakutiya) Republits', 'Республика Северная Осетия-Алания' => 'Respublika Severnaya Osetiya-Alaniya', 'Республика Татарстан' => 'Respublika Tatarstan', 'Республика Тыва' => 'Tyva Republits', 'Республика Удмуртия' => 'Udmurtskaja Respublika', 'Республика Хакасия' => 'Khakasiya Republits', 'Ростовская область' => 'Rostovskaya oblast\'', 'Рязанская область' => 'Ryazanskaya oblast\'', 'Самарская область' => 'Samarskaya oblast\'', 'Санкт-Петербург' => 'Sankt-Peterburg', 'Саратовская область' => 'Saratovskaya oblast\'', 'Сахалинская область' => 'Sakhalinskaya oblast\'', 'Свердловская область' => 'Sverdlovskaya oblast\'', 'Севастополь' => 'Sevastopol\'', 'Смоленская область' => 'Smolenskaya oblast\'', 'Ставропольский край' => 'Stavropolskiy kray', 'Тамбовская область' => 'Tambovskaya oblast\'', 'Тверская область' => 'Tverskaya oblast\'', 'Томская область' => 'Tomskaya oblast\'', 'Тульская область' => 'Tulskaya oblast\'', 'Тюменская область' => 'Tyumenskaya oblast\'', 'Ульяновская область' => 'Ulyanovskaya oblast\'', 'Хабаровский край' => 'Khabarovskiy kray', 'Ханты-Мансийский автономный округ' => 'Khanty-Mansiyskiy avtonomnyy okrug', 'Челябинская область' => 'Chelyabinskaya oblast\'', 'Чеченская Республика' => 'Chechenskaya Republits', 'Чувашская Республика' => 'Chuvashia', 'Чукотский автономный округ' => 'Chukotskiy', 'Ямало-Ненецкий автономный округ' => 'Yamalo-Nenetskiy', 'Ярославская область' => 'Yaroslavskaya oblast\''],
        'SO' => ['AD' => 'Awdal', 'BK' => 'Bakool', 'BN' => 'Banaadir', 'BR' => 'Bari', 'BY' => 'Bay', 'GG' => 'Galguduud', 'GD' => 'Gedo', 'HR' => 'Hiiraan', 'JD' => 'Jubbada Dhexe', 'JH' => 'Jubbada Hoose', 'MD' => 'Mudug', 'NG' => 'Nugaal', 'SG' => 'Sanaag', 'SD' => 'Shabeellaha Dhexe', 'SH' => 'Shabeellaha Hoose', 'SL' => 'Sool', 'TG' => 'Togdheer', 'WG' => 'Woqooyi Galbeed'],
        'SR' => ['Brokopondo' => 'Brokopondo', 'Commewijne' => 'Commewijne', 'Coronie' => 'Coronie', 'Marowijne' => 'Marowijne', 'Nickerie' => 'Nickerie', 'Para' => 'Para', 'Paramaribo' => 'Paramaribo', 'Saramacca' => 'Saramacca', 'Sipaliwini' => 'Sipaliwini', 'Wanica' => 'Wanica'],
        'SV' => ['Ahuachapan' => 'Ahuachapán', 'Cabanas' => 'Cabañas', 'Calatenango' => 'Chalatenango', 'Cuscatlan' => 'Cuscatlán', 'La Libertad' => 'La Libertad', 'La Paz' => 'La Paz', 'La Union' => 'La Unión', 'Morazan' => 'Morazán', 'San Miguel' => 'San Miguel', 'San Salvador' => 'San Salvador', 'San Vicente' => 'San Vicente', 'Santa Ana' => 'Santa Ana', 'Sonsonate' => 'Sonsonate', 'Usulutan' => 'Usulután'],
        'TH' => ['กระบี่' => 'Krabi', 'กรุงเทพมหานคร' => 'Bangkok', 'กาญจนบุรี' => 'Kanchanaburi', 'กาฬสินธุ์' => 'Kalasin', 'กำแพงเพชร' => 'Kamphaeng Phet', 'ขอนแก่น' => 'Khon Kaen', 'จังหวัด บึงกาฬ' => 'Bueng Kan', 'จันทบุรี' => 'Chanthaburi', 'ฉะเชิงเทรา' => 'Chachoengsao', 'ชลบุรี' => 'Chon Buri', 'ชัยนาท' => 'Chai Nat', 'ชัยภูมิ' => 'Chaiyaphum', 'ชุมพร' => 'Chumpon', 'เชียงราย' => 'Chiang Rai', 'เชียงใหม่' => 'Chiang Mai', 'ตรัง' => 'Trang', 'ตราด' => 'Trat', 'ตาก' => 'Tak', 'นครนายก' => 'Nakhon Nayok', 'นครปฐม' => 'Nakhon Pathom', 'นครพนม' => 'Nakhon Phanom', 'นครราชสีมา' => 'Nakhon Ratchasima', 'นครศรีธรรมราช' => 'Nakhon Si Thammarat', 'นครสวรรค์' => 'Nakhon Sawan', 'นนทบุรี' => 'Nonthaburi', 'นราธิวาส' => 'Narathiwat', 'น่าน' => 'Nan', 'บุรีรัมย์' => 'Buri Ram', 'ปทุมธานี' => 'Pathum Thani', 'ประจวบคีรีขันธ์' => 'Prachuap Khiri Khan', 'ปราจีนบุรี' => 'Prachin Buri', 'ปัตตานี' => 'Pattani', 'พระนครศรีอยุธยา' => 'Phra Nakhon Si Ayutthaya', 'พะเยา' => 'Phayao', 'พังงา' => 'Phang Nga', 'พัทลุง' => 'Phattalung', 'พิจิตร' => 'Phichit', 'พิษณุโลก' => 'Phitsanulok', 'เพชรบุรี' => 'Phetchaburi', 'เพชรบูรณ์' => 'Phetchabun', 'แพร่' => 'Phrae', 'ภูเก็ต' => 'Phuket', 'มหาสารคาม' => 'Maha Sarakham', 'มุกดาหาร' => 'Mukdahan', 'แม่ฮ่องสอน' => 'Mae Hong Son', 'ยโสธร' => 'Yasothon', 'ยะลา' => 'Yala', 'ร้อยเอ็ด' => 'Roi Et', 'ระนอง' => 'Ranong', 'ระยอง' => 'Rayong', 'ราชบุรี' => 'Ratchaburi', 'ลพบุรี' => 'Lop Buri', 'ลำปาง' => 'Lampang', 'ลำพูน' => 'Lamphun', 'เลย' => 'Loei', 'ศรีสะเกษ' => 'Si Sa Ket', 'สกลนคร' => 'Sakon Nakhon', 'สงขลา' => 'Songkhla', 'สตูล' => 'Satun', 'สมุทรปราการ' => 'Samut Prakan', 'สมุทรสงคราม' => 'Samut Songkhram', 'สมุทรสาคร' => 'Samut Sakhon', 'สระแก้ว' => 'Sa Kaeo', 'สระบุรี' => 'Saraburi', 'สิงห์บุรี' => 'Sing Buri', 'สุโขทัย' => 'Sukhothai', 'สุพรรณบุรี' => 'Suphanburi', 'สุราษฎร์ธานี' => 'Surat Thani', 'สุรินทร์' => 'Surin', 'หนองคาย' => 'Nong Khai', 'หนองบัวลำภู' => 'Nong Bua Lam Phu', 'อ่างทอง' => 'Ang Thong', 'อำนาจเจริญ' => 'Amnat Charoen', 'อุดรธานี' => 'Udon Thani', 'อุตรดิตถ์' => 'Uttaradit', 'อุทัยธานี' => 'Uthai Thani', 'อุบลราชธานี' => 'Ubon Ratchathani'],
        'TR' => ['Adana' => 'Adana', 'Adıyaman' => 'Adıyaman', 'Afyon' => 'Afyon', 'Ağrı' => 'Ağrı', 'Aksaray' => 'Aksaray', 'Amasya' => 'Amasya', 'Ankara' => 'Ankara', 'Antalya' => 'Antalya', 'Ardahan' => 'Ardahan', 'Artvin' => 'Artvin', 'Aydın' => 'Aydın', 'Balıkesir' => 'Balıkesir', 'Bartın' => 'Bartın', 'Batman' => 'Batman', 'Bayburt' => 'Bayburt', 'Bilecik' => 'Bilecik', 'Bingöl' => 'Bingöl', 'Bitlis' => 'Bitlis', 'Bolu' => 'Bolu', 'Burdur' => 'Burdur', 'Bursa' => 'Bursa', 'Çanakkale' => 'Çanakkale', 'Çankırı' => 'Çankırı', 'Çorum' => 'Çorum', 'Denizli' => 'Denizli', 'Diyarbakır' => 'Diyarbakır', 'Düzce' => 'Düzce', 'Edirne' => 'Edirne', 'Elazığ' => 'Elazığ', 'Erzincan' => 'Erzincan', 'Erzurum' => 'Erzurum', 'Eskişehir' => 'Eskişehir', 'Gaziantep' => 'Gaziantep', 'Giresun' => 'Giresun', 'Gümüşhane' => 'Gümüşhane', 'Hakkari' => 'Hakkari', 'Hatay' => 'Hatay', 'Iğdır' => 'Iğdır', 'Isparta' => 'Isparta', 'İstanbul' => 'İstanbul', 'İzmir' => 'İzmir', 'Kahramanmaraş' => 'Kahramanmaraş', 'Karabük' => 'Karabük', 'Karaman' => 'Karaman', 'Kars' => 'Kars', 'Kastamonu' => 'Kastamonu', 'Kayseri' => 'Kayseri', 'Kırıkkale' => 'Kırıkkale', 'Kırklareli' => 'Kırklareli', 'Kırşehir' => 'Kırşehir', 'Kilis' => 'Kilis', 'Kocaeli' => 'Kocaeli', 'Konya' => 'Konya', 'Kütahya' => 'Kütahya', 'Malatya' => 'Malatya', 'Manisa' => 'Manisa', 'Mardin' => 'Mardin', 'Mersin' => 'Mersin', 'Muğla' => 'Muğla', 'Muş' => 'Muş', 'Nevşehir' => 'Nevşehir', 'Niğde' => 'Niğde', 'Ordu' => 'Ordu', 'Osmaniye' => 'Osmaniye', 'Rize' => 'Rize', 'Sakarya' => 'Sakarya', 'Samsun' => 'Samsun', 'Siirt' => 'Siirt', 'Sinop' => 'Sinop', 'Sivas' => 'Sivas', 'Şanlıurfa' => 'Şanlıurfa', 'Şırnak' => 'Şırnak', 'Tekirdağ' => 'Tekirdağ', 'Tokat' => 'Tokat', 'Trabzon' => 'Trabzon', 'Tunceli' => 'Tunceli', 'Uşak' => 'Uşak', 'Van' => 'Van', 'Yalova' => 'Yalova', 'Yozgat' => 'Yozgat', 'Zonguldak' => 'Zonguldak'],
        'TV' => ['Funafuti' => 'Funafuti', 'Nanumanga' => 'Nanumanga', 'Nanumea' => 'Nanumea', 'Niulakita' => 'Niulakita', 'Niutao' => 'Niutao', 'Nui' => 'Nui', 'Nukufetau' => 'Nukufetau', 'Nukulaelae' => 'Nukulaelae', 'Vaitupu' => 'Vaitupu'],
        'TW' => ['台中市' => 'Taichung City', '台北市' => 'Taipei City', '台東縣' => 'Taitung County', '台南市' => 'Tainan City', '宜蘭縣' => 'Yilan County', '花蓮縣' => 'Hualien County', '金門縣' => 'Kinmen County', '南投縣' => 'Nantou County', '屏東縣' => 'Pingtung County', '苗栗縣' => 'Miaoli County', '桃園市' => 'Taoyuan City', '高雄市' => 'Kaohsiung City', '基隆市' => 'Keelung City', '連江縣' => 'Lienchiang County', '雲林縣' => 'Yunlin County', '新北市' => 'New Taipei City', '新竹市' => 'Hsinchu City', '新竹縣' => 'Hsinchu County', '嘉義市' => 'Chiayi City', '嘉義縣' => 'Chiayi County', '彰化縣' => 'Changhua County', '澎湖縣' => 'Penghu County'],
        'UA' => ['Автономна Республіка Крим' => 'Crimea', 'Вінницька область' => 'Vinnyts\'ka oblast', 'Волинська область' => 'Volyns\'ka oblast', 'Дніпропетровська область' => 'Dnipropetrovsk oblast', 'Донецька область' => 'Donetsk oblast', 'Житомирська область' => 'Zhytomyrs\'ka oblast', 'Закарпатська область' => 'Zakarpats\'ka oblast', 'Запорізька область' => 'Zaporiz\'ka oblast', 'Івано-Франківська область' => 'Ivano-Frankivs\'ka oblast', 'місто Київ' => 'Kyiv city', 'Київська область' => 'Kiev oblast', 'Кіровоградська область' => 'Kirovohrads\'ka oblast', 'Луганська область' => 'Luhans\'ka oblast', 'Львівська область' => 'Lviv oblast', 'Миколаївська область' => 'Mykolaivs\'ka oblast', 'Одеська область' => 'Odessa oblast', 'Полтавська область' => 'Poltavs\'ka oblast', 'Рівненська область' => 'Rivnens\'ka oblast', 'місто Севастополь' => 'Sevastopol\' city', 'Сумська область' => 'Sums\'ka oblast', 'Тернопільська область' => 'Ternopil\'s\'ka oblast', 'Харківська область' => 'Kharkiv oblast', 'Херсонська область' => 'Khersons\'ka oblast', 'Хмельницька область' => 'Khmel\'nyts\'ka oblast', 'Черкаська область' => 'Cherkas\'ka oblast', 'Чернівецька область' => 'Chernivets\'ka oblast', 'Чернігівська область' => 'Chernihivs\'ka oblast'],
        'US' => ['AL' => 'Alabama', 'AK' => 'Alaska', 'AS' => 'American Samoa', 'AZ' => 'Arizona', 'AR' => 'Arkansas', 'AA' => 'Armed Forces (AA)', 'AE' => 'Armed Forces (AE)', 'AP' => 'Armed Forces (AP)', 'CA' => 'California', 'CO' => 'Colorado', 'CT' => 'Connecticut', 'DE' => 'Delaware', 'DC' => 'District of Columbia', 'FL' => 'Florida', 'GA' => 'Georgia', 'GU' => 'Guam', 'HI' => 'Hawaii', 'ID' => 'Idaho', 'IL' => 'Illinois', 'IN' => 'Indiana', 'IA' => 'Iowa', 'KS' => 'Kansas', 'KY' => 'Kentucky', 'LA' => 'Louisiana', 'ME' => 'Maine', 'MH' => 'Marshall Islands', 'MD' => 'Maryland', 'MA' => 'Massachusetts', 'MI' => 'Michigan', 'FM' => 'Micronesia', 'MN' => 'Minnesota', 'MS' => 'Mississippi', 'MO' => 'Missouri', 'MT' => 'Montana', 'NE' => 'Nebraska', 'NV' => 'Nevada', 'NH' => 'New Hampshire', 'NJ' => 'New Jersey', 'NM' => 'New Mexico', 'NY' => 'New York', 'NC' => 'North Carolina', 'ND' => 'North Dakota', 'MP' => 'Northern Mariana Islands', 'OH' => 'Ohio', 'OK' => 'Oklahoma', 'OR' => 'Oregon', 'PW' => 'Palau', 'PA' => 'Pennsylvania', 'PR' => 'Puerto Rico', 'RI' => 'Rhode Island', 'SC' => 'South Carolina', 'SD' => 'South Dakota', 'TN' => 'Tennessee', 'TX' => 'Texas', 'UT' => 'Utah', 'VT' => 'Vermont', 'VI' => 'Virgin Islands', 'VA' => 'Virginia', 'WA' => 'Washington', 'WV' => 'West Virginia', 'WI' => 'Wisconsin', 'WY' => 'Wyoming'],
        'UY' => ['Artigas' => 'Artigas', 'Canelones' => 'Canelones', 'Cerro Largo' => 'Cerro Largo', 'Colonia' => 'Colonia', 'Durazno' => 'Durazno', 'Flores' => 'Flores', 'Florida' => 'Florida', 'Lavalleja' => 'Lavalleja', 'Maldonado' => 'Maldonado', 'Montevideo' => 'Montevideo', 'Paysandú' => 'Paysandú', 'Río Negro' => 'Río Negro', 'Rivera' => 'Rivera', 'Rocha' => 'Rocha', 'Salto' => 'Salto', 'San José' => 'San José', 'Soriano' => 'Soriano', 'Tacuarembó' => 'Tacuarembó', 'Treinta y Tres' => 'Treinta y Tres'],
        'UZ' => ['Andijon Viloyati' => 'Andijon Viloyati', 'Buxoro Viloyati' => 'Buxoro Viloyati', 'Farg\'ona Viloyati' => 'Farg\'ona Viloyati', 'Jizzax Viloyati' => 'Jizzax Viloyati', 'Namangan Viloyati' => 'Namangan Viloyati', 'Navoiy Viloyati' => 'Navoiy Viloyati', 'Qashqadaryo Viloyati' => 'Qashqadaryo Viloyati', 'Qoraqalpog’iston Respublikasi' => 'Qoraqalpog’iston Respublikasi', 'Samarqand Viloyati' => 'Samarqand Viloyati', 'Sirdaryo Viloyati' => 'Sirdaryo Viloyati', 'Surxondaryo Viloyati' => 'Surxondaryo Viloyati', 'Toshkent' => 'Toshkent', 'Toshkent Viloyati' => 'Toshkent Viloyati', 'Xorazm Viloyati' => 'Xorazm Viloyati'],
        'VE' => ['Amazonas' => 'Amazonas', 'Anzoátegui' => 'Anzoátegui', 'Apure' => 'Apure', 'Aragua' => 'Aragua', 'Barinas' => 'Barinas', 'Bolívar' => 'Bolívar', 'Carabobo' => 'Carabobo', 'Cojedes' => 'Cojedes', 'Delta Amacuro' => 'Delta Amacuro', 'Dependencias Federales' => 'Dependencias Federales', 'Distrito Federal' => 'Distrito Federal', 'Falcón' => 'Falcón', 'Guárico' => 'Guárico', 'Lara' => 'Lara', 'Mérida' => 'Mérida', 'Miranda' => 'Miranda', 'Monagas' => 'Monagas', 'Nueva Esparta' => 'Nueva Esparta', 'Portuguesa' => 'Portuguesa', 'Sucre' => 'Sucre', 'Táchira' => 'Táchira', 'Trujillo' => 'Trujillo', 'Vargas' => 'Vargas', 'Yaracuy' => 'Yaracuy', 'Zulia' => 'Zulia'],
        'VN' => ['An Giang' => 'An Giang Province', 'Bà Rịa–Vũng Tàu' => 'Ba Ria-Vung Tau Province', 'Bạc Liêu' => 'Bac Lieu Province', 'Bắc Giang' => 'Bac Giang Province', 'Bắc Kạn' => 'Bac Kan Province', 'Bắc Ninh' => 'Bac Ninh Province', 'Bến Tre' => 'Ben Tre Province', 'Bình Dương' => 'Binh Duong Province', 'Bình Định' => 'Binh Dinh Province', 'Bình Phước' => 'Binh Phuoc Province', 'Bình Thuận' => 'Binh Thuan Province', 'Cà Mau' => 'Ca Mau Province', 'Cao Bằng' => 'Cao Bang Province', 'Cần Thơ' => 'Can Tho City', 'Đà Nẵng' => 'Da Nang City', 'Đắk Lắk' => 'Dak Lak Province', 'Đăk Nông' => 'Dak Nong Province', 'Điện Biên' => 'Dien Bien Province', 'Đồng Nai' => 'Dong Nai Province', 'Đồng Tháp' => 'Dong Thap Province', 'Gia Lai' => 'Gia Lai Province', 'Hà Giang' => 'Ha Giang Province', 'Hà Nam' => 'Ha Nam Province', 'Hà Nội' => 'Hanoi City', 'Hà Tĩnh' => 'Ha Tinh Province', 'Hải Dương' => 'Hai Duong Province', 'Hải Phòng' => 'Haiphong City', 'Hậu Giang' => 'Hau Giang Province', 'Hòa Bình' => 'Hoa Binh Province', 'Hưng Yên' => 'Hung Yen Province', 'Khánh Hòa' => 'Khanh Hoa Province', 'Kiên Giang' => 'Kien Giang Province', 'Kon Tum' => 'Kon Tum Province', 'Lai Châu' => 'Lai Chau Province', 'Lạng Sơn' => 'Lang Song Province', 'Lào Cai' => 'Lao Cai Province', 'Lâm Đồng' => 'Lam Dong Province', 'Long An' => 'Long An Province', 'Nam Định' => 'Nam Dinh Province', 'Nghệ An' => 'Nghe An Province', 'Ninh Bình' => 'Ninh Binh Province', 'Ninh Thuận' => 'Ninh Thuan Province', 'Phú Thọ' => 'Phu Tho Province', 'Phú Yên' => 'Phu Yen Province', 'Quảng Bình' => 'Quang Binh Province', 'Quảng Nam' => 'Quang Nam Province', 'Quảng Ngãi' => 'Quang Ngai Province', 'Quảng Ninh' => 'Quang Ninh Province', 'Quảng Trị' => 'Quang Tri Province', 'Sóc Trăng' => 'Soc Trang Province', 'Sơn La' => 'Son La Province', 'Tây Ninh' => 'Tay Ninh Province', 'Thái Bình' => 'Thai Binh Province', 'Thái Nguyên' => 'Thai Nguyen Province', 'Thanh Hóa' => 'Thanh Hoa Province', 'Thành phố Hồ Chí Minh' => 'Ho Chi Minh City', 'Thành phố Huế' => 'Hue City', 'Tiền Giang' => 'Tien Giang Province', 'Trà Vinh' => 'Tra Vinh Province', 'Tuyên Quang' => 'Tuyen Quang Province', 'Vĩnh Long' => 'Vinh Long Province', 'Vĩnh Phúc' => 'Vinh Phuc Province', 'Yên Bái' => 'Yen Bai Province'],
    ];

    // Expand a compact table row into the format shape consumers also write:
    // ['fields' => [...order...], 'required' => [...], 'labels' => [field => text]].
    $tokenFields = ['A' => ['line1', 'line2'], 'D' => ['dependent_locality'], 'C' => ['locality'], 'S' => ['region'], 'Z' => ['postal_code'], 'X' => ['sorting_code']];
    $expand = function (array $row) use ($tokenFields, $labelTypes, $showLine3, $showPhone): array {
        [$order, $required, $types] = $row;
        $fields = [];
        foreach (str_split($order) as $token) {
            foreach ($tokenFields[$token] ?? [] as $field) {
                $fields[] = $field;
                if ($field === 'line2' && $showLine3) {
                    $fields[] = 'line3';
                }
            }
        }
        if ($showPhone) {
            $fields[] = 'phone';
        }
        $req = [];
        foreach (str_split($required) as $token) {
            $req[] = $tokenFields[$token][0] ?? null;
        }
        $labels = [];
        foreach ($types as $token => $type) {
            if (isset($labelTypes[$type], $tokenFields[$token])) {
                $labels[$tokenFields[$token][0]] = $labelTypes[$type];
            }
        }

        return ['fields' => $fields, 'required' => array_values(array_filter($req)), 'labels' => $labels];
    };

    // Consumer overrides win per country and are normalised the same way.
    $normalise = function (array $f) use ($showLine3, $showPhone, $fieldDefs): array {
        $fields = array_values(array_filter($f['fields'] ?? [], fn ($k) => isset($fieldDefs[$k])));
        if ($showLine3 && ! in_array('line3', $fields, true)) {
            $at = array_search('line2', $fields, true);
            array_splice($fields, $at === false ? count($fields) : $at + 1, 0, ['line3']);
        }
        if (! $showLine3) {
            $fields = array_values(array_diff($fields, ['line3']));
        }
        if ($showPhone && ! in_array('phone', $fields, true)) {
            $fields[] = 'phone';
        }

        return ['fields' => $fields, 'required' => array_values($f['required'] ?? []), 'labels' => array_map(fn ($l) => __($l), $f['labels'] ?? [])];
    };
    $overrides = array_map($normalise, (array) $format);
    $formatFor = fn (string $code): array => $overrides[$code] ?? $expand($addressTable[$code] ?? $addressFallback);

    // Country and region choices: the application's lists win over the built-ins.
    $countryChoices = $countries !== [] ? array_slice((array) $countries, 0, 300, true) : array_map(fn ($n) => __($n), $addressCountries);
    $regionLists = array_replace($addressRegions, array_filter((array) $regions, fn ($list) => is_array($list) && $list !== []));

    // First paint mirrors what the behaviour layer will compute for the initial country.
    $country = (string) ($values['country'] ?? '');
    $active = $formatFor($country);
    $defaultLabels = array_map(fn ($d) => __($d['label']), $fieldDefs);
    $isVisible = fn (string $key) => in_array($key, $active['fields'], true);
    $isRequired = fn (string $key) => in_array($key, $active['required'], true);
    $labelFor = fn (string $key) => $active['labels'][$key] ?? $defaultLabels[$key];
    $styleFor = fn (string $key) => 'order:'.(($i = array_search($key, $active['fields'], true)) === false ? 99 : $i + 3).($isVisible($key) ? '' : ';display:none');
    $hasRegionList = isset($regionLists[$country]);
    $initialRegions = $regionLists[$country] ?? [];

    // The behaviour layer gets the compact table and expands it the same way, so the
    // payload stays small; region lists travel as "code:label~code:label" strings.
    $clientRegions = array_map(fn ($list) => implode('~', array_map(fn ($k, $v) => $k.':'.$v, array_keys($list), $list)), $regionLists);
@endphp

{{--
    Address form — one set of fields, shaped per country: the format for the
    chosen country decides which fields show, in what order, which are required
    and what they are called. The server renders the initial shape (so the form
    is right without JS); the behaviour layer re-shapes it when the country
    changes. Hidden fields are disabled so they never submit stale values.
--}}
<x-ui.form
    data-slot="address-form"
    :action="$action"
    :method="$method"
    :summary="$summary"
    x-data="uiAddressForm({{ Js::from([
        'country' => $country,
        'table' => $addressTable,
        'fallback' => $addressFallback,
        'overrides' => $overrides,
        'labelTypes' => $labelTypes,
        'labels' => $defaultLabels,
        'regions' => $clientRegions,
        'showLine3' => (bool) $showLine3,
        'showPhone' => (bool) $showPhone,
        'selectLabel' => __('Select'),
    ]) }})"
    {{ $attributes }}
>
    <div class="grid min-w-0 gap-4 sm:grid-cols-2">
        <x-ui.field name="address.country" label="Country or territory" required class="sm:col-span-2" style="order:0">
            <x-ui.select autocomplete="country" x-on:change="setCountry($event.target.value)">
                <option value="">{{ __('Select a country or territory') }}</option>
                @foreach ($countryChoices as $code => $label)
                    <option value="{{ $code }}" @selected($country === (string) $code)>{{ $label }}</option>
                @endforeach
            </x-ui.select>
        </x-ui.field>

        <x-ui.field name="address.name" label="Name" required style="order:1">
            <x-ui.input autocomplete="name" :value="$values['name'] ?? null" />
        </x-ui.field>
        <x-ui.field name="address.organization" label="Organization" style="order:2">
            <x-ui.input autocomplete="organization" :value="$values['organization'] ?? null" />
        </x-ui.field>

        @foreach ($fieldDefs as $key => $def)
            {{-- Label and required mark are owned here (not by the field) so the
                 behaviour layer can rename and re-mark them per country. --}}
            <x-ui.field
                name="address.{{ $key }}"
                data-field="{{ $key }}"
                :class="$def['span'] ? 'sm:col-span-2' : ''"
                style="{{ $styleFor($key) }}"
                x-bind:style="styleFor({{ Js::from($key) }})"
            >
                <label
                    data-slot="field-label"
                    for="address.{{ $key }}"
                    x-bind:for="controlId(@js($key))"
                    class="flex min-w-0 max-w-full items-center gap-1 break-all text-sm font-medium leading-none text-foreground"
                >
                    <span x-text="labelFor(@js($key))">{{ $labelFor($key) }}</span>
                    <span x-show="isRequired(@js($key))" @if (! $isRequired($key)) style="display:none" @endif class="text-destructive" aria-hidden="true">*</span>
                    <span x-show="isRequired(@js($key))" @if (! $isRequired($key)) style="display:none" @endif class="sr-only">{{ __('(required)') }}</span>
                </label>

                @if ($key === 'region')
                    <x-ui.input
                        autocomplete="address-level1"
                        :value="$values['region'] ?? null"
                        :required="$isRequired('region') && ! $hasRegionList"
                        :disabled="! $isVisible('region') || $hasRegionList"
                        x-bind:required="isRequired('region') && !hasRegionList()"
                        x-bind:disabled="!isVisible('region') || hasRegionList()"
                        x-show="!hasRegionList()"
                        :style="$hasRegionList ? 'display:none' : null"
                    />
                    {{-- One select, refilled from the region lists when the country changes. --}}
                    <x-ui.select
                        id="address.region-select"
                        autocomplete="address-level1"
                        :required="$isRequired('region') && $hasRegionList"
                        :disabled="! $isVisible('region') || ! $hasRegionList"
                        x-ref="regionSelect"
                        x-bind:required="isRequired('region') && hasRegionList()"
                        x-bind:disabled="!isVisible('region') || !hasRegionList()"
                        x-show="hasRegionList()"
                        x-effect="fillRegions()"
                        :style="$hasRegionList ? null : 'display:none'"
                    >
                        <option value="">{{ __('Select') }}</option>
                        @foreach ($initialRegions as $regionCode => $regionLabel)
                            <option value="{{ $regionCode }}" @selected(($values['region'] ?? null) === (string) $regionCode)>{{ $regionLabel }}</option>
                        @endforeach
                    </x-ui.select>
                @else
                    <x-ui.input
                        :type="$key === 'phone' ? 'tel' : 'text'"
                        :autocomplete="$def['autocomplete']"
                        :value="$values[$key] ?? null"
                        :required="$isRequired($key)"
                        :disabled="! $isVisible($key)"
                        x-bind:required="isRequired({{ Js::from($key) }})"
                        x-bind:disabled="!isVisible({{ Js::from($key) }})"
                    />
                @endif
            </x-ui.field>
        @endforeach

        @isset($countryFields)
            <div data-slot="address-form-country-fields" class="contents [&>*]:order-last">{{ $countryFields }}</div>
        @endisset
    </div>
    <div class="flex justify-end">
        <x-ui.button type="submit">{{ __($submitLabel) }}</x-ui.button>
    </div>
</x-ui.form>
resources/js/ui/address-form.js JS
/**
 * Address form behaviour.
 *
 * The Blade renders every field once and shapes the form for the initial
 * country on the server. This layer re-shapes it when the country changes:
 * which fields show (and in what order), which are required, what they are
 * called, and whether the region is a select — all from the same compact
 * per-country table the server used (libaddressinput vocabulary: A street
 * lines, D dependent locality, C locality, S region, Z postal code, X sorting
 * code), so the two never disagree. Hidden fields are disabled so stale values
 * never submit.
 *
 * Self-registers on `alpine:init` so import order does not matter.
 */
const TOKEN_FIELDS = {
    A: ['line1', 'line2'],
    D: ['dependent_locality'],
    C: ['locality'],
    S: ['region'],
    Z: ['postal_code'],
    X: ['sorting_code'],
};

document.addEventListener('alpine:init', () => {
    window.Alpine.data('uiAddressForm', (config = {}) => ({
        country: config.country ?? '',
        table: config.table ?? {},
        fallback: config.fallback ?? ['AC', 'AC', {}],
        overrides: config.overrides ?? {},
        labelTypes: config.labelTypes ?? {},
        labels: config.labels ?? {},
        regions: config.regions ?? {},
        showLine3: Boolean(config.showLine3),
        showPhone: Boolean(config.showPhone),
        selectLabel: config.selectLabel ?? 'Select',
        _filledFor: null,

        /** Expand a compact table row into { fields, required, labels }. */
        expand(row) {
            const [order, required, types] = row;
            const fields = [];
            for (const token of order) {
                for (const field of TOKEN_FIELDS[token] ?? []) {
                    fields.push(field);
                    if (field === 'line2' && this.showLine3) fields.push('line3');
                }
            }
            if (this.showPhone) fields.push('phone');
            const labels = {};
            for (const [token, type] of Object.entries(types ?? {})) {
                if (this.labelTypes[type] && TOKEN_FIELDS[token]) labels[TOKEN_FIELDS[token][0]] = this.labelTypes[type];
            }
            return {
                fields,
                required: [...required].map((token) => TOKEN_FIELDS[token]?.[0]).filter(Boolean),
                labels,
            };
        },

        format() {
            return this.overrides[this.country] ?? this.expand(this.table[this.country] ?? this.fallback);
        },

        setCountry(code) {
            this.country = String(code ?? '');
        },

        isVisible(key) {
            return this.format().fields.includes(key);
        },

        isRequired(key) {
            return this.isVisible(key) && this.format().required.includes(key);
        },

        labelFor(key) {
            return this.format().labels[key] ?? this.labels[key] ?? key;
        },

        hasRegionList() {
            return Boolean(this.regions[this.country]);
        },

        /** The visible control's id, so the label stays associated when the region swaps to a select. */
        controlId(key) {
            return key === 'region' && this.hasRegionList() ? 'address.region-select' : `address.${key}`;
        },

        /** Refill the region select for the current country (runs through x-effect). */
        fillRegions() {
            const select = this.$refs.regionSelect;
            const list = this.regions[this.country];
            if (!select || this._filledFor === this.country) return;
            this._filledFor = this.country;
            if (!list) return;
            const placeholder = document.createElement('option');
            placeholder.value = '';
            placeholder.textContent = this.selectLabel;
            select.replaceChildren(placeholder);
            for (const pair of list.split('~')) {
                const at = pair.indexOf(':');
                const option = document.createElement('option');
                option.value = pair.slice(0, at);
                option.textContent = pair.slice(at + 1);
                select.append(option);
            }
        },

        /** Grid order (country 0, name 1, organization 2, then the format's order) plus visibility. */
        styleFor(key) {
            const i = this.format().fields.indexOf(key);
            return `order:${i === -1 ? 99 : i + 3}${this.isVisible(key) ? '' : ';display:none'}`;
        },
    }));
});

Ownership & lifecycle

Owner, release state, review evidence and adoption for this item.
Owner
Platform UI (@JoshJML)
Current version
1.2.2
Status
Stable
License
open
Accessibility reviewed
No review date recorded
Last breaking change
No date recorded
Deprecation
Not deprecated
Contract
v6
Foundation
≥ 1.0.0