Compare commits

..

6 Commits

24 changed files with 1193 additions and 375 deletions
+15 -5
View File
@@ -11,7 +11,7 @@ replacement, and each removed path, column or flag.
- First release: the CLI, the library and the shipped data set.
- Table categories: a category JSON naming a `rows` TSV beside it, with the options
`key`, `name`, `weight` and `parent`; a path selects a row by key or name,
`misc.country[SE]`, and descends to a linked table by name; linked tables draw
`misc.territory[SE]`, and descends to a linked table by name; linked tables draw
consistently within one render and draw group. `rows` is an option, so no
template may carry a field of that name. A `name` without a `key` resolves
inside the table's `parent`. Refused at `New`: a `name` without a `key` or a
@@ -21,16 +21,26 @@ replacement, and each removed path, column or flag.
row of, or two paths pinning different rows of one table.
- `New` refuses a root choice of templates sharing one format and one set of string
fields, naming the rows TSV to write instead.
- `misc.country`, `misc.currency`, `misc.language`, `misc.httpstatus` and
`misc.mimetype` are tables. `misc.country` is every ISO 3166 country that has a
capital, a currency and a TLD, with the columns `calling-code`, `capital`,
`currency`, `flag`, `languages`, `numeric` and `tld` added; `misc.currency` the
- `misc.territory`, `misc.currency`, `misc.language`, `misc.httpstatus` and
`misc.mimetype` are tables. `misc.territory` is every ISO 3166-1 territory that has
a capital, a currency and a TLD, with the columns `calling-code`, `capital`,
`country`, `currency`, `flag`, `languages`, `numeric` and `tld` added, `country`
naming the sovereign state it belongs to and itself where it is one;
`misc.currency` the
current ISO 4217 currencies with a minor unit, with `decimals` and `numeric`
added, and its symbols from CLDR; `misc.language` every ISO 639-2 entry carrying a
639-1 code, with a `code3` column holding its 639-2/T code; `misc.httpstatus` each
code the IANA registry lists with a plain reason phrase; and `misc.mimetype` each
type mime-db records as IANA-registered and gives a filename extension.
`DATA-LICENSES.md` lists each source.
- `misc.timezone`, `misc.car` and `misc.useragent` are tables too. `misc.timezone`
is tzdb `zone.tab`'s zone for each shipped territory, with `offset` holding the
zone's standard UTC offset and `territory` linking to `misc.territory`, so
`misc.territory[SE].timezone` draws `Europe/Stockholm`; zones of a territory
`misc.territory` does not ship, Antarctica's among them, and the constant `UTC`
are gone. `misc.useragent` is the top-user-agents desktop and mobile lists with
`browser`, `device` and `os` columns. `misc.car` keeps its makes and models, with
`misc.car.maker` renamed `misc.car.make`.
- `geo.SE` and `geo.US`: five linked tables per country, `region`, `municipality`,
`locality`, `postal-code` and `street`, weighted by population and address counts
and built from SCB, GeoNames, Trafikverket NVDB and the US Census Bureau, and an
+4 -1
View File
@@ -14,11 +14,14 @@ Every shipped dataset, its source, its licence and the attribution it asks for.
| `sv_SE/first-name.tsv`, `last-name.tsv` | [SCB](https://www.scb.se/) names with at least two bearers, 31 December 2022 | CC0 1.0 | "Källa: SCB" | `data-import/names-se.py` |
| `en_US/first-name.tsv` | [SSA](https://www.ssa.gov/oact/babynames/) baby names, births 1930 to 2020, through [hackerb9/ssa-baby-names](https://github.com/hackerb9/ssa-baby-names) | public domain | none required | `data-import/names-us.py` |
| `en_US/last-name.tsv` | Census Bureau surnames occurring 100 or more times, 2010 | public domain | none required | `data-import/names-us.py` |
| `misc/car.tsv` | curated makes and models, pending an international source (goal 10) | — | — | — |
| `sv_SE/sex.tsv`, `sv_SE/birth-number.tsv`, `sv_SE/title.tsv`, `en_US/sex.tsv`, `en_US/title.tsv` | curated (Skatteverket's test birth numbers are facts) | — | — | — |
| `misc/country.tsv` | [datasets/country-codes](https://github.com/datasets/country-codes) | [PDDL 1.0](https://opendatacommons.org/licenses/pddl/1-0/) | none required | `data-import/country.py` |
| `misc/territory.tsv` | [datasets/country-codes](https://github.com/datasets/country-codes) | [PDDL 1.0](https://opendatacommons.org/licenses/pddl/1-0/) | none required | `data-import/territory.py` |
| `misc/currency.tsv` | [datasets/currency-codes](https://github.com/datasets/currency-codes); symbols from [Unicode CLDR](https://github.com/unicode-org/cldr) `en.xml` and `root.xml` | PDDL 1.0; [Unicode License v3](https://www.unicode.org/license.txt) | CLDR: "Copyright © 1991-2025 Unicode, Inc. Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the United States and other countries." | `data-import/currency.py` |
| `misc/httpstatus.tsv` | [IANA HTTP Status Code Registry](https://www.iana.org/assignments/http-status-codes/) | [public domain](https://www.iana.org/help/licensing-terms) | none required | `data-import/httpstatus.py` |
| `misc/language.tsv` | [datasets/language-codes](https://github.com/datasets/language-codes), the [Library of Congress](https://www.loc.gov/standards/iso639-2/) ISO 639-2 register | [PDDL 1.0](https://opendatacommons.org/licenses/pddl/1-0/) | none required | `data-import/language.py` |
| `misc/mimetype.tsv` | [mime-db](https://github.com/jshttp/mime-db), the IANA media type registry with filename extensions | [MIT](https://github.com/jshttp/mime-db/blob/master/LICENSE) | "Copyright (c) 2014 Jonathan Ong, Copyright (c) 2015-2022 Douglas Christopher Wilson" | `data-import/mimetype.py` |
| `misc/timezone.tsv` | [IANA tzdb](https://www.iana.org/time-zones) `zone.tab` and the standard offset of each zone | [public domain](https://data.iana.org/time-zones/tzdb/LICENSE) | none required | `data-import/timezone.py` |
| `misc/useragent.tsv` | [top-user-agents](https://github.com/microlinkhq/top-user-agents) desktop and mobile lists | [MIT](https://github.com/microlinkhq/top-user-agents/blob/master/LICENSE.md) | "Copyright © 2020 Kiko Beats" | `data-import/useragent.py` |
Every other category is hand-written JSON under [`data/`](data), MIT like the code.
+67 -15
View File
@@ -17,8 +17,8 @@ fejkdata sv_SE.person.last # Eriksson
fejkdata --seed 42 sv_SE.address # the same address every run
fejkdata -n 3 --separator ', ' sv_SE.word # nät, barn, sol
fejkdata --list # every path the data offers
fejkdata 'misc.country[SE].capital' # Stockholm — a table's row, selected by key or name
fejkdata 'geo.SE.locality[Lund].street' # Fjelievägen — a linked table, drawn inside the row
fejkdata 'misc.territory[SE].capital' # Stockholm — a table's row, selected by key or name
fejkdata 'geo.SE.locality[Lund].street' # Fjelievägen — a linked table, drawn inside the row
fejkdata --data-path ./mydata sv_SE.word # layer a directory over the shipped data
fejkdata --no-shipped-data -d ./mydata --list # only your data
fejkdata 'name: {/sv_SE.person.last}' # name: <a surname> — an inline template
@@ -161,15 +161,28 @@ Each locale carries `address`, `color`, `company`, `date`, `email`, `first-name`
`ip`, `last-name`, `person`, `phone`, `price`, `sentence`, `sex`, `time`, `url`,
`username`, `version` and `word`, formatted per locale; `sv_SE` adds
`personnummer` and `samordningsnummer`, `en_US` adds `ssn` and `itin`. `misc`
carries `car`, `coordinate`, `country` (ISO 3166), `creditcard` (Luhn-valid),
`currency` (ISO 4217), `datetime` (RFC 3339), `emoji`, `httpstatus`, `language`
(ISO 639-1, with its 639-2/T code), `mac`, `mimetype`, `objectid`, `timezone`
carries `car`, `coordinate`, `creditcard` (Luhn-valid), `currency` (ISO 4217),
`datetime` (RFC 3339), `emoji`, `httpstatus`, `language` (ISO 639-1, with its
639-2/T code), `mac`, `mimetype`, `objectid`, `territory` (ISO 3166-1), `timezone`
(IANA), `useragent` and `uuid` (v4). Many carry sub-fields — `misc.currency.symbol`,
`misc.country.alpha2`, `misc.httpstatus.code` — which `--list` shows. `country`,
`currency`, `httpstatus`, `language` and `mimetype` are [tables](#table), so
`misc.country[SE].capital` and `misc.currency[Euro].symbol` select a row;
`misc.territory.alpha2`, `misc.httpstatus.code` — which `--list` shows. `car`,
`currency`, `httpstatus`, `language`, `mimetype`, `territory`, `timezone` and
`useragent` are [tables](#table), so `misc.territory[SE].capital` and
`misc.currency[Euro].symbol` select a row;
[`DATA-LICENSES.md`](DATA-LICENSES.md) names each table's source and licence.
`misc.timezone` is tzdb's zone for a territory, with the territory's code and the
zone's standard offset — not the offset in force on any given date, which a zone
name is what you store precisely to avoid. It links to `misc.territory`, so
`misc.territory[SE].timezone` is `Europe/Stockholm` and a drawn territory and zone
agree. `misc.useragent` carries `browser`, `device` and `os` beside the string, and
`misc.car` a `make` and a `model`.
ISO 3166-1 codes territories, not sovereign states, so that is what the table is
called: Greenland and Åland have codes of their own, and `misc.territory.country`
names the state each belongs to — `DK` for Greenland, `FI` for Åland, and its own
code for a sovereign one.
`sex`, `first-name` and `last-name` are tables weighted by bearers, from SCB, the
SSA and the Census Bureau. `first-name` links to `sex`, so `sv_SE.sex[f].first-name`
draws a woman's name, and a name both sexes carry is a row under each, so
@@ -447,11 +460,11 @@ inline template has no file beside it, so there it stays a choice.
### Row selection
`[key]` or `[name]` after a table's name selects one row: `misc.country[SE]` and
`misc.country[Sweden]` name one row, and `misc.country[SE].capital` reads its column.
`[key]` or `[name]` after a table's name selects one row: `misc.territory[SE]` and
`misc.territory[Sweden]` name one row, and `misc.territory[SE].capital` reads its column.
A name naming several rows is an error listing their keys, unless a row selected
before it settles which ([Linked tables](#linked-tables)). A selector is part of the path, so it works
wherever a path does: `Fake`, `FakeRecord`, a `{/misc.country[SE].capital}` reference
wherever a path does: `Fake`, `FakeRecord`, a `{/misc.territory[SE].capital}` reference
and a struct tag. A dot inside the brackets belongs to the key or name, so
`city[St. Louis]` selects it. A path starts with a name, and `[` still opens a JSON
array at the start of a CLI argument, so `'[SE]'` alone names nothing.
@@ -772,6 +785,13 @@ App developers writing tests and fixtures, in Go and at a shell:
9. **Fast enough to be free** — a value renders in about a microsecond and `New`
parses and validates the whole set once upfront, so generating fixtures stays
noise against a test's own runtime.
10. **Data is sourced, or on its way there** — a shipped fact, a name, place,
code, id or classification, is read from a register or open dataset by a
[`data-import/`](data-import) script wherever one exists to read; where none
does yet a small hand-written set ships and [`todo.md`](todo.md) carries the
step that replaces it. Only non-factual copy stays authored. A sourced table
holds the rows its source holds: none is added by hand, and one is dropped
only by a rule the script states.
## Decisions
@@ -1124,11 +1144,41 @@ App developers writing tests and fixtures, in Go and at a shell:
tells the two apart, `sex[f].first-name[Kim]`, the ambiguity error spells each
row inside its parent, and a name repeating inside one parent row is refused at
load, since nothing could then select it.
- **`misc.country` carries a currency code, it does not link to `misc.currency`.**
- **`misc` is what every locale shares.** A category whose facts differ by country
belongs in that country's locale, read from the register that country's own
records use; `misc` takes only sources that are international. So NHTSA vPIC
builds `en_US.car` and Mobility Sweden's registrations `sv_SE.car`, never
`misc.car`.
- **A register's canonical spelling loses to the one its domain writes.** Where a
source offers several spellings of one fact, the shipped one is what records in
that domain carry. `misc.timezone` reads `zone.tab` and not the `zone1970.tab`
that supersedes it, because the latter keeps one zone per set of countries that
have agreed since 1970: it spells Sweden `Europe/Berlin`, and no Swedish system
writes that. For the same reason `misc.language` takes the ISO 639-2 register's
first synonym over CLDR, which says "Chinese, Mandarin" for `zh`.
- **`misc.territory` is the spine, and a `misc` table naming a territory links to
it.** Where every territory row has a child the column is a `parent`, and the
import drops the child rows whose territory the set does not ship — 17 of
`misc.timezone`'s, Antarctica's ten among them. Agreement across a record is
worth more than the last rows of a table. Where no such link can hold the fact
stays a column. Layer your own `misc.territory` over the shipped one and you
must layer `misc.timezone` too, or the link fails at load naming the row.
- **`misc.territory` names its sovereign in a column, and there is no `misc.country`
table.** ISO 3166-1 codes territories, so `territory` is the honest name, and
`is_independent` in the register gives each one's state. A second table of the 195
sovereigns would hold a `DK` row beside the territory `DK` row, both carrying
Denmark's capital, currency, flag and TLD — two owners for one fact, drifting at
the next import. Splitting the columns to avoid that is worse: put `capital` on
the territory alone and a country row can no longer name Copenhagen. The column
cannot be a `parent`, since a table never reaches its own family; a test proves
every value names a row instead. A territory the register records no state for
stands alone, which is `EH` alone, and naming one for it would be a claim
fejkdata has no business making.
- **`misc.territory` carries a currency code, it does not link to `misc.currency`.**
A `parent` demands a child for every parent row, and ISO 4217 registers codes no
country's row can name: the funds codes (Mvdol, WIR Euro, US Dollar (Next day)),
and VED beside VES, both Venezuela's, of which a country row names one. Linking
would trade the register for the link, and `misc.country.currency` already pairs a
would trade the register for the link, and `misc.territory.currency` already pairs a
country with its currency in one draw.
- **An extension may name two media types.** `.xml`, `.rtf`, `.sub`, `.mpp` and `.ac`
each name two rows of `misc.mimetype`. Separating them would mean dropping a
@@ -1207,15 +1257,17 @@ and `names-us.py` rejects a client for a while after a burst, so `--surnames` ta
a copy of the surname file:
```sh
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/country.py
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/currency.py
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/geo-us.py
docker compose run --rm --user "$(id -u):$(id -g)" -e TRAFIKVERKET_API_KEY data-import data-import/geo-se.py
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/geo-us.py
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/httpstatus.py
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/language.py
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/mimetype.py
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/names-se.py
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/names-us.py
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/territory.py
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/timezone.py
docker compose run --rm --user "$(id -u):$(id -g)" data-import data-import/useragent.py
```
To release, head `CHANGELOG.md` with the version's section in place of `Unreleased`
+1 -1
View File
@@ -24,7 +24,7 @@ import (
const usage = `Usage: fejkdata [flags] <path|template>
<path> a category, or a dotted path into one (person, person.last);
a table's row by key or name: 'misc.country[SE]', 'misc.country[Sweden].tld'
a table's row by key or name: 'misc.territory[SE]', 'misc.territory[Sweden].tld'
<template> a format string or JSON value to render inline, e.g.
'name: {/sv_SE.person.last}' or '{"format":"{x}","x":["bosse","lina"]}'
+2 -2
View File
@@ -352,8 +352,8 @@ func TestRunSelectsATableRow(t *testing.T) {
if code, _, errb := runOut("--no-shipped-data", "-d", dir, "[Skåne län]"); code != 2 || !strings.Contains(errb, "JSON") {
t.Fatalf("[Skåne län] = %d, stderr=%q, want misuse: a leading bracket that is no JSON names nothing", code, errb)
}
if code, out, _ := runOut("--seed", "1", "--format", "csv", "misc.country[SE]"); code != 0 || !strings.HasPrefix(out, "alpha2,") || !strings.Contains(out, "\nSE,SWE,") {
t.Fatalf("--format csv misc.country[SE] = %d, %q", code, out)
if code, out, _ := runOut("--seed", "1", "--format", "csv", "misc.territory[SE]"); code != 0 || !strings.HasPrefix(out, "alpha2,") || !strings.Contains(out, "\nSE,SWE,") {
t.Fatalf("--format csv misc.territory[SE] = %d, %q", code, out)
}
}
@@ -1,21 +1,23 @@
#!/usr/bin/env python3
"""Rebuild data/misc/country.tsv from datasets/country-codes (PDDL).
"""Rebuild data/misc/territory.tsv from datasets/country-codes (PDDL).
data-import/country.py [--source URL_OR_FILE] [--cache DIR] [--out FILE]
data-import/territory.py [--source URL_OR_FILE] [--cache DIR] [--out FILE]
"""
import argparse
import csv
import io
import re
import sys
from pathlib import Path
import source
import tsv
SOURCE = "https://raw.githubusercontent.com/datasets/country-codes/main/data/country-codes.csv"
OUT = Path(__file__).resolve().parent.parent / "data" / "misc" / "country.tsv"
OUT = Path(__file__).resolve().parent.parent / "data" / "misc" / "territory.tsv"
CACHE = Path(__file__).resolve().parent / "cache"
COLUMNS = ["alpha2", "alpha3", "calling-code", "capital", "currency", "flag", "languages", "name", "numeric", "tld"]
COLUMNS = ["alpha2", "alpha3", "calling-code", "capital", "country", "currency", "flag", "languages", "name", "numeric", "tld"]
SOVEREIGN = re.compile(r"^(?:Part of|Territor(?:y|ies) of|Crown dependency of|Commonwealth of|Associated with) ([A-Z]{2})$")
# Gaps in the source, keyed by alpha2.
FIXUPS = {"TR": {"currency": "TRY"}}
@@ -33,6 +35,12 @@ def languages(field):
return ",".join(p for p in field.split(",") if p)
def country(alpha2, independent):
"""The sovereign state the register records; a territory it records none for stands alone."""
m = SOVEREIGN.match(independent)
return m.group(1) if m else alpha2
def rows(text):
for r in csv.DictReader(io.StringIO(text)):
alpha2 = r["ISO3166-1-Alpha-2"]
@@ -41,6 +49,7 @@ def rows(text):
"alpha3": r["ISO3166-1-Alpha-3"],
"calling-code": calling_code(r["Dial"]),
"capital": r["Capital"],
"country": country(alpha2, r["is_independent"]),
"currency": r["ISO4217-currency_alphabetic_code"].split(",")[0],
"flag": flag(alpha2),
"languages": languages(r["Languages"]),
@@ -59,8 +68,12 @@ def main():
p.add_argument("--source", default=SOURCE)
p.add_argument("--out", default=str(OUT))
a = p.parse_args()
table = rows(source.fetch(a.source, a.cache, "country-codes.csv").decode("utf-8"))
tsv.write(a.out, COLUMNS, sorted(table, key=lambda r: r["alpha2"]))
table = sorted(rows(source.fetch(a.source, a.cache, "country-codes.csv").decode("utf-8")), key=lambda r: r["alpha2"])
shipped = {r["alpha2"] for r in table}
for r in table:
if r["country"] not in shipped:
sys.exit(f"{r['alpha2']}: country {r['country']} is no shipped territory; a sovereign the set drops leaves its territories unreadable")
tsv.write(a.out, COLUMNS, table)
if __name__ == "__main__":
+105
View File
@@ -0,0 +1,105 @@
#!/usr/bin/env python3
"""Rebuild data/misc/timezone.tsv from the IANA tzdb tarball (public domain).
data-import/timezone.py [--source URL_OR_FILE] [--cache DIR] [--out FILE] [--territories FILE]
zone.tab names one zone per territory, so Europe/Stockholm ships where zone1970.tab
would spell Sweden Europe/Berlin. The offset is the zone's standard offset, the first
field of its Zone rule's last continuation line, with a Link resolved to its target.
"""
import argparse
import csv
import io
import re
import sys
import tarfile
from pathlib import Path
import source
import tsv
SOURCE = "https://data.iana.org/time-zones/tzdata-latest.tar.gz"
OUT = Path(__file__).resolve().parent.parent / "data" / "misc" / "timezone.tsv"
TERRITORIES = Path(__file__).resolve().parent.parent / "data" / "misc" / "territory.tsv"
CACHE = Path(__file__).resolve().parent / "cache"
COLUMNS = ["offset", "territory", "zone"]
REGIONS = ["africa", "antarctica", "asia", "australasia", "backward", "etcetera", "europe", "northamerica", "southamerica"]
def offsets(tar):
"""Every zone's standard offset, and every link's target."""
std, links = {}, {}
for name in REGIONS:
zone = None
for raw in tar.extractfile(name).read().decode("utf-8").splitlines():
line = raw.split("#")[0].rstrip()
if not line.strip():
continue
if line.startswith("Zone"):
f = line.split()
zone, std[f[1]] = f[1], f[2]
elif line.startswith("Link"):
f = line.split()
links[f[2]], zone = f[1], None
elif line[0] in " \t" and zone:
std[zone] = line.split()[0]
else:
zone = None
return std, links
def resolve(zone, std, links):
for _ in range(10):
if zone in std:
return std[zone]
if zone not in links:
return None
zone = links[zone]
return None
def utc_offset(raw):
"""±HH:MM from a tzdb STDOFF field; a zone still off by seconds is not one we can spell."""
m = re.match(r"^(-)?(\d{1,2}):(\d{2})(?::(\d{2}))?$", raw)
if not m or (m.group(4) or "00") != "00":
return None
return f"{'-' if m.group(1) else '+'}{int(m.group(2)):02d}:{m.group(3)}"
def rows(tar, territories):
std, links = offsets(tar)
for line in tar.extractfile("zone.tab").read().decode("utf-8").splitlines():
if line.startswith("#") or not line.strip():
continue
territory, _, zone = line.split("\t")[:3]
if territory not in territories:
continue
raw = resolve(zone, std, links)
if raw is None:
sys.exit(f"{zone}: the tarball gives it no Zone rule and no Link to one")
offset = utc_offset(raw)
if offset is None:
sys.exit(f"{zone}: standard offset {raw!r} is not a whole number of minutes")
yield {"offset": offset, "territory": territory, "zone": zone}
def main():
p = argparse.ArgumentParser(description=__doc__.splitlines()[0])
p.add_argument("--cache", default=str(CACHE))
p.add_argument("--source", default=SOURCE)
p.add_argument("--out", default=str(OUT))
p.add_argument("--territories", default=str(TERRITORIES))
a = p.parse_args()
shipped = {r["alpha2"] for r in csv.DictReader(io.StringIO(Path(a.territories).read_text(encoding="utf-8")), delimiter="\t")}
body = source.fetch(a.source, a.cache, "tzdata-latest.tar.gz", magic=b"\x1f\x8b")
with tarfile.open(fileobj=io.BytesIO(body)) as tar:
table = sorted(rows(tar, shipped), key=lambda r: r["zone"])
print(f"tzdb {tar.extractfile('version').read().decode('utf-8').strip()}", file=sys.stderr)
linked = {r["territory"] for r in table}
if missing := shipped - linked:
sys.exit(f"no zone for {sorted(missing)}; a parent row without a child is a load error")
tsv.write(a.out, COLUMNS, table)
if __name__ == "__main__":
main()
+55
View File
@@ -0,0 +1,55 @@
#!/usr/bin/env python3
"""Rebuild data/misc/useragent.tsv from microlinkhq/top-user-agents (MIT).
data-import/useragent.py [--source URL] [--cache DIR] [--out FILE]
The desktop and mobile lists partition the whole, so `device` is read rather than
parsed. A row ships when the string names a browser and an operating system both.
"""
import argparse
import json
import re
from pathlib import Path
import source
import tsv
SOURCE = "https://raw.githubusercontent.com/microlinkhq/top-user-agents/master/src"
OUT = Path(__file__).resolve().parent.parent / "data" / "misc" / "useragent.tsv"
CACHE = Path(__file__).resolve().parent / "cache"
COLUMNS = ["browser", "device", "os", "ua"]
# First match wins: Edge, Opera and Samsung Internet all carry Chrome's token too,
# and an iPhone says "like Mac OS X".
BROWSERS = [("Edge", r"Edg(iOS)?/"), ("Opera", r"OPR/"), ("Samsung Internet", r"SamsungBrowser/"),
("Chrome", r"(Chrome|CriOS)/"), ("Firefox", r"(Firefox|FxiOS)/"), ("Safari", r"Version/[\d.]+ .*Safari")]
SYSTEMS = [("iOS", r"iPhone|iPad|CPU OS "), ("Android", r"Android"), ("ChromeOS", r"CrOS"),
("Windows", r"Windows NT"), ("macOS", r"Macintosh|Mac OS X"), ("Linux", r"X11.*Linux|Ubuntu")]
def named(table, ua):
for name, pattern in table:
if re.search(pattern, ua):
return name
return ""
def rows(desktop, mobile):
for device, uas in (("desktop", desktop), ("mobile", mobile)):
for ua in uas:
browser, os = named(BROWSERS, ua), named(SYSTEMS, ua)
if browser and os:
yield {"browser": browser, "device": device, "os": os, "ua": ua}
def main():
p = argparse.ArgumentParser(description=__doc__.splitlines()[0])
p.add_argument("--cache", default=str(CACHE))
p.add_argument("--source", default=SOURCE)
p.add_argument("--out", default=str(OUT))
a = p.parse_args()
lists = [json.loads(source.fetch(f"{a.source}/{n}.json", a.cache, f"top-user-agents-{n}.json")) for n in ("desktop", "mobile")]
tsv.write(a.out, COLUMNS, sorted(rows(*lists), key=lambda r: (r["browser"], r["os"], r["ua"])))
if __name__ == "__main__":
main()
+1 -10
View File
@@ -1,10 +1 @@
[
{ "format": "{maker} {model}", "maker": "BMW", "model": ["3 Series", "5 Series", "X3", "X5"] },
{ "format": "{maker} {model}", "maker": "Ford", "model": ["Fiesta", "Focus", "Mustang", "Explorer"] },
{ "format": "{maker} {model}", "maker": "Honda", "model": ["Civic", "Accord", "CR-V", "Jazz"] },
{ "format": "{maker} {model}", "maker": "Mercedes-Benz", "model": ["A-Class", "C-Class", "E-Class", "GLC"] },
{ "format": "{maker} {model}", "maker": "Tesla", "model": ["Model 3", "Model S", "Model X", "Model Y"] },
{ "format": "{maker} {model}", "maker": "Toyota", "model": ["Corolla", "Camry", "RAV4", "Yaris"] },
{ "format": "{maker} {model}", "maker": "Volkswagen", "model": ["Golf", "Passat", "Polo", "Tiguan"] },
{ "format": "{maker} {model}", "maker": "Volvo", "model": ["XC40", "XC60", "XC90", "V60"] }
]
{ "format": "{make} {model}", "rows": "car.tsv" }
+33
View File
@@ -0,0 +1,33 @@
make model
BMW 3 Series
BMW 5 Series
BMW X3
BMW X5
Ford Explorer
Ford Fiesta
Ford Focus
Ford Mustang
Honda Accord
Honda CR-V
Honda Civic
Honda Jazz
Mercedes-Benz A-Class
Mercedes-Benz C-Class
Mercedes-Benz E-Class
Mercedes-Benz GLC
Tesla Model 3
Tesla Model S
Tesla Model X
Tesla Model Y
Toyota Camry
Toyota Corolla
Toyota RAV4
Toyota Yaris
Volkswagen Golf
Volkswagen Passat
Volkswagen Polo
Volkswagen Tiguan
Volvo V60
Volvo XC40
Volvo XC60
Volvo XC90
1 make model
2 BMW 3 Series
3 BMW 5 Series
4 BMW X3
5 BMW X5
6 Ford Explorer
7 Ford Fiesta
8 Ford Focus
9 Ford Mustang
10 Honda Accord
11 Honda CR-V
12 Honda Civic
13 Honda Jazz
14 Mercedes-Benz A-Class
15 Mercedes-Benz C-Class
16 Mercedes-Benz E-Class
17 Mercedes-Benz GLC
18 Tesla Model 3
19 Tesla Model S
20 Tesla Model X
21 Tesla Model Y
22 Toyota Camry
23 Toyota Corolla
24 Toyota RAV4
25 Toyota Yaris
26 Volkswagen Golf
27 Volkswagen Passat
28 Volkswagen Polo
29 Volkswagen Tiguan
30 Volvo V60
31 Volvo XC40
32 Volvo XC60
33 Volvo XC90
-1
View File
@@ -1 +0,0 @@
{ "format": "{name}", "rows": "country.tsv", "key": "alpha2", "name": "name" }
-242
View File
@@ -1,242 +0,0 @@
alpha2 alpha3 calling-code capital currency flag languages name numeric tld
AD AND 376 Andorra la Vella EUR 🇦🇩 ca Andorra 020 .ad
AE ARE 971 Abu Dhabi AED 🇦🇪 ar-AE,fa,en,hi,ur United Arab Emirates 784 .ae
AF AFG 93 Kabul AFN 🇦🇫 fa-AF,ps,uz-AF,tk Afghanistan 004 .af
AG ATG 1-268 St. John's XCD 🇦🇬 en-AG Antigua & Barbuda 028 .ag
AI AIA 1-264 The Valley XCD 🇦🇮 en-AI Anguilla 660 .ai
AL ALB 355 Tirana ALL 🇦🇱 sq,el Albania 008 .al
AM ARM 374 Yerevan AMD 🇦🇲 hy Armenia 051 .am
AO AGO 244 Luanda AOA 🇦🇴 pt-AO Angola 024 .ao
AR ARG 54 Buenos Aires ARS 🇦🇷 es-AR,en,it,de,fr,gn Argentina 032 .ar
AS ASM 1-684 Pago Pago USD 🇦🇸 en-AS,sm,to American Samoa 016 .as
AT AUT 43 Vienna EUR 🇦🇹 de-AT,hr,hu,sl Austria 040 .at
AU AUS 61 Canberra AUD 🇦🇺 en-AU Australia 036 .au
AW ABW 297 Oranjestad AWG 🇦🇼 nl-AW,pap,es,en Aruba 533 .aw
AX ALA 358 Mariehamn EUR 🇦🇽 sv-AX Åland Islands 248 .ax
AZ AZE 994 Baku AZN 🇦🇿 az,ru,hy Azerbaijan 031 .az
BA BIH 387 Sarajevo BAM 🇧🇦 bs,hr-BA,sr-BA Bosnia 070 .ba
BB BRB 1-246 Bridgetown BBD 🇧🇧 en-BB Barbados 052 .bb
BD BGD 880 Dhaka BDT 🇧🇩 bn-BD,en Bangladesh 050 .bd
BE BEL 32 Brussels EUR 🇧🇪 nl-BE,fr-BE,de-BE Belgium 056 .be
BF BFA 226 Ouagadougou XOF 🇧🇫 fr-BF,mos Burkina Faso 854 .bf
BG BGR 359 Sofia EUR 🇧🇬 bg,tr-BG,rom Bulgaria 100 .bg
BH BHR 973 Manama BHD 🇧🇭 ar-BH,en,fa,ur Bahrain 048 .bh
BI BDI 257 Gitega BIF 🇧🇮 fr-BI,rn Burundi 108 .bi
BJ BEN 229 Porto-Novo XOF 🇧🇯 fr-BJ Benin 204 .bj
BL BLM 590 Gustavia EUR 🇧🇱 fr St. Barthélemy 652 .gp
BM BMU 1-441 Hamilton BMD 🇧🇲 en-BM,pt Bermuda 060 .bm
BN BRN 673 Bandar Seri Begawan BND 🇧🇳 ms-BN,en-BN Brunei 096 .bn
BO BOL 591 Sucre BOB 🇧🇴 es-BO,qu,ay Bolivia 068 .bo
BR BRA 55 Brasilia BRL 🇧🇷 pt-BR,es,en,fr Brazil 076 .br
BS BHS 1-242 Nassau BSD 🇧🇸 en-BS Bahamas 044 .bs
BT BTN 975 Thimphu INR 🇧🇹 dz Bhutan 064 .bt
BW BWA 267 Gaborone BWP 🇧🇼 en-BW,tn-BW Botswana 072 .bw
BY BLR 375 Minsk BYN 🇧🇾 be,ru Belarus 112 .by
BZ BLZ 501 Belmopan BZD 🇧🇿 en-BZ,es Belize 084 .bz
CA CAN 1 Ottawa CAD 🇨🇦 en-CA,fr-CA,iu Canada 124 .ca
CC CCK 61 West Island AUD 🇨🇨 ms-CC,en Cocos Islands 166 .cc
CD COD 243 Kinshasa CDF 🇨🇩 fr-CD,ln,ktu,kg,sw,lua Congo - Kinshasa 180 .cd
CF CAF 236 Bangui XAF 🇨🇫 fr-CF,sg,ln,kg Central African Republic 140 .cf
CG COG 242 Brazzaville XAF 🇨🇬 fr-CG,kg,ln-CG Congo - Brazzaville 178 .cg
CH CHE 41 Bern CHF 🇨🇭 de-CH,fr-CH,it-CH,rm Switzerland 756 .ch
CI CIV 225 Yamoussoukro XOF 🇨🇮 fr-CI Côte d’Ivoire 384 .ci
CK COK 682 Avarua NZD 🇨🇰 en-CK,mi Cook Islands 184 .ck
CL CHL 56 Santiago CLP 🇨🇱 es-CL Chile 152 .cl
CM CMR 237 Yaounde XAF 🇨🇲 en-CM,fr-CM Cameroon 120 .cm
CN CHN 86 Beijing CNY 🇨🇳 zh-CN,yue,wuu,dta,ug,za China 156 .cn
CO COL 57 Bogota COP 🇨🇴 es-CO Colombia 170 .co
CR CRI 506 San Jose CRC 🇨🇷 es-CR,en Costa Rica 188 .cr
CU CUB 53 Havana CUP 🇨🇺 es-CU,pap Cuba 192 .cu
CV CPV 238 Praia CVE 🇨🇻 pt-CV Cape Verde 132 .cv
CW CUW 599 Willemstad XCG 🇨🇼 nl,pap Curaçao 531 .cw
CX CXR 61 Flying Fish Cove AUD 🇨🇽 en,zh,ms-CX Christmas Island 162 .cx
CY CYP 357 Nicosia EUR 🇨🇾 el-CY,tr-CY,en Cyprus 196 .cy
CZ CZE 420 Prague CZK 🇨🇿 cs,sk Czechia 203 .cz
DE DEU 49 Berlin EUR 🇩🇪 de Germany 276 .de
DJ DJI 253 Djibouti DJF 🇩🇯 fr-DJ,ar,so-DJ,aa Djibouti 262 .dj
DK DNK 45 Copenhagen DKK 🇩🇰 da-DK,en,fo,de-DK Denmark 208 .dk
DM DMA 1-767 Roseau XCD 🇩🇲 en-DM Dominica 212 .dm
DO DOM 1-809 Santo Domingo DOP 🇩🇴 es-DO Dominican Republic 214 .do
DZ DZA 213 Algiers DZD 🇩🇿 ar-DZ Algeria 012 .dz
EC ECU 593 Quito USD 🇪🇨 es-EC Ecuador 218 .ec
EE EST 372 Tallinn EUR 🇪🇪 et,ru Estonia 233 .ee
EG EGY 20 Cairo EGP 🇪🇬 ar-EG,en,fr Egypt 818 .eg
EH ESH 212 El-Aaiun MAD 🇪🇭 ar,mey Western Sahara 732 .eh
ER ERI 291 Asmara ERN 🇪🇷 aa-ER,ar,tig,kun,ti-ER Eritrea 232 .er
ES ESP 34 Madrid EUR 🇪🇸 es-ES,ca,gl,eu,oc Spain 724 .es
ET ETH 251 Addis Ababa ETB 🇪🇹 am,en-ET,om-ET,ti-ET,so-ET,sid Ethiopia 231 .et
FI FIN 358 Helsinki EUR 🇫🇮 fi-FI,sv-FI,smn Finland 246 .fi
FJ FJI 679 Suva FJD 🇫🇯 en-FJ,fj Fiji 242 .fj
FK FLK 500 Stanley FKP 🇫🇰 en-FK Falkland Islands 238 .fk
FM FSM 691 Palikir USD 🇫🇲 en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg Micronesia 583 .fm
FO FRO 298 Torshavn DKK 🇫🇴 fo,da-FO Faroe Islands 234 .fo
FR FRA 33 Paris EUR 🇫🇷 fr-FR,frp,br,co,ca,eu,oc France 250 .fr
GA GAB 241 Libreville XAF 🇬🇦 fr-GA Gabon 266 .ga
GB GBR 44 London GBP 🇬🇧 en-GB,cy-GB,gd UK 826 .uk
GD GRD 1-473 St. George's XCD 🇬🇩 en-GD Grenada 308 .gd
GE GEO 995 Tbilisi GEL 🇬🇪 ka,ru,hy,az Georgia 268 .ge
GF GUF 594 Cayenne EUR 🇬🇫 fr-GF French Guiana 254 .gf
GG GGY 44 St Peter Port GBP 🇬🇬 en,nrf Guernsey 831 .gg
GH GHA 233 Accra GHS 🇬🇭 en-GH,ak,ee,tw Ghana 288 .gh
GI GIB 350 Gibraltar GIP 🇬🇮 en-GI,es,it,pt Gibraltar 292 .gi
GL GRL 299 Nuuk DKK 🇬🇱 kl,da-GL,en Greenland 304 .gl
GM GMB 220 Banjul GMD 🇬🇲 en-GM,mnk,wof,wo,ff Gambia 270 .gm
GN GIN 224 Conakry GNF 🇬🇳 fr-GN Guinea 324 .gn
GP GLP 590 Basse-Terre EUR 🇬🇵 fr-GP Guadeloupe 312 .gp
GQ GNQ 240 Ciudad de la Paz XAF 🇬🇶 es-GQ,fr,pt Equatorial Guinea 226 .gq
GR GRC 30 Athens EUR 🇬🇷 el-GR,en,fr Greece 300 .gr
GT GTM 502 Guatemala City GTQ 🇬🇹 es-GT Guatemala 320 .gt
GU GUM 1-671 Hagatna USD 🇬🇺 en-GU,ch-GU Guam 316 .gu
GW GNB 245 Bissau XOF 🇬🇼 pt-GW,pov Guinea-Bissau 624 .gw
GY GUY 592 Georgetown GYD 🇬🇾 en-GY Guyana 328 .gy
HK HKG 852 Hong Kong HKD 🇭🇰 zh-HK,yue,zh,en Hong Kong 344 .hk
HN HND 504 Tegucigalpa HNL 🇭🇳 es-HN,cab,miq Honduras 340 .hn
HR HRV 385 Zagreb EUR 🇭🇷 hr-HR,sr Croatia 191 .hr
HT HTI 509 Port-au-Prince HTG 🇭🇹 ht,fr-HT Haiti 332 .ht
HU HUN 36 Budapest HUF 🇭🇺 hu-HU Hungary 348 .hu
ID IDN 62 Jakarta IDR 🇮🇩 id,en,nl,jv Indonesia 360 .id
IE IRL 353 Dublin EUR 🇮🇪 en-IE,ga-IE Ireland 372 .ie
IL ISR 972 Jerusalem ILS 🇮🇱 he,ar-IL,en-IL Israel 376 .il
IM IMN 44 Douglas GBP 🇮🇲 en,gv Isle of Man 833 .im
IN IND 91 New Delhi INR 🇮🇳 en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc India 356 .in
IO IOT 246 Diego Garcia USD 🇮🇴 en-IO British Indian Ocean Territory 086 .io
IQ IRQ 964 Baghdad IQD 🇮🇶 ar-IQ,ku,hy Iraq 368 .iq
IR IRN 98 Tehran IRR 🇮🇷 fa-IR,ku Iran 364 .ir
IS ISL 354 Reykjavik ISK 🇮🇸 is,en,de,da,sv,no Iceland 352 .is
IT ITA 39 Rome EUR 🇮🇹 it-IT,de-IT,fr-IT,sc,ca,co,sl Italy 380 .it
JE JEY 44 Saint Helier GBP 🇯🇪 en,fr,nrf Jersey 832 .je
JM JAM 1-876 Kingston JMD 🇯🇲 en-JM Jamaica 388 .jm
JO JOR 962 Amman JOD 🇯🇴 ar-JO,en Jordan 400 .jo
JP JPN 81 Tokyo JPY 🇯🇵 ja Japan 392 .jp
KE KEN 254 Nairobi KES 🇰🇪 en-KE,sw-KE Kenya 404 .ke
KG KGZ 996 Bishkek KGS 🇰🇬 ky,uz,ru Kyrgyzstan 417 .kg
KH KHM 855 Phnom Penh KHR 🇰🇭 km,fr,en Cambodia 116 .kh
KI KIR 686 Tarawa AUD 🇰🇮 en-KI,gil Kiribati 296 .ki
KM COM 269 Moroni KMF 🇰🇲 ar,fr-KM Comoros 174 .km
KN KNA 1-869 Basseterre XCD 🇰🇳 en-KN St. Kitts & Nevis 659 .kn
KP PRK 850 Pyongyang KPW 🇰🇵 ko-KP North Korea 408 .kp
KR KOR 82 Seoul KRW 🇰🇷 ko-KR,en South Korea 410 .kr
KW KWT 965 Kuwait City KWD 🇰🇼 ar-KW,en Kuwait 414 .kw
KY CYM 1-345 George Town KYD 🇰🇾 en-KY Cayman Islands 136 .ky
KZ KAZ 7 Nur-Sultan KZT 🇰🇿 kk,ru Kazakhstan 398 .kz
LA LAO 856 Vientiane LAK 🇱🇦 lo,fr,en Laos 418 .la
LB LBN 961 Beirut LBP 🇱🇧 ar-LB,fr-LB,en,hy Lebanon 422 .lb
LC LCA 1-758 Castries XCD 🇱🇨 en-LC St. Lucia 662 .lc
LI LIE 423 Vaduz CHF 🇱🇮 de-LI Liechtenstein 438 .li
LK LKA 94 Colombo LKR 🇱🇰 si,ta,en Sri Lanka 144 .lk
LR LBR 231 Monrovia LRD 🇱🇷 en-LR Liberia 430 .lr
LS LSO 266 Maseru LSL 🇱🇸 en-LS,st,zu,xh Lesotho 426 .ls
LT LTU 370 Vilnius EUR 🇱🇹 lt,ru,pl Lithuania 440 .lt
LU LUX 352 Luxembourg EUR 🇱🇺 lb,de-LU,fr-LU Luxembourg 442 .lu
LV LVA 371 Riga EUR 🇱🇻 lv,ru,lt Latvia 428 .lv
LY LBY 218 Tripoli LYD 🇱🇾 ar-LY,it,en Libya 434 .ly
MA MAR 212 Rabat MAD 🇲🇦 ar-MA,ber,fr Morocco 504 .ma
MC MCO 377 Monaco EUR 🇲🇨 fr-MC,en,it Monaco 492 .mc
MD MDA 373 Chisinau MDL 🇲🇩 ro,ru,gag,tr Moldova 498 .md
ME MNE 382 Podgorica EUR 🇲🇪 sr,hu,bs,sq,hr,rom Montenegro 499 .me
MF MAF 590 Marigot EUR 🇲🇫 fr St. Martin 663 .gp
MG MDG 261 Antananarivo MGA 🇲🇬 fr-MG,mg Madagascar 450 .mg
MH MHL 692 Majuro USD 🇲🇭 mh,en-MH Marshall Islands 584 .mh
MK MKD 389 Skopje MKD 🇲🇰 mk,sq,tr,rmm,sr North Macedonia 807 .mk
ML MLI 223 Bamako XOF 🇲🇱 fr-ML,bm Mali 466 .ml
MM MMR 95 Nay Pyi Taw MMK 🇲🇲 my Myanmar 104 .mm
MN MNG 976 Ulaanbaatar MNT 🇲🇳 mn,ru Mongolia 496 .mn
MO MAC 853 Macao MOP 🇲🇴 zh,zh-MO,pt Macao 446 .mo
MP MNP 1-670 Saipan USD 🇲🇵 fil,tl,zh,ch-MP,en-MP Northern Mariana Islands 580 .mp
MQ MTQ 596 Fort-de-France EUR 🇲🇶 fr-MQ Martinique 474 .mq
MR MRT 222 Nouakchott MRU 🇲🇷 ar-MR,fuc,snk,fr,mey,wo Mauritania 478 .mr
MS MSR 1-664 Plymouth XCD 🇲🇸 en-MS Montserrat 500 .ms
MT MLT 356 Valletta EUR 🇲🇹 mt,en-MT Malta 470 .mt
MU MUS 230 Port Louis MUR 🇲🇺 en-MU,bho,fr Mauritius 480 .mu
MV MDV 960 Male MVR 🇲🇻 dv,en Maldives 462 .mv
MW MWI 265 Lilongwe MWK 🇲🇼 ny,yao,tum,swk Malawi 454 .mw
MX MEX 52 Mexico City MXN 🇲🇽 es-MX Mexico 484 .mx
MY MYS 60 Kuala Lumpur MYR 🇲🇾 ms-MY,en,zh,ta,te,ml,pa,th Malaysia 458 .my
MZ MOZ 258 Maputo MZN 🇲🇿 pt-MZ,vmw Mozambique 508 .mz
NA NAM 264 Windhoek NAD 🇳🇦 en-NA,af,de,hz,naq Namibia 516 .na
NC NCL 687 Noumea XPF 🇳🇨 fr-NC New Caledonia 540 .nc
NE NER 227 Niamey XOF 🇳🇪 fr-NE,ha,kr,dje Niger 562 .ne
NF NFK 672 Kingston AUD 🇳🇫 en-NF Norfolk Island 574 .nf
NG NGA 234 Abuja NGN 🇳🇬 en-NG,ha,yo,ig,ff Nigeria 566 .ng
NI NIC 505 Managua NIO 🇳🇮 es-NI,en Nicaragua 558 .ni
NL NLD 31 Amsterdam EUR 🇳🇱 nl-NL,fy-NL Netherlands 528 .nl
NO NOR 47 Oslo NOK 🇳🇴 no,nb,nn,se,fi Norway 578 .no
NP NPL 977 Kathmandu NPR 🇳🇵 ne,en Nepal 524 .np
NR NRU 674 Yaren AUD 🇳🇷 na,en-NR Nauru 520 .nr
NU NIU 683 Alofi NZD 🇳🇺 niu,en-NU Niue 570 .nu
NZ NZL 64 Wellington NZD 🇳🇿 en-NZ,mi New Zealand 554 .nz
OM OMN 968 Muscat OMR 🇴🇲 ar-OM,en,bal,ur Oman 512 .om
PA PAN 507 Panama City PAB 🇵🇦 es-PA,en Panama 591 .pa
PE PER 51 Lima PEN 🇵🇪 es-PE,qu,ay Peru 604 .pe
PF PYF 689 Papeete XPF 🇵🇫 fr-PF,ty French Polynesia 258 .pf
PG PNG 675 Port Moresby PGK 🇵🇬 en-PG,ho,meu,tpi Papua New Guinea 598 .pg
PH PHL 63 Manila PHP 🇵🇭 tl,en-PH,fil,ceb,ilo,hil,war,pam,bik,bcl,pag,mrw,tsg,mdh,cbk,krj,sgd,msb,akl,ibg,yka,mta,abx Philippines 608 .ph
PK PAK 92 Islamabad PKR 🇵🇰 ur-PK,en-PK,pa,sd,ps,brh Pakistan 586 .pk
PL POL 48 Warsaw PLN 🇵🇱 pl Poland 616 .pl
PM SPM 508 Saint-Pierre EUR 🇵🇲 fr-PM St. Pierre & Miquelon 666 .pm
PN PCN 870 Adamstown NZD 🇵🇳 en-PN Pitcairn 612 .pn
PR PRI 1 San Juan USD 🇵🇷 en-PR,es-PR Puerto Rico 630 .pr
PT PRT 351 Lisbon EUR 🇵🇹 pt-PT,mwl Portugal 620 .pt
PW PLW 680 Melekeok USD 🇵🇼 pau,sov,en-PW,tox,ja,fil,zh Palau 585 .pw
PY PRY 595 Asuncion PYG 🇵🇾 es-PY,gn Paraguay 600 .py
QA QAT 974 Doha QAR 🇶🇦 ar-QA,es Qatar 634 .qa
RE REU 262 Saint-Denis EUR 🇷🇪 fr-RE Réunion 638 .re
RO ROU 40 Bucharest RON 🇷🇴 ro,hu,rom Romania 642 .ro
RS SRB 381 Belgrade RSD 🇷🇸 sr,hu,bs,rom Serbia 688 .rs
RU RUS 7 Moscow RUB 🇷🇺 ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,kbd,krc,av,sah,nog Russia 643 .ru
RW RWA 250 Kigali RWF 🇷🇼 rw,en-RW,fr-RW,sw Rwanda 646 .rw
SA SAU 966 Riyadh SAR 🇸🇦 ar-SA Saudi Arabia 682 .sa
SB SLB 677 Honiara SBD 🇸🇧 en-SB,tpi Solomon Islands 090 .sb
SC SYC 248 Victoria SCR 🇸🇨 en-SC,fr-SC Seychelles 690 .sc
SD SDN 249 Khartoum SDG 🇸🇩 ar-SD,en,fia Sudan 729 .sd
SE SWE 46 Stockholm SEK 🇸🇪 sv-SE,se,sma,fi-SE Sweden 752 .se
SG SGP 65 Singapore SGD 🇸🇬 cmn,en-SG,ms-SG,ta-SG,zh-SG Singapore 702 .sg
SH SHN 290 Jamestown SHP 🇸🇭 en-SH St. Helena 654 .sh
SI SVN 386 Ljubljana EUR 🇸🇮 sl,sh Slovenia 705 .si
SJ SJM 47 Longyearbyen NOK 🇸🇯 no,ru Svalbard & Jan Mayen 744 .sj
SK SVK 421 Bratislava EUR 🇸🇰 sk,hu Slovakia 703 .sk
SL SLE 232 Freetown SLE 🇸🇱 en-SL,men,tem Sierra Leone 694 .sl
SM SMR 378 San Marino EUR 🇸🇲 it-SM San Marino 674 .sm
SN SEN 221 Dakar XOF 🇸🇳 fr-SN,wo,fuc,mnk Senegal 686 .sn
SO SOM 252 Mogadishu SOS 🇸🇴 so-SO,ar-SO,it,en-SO Somalia 706 .so
SR SUR 597 Paramaribo SRD 🇸🇷 nl-SR,en,srn,hns,jv Suriname 740 .sr
SS SSD 211 Juba SSP 🇸🇸 en South Sudan 728 .ss
ST STP 239 Sao Tome STN 🇸🇹 pt-ST São Tomé & Príncipe 678 .st
SV SLV 503 San Salvador SVC 🇸🇻 es-SV El Salvador 222 .sv
SX SXM 1-721 Philipsburg XCG 🇸🇽 nl,en Sint Maarten 534 .sx
SY SYR 963 Damascus SYP 🇸🇾 ar-SY,ku,hy,arc,fr,en Syria 760 .sy
SZ SWZ 268 Mbabane SZL 🇸🇿 en-SZ,ss-SZ Eswatini 748 .sz
TC TCA 1-649 Cockburn Town USD 🇹🇨 en-TC Turks & Caicos Islands 796 .tc
TD TCD 235 N'Djamena XAF 🇹🇩 fr-TD,ar-TD,sre Chad 148 .td
TF ATF 262 Port-aux-Francais EUR 🇹🇫 fr French Southern Territories 260 .tf
TG TGO 228 Lome XOF 🇹🇬 fr-TG,ee,hna,kbp,dag,ha Togo 768 .tg
TH THA 66 Bangkok THB 🇹🇭 th,en Thailand 764 .th
TJ TJK 992 Dushanbe TJS 🇹🇯 tg,ru Tajikistan 762 .tj
TL TLS 670 Dili USD 🇹🇱 tet,pt-TL,id,en Timor-Leste 626 .tl
TM TKM 993 Ashgabat TMT 🇹🇲 tk,ru,uz Turkmenistan 795 .tm
TN TUN 216 Tunis TND 🇹🇳 ar-TN,fr Tunisia 788 .tn
TO TON 676 Nuku'alofa TOP 🇹🇴 to,en-TO Tonga 776 .to
TR TUR 90 Ankara TRY 🇹🇷 tr-TR,ku,diq,az,av Türkiye 792 .tr
TT TTO 1-868 Port of Spain TTD 🇹🇹 en-TT,hns,fr,es,zh Trinidad & Tobago 780 .tt
TV TUV 688 Funafuti AUD 🇹🇻 tvl,en,sm,gil Tuvalu 798 .tv
TW TWN 886 Taipei TWD 🇹🇼 zh-TW,zh,nan,hak Taiwan 158 .tw
TZ TZA 255 Dodoma TZS 🇹🇿 sw-TZ,en,ar Tanzania 834 .tz
UA UKR 380 Kyiv UAH 🇺🇦 uk,ru-UA,rom,pl,hu Ukraine 804 .ua
UG UGA 256 Kampala UGX 🇺🇬 en-UG,lg,sw,ar Uganda 800 .ug
US USA 1 Washington USD 🇺🇸 en-US,es-US,haw,fr US 840 .us
UY URY 598 Montevideo UYU 🇺🇾 es-UY Uruguay 858 .uy
UZ UZB 998 Tashkent UZS 🇺🇿 uz,ru,tg Uzbekistan 860 .uz
VA VAT 39 Vatican City EUR 🇻🇦 la,it,fr Vatican City 336 .va
VC VCT 1-784 Kingstown XCD 🇻🇨 en-VC,fr St. Vincent & Grenadines 670 .vc
VE VEN 58 Caracas VES 🇻🇪 es-VE Venezuela 862 .ve
VG VGB 1-284 Road Town USD 🇻🇬 en-VG British Virgin Islands 092 .vg
VI VIR 1-340 Charlotte Amalie USD 🇻🇮 en-VI U.S. Virgin Islands 850 .vi
VN VNM 84 Hanoi VND 🇻🇳 vi,en,fr,zh,km Vietnam 704 .vn
VU VUT 678 Port Vila VUV 🇻🇺 bi,en-VU,fr-VU Vanuatu 548 .vu
WF WLF 681 Mata Utu XPF 🇼🇫 wls,fud,fr-WF Wallis & Futuna 876 .wf
WS WSM 685 Apia WST 🇼🇸 sm,en-WS Samoa 882 .ws
YE YEM 967 Sanaa YER 🇾🇪 ar-YE Yemen 887 .ye
YT MYT 262 Mamoudzou EUR 🇾🇹 fr-YT Mayotte 175 .yt
ZA ZAF 27 Pretoria ZAR 🇿🇦 zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr South Africa 710 .za
ZM ZMB 260 Lusaka ZMW 🇿🇲 en-ZM,bem,loz,lun,lue,ny,toi Zambia 894 .zm
ZW ZWE 263 Harare ZWG 🇿🇼 en-ZW,sn,nr,nd Zimbabwe 716 .zw
1 alpha2 alpha3 calling-code capital currency flag languages name numeric tld
2 AD AND 376 Andorra la Vella EUR 🇦🇩 ca Andorra 020 .ad
3 AE ARE 971 Abu Dhabi AED 🇦🇪 ar-AE,fa,en,hi,ur United Arab Emirates 784 .ae
4 AF AFG 93 Kabul AFN 🇦🇫 fa-AF,ps,uz-AF,tk Afghanistan 004 .af
5 AG ATG 1-268 St. John's XCD 🇦🇬 en-AG Antigua & Barbuda 028 .ag
6 AI AIA 1-264 The Valley XCD 🇦🇮 en-AI Anguilla 660 .ai
7 AL ALB 355 Tirana ALL 🇦🇱 sq,el Albania 008 .al
8 AM ARM 374 Yerevan AMD 🇦🇲 hy Armenia 051 .am
9 AO AGO 244 Luanda AOA 🇦🇴 pt-AO Angola 024 .ao
10 AR ARG 54 Buenos Aires ARS 🇦🇷 es-AR,en,it,de,fr,gn Argentina 032 .ar
11 AS ASM 1-684 Pago Pago USD 🇦🇸 en-AS,sm,to American Samoa 016 .as
12 AT AUT 43 Vienna EUR 🇦🇹 de-AT,hr,hu,sl Austria 040 .at
13 AU AUS 61 Canberra AUD 🇦🇺 en-AU Australia 036 .au
14 AW ABW 297 Oranjestad AWG 🇦🇼 nl-AW,pap,es,en Aruba 533 .aw
15 AX ALA 358 Mariehamn EUR 🇦🇽 sv-AX Åland Islands 248 .ax
16 AZ AZE 994 Baku AZN 🇦🇿 az,ru,hy Azerbaijan 031 .az
17 BA BIH 387 Sarajevo BAM 🇧🇦 bs,hr-BA,sr-BA Bosnia 070 .ba
18 BB BRB 1-246 Bridgetown BBD 🇧🇧 en-BB Barbados 052 .bb
19 BD BGD 880 Dhaka BDT 🇧🇩 bn-BD,en Bangladesh 050 .bd
20 BE BEL 32 Brussels EUR 🇧🇪 nl-BE,fr-BE,de-BE Belgium 056 .be
21 BF BFA 226 Ouagadougou XOF 🇧🇫 fr-BF,mos Burkina Faso 854 .bf
22 BG BGR 359 Sofia EUR 🇧🇬 bg,tr-BG,rom Bulgaria 100 .bg
23 BH BHR 973 Manama BHD 🇧🇭 ar-BH,en,fa,ur Bahrain 048 .bh
24 BI BDI 257 Gitega BIF 🇧🇮 fr-BI,rn Burundi 108 .bi
25 BJ BEN 229 Porto-Novo XOF 🇧🇯 fr-BJ Benin 204 .bj
26 BL BLM 590 Gustavia EUR 🇧🇱 fr St. Barthélemy 652 .gp
27 BM BMU 1-441 Hamilton BMD 🇧🇲 en-BM,pt Bermuda 060 .bm
28 BN BRN 673 Bandar Seri Begawan BND 🇧🇳 ms-BN,en-BN Brunei 096 .bn
29 BO BOL 591 Sucre BOB 🇧🇴 es-BO,qu,ay Bolivia 068 .bo
30 BR BRA 55 Brasilia BRL 🇧🇷 pt-BR,es,en,fr Brazil 076 .br
31 BS BHS 1-242 Nassau BSD 🇧🇸 en-BS Bahamas 044 .bs
32 BT BTN 975 Thimphu INR 🇧🇹 dz Bhutan 064 .bt
33 BW BWA 267 Gaborone BWP 🇧🇼 en-BW,tn-BW Botswana 072 .bw
34 BY BLR 375 Minsk BYN 🇧🇾 be,ru Belarus 112 .by
35 BZ BLZ 501 Belmopan BZD 🇧🇿 en-BZ,es Belize 084 .bz
36 CA CAN 1 Ottawa CAD 🇨🇦 en-CA,fr-CA,iu Canada 124 .ca
37 CC CCK 61 West Island AUD 🇨🇨 ms-CC,en Cocos Islands 166 .cc
38 CD COD 243 Kinshasa CDF 🇨🇩 fr-CD,ln,ktu,kg,sw,lua Congo - Kinshasa 180 .cd
39 CF CAF 236 Bangui XAF 🇨🇫 fr-CF,sg,ln,kg Central African Republic 140 .cf
40 CG COG 242 Brazzaville XAF 🇨🇬 fr-CG,kg,ln-CG Congo - Brazzaville 178 .cg
41 CH CHE 41 Bern CHF 🇨🇭 de-CH,fr-CH,it-CH,rm Switzerland 756 .ch
42 CI CIV 225 Yamoussoukro XOF 🇨🇮 fr-CI Côte d’Ivoire 384 .ci
43 CK COK 682 Avarua NZD 🇨🇰 en-CK,mi Cook Islands 184 .ck
44 CL CHL 56 Santiago CLP 🇨🇱 es-CL Chile 152 .cl
45 CM CMR 237 Yaounde XAF 🇨🇲 en-CM,fr-CM Cameroon 120 .cm
46 CN CHN 86 Beijing CNY 🇨🇳 zh-CN,yue,wuu,dta,ug,za China 156 .cn
47 CO COL 57 Bogota COP 🇨🇴 es-CO Colombia 170 .co
48 CR CRI 506 San Jose CRC 🇨🇷 es-CR,en Costa Rica 188 .cr
49 CU CUB 53 Havana CUP 🇨🇺 es-CU,pap Cuba 192 .cu
50 CV CPV 238 Praia CVE 🇨🇻 pt-CV Cape Verde 132 .cv
51 CW CUW 599 Willemstad XCG 🇨🇼 nl,pap Curaçao 531 .cw
52 CX CXR 61 Flying Fish Cove AUD 🇨🇽 en,zh,ms-CX Christmas Island 162 .cx
53 CY CYP 357 Nicosia EUR 🇨🇾 el-CY,tr-CY,en Cyprus 196 .cy
54 CZ CZE 420 Prague CZK 🇨🇿 cs,sk Czechia 203 .cz
55 DE DEU 49 Berlin EUR 🇩🇪 de Germany 276 .de
56 DJ DJI 253 Djibouti DJF 🇩🇯 fr-DJ,ar,so-DJ,aa Djibouti 262 .dj
57 DK DNK 45 Copenhagen DKK 🇩🇰 da-DK,en,fo,de-DK Denmark 208 .dk
58 DM DMA 1-767 Roseau XCD 🇩🇲 en-DM Dominica 212 .dm
59 DO DOM 1-809 Santo Domingo DOP 🇩🇴 es-DO Dominican Republic 214 .do
60 DZ DZA 213 Algiers DZD 🇩🇿 ar-DZ Algeria 012 .dz
61 EC ECU 593 Quito USD 🇪🇨 es-EC Ecuador 218 .ec
62 EE EST 372 Tallinn EUR 🇪🇪 et,ru Estonia 233 .ee
63 EG EGY 20 Cairo EGP 🇪🇬 ar-EG,en,fr Egypt 818 .eg
64 EH ESH 212 El-Aaiun MAD 🇪🇭 ar,mey Western Sahara 732 .eh
65 ER ERI 291 Asmara ERN 🇪🇷 aa-ER,ar,tig,kun,ti-ER Eritrea 232 .er
66 ES ESP 34 Madrid EUR 🇪🇸 es-ES,ca,gl,eu,oc Spain 724 .es
67 ET ETH 251 Addis Ababa ETB 🇪🇹 am,en-ET,om-ET,ti-ET,so-ET,sid Ethiopia 231 .et
68 FI FIN 358 Helsinki EUR 🇫🇮 fi-FI,sv-FI,smn Finland 246 .fi
69 FJ FJI 679 Suva FJD 🇫🇯 en-FJ,fj Fiji 242 .fj
70 FK FLK 500 Stanley FKP 🇫🇰 en-FK Falkland Islands 238 .fk
71 FM FSM 691 Palikir USD 🇫🇲 en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg Micronesia 583 .fm
72 FO FRO 298 Torshavn DKK 🇫🇴 fo,da-FO Faroe Islands 234 .fo
73 FR FRA 33 Paris EUR 🇫🇷 fr-FR,frp,br,co,ca,eu,oc France 250 .fr
74 GA GAB 241 Libreville XAF 🇬🇦 fr-GA Gabon 266 .ga
75 GB GBR 44 London GBP 🇬🇧 en-GB,cy-GB,gd UK 826 .uk
76 GD GRD 1-473 St. George's XCD 🇬🇩 en-GD Grenada 308 .gd
77 GE GEO 995 Tbilisi GEL 🇬🇪 ka,ru,hy,az Georgia 268 .ge
78 GF GUF 594 Cayenne EUR 🇬🇫 fr-GF French Guiana 254 .gf
79 GG GGY 44 St Peter Port GBP 🇬🇬 en,nrf Guernsey 831 .gg
80 GH GHA 233 Accra GHS 🇬🇭 en-GH,ak,ee,tw Ghana 288 .gh
81 GI GIB 350 Gibraltar GIP 🇬🇮 en-GI,es,it,pt Gibraltar 292 .gi
82 GL GRL 299 Nuuk DKK 🇬🇱 kl,da-GL,en Greenland 304 .gl
83 GM GMB 220 Banjul GMD 🇬🇲 en-GM,mnk,wof,wo,ff Gambia 270 .gm
84 GN GIN 224 Conakry GNF 🇬🇳 fr-GN Guinea 324 .gn
85 GP GLP 590 Basse-Terre EUR 🇬🇵 fr-GP Guadeloupe 312 .gp
86 GQ GNQ 240 Ciudad de la Paz XAF 🇬🇶 es-GQ,fr,pt Equatorial Guinea 226 .gq
87 GR GRC 30 Athens EUR 🇬🇷 el-GR,en,fr Greece 300 .gr
88 GT GTM 502 Guatemala City GTQ 🇬🇹 es-GT Guatemala 320 .gt
89 GU GUM 1-671 Hagatna USD 🇬🇺 en-GU,ch-GU Guam 316 .gu
90 GW GNB 245 Bissau XOF 🇬🇼 pt-GW,pov Guinea-Bissau 624 .gw
91 GY GUY 592 Georgetown GYD 🇬🇾 en-GY Guyana 328 .gy
92 HK HKG 852 Hong Kong HKD 🇭🇰 zh-HK,yue,zh,en Hong Kong 344 .hk
93 HN HND 504 Tegucigalpa HNL 🇭🇳 es-HN,cab,miq Honduras 340 .hn
94 HR HRV 385 Zagreb EUR 🇭🇷 hr-HR,sr Croatia 191 .hr
95 HT HTI 509 Port-au-Prince HTG 🇭🇹 ht,fr-HT Haiti 332 .ht
96 HU HUN 36 Budapest HUF 🇭🇺 hu-HU Hungary 348 .hu
97 ID IDN 62 Jakarta IDR 🇮🇩 id,en,nl,jv Indonesia 360 .id
98 IE IRL 353 Dublin EUR 🇮🇪 en-IE,ga-IE Ireland 372 .ie
99 IL ISR 972 Jerusalem ILS 🇮🇱 he,ar-IL,en-IL Israel 376 .il
100 IM IMN 44 Douglas GBP 🇮🇲 en,gv Isle of Man 833 .im
101 IN IND 91 New Delhi INR 🇮🇳 en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc India 356 .in
102 IO IOT 246 Diego Garcia USD 🇮🇴 en-IO British Indian Ocean Territory 086 .io
103 IQ IRQ 964 Baghdad IQD 🇮🇶 ar-IQ,ku,hy Iraq 368 .iq
104 IR IRN 98 Tehran IRR 🇮🇷 fa-IR,ku Iran 364 .ir
105 IS ISL 354 Reykjavik ISK 🇮🇸 is,en,de,da,sv,no Iceland 352 .is
106 IT ITA 39 Rome EUR 🇮🇹 it-IT,de-IT,fr-IT,sc,ca,co,sl Italy 380 .it
107 JE JEY 44 Saint Helier GBP 🇯🇪 en,fr,nrf Jersey 832 .je
108 JM JAM 1-876 Kingston JMD 🇯🇲 en-JM Jamaica 388 .jm
109 JO JOR 962 Amman JOD 🇯🇴 ar-JO,en Jordan 400 .jo
110 JP JPN 81 Tokyo JPY 🇯🇵 ja Japan 392 .jp
111 KE KEN 254 Nairobi KES 🇰🇪 en-KE,sw-KE Kenya 404 .ke
112 KG KGZ 996 Bishkek KGS 🇰🇬 ky,uz,ru Kyrgyzstan 417 .kg
113 KH KHM 855 Phnom Penh KHR 🇰🇭 km,fr,en Cambodia 116 .kh
114 KI KIR 686 Tarawa AUD 🇰🇮 en-KI,gil Kiribati 296 .ki
115 KM COM 269 Moroni KMF 🇰🇲 ar,fr-KM Comoros 174 .km
116 KN KNA 1-869 Basseterre XCD 🇰🇳 en-KN St. Kitts & Nevis 659 .kn
117 KP PRK 850 Pyongyang KPW 🇰🇵 ko-KP North Korea 408 .kp
118 KR KOR 82 Seoul KRW 🇰🇷 ko-KR,en South Korea 410 .kr
119 KW KWT 965 Kuwait City KWD 🇰🇼 ar-KW,en Kuwait 414 .kw
120 KY CYM 1-345 George Town KYD 🇰🇾 en-KY Cayman Islands 136 .ky
121 KZ KAZ 7 Nur-Sultan KZT 🇰🇿 kk,ru Kazakhstan 398 .kz
122 LA LAO 856 Vientiane LAK 🇱🇦 lo,fr,en Laos 418 .la
123 LB LBN 961 Beirut LBP 🇱🇧 ar-LB,fr-LB,en,hy Lebanon 422 .lb
124 LC LCA 1-758 Castries XCD 🇱🇨 en-LC St. Lucia 662 .lc
125 LI LIE 423 Vaduz CHF 🇱🇮 de-LI Liechtenstein 438 .li
126 LK LKA 94 Colombo LKR 🇱🇰 si,ta,en Sri Lanka 144 .lk
127 LR LBR 231 Monrovia LRD 🇱🇷 en-LR Liberia 430 .lr
128 LS LSO 266 Maseru LSL 🇱🇸 en-LS,st,zu,xh Lesotho 426 .ls
129 LT LTU 370 Vilnius EUR 🇱🇹 lt,ru,pl Lithuania 440 .lt
130 LU LUX 352 Luxembourg EUR 🇱🇺 lb,de-LU,fr-LU Luxembourg 442 .lu
131 LV LVA 371 Riga EUR 🇱🇻 lv,ru,lt Latvia 428 .lv
132 LY LBY 218 Tripoli LYD 🇱🇾 ar-LY,it,en Libya 434 .ly
133 MA MAR 212 Rabat MAD 🇲🇦 ar-MA,ber,fr Morocco 504 .ma
134 MC MCO 377 Monaco EUR 🇲🇨 fr-MC,en,it Monaco 492 .mc
135 MD MDA 373 Chisinau MDL 🇲🇩 ro,ru,gag,tr Moldova 498 .md
136 ME MNE 382 Podgorica EUR 🇲🇪 sr,hu,bs,sq,hr,rom Montenegro 499 .me
137 MF MAF 590 Marigot EUR 🇲🇫 fr St. Martin 663 .gp
138 MG MDG 261 Antananarivo MGA 🇲🇬 fr-MG,mg Madagascar 450 .mg
139 MH MHL 692 Majuro USD 🇲🇭 mh,en-MH Marshall Islands 584 .mh
140 MK MKD 389 Skopje MKD 🇲🇰 mk,sq,tr,rmm,sr North Macedonia 807 .mk
141 ML MLI 223 Bamako XOF 🇲🇱 fr-ML,bm Mali 466 .ml
142 MM MMR 95 Nay Pyi Taw MMK 🇲🇲 my Myanmar 104 .mm
143 MN MNG 976 Ulaanbaatar MNT 🇲🇳 mn,ru Mongolia 496 .mn
144 MO MAC 853 Macao MOP 🇲🇴 zh,zh-MO,pt Macao 446 .mo
145 MP MNP 1-670 Saipan USD 🇲🇵 fil,tl,zh,ch-MP,en-MP Northern Mariana Islands 580 .mp
146 MQ MTQ 596 Fort-de-France EUR 🇲🇶 fr-MQ Martinique 474 .mq
147 MR MRT 222 Nouakchott MRU 🇲🇷 ar-MR,fuc,snk,fr,mey,wo Mauritania 478 .mr
148 MS MSR 1-664 Plymouth XCD 🇲🇸 en-MS Montserrat 500 .ms
149 MT MLT 356 Valletta EUR 🇲🇹 mt,en-MT Malta 470 .mt
150 MU MUS 230 Port Louis MUR 🇲🇺 en-MU,bho,fr Mauritius 480 .mu
151 MV MDV 960 Male MVR 🇲🇻 dv,en Maldives 462 .mv
152 MW MWI 265 Lilongwe MWK 🇲🇼 ny,yao,tum,swk Malawi 454 .mw
153 MX MEX 52 Mexico City MXN 🇲🇽 es-MX Mexico 484 .mx
154 MY MYS 60 Kuala Lumpur MYR 🇲🇾 ms-MY,en,zh,ta,te,ml,pa,th Malaysia 458 .my
155 MZ MOZ 258 Maputo MZN 🇲🇿 pt-MZ,vmw Mozambique 508 .mz
156 NA NAM 264 Windhoek NAD 🇳🇦 en-NA,af,de,hz,naq Namibia 516 .na
157 NC NCL 687 Noumea XPF 🇳🇨 fr-NC New Caledonia 540 .nc
158 NE NER 227 Niamey XOF 🇳🇪 fr-NE,ha,kr,dje Niger 562 .ne
159 NF NFK 672 Kingston AUD 🇳🇫 en-NF Norfolk Island 574 .nf
160 NG NGA 234 Abuja NGN 🇳🇬 en-NG,ha,yo,ig,ff Nigeria 566 .ng
161 NI NIC 505 Managua NIO 🇳🇮 es-NI,en Nicaragua 558 .ni
162 NL NLD 31 Amsterdam EUR 🇳🇱 nl-NL,fy-NL Netherlands 528 .nl
163 NO NOR 47 Oslo NOK 🇳🇴 no,nb,nn,se,fi Norway 578 .no
164 NP NPL 977 Kathmandu NPR 🇳🇵 ne,en Nepal 524 .np
165 NR NRU 674 Yaren AUD 🇳🇷 na,en-NR Nauru 520 .nr
166 NU NIU 683 Alofi NZD 🇳🇺 niu,en-NU Niue 570 .nu
167 NZ NZL 64 Wellington NZD 🇳🇿 en-NZ,mi New Zealand 554 .nz
168 OM OMN 968 Muscat OMR 🇴🇲 ar-OM,en,bal,ur Oman 512 .om
169 PA PAN 507 Panama City PAB 🇵🇦 es-PA,en Panama 591 .pa
170 PE PER 51 Lima PEN 🇵🇪 es-PE,qu,ay Peru 604 .pe
171 PF PYF 689 Papeete XPF 🇵🇫 fr-PF,ty French Polynesia 258 .pf
172 PG PNG 675 Port Moresby PGK 🇵🇬 en-PG,ho,meu,tpi Papua New Guinea 598 .pg
173 PH PHL 63 Manila PHP 🇵🇭 tl,en-PH,fil,ceb,ilo,hil,war,pam,bik,bcl,pag,mrw,tsg,mdh,cbk,krj,sgd,msb,akl,ibg,yka,mta,abx Philippines 608 .ph
174 PK PAK 92 Islamabad PKR 🇵🇰 ur-PK,en-PK,pa,sd,ps,brh Pakistan 586 .pk
175 PL POL 48 Warsaw PLN 🇵🇱 pl Poland 616 .pl
176 PM SPM 508 Saint-Pierre EUR 🇵🇲 fr-PM St. Pierre & Miquelon 666 .pm
177 PN PCN 870 Adamstown NZD 🇵🇳 en-PN Pitcairn 612 .pn
178 PR PRI 1 San Juan USD 🇵🇷 en-PR,es-PR Puerto Rico 630 .pr
179 PT PRT 351 Lisbon EUR 🇵🇹 pt-PT,mwl Portugal 620 .pt
180 PW PLW 680 Melekeok USD 🇵🇼 pau,sov,en-PW,tox,ja,fil,zh Palau 585 .pw
181 PY PRY 595 Asuncion PYG 🇵🇾 es-PY,gn Paraguay 600 .py
182 QA QAT 974 Doha QAR 🇶🇦 ar-QA,es Qatar 634 .qa
183 RE REU 262 Saint-Denis EUR 🇷🇪 fr-RE Réunion 638 .re
184 RO ROU 40 Bucharest RON 🇷🇴 ro,hu,rom Romania 642 .ro
185 RS SRB 381 Belgrade RSD 🇷🇸 sr,hu,bs,rom Serbia 688 .rs
186 RU RUS 7 Moscow RUB 🇷🇺 ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,kbd,krc,av,sah,nog Russia 643 .ru
187 RW RWA 250 Kigali RWF 🇷🇼 rw,en-RW,fr-RW,sw Rwanda 646 .rw
188 SA SAU 966 Riyadh SAR 🇸🇦 ar-SA Saudi Arabia 682 .sa
189 SB SLB 677 Honiara SBD 🇸🇧 en-SB,tpi Solomon Islands 090 .sb
190 SC SYC 248 Victoria SCR 🇸🇨 en-SC,fr-SC Seychelles 690 .sc
191 SD SDN 249 Khartoum SDG 🇸🇩 ar-SD,en,fia Sudan 729 .sd
192 SE SWE 46 Stockholm SEK 🇸🇪 sv-SE,se,sma,fi-SE Sweden 752 .se
193 SG SGP 65 Singapore SGD 🇸🇬 cmn,en-SG,ms-SG,ta-SG,zh-SG Singapore 702 .sg
194 SH SHN 290 Jamestown SHP 🇸🇭 en-SH St. Helena 654 .sh
195 SI SVN 386 Ljubljana EUR 🇸🇮 sl,sh Slovenia 705 .si
196 SJ SJM 47 Longyearbyen NOK 🇸🇯 no,ru Svalbard & Jan Mayen 744 .sj
197 SK SVK 421 Bratislava EUR 🇸🇰 sk,hu Slovakia 703 .sk
198 SL SLE 232 Freetown SLE 🇸🇱 en-SL,men,tem Sierra Leone 694 .sl
199 SM SMR 378 San Marino EUR 🇸🇲 it-SM San Marino 674 .sm
200 SN SEN 221 Dakar XOF 🇸🇳 fr-SN,wo,fuc,mnk Senegal 686 .sn
201 SO SOM 252 Mogadishu SOS 🇸🇴 so-SO,ar-SO,it,en-SO Somalia 706 .so
202 SR SUR 597 Paramaribo SRD 🇸🇷 nl-SR,en,srn,hns,jv Suriname 740 .sr
203 SS SSD 211 Juba SSP 🇸🇸 en South Sudan 728 .ss
204 ST STP 239 Sao Tome STN 🇸🇹 pt-ST São Tomé & Príncipe 678 .st
205 SV SLV 503 San Salvador SVC 🇸🇻 es-SV El Salvador 222 .sv
206 SX SXM 1-721 Philipsburg XCG 🇸🇽 nl,en Sint Maarten 534 .sx
207 SY SYR 963 Damascus SYP 🇸🇾 ar-SY,ku,hy,arc,fr,en Syria 760 .sy
208 SZ SWZ 268 Mbabane SZL 🇸🇿 en-SZ,ss-SZ Eswatini 748 .sz
209 TC TCA 1-649 Cockburn Town USD 🇹🇨 en-TC Turks & Caicos Islands 796 .tc
210 TD TCD 235 N'Djamena XAF 🇹🇩 fr-TD,ar-TD,sre Chad 148 .td
211 TF ATF 262 Port-aux-Francais EUR 🇹🇫 fr French Southern Territories 260 .tf
212 TG TGO 228 Lome XOF 🇹🇬 fr-TG,ee,hna,kbp,dag,ha Togo 768 .tg
213 TH THA 66 Bangkok THB 🇹🇭 th,en Thailand 764 .th
214 TJ TJK 992 Dushanbe TJS 🇹🇯 tg,ru Tajikistan 762 .tj
215 TL TLS 670 Dili USD 🇹🇱 tet,pt-TL,id,en Timor-Leste 626 .tl
216 TM TKM 993 Ashgabat TMT 🇹🇲 tk,ru,uz Turkmenistan 795 .tm
217 TN TUN 216 Tunis TND 🇹🇳 ar-TN,fr Tunisia 788 .tn
218 TO TON 676 Nuku'alofa TOP 🇹🇴 to,en-TO Tonga 776 .to
219 TR TUR 90 Ankara TRY 🇹🇷 tr-TR,ku,diq,az,av Türkiye 792 .tr
220 TT TTO 1-868 Port of Spain TTD 🇹🇹 en-TT,hns,fr,es,zh Trinidad & Tobago 780 .tt
221 TV TUV 688 Funafuti AUD 🇹🇻 tvl,en,sm,gil Tuvalu 798 .tv
222 TW TWN 886 Taipei TWD 🇹🇼 zh-TW,zh,nan,hak Taiwan 158 .tw
223 TZ TZA 255 Dodoma TZS 🇹🇿 sw-TZ,en,ar Tanzania 834 .tz
224 UA UKR 380 Kyiv UAH 🇺🇦 uk,ru-UA,rom,pl,hu Ukraine 804 .ua
225 UG UGA 256 Kampala UGX 🇺🇬 en-UG,lg,sw,ar Uganda 800 .ug
226 US USA 1 Washington USD 🇺🇸 en-US,es-US,haw,fr US 840 .us
227 UY URY 598 Montevideo UYU 🇺🇾 es-UY Uruguay 858 .uy
228 UZ UZB 998 Tashkent UZS 🇺🇿 uz,ru,tg Uzbekistan 860 .uz
229 VA VAT 39 Vatican City EUR 🇻🇦 la,it,fr Vatican City 336 .va
230 VC VCT 1-784 Kingstown XCD 🇻🇨 en-VC,fr St. Vincent & Grenadines 670 .vc
231 VE VEN 58 Caracas VES 🇻🇪 es-VE Venezuela 862 .ve
232 VG VGB 1-284 Road Town USD 🇻🇬 en-VG British Virgin Islands 092 .vg
233 VI VIR 1-340 Charlotte Amalie USD 🇻🇮 en-VI U.S. Virgin Islands 850 .vi
234 VN VNM 84 Hanoi VND 🇻🇳 vi,en,fr,zh,km Vietnam 704 .vn
235 VU VUT 678 Port Vila VUV 🇻🇺 bi,en-VU,fr-VU Vanuatu 548 .vu
236 WF WLF 681 Mata Utu XPF 🇼🇫 wls,fud,fr-WF Wallis & Futuna 876 .wf
237 WS WSM 685 Apia WST 🇼🇸 sm,en-WS Samoa 882 .ws
238 YE YEM 967 Sanaa YER 🇾🇪 ar-YE Yemen 887 .ye
239 YT MYT 262 Mamoudzou EUR 🇾🇹 fr-YT Mayotte 175 .yt
240 ZA ZAF 27 Pretoria ZAR 🇿🇦 zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr South Africa 710 .za
241 ZM ZMB 260 Lusaka ZMW 🇿🇲 en-ZM,bem,loz,lun,lue,ny,toi Zambia 894 .zm
242 ZW ZWE 263 Harare ZWG 🇿🇼 en-ZW,sn,nr,nd Zimbabwe 716 .zw
+1
View File
@@ -0,0 +1 @@
{ "format": "{name}", "rows": "territory.tsv", "key": "alpha2", "name": "name" }
+242
View File
@@ -0,0 +1,242 @@
alpha2 alpha3 calling-code capital country currency flag languages name numeric tld
AD AND 376 Andorra la Vella AD EUR 🇦🇩 ca Andorra 020 .ad
AE ARE 971 Abu Dhabi AE AED 🇦🇪 ar-AE,fa,en,hi,ur United Arab Emirates 784 .ae
AF AFG 93 Kabul AF AFN 🇦🇫 fa-AF,ps,uz-AF,tk Afghanistan 004 .af
AG ATG 1-268 St. John's AG XCD 🇦🇬 en-AG Antigua & Barbuda 028 .ag
AI AIA 1-264 The Valley GB XCD 🇦🇮 en-AI Anguilla 660 .ai
AL ALB 355 Tirana AL ALL 🇦🇱 sq,el Albania 008 .al
AM ARM 374 Yerevan AM AMD 🇦🇲 hy Armenia 051 .am
AO AGO 244 Luanda AO AOA 🇦🇴 pt-AO Angola 024 .ao
AR ARG 54 Buenos Aires AR ARS 🇦🇷 es-AR,en,it,de,fr,gn Argentina 032 .ar
AS ASM 1-684 Pago Pago US USD 🇦🇸 en-AS,sm,to American Samoa 016 .as
AT AUT 43 Vienna AT EUR 🇦🇹 de-AT,hr,hu,sl Austria 040 .at
AU AUS 61 Canberra AU AUD 🇦🇺 en-AU Australia 036 .au
AW ABW 297 Oranjestad NL AWG 🇦🇼 nl-AW,pap,es,en Aruba 533 .aw
AX ALA 358 Mariehamn FI EUR 🇦🇽 sv-AX Åland Islands 248 .ax
AZ AZE 994 Baku AZ AZN 🇦🇿 az,ru,hy Azerbaijan 031 .az
BA BIH 387 Sarajevo BA BAM 🇧🇦 bs,hr-BA,sr-BA Bosnia 070 .ba
BB BRB 1-246 Bridgetown BB BBD 🇧🇧 en-BB Barbados 052 .bb
BD BGD 880 Dhaka BD BDT 🇧🇩 bn-BD,en Bangladesh 050 .bd
BE BEL 32 Brussels BE EUR 🇧🇪 nl-BE,fr-BE,de-BE Belgium 056 .be
BF BFA 226 Ouagadougou BF XOF 🇧🇫 fr-BF,mos Burkina Faso 854 .bf
BG BGR 359 Sofia BG EUR 🇧🇬 bg,tr-BG,rom Bulgaria 100 .bg
BH BHR 973 Manama BH BHD 🇧🇭 ar-BH,en,fa,ur Bahrain 048 .bh
BI BDI 257 Gitega BI BIF 🇧🇮 fr-BI,rn Burundi 108 .bi
BJ BEN 229 Porto-Novo BJ XOF 🇧🇯 fr-BJ Benin 204 .bj
BL BLM 590 Gustavia FR EUR 🇧🇱 fr St. Barthélemy 652 .gp
BM BMU 1-441 Hamilton GB BMD 🇧🇲 en-BM,pt Bermuda 060 .bm
BN BRN 673 Bandar Seri Begawan BN BND 🇧🇳 ms-BN,en-BN Brunei 096 .bn
BO BOL 591 Sucre BO BOB 🇧🇴 es-BO,qu,ay Bolivia 068 .bo
BR BRA 55 Brasilia BR BRL 🇧🇷 pt-BR,es,en,fr Brazil 076 .br
BS BHS 1-242 Nassau BS BSD 🇧🇸 en-BS Bahamas 044 .bs
BT BTN 975 Thimphu BT INR 🇧🇹 dz Bhutan 064 .bt
BW BWA 267 Gaborone BW BWP 🇧🇼 en-BW,tn-BW Botswana 072 .bw
BY BLR 375 Minsk BY BYN 🇧🇾 be,ru Belarus 112 .by
BZ BLZ 501 Belmopan BZ BZD 🇧🇿 en-BZ,es Belize 084 .bz
CA CAN 1 Ottawa CA CAD 🇨🇦 en-CA,fr-CA,iu Canada 124 .ca
CC CCK 61 West Island AU AUD 🇨🇨 ms-CC,en Cocos Islands 166 .cc
CD COD 243 Kinshasa CD CDF 🇨🇩 fr-CD,ln,ktu,kg,sw,lua Congo - Kinshasa 180 .cd
CF CAF 236 Bangui CF XAF 🇨🇫 fr-CF,sg,ln,kg Central African Republic 140 .cf
CG COG 242 Brazzaville CG XAF 🇨🇬 fr-CG,kg,ln-CG Congo - Brazzaville 178 .cg
CH CHE 41 Bern CH CHF 🇨🇭 de-CH,fr-CH,it-CH,rm Switzerland 756 .ch
CI CIV 225 Yamoussoukro CI XOF 🇨🇮 fr-CI Côte d’Ivoire 384 .ci
CK COK 682 Avarua NZ NZD 🇨🇰 en-CK,mi Cook Islands 184 .ck
CL CHL 56 Santiago CL CLP 🇨🇱 es-CL Chile 152 .cl
CM CMR 237 Yaounde CM XAF 🇨🇲 en-CM,fr-CM Cameroon 120 .cm
CN CHN 86 Beijing CN CNY 🇨🇳 zh-CN,yue,wuu,dta,ug,za China 156 .cn
CO COL 57 Bogota CO COP 🇨🇴 es-CO Colombia 170 .co
CR CRI 506 San Jose CR CRC 🇨🇷 es-CR,en Costa Rica 188 .cr
CU CUB 53 Havana CU CUP 🇨🇺 es-CU,pap Cuba 192 .cu
CV CPV 238 Praia CV CVE 🇨🇻 pt-CV Cape Verde 132 .cv
CW CUW 599 Willemstad NL XCG 🇨🇼 nl,pap Curaçao 531 .cw
CX CXR 61 Flying Fish Cove AU AUD 🇨🇽 en,zh,ms-CX Christmas Island 162 .cx
CY CYP 357 Nicosia CY EUR 🇨🇾 el-CY,tr-CY,en Cyprus 196 .cy
CZ CZE 420 Prague CZ CZK 🇨🇿 cs,sk Czechia 203 .cz
DE DEU 49 Berlin DE EUR 🇩🇪 de Germany 276 .de
DJ DJI 253 Djibouti DJ DJF 🇩🇯 fr-DJ,ar,so-DJ,aa Djibouti 262 .dj
DK DNK 45 Copenhagen DK DKK 🇩🇰 da-DK,en,fo,de-DK Denmark 208 .dk
DM DMA 1-767 Roseau DM XCD 🇩🇲 en-DM Dominica 212 .dm
DO DOM 1-809 Santo Domingo DO DOP 🇩🇴 es-DO Dominican Republic 214 .do
DZ DZA 213 Algiers DZ DZD 🇩🇿 ar-DZ Algeria 012 .dz
EC ECU 593 Quito EC USD 🇪🇨 es-EC Ecuador 218 .ec
EE EST 372 Tallinn EE EUR 🇪🇪 et,ru Estonia 233 .ee
EG EGY 20 Cairo EG EGP 🇪🇬 ar-EG,en,fr Egypt 818 .eg
EH ESH 212 El-Aaiun EH MAD 🇪🇭 ar,mey Western Sahara 732 .eh
ER ERI 291 Asmara ER ERN 🇪🇷 aa-ER,ar,tig,kun,ti-ER Eritrea 232 .er
ES ESP 34 Madrid ES EUR 🇪🇸 es-ES,ca,gl,eu,oc Spain 724 .es
ET ETH 251 Addis Ababa ET ETB 🇪🇹 am,en-ET,om-ET,ti-ET,so-ET,sid Ethiopia 231 .et
FI FIN 358 Helsinki FI EUR 🇫🇮 fi-FI,sv-FI,smn Finland 246 .fi
FJ FJI 679 Suva FJ FJD 🇫🇯 en-FJ,fj Fiji 242 .fj
FK FLK 500 Stanley GB FKP 🇫🇰 en-FK Falkland Islands 238 .fk
FM FSM 691 Palikir FM USD 🇫🇲 en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg Micronesia 583 .fm
FO FRO 298 Torshavn DK DKK 🇫🇴 fo,da-FO Faroe Islands 234 .fo
FR FRA 33 Paris FR EUR 🇫🇷 fr-FR,frp,br,co,ca,eu,oc France 250 .fr
GA GAB 241 Libreville GA XAF 🇬🇦 fr-GA Gabon 266 .ga
GB GBR 44 London GB GBP 🇬🇧 en-GB,cy-GB,gd UK 826 .uk
GD GRD 1-473 St. George's GD XCD 🇬🇩 en-GD Grenada 308 .gd
GE GEO 995 Tbilisi GE GEL 🇬🇪 ka,ru,hy,az Georgia 268 .ge
GF GUF 594 Cayenne FR EUR 🇬🇫 fr-GF French Guiana 254 .gf
GG GGY 44 St Peter Port GB GBP 🇬🇬 en,nrf Guernsey 831 .gg
GH GHA 233 Accra GH GHS 🇬🇭 en-GH,ak,ee,tw Ghana 288 .gh
GI GIB 350 Gibraltar GB GIP 🇬🇮 en-GI,es,it,pt Gibraltar 292 .gi
GL GRL 299 Nuuk DK DKK 🇬🇱 kl,da-GL,en Greenland 304 .gl
GM GMB 220 Banjul GM GMD 🇬🇲 en-GM,mnk,wof,wo,ff Gambia 270 .gm
GN GIN 224 Conakry GN GNF 🇬🇳 fr-GN Guinea 324 .gn
GP GLP 590 Basse-Terre FR EUR 🇬🇵 fr-GP Guadeloupe 312 .gp
GQ GNQ 240 Ciudad de la Paz GQ XAF 🇬🇶 es-GQ,fr,pt Equatorial Guinea 226 .gq
GR GRC 30 Athens GR EUR 🇬🇷 el-GR,en,fr Greece 300 .gr
GT GTM 502 Guatemala City GT GTQ 🇬🇹 es-GT Guatemala 320 .gt
GU GUM 1-671 Hagatna US USD 🇬🇺 en-GU,ch-GU Guam 316 .gu
GW GNB 245 Bissau GW XOF 🇬🇼 pt-GW,pov Guinea-Bissau 624 .gw
GY GUY 592 Georgetown GY GYD 🇬🇾 en-GY Guyana 328 .gy
HK HKG 852 Hong Kong CN HKD 🇭🇰 zh-HK,yue,zh,en Hong Kong 344 .hk
HN HND 504 Tegucigalpa HN HNL 🇭🇳 es-HN,cab,miq Honduras 340 .hn
HR HRV 385 Zagreb HR EUR 🇭🇷 hr-HR,sr Croatia 191 .hr
HT HTI 509 Port-au-Prince HT HTG 🇭🇹 ht,fr-HT Haiti 332 .ht
HU HUN 36 Budapest HU HUF 🇭🇺 hu-HU Hungary 348 .hu
ID IDN 62 Jakarta ID IDR 🇮🇩 id,en,nl,jv Indonesia 360 .id
IE IRL 353 Dublin IE EUR 🇮🇪 en-IE,ga-IE Ireland 372 .ie
IL ISR 972 Jerusalem IL ILS 🇮🇱 he,ar-IL,en-IL Israel 376 .il
IM IMN 44 Douglas GB GBP 🇮🇲 en,gv Isle of Man 833 .im
IN IND 91 New Delhi IN INR 🇮🇳 en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc India 356 .in
IO IOT 246 Diego Garcia GB USD 🇮🇴 en-IO British Indian Ocean Territory 086 .io
IQ IRQ 964 Baghdad IQ IQD 🇮🇶 ar-IQ,ku,hy Iraq 368 .iq
IR IRN 98 Tehran IR IRR 🇮🇷 fa-IR,ku Iran 364 .ir
IS ISL 354 Reykjavik IS ISK 🇮🇸 is,en,de,da,sv,no Iceland 352 .is
IT ITA 39 Rome IT EUR 🇮🇹 it-IT,de-IT,fr-IT,sc,ca,co,sl Italy 380 .it
JE JEY 44 Saint Helier GB GBP 🇯🇪 en,fr,nrf Jersey 832 .je
JM JAM 1-876 Kingston JM JMD 🇯🇲 en-JM Jamaica 388 .jm
JO JOR 962 Amman JO JOD 🇯🇴 ar-JO,en Jordan 400 .jo
JP JPN 81 Tokyo JP JPY 🇯🇵 ja Japan 392 .jp
KE KEN 254 Nairobi KE KES 🇰🇪 en-KE,sw-KE Kenya 404 .ke
KG KGZ 996 Bishkek KG KGS 🇰🇬 ky,uz,ru Kyrgyzstan 417 .kg
KH KHM 855 Phnom Penh KH KHR 🇰🇭 km,fr,en Cambodia 116 .kh
KI KIR 686 Tarawa KI AUD 🇰🇮 en-KI,gil Kiribati 296 .ki
KM COM 269 Moroni KM KMF 🇰🇲 ar,fr-KM Comoros 174 .km
KN KNA 1-869 Basseterre KN XCD 🇰🇳 en-KN St. Kitts & Nevis 659 .kn
KP PRK 850 Pyongyang KP KPW 🇰🇵 ko-KP North Korea 408 .kp
KR KOR 82 Seoul KR KRW 🇰🇷 ko-KR,en South Korea 410 .kr
KW KWT 965 Kuwait City KW KWD 🇰🇼 ar-KW,en Kuwait 414 .kw
KY CYM 1-345 George Town GB KYD 🇰🇾 en-KY Cayman Islands 136 .ky
KZ KAZ 7 Nur-Sultan KZ KZT 🇰🇿 kk,ru Kazakhstan 398 .kz
LA LAO 856 Vientiane LA LAK 🇱🇦 lo,fr,en Laos 418 .la
LB LBN 961 Beirut LB LBP 🇱🇧 ar-LB,fr-LB,en,hy Lebanon 422 .lb
LC LCA 1-758 Castries LC XCD 🇱🇨 en-LC St. Lucia 662 .lc
LI LIE 423 Vaduz LI CHF 🇱🇮 de-LI Liechtenstein 438 .li
LK LKA 94 Colombo LK LKR 🇱🇰 si,ta,en Sri Lanka 144 .lk
LR LBR 231 Monrovia LR LRD 🇱🇷 en-LR Liberia 430 .lr
LS LSO 266 Maseru LS LSL 🇱🇸 en-LS,st,zu,xh Lesotho 426 .ls
LT LTU 370 Vilnius LT EUR 🇱🇹 lt,ru,pl Lithuania 440 .lt
LU LUX 352 Luxembourg LU EUR 🇱🇺 lb,de-LU,fr-LU Luxembourg 442 .lu
LV LVA 371 Riga LV EUR 🇱🇻 lv,ru,lt Latvia 428 .lv
LY LBY 218 Tripoli LY LYD 🇱🇾 ar-LY,it,en Libya 434 .ly
MA MAR 212 Rabat MA MAD 🇲🇦 ar-MA,ber,fr Morocco 504 .ma
MC MCO 377 Monaco MC EUR 🇲🇨 fr-MC,en,it Monaco 492 .mc
MD MDA 373 Chisinau MD MDL 🇲🇩 ro,ru,gag,tr Moldova 498 .md
ME MNE 382 Podgorica ME EUR 🇲🇪 sr,hu,bs,sq,hr,rom Montenegro 499 .me
MF MAF 590 Marigot FR EUR 🇲🇫 fr St. Martin 663 .gp
MG MDG 261 Antananarivo MG MGA 🇲🇬 fr-MG,mg Madagascar 450 .mg
MH MHL 692 Majuro MH USD 🇲🇭 mh,en-MH Marshall Islands 584 .mh
MK MKD 389 Skopje MK MKD 🇲🇰 mk,sq,tr,rmm,sr North Macedonia 807 .mk
ML MLI 223 Bamako ML XOF 🇲🇱 fr-ML,bm Mali 466 .ml
MM MMR 95 Nay Pyi Taw MM MMK 🇲🇲 my Myanmar 104 .mm
MN MNG 976 Ulaanbaatar MN MNT 🇲🇳 mn,ru Mongolia 496 .mn
MO MAC 853 Macao CN MOP 🇲🇴 zh,zh-MO,pt Macao 446 .mo
MP MNP 1-670 Saipan US USD 🇲🇵 fil,tl,zh,ch-MP,en-MP Northern Mariana Islands 580 .mp
MQ MTQ 596 Fort-de-France FR EUR 🇲🇶 fr-MQ Martinique 474 .mq
MR MRT 222 Nouakchott MR MRU 🇲🇷 ar-MR,fuc,snk,fr,mey,wo Mauritania 478 .mr
MS MSR 1-664 Plymouth GB XCD 🇲🇸 en-MS Montserrat 500 .ms
MT MLT 356 Valletta MT EUR 🇲🇹 mt,en-MT Malta 470 .mt
MU MUS 230 Port Louis MU MUR 🇲🇺 en-MU,bho,fr Mauritius 480 .mu
MV MDV 960 Male MV MVR 🇲🇻 dv,en Maldives 462 .mv
MW MWI 265 Lilongwe MW MWK 🇲🇼 ny,yao,tum,swk Malawi 454 .mw
MX MEX 52 Mexico City MX MXN 🇲🇽 es-MX Mexico 484 .mx
MY MYS 60 Kuala Lumpur MY MYR 🇲🇾 ms-MY,en,zh,ta,te,ml,pa,th Malaysia 458 .my
MZ MOZ 258 Maputo MZ MZN 🇲🇿 pt-MZ,vmw Mozambique 508 .mz
NA NAM 264 Windhoek NA NAD 🇳🇦 en-NA,af,de,hz,naq Namibia 516 .na
NC NCL 687 Noumea FR XPF 🇳🇨 fr-NC New Caledonia 540 .nc
NE NER 227 Niamey NE XOF 🇳🇪 fr-NE,ha,kr,dje Niger 562 .ne
NF NFK 672 Kingston AU AUD 🇳🇫 en-NF Norfolk Island 574 .nf
NG NGA 234 Abuja NG NGN 🇳🇬 en-NG,ha,yo,ig,ff Nigeria 566 .ng
NI NIC 505 Managua NI NIO 🇳🇮 es-NI,en Nicaragua 558 .ni
NL NLD 31 Amsterdam NL EUR 🇳🇱 nl-NL,fy-NL Netherlands 528 .nl
NO NOR 47 Oslo NO NOK 🇳🇴 no,nb,nn,se,fi Norway 578 .no
NP NPL 977 Kathmandu NP NPR 🇳🇵 ne,en Nepal 524 .np
NR NRU 674 Yaren NR AUD 🇳🇷 na,en-NR Nauru 520 .nr
NU NIU 683 Alofi NZ NZD 🇳🇺 niu,en-NU Niue 570 .nu
NZ NZL 64 Wellington NZ NZD 🇳🇿 en-NZ,mi New Zealand 554 .nz
OM OMN 968 Muscat OM OMR 🇴🇲 ar-OM,en,bal,ur Oman 512 .om
PA PAN 507 Panama City PA PAB 🇵🇦 es-PA,en Panama 591 .pa
PE PER 51 Lima PE PEN 🇵🇪 es-PE,qu,ay Peru 604 .pe
PF PYF 689 Papeete FR XPF 🇵🇫 fr-PF,ty French Polynesia 258 .pf
PG PNG 675 Port Moresby PG PGK 🇵🇬 en-PG,ho,meu,tpi Papua New Guinea 598 .pg
PH PHL 63 Manila PH PHP 🇵🇭 tl,en-PH,fil,ceb,ilo,hil,war,pam,bik,bcl,pag,mrw,tsg,mdh,cbk,krj,sgd,msb,akl,ibg,yka,mta,abx Philippines 608 .ph
PK PAK 92 Islamabad PK PKR 🇵🇰 ur-PK,en-PK,pa,sd,ps,brh Pakistan 586 .pk
PL POL 48 Warsaw PL PLN 🇵🇱 pl Poland 616 .pl
PM SPM 508 Saint-Pierre FR EUR 🇵🇲 fr-PM St. Pierre & Miquelon 666 .pm
PN PCN 870 Adamstown GB NZD 🇵🇳 en-PN Pitcairn 612 .pn
PR PRI 1 San Juan US USD 🇵🇷 en-PR,es-PR Puerto Rico 630 .pr
PT PRT 351 Lisbon PT EUR 🇵🇹 pt-PT,mwl Portugal 620 .pt
PW PLW 680 Melekeok PW USD 🇵🇼 pau,sov,en-PW,tox,ja,fil,zh Palau 585 .pw
PY PRY 595 Asuncion PY PYG 🇵🇾 es-PY,gn Paraguay 600 .py
QA QAT 974 Doha QA QAR 🇶🇦 ar-QA,es Qatar 634 .qa
RE REU 262 Saint-Denis FR EUR 🇷🇪 fr-RE Réunion 638 .re
RO ROU 40 Bucharest RO RON 🇷🇴 ro,hu,rom Romania 642 .ro
RS SRB 381 Belgrade RS RSD 🇷🇸 sr,hu,bs,rom Serbia 688 .rs
RU RUS 7 Moscow RU RUB 🇷🇺 ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,kbd,krc,av,sah,nog Russia 643 .ru
RW RWA 250 Kigali RW RWF 🇷🇼 rw,en-RW,fr-RW,sw Rwanda 646 .rw
SA SAU 966 Riyadh SA SAR 🇸🇦 ar-SA Saudi Arabia 682 .sa
SB SLB 677 Honiara SB SBD 🇸🇧 en-SB,tpi Solomon Islands 090 .sb
SC SYC 248 Victoria SC SCR 🇸🇨 en-SC,fr-SC Seychelles 690 .sc
SD SDN 249 Khartoum SD SDG 🇸🇩 ar-SD,en,fia Sudan 729 .sd
SE SWE 46 Stockholm SE SEK 🇸🇪 sv-SE,se,sma,fi-SE Sweden 752 .se
SG SGP 65 Singapore SG SGD 🇸🇬 cmn,en-SG,ms-SG,ta-SG,zh-SG Singapore 702 .sg
SH SHN 290 Jamestown GB SHP 🇸🇭 en-SH St. Helena 654 .sh
SI SVN 386 Ljubljana SI EUR 🇸🇮 sl,sh Slovenia 705 .si
SJ SJM 47 Longyearbyen NO NOK 🇸🇯 no,ru Svalbard & Jan Mayen 744 .sj
SK SVK 421 Bratislava SK EUR 🇸🇰 sk,hu Slovakia 703 .sk
SL SLE 232 Freetown SL SLE 🇸🇱 en-SL,men,tem Sierra Leone 694 .sl
SM SMR 378 San Marino SM EUR 🇸🇲 it-SM San Marino 674 .sm
SN SEN 221 Dakar SN XOF 🇸🇳 fr-SN,wo,fuc,mnk Senegal 686 .sn
SO SOM 252 Mogadishu SO SOS 🇸🇴 so-SO,ar-SO,it,en-SO Somalia 706 .so
SR SUR 597 Paramaribo SR SRD 🇸🇷 nl-SR,en,srn,hns,jv Suriname 740 .sr
SS SSD 211 Juba SS SSP 🇸🇸 en South Sudan 728 .ss
ST STP 239 Sao Tome ST STN 🇸🇹 pt-ST São Tomé & Príncipe 678 .st
SV SLV 503 San Salvador SV SVC 🇸🇻 es-SV El Salvador 222 .sv
SX SXM 1-721 Philipsburg NL XCG 🇸🇽 nl,en Sint Maarten 534 .sx
SY SYR 963 Damascus SY SYP 🇸🇾 ar-SY,ku,hy,arc,fr,en Syria 760 .sy
SZ SWZ 268 Mbabane SZ SZL 🇸🇿 en-SZ,ss-SZ Eswatini 748 .sz
TC TCA 1-649 Cockburn Town GB USD 🇹🇨 en-TC Turks & Caicos Islands 796 .tc
TD TCD 235 N'Djamena TD XAF 🇹🇩 fr-TD,ar-TD,sre Chad 148 .td
TF ATF 262 Port-aux-Francais FR EUR 🇹🇫 fr French Southern Territories 260 .tf
TG TGO 228 Lome TG XOF 🇹🇬 fr-TG,ee,hna,kbp,dag,ha Togo 768 .tg
TH THA 66 Bangkok TH THB 🇹🇭 th,en Thailand 764 .th
TJ TJK 992 Dushanbe TJ TJS 🇹🇯 tg,ru Tajikistan 762 .tj
TL TLS 670 Dili TL USD 🇹🇱 tet,pt-TL,id,en Timor-Leste 626 .tl
TM TKM 993 Ashgabat TM TMT 🇹🇲 tk,ru,uz Turkmenistan 795 .tm
TN TUN 216 Tunis TN TND 🇹🇳 ar-TN,fr Tunisia 788 .tn
TO TON 676 Nuku'alofa TO TOP 🇹🇴 to,en-TO Tonga 776 .to
TR TUR 90 Ankara TR TRY 🇹🇷 tr-TR,ku,diq,az,av Türkiye 792 .tr
TT TTO 1-868 Port of Spain TT TTD 🇹🇹 en-TT,hns,fr,es,zh Trinidad & Tobago 780 .tt
TV TUV 688 Funafuti TV AUD 🇹🇻 tvl,en,sm,gil Tuvalu 798 .tv
TW TWN 886 Taipei TW TWD 🇹🇼 zh-TW,zh,nan,hak Taiwan 158 .tw
TZ TZA 255 Dodoma TZ TZS 🇹🇿 sw-TZ,en,ar Tanzania 834 .tz
UA UKR 380 Kyiv UA UAH 🇺🇦 uk,ru-UA,rom,pl,hu Ukraine 804 .ua
UG UGA 256 Kampala UG UGX 🇺🇬 en-UG,lg,sw,ar Uganda 800 .ug
US USA 1 Washington US USD 🇺🇸 en-US,es-US,haw,fr US 840 .us
UY URY 598 Montevideo UY UYU 🇺🇾 es-UY Uruguay 858 .uy
UZ UZB 998 Tashkent UZ UZS 🇺🇿 uz,ru,tg Uzbekistan 860 .uz
VA VAT 39 Vatican City VA EUR 🇻🇦 la,it,fr Vatican City 336 .va
VC VCT 1-784 Kingstown VC XCD 🇻🇨 en-VC,fr St. Vincent & Grenadines 670 .vc
VE VEN 58 Caracas VE VES 🇻🇪 es-VE Venezuela 862 .ve
VG VGB 1-284 Road Town GB USD 🇻🇬 en-VG British Virgin Islands 092 .vg
VI VIR 1-340 Charlotte Amalie US USD 🇻🇮 en-VI U.S. Virgin Islands 850 .vi
VN VNM 84 Hanoi VN VND 🇻🇳 vi,en,fr,zh,km Vietnam 704 .vn
VU VUT 678 Port Vila VU VUV 🇻🇺 bi,en-VU,fr-VU Vanuatu 548 .vu
WF WLF 681 Mata Utu FR XPF 🇼🇫 wls,fud,fr-WF Wallis & Futuna 876 .wf
WS WSM 685 Apia WS WST 🇼🇸 sm,en-WS Samoa 882 .ws
YE YEM 967 Sanaa YE YER 🇾🇪 ar-YE Yemen 887 .ye
YT MYT 262 Mamoudzou FR EUR 🇾🇹 fr-YT Mayotte 175 .yt
ZA ZAF 27 Pretoria ZA ZAR 🇿🇦 zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr South Africa 710 .za
ZM ZMB 260 Lusaka ZM ZMW 🇿🇲 en-ZM,bem,loz,lun,lue,ny,toi Zambia 894 .zm
ZW ZWE 263 Harare ZW ZWG 🇿🇼 en-ZW,sn,nr,nd Zimbabwe 716 .zw
1 alpha2 alpha3 calling-code capital country currency flag languages name numeric tld
2 AD AND 376 Andorra la Vella AD EUR 🇦🇩 ca Andorra 020 .ad
3 AE ARE 971 Abu Dhabi AE AED 🇦🇪 ar-AE,fa,en,hi,ur United Arab Emirates 784 .ae
4 AF AFG 93 Kabul AF AFN 🇦🇫 fa-AF,ps,uz-AF,tk Afghanistan 004 .af
5 AG ATG 1-268 St. John's AG XCD 🇦🇬 en-AG Antigua & Barbuda 028 .ag
6 AI AIA 1-264 The Valley GB XCD 🇦🇮 en-AI Anguilla 660 .ai
7 AL ALB 355 Tirana AL ALL 🇦🇱 sq,el Albania 008 .al
8 AM ARM 374 Yerevan AM AMD 🇦🇲 hy Armenia 051 .am
9 AO AGO 244 Luanda AO AOA 🇦🇴 pt-AO Angola 024 .ao
10 AR ARG 54 Buenos Aires AR ARS 🇦🇷 es-AR,en,it,de,fr,gn Argentina 032 .ar
11 AS ASM 1-684 Pago Pago US USD 🇦🇸 en-AS,sm,to American Samoa 016 .as
12 AT AUT 43 Vienna AT EUR 🇦🇹 de-AT,hr,hu,sl Austria 040 .at
13 AU AUS 61 Canberra AU AUD 🇦🇺 en-AU Australia 036 .au
14 AW ABW 297 Oranjestad NL AWG 🇦🇼 nl-AW,pap,es,en Aruba 533 .aw
15 AX ALA 358 Mariehamn FI EUR 🇦🇽 sv-AX Åland Islands 248 .ax
16 AZ AZE 994 Baku AZ AZN 🇦🇿 az,ru,hy Azerbaijan 031 .az
17 BA BIH 387 Sarajevo BA BAM 🇧🇦 bs,hr-BA,sr-BA Bosnia 070 .ba
18 BB BRB 1-246 Bridgetown BB BBD 🇧🇧 en-BB Barbados 052 .bb
19 BD BGD 880 Dhaka BD BDT 🇧🇩 bn-BD,en Bangladesh 050 .bd
20 BE BEL 32 Brussels BE EUR 🇧🇪 nl-BE,fr-BE,de-BE Belgium 056 .be
21 BF BFA 226 Ouagadougou BF XOF 🇧🇫 fr-BF,mos Burkina Faso 854 .bf
22 BG BGR 359 Sofia BG EUR 🇧🇬 bg,tr-BG,rom Bulgaria 100 .bg
23 BH BHR 973 Manama BH BHD 🇧🇭 ar-BH,en,fa,ur Bahrain 048 .bh
24 BI BDI 257 Gitega BI BIF 🇧🇮 fr-BI,rn Burundi 108 .bi
25 BJ BEN 229 Porto-Novo BJ XOF 🇧🇯 fr-BJ Benin 204 .bj
26 BL BLM 590 Gustavia FR EUR 🇧🇱 fr St. Barthélemy 652 .gp
27 BM BMU 1-441 Hamilton GB BMD 🇧🇲 en-BM,pt Bermuda 060 .bm
28 BN BRN 673 Bandar Seri Begawan BN BND 🇧🇳 ms-BN,en-BN Brunei 096 .bn
29 BO BOL 591 Sucre BO BOB 🇧🇴 es-BO,qu,ay Bolivia 068 .bo
30 BR BRA 55 Brasilia BR BRL 🇧🇷 pt-BR,es,en,fr Brazil 076 .br
31 BS BHS 1-242 Nassau BS BSD 🇧🇸 en-BS Bahamas 044 .bs
32 BT BTN 975 Thimphu BT INR 🇧🇹 dz Bhutan 064 .bt
33 BW BWA 267 Gaborone BW BWP 🇧🇼 en-BW,tn-BW Botswana 072 .bw
34 BY BLR 375 Minsk BY BYN 🇧🇾 be,ru Belarus 112 .by
35 BZ BLZ 501 Belmopan BZ BZD 🇧🇿 en-BZ,es Belize 084 .bz
36 CA CAN 1 Ottawa CA CAD 🇨🇦 en-CA,fr-CA,iu Canada 124 .ca
37 CC CCK 61 West Island AU AUD 🇨🇨 ms-CC,en Cocos Islands 166 .cc
38 CD COD 243 Kinshasa CD CDF 🇨🇩 fr-CD,ln,ktu,kg,sw,lua Congo - Kinshasa 180 .cd
39 CF CAF 236 Bangui CF XAF 🇨🇫 fr-CF,sg,ln,kg Central African Republic 140 .cf
40 CG COG 242 Brazzaville CG XAF 🇨🇬 fr-CG,kg,ln-CG Congo - Brazzaville 178 .cg
41 CH CHE 41 Bern CH CHF 🇨🇭 de-CH,fr-CH,it-CH,rm Switzerland 756 .ch
42 CI CIV 225 Yamoussoukro CI XOF 🇨🇮 fr-CI Côte d’Ivoire 384 .ci
43 CK COK 682 Avarua NZ NZD 🇨🇰 en-CK,mi Cook Islands 184 .ck
44 CL CHL 56 Santiago CL CLP 🇨🇱 es-CL Chile 152 .cl
45 CM CMR 237 Yaounde CM XAF 🇨🇲 en-CM,fr-CM Cameroon 120 .cm
46 CN CHN 86 Beijing CN CNY 🇨🇳 zh-CN,yue,wuu,dta,ug,za China 156 .cn
47 CO COL 57 Bogota CO COP 🇨🇴 es-CO Colombia 170 .co
48 CR CRI 506 San Jose CR CRC 🇨🇷 es-CR,en Costa Rica 188 .cr
49 CU CUB 53 Havana CU CUP 🇨🇺 es-CU,pap Cuba 192 .cu
50 CV CPV 238 Praia CV CVE 🇨🇻 pt-CV Cape Verde 132 .cv
51 CW CUW 599 Willemstad NL XCG 🇨🇼 nl,pap Curaçao 531 .cw
52 CX CXR 61 Flying Fish Cove AU AUD 🇨🇽 en,zh,ms-CX Christmas Island 162 .cx
53 CY CYP 357 Nicosia CY EUR 🇨🇾 el-CY,tr-CY,en Cyprus 196 .cy
54 CZ CZE 420 Prague CZ CZK 🇨🇿 cs,sk Czechia 203 .cz
55 DE DEU 49 Berlin DE EUR 🇩🇪 de Germany 276 .de
56 DJ DJI 253 Djibouti DJ DJF 🇩🇯 fr-DJ,ar,so-DJ,aa Djibouti 262 .dj
57 DK DNK 45 Copenhagen DK DKK 🇩🇰 da-DK,en,fo,de-DK Denmark 208 .dk
58 DM DMA 1-767 Roseau DM XCD 🇩🇲 en-DM Dominica 212 .dm
59 DO DOM 1-809 Santo Domingo DO DOP 🇩🇴 es-DO Dominican Republic 214 .do
60 DZ DZA 213 Algiers DZ DZD 🇩🇿 ar-DZ Algeria 012 .dz
61 EC ECU 593 Quito EC USD 🇪🇨 es-EC Ecuador 218 .ec
62 EE EST 372 Tallinn EE EUR 🇪🇪 et,ru Estonia 233 .ee
63 EG EGY 20 Cairo EG EGP 🇪🇬 ar-EG,en,fr Egypt 818 .eg
64 EH ESH 212 El-Aaiun EH MAD 🇪🇭 ar,mey Western Sahara 732 .eh
65 ER ERI 291 Asmara ER ERN 🇪🇷 aa-ER,ar,tig,kun,ti-ER Eritrea 232 .er
66 ES ESP 34 Madrid ES EUR 🇪🇸 es-ES,ca,gl,eu,oc Spain 724 .es
67 ET ETH 251 Addis Ababa ET ETB 🇪🇹 am,en-ET,om-ET,ti-ET,so-ET,sid Ethiopia 231 .et
68 FI FIN 358 Helsinki FI EUR 🇫🇮 fi-FI,sv-FI,smn Finland 246 .fi
69 FJ FJI 679 Suva FJ FJD 🇫🇯 en-FJ,fj Fiji 242 .fj
70 FK FLK 500 Stanley GB FKP 🇫🇰 en-FK Falkland Islands 238 .fk
71 FM FSM 691 Palikir FM USD 🇫🇲 en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg Micronesia 583 .fm
72 FO FRO 298 Torshavn DK DKK 🇫🇴 fo,da-FO Faroe Islands 234 .fo
73 FR FRA 33 Paris FR EUR 🇫🇷 fr-FR,frp,br,co,ca,eu,oc France 250 .fr
74 GA GAB 241 Libreville GA XAF 🇬🇦 fr-GA Gabon 266 .ga
75 GB GBR 44 London GB GBP 🇬🇧 en-GB,cy-GB,gd UK 826 .uk
76 GD GRD 1-473 St. George's GD XCD 🇬🇩 en-GD Grenada 308 .gd
77 GE GEO 995 Tbilisi GE GEL 🇬🇪 ka,ru,hy,az Georgia 268 .ge
78 GF GUF 594 Cayenne FR EUR 🇬🇫 fr-GF French Guiana 254 .gf
79 GG GGY 44 St Peter Port GB GBP 🇬🇬 en,nrf Guernsey 831 .gg
80 GH GHA 233 Accra GH GHS 🇬🇭 en-GH,ak,ee,tw Ghana 288 .gh
81 GI GIB 350 Gibraltar GB GIP 🇬🇮 en-GI,es,it,pt Gibraltar 292 .gi
82 GL GRL 299 Nuuk DK DKK 🇬🇱 kl,da-GL,en Greenland 304 .gl
83 GM GMB 220 Banjul GM GMD 🇬🇲 en-GM,mnk,wof,wo,ff Gambia 270 .gm
84 GN GIN 224 Conakry GN GNF 🇬🇳 fr-GN Guinea 324 .gn
85 GP GLP 590 Basse-Terre FR EUR 🇬🇵 fr-GP Guadeloupe 312 .gp
86 GQ GNQ 240 Ciudad de la Paz GQ XAF 🇬🇶 es-GQ,fr,pt Equatorial Guinea 226 .gq
87 GR GRC 30 Athens GR EUR 🇬🇷 el-GR,en,fr Greece 300 .gr
88 GT GTM 502 Guatemala City GT GTQ 🇬🇹 es-GT Guatemala 320 .gt
89 GU GUM 1-671 Hagatna US USD 🇬🇺 en-GU,ch-GU Guam 316 .gu
90 GW GNB 245 Bissau GW XOF 🇬🇼 pt-GW,pov Guinea-Bissau 624 .gw
91 GY GUY 592 Georgetown GY GYD 🇬🇾 en-GY Guyana 328 .gy
92 HK HKG 852 Hong Kong CN HKD 🇭🇰 zh-HK,yue,zh,en Hong Kong 344 .hk
93 HN HND 504 Tegucigalpa HN HNL 🇭🇳 es-HN,cab,miq Honduras 340 .hn
94 HR HRV 385 Zagreb HR EUR 🇭🇷 hr-HR,sr Croatia 191 .hr
95 HT HTI 509 Port-au-Prince HT HTG 🇭🇹 ht,fr-HT Haiti 332 .ht
96 HU HUN 36 Budapest HU HUF 🇭🇺 hu-HU Hungary 348 .hu
97 ID IDN 62 Jakarta ID IDR 🇮🇩 id,en,nl,jv Indonesia 360 .id
98 IE IRL 353 Dublin IE EUR 🇮🇪 en-IE,ga-IE Ireland 372 .ie
99 IL ISR 972 Jerusalem IL ILS 🇮🇱 he,ar-IL,en-IL Israel 376 .il
100 IM IMN 44 Douglas GB GBP 🇮🇲 en,gv Isle of Man 833 .im
101 IN IND 91 New Delhi IN INR 🇮🇳 en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc India 356 .in
102 IO IOT 246 Diego Garcia GB USD 🇮🇴 en-IO British Indian Ocean Territory 086 .io
103 IQ IRQ 964 Baghdad IQ IQD 🇮🇶 ar-IQ,ku,hy Iraq 368 .iq
104 IR IRN 98 Tehran IR IRR 🇮🇷 fa-IR,ku Iran 364 .ir
105 IS ISL 354 Reykjavik IS ISK 🇮🇸 is,en,de,da,sv,no Iceland 352 .is
106 IT ITA 39 Rome IT EUR 🇮🇹 it-IT,de-IT,fr-IT,sc,ca,co,sl Italy 380 .it
107 JE JEY 44 Saint Helier GB GBP 🇯🇪 en,fr,nrf Jersey 832 .je
108 JM JAM 1-876 Kingston JM JMD 🇯🇲 en-JM Jamaica 388 .jm
109 JO JOR 962 Amman JO JOD 🇯🇴 ar-JO,en Jordan 400 .jo
110 JP JPN 81 Tokyo JP JPY 🇯🇵 ja Japan 392 .jp
111 KE KEN 254 Nairobi KE KES 🇰🇪 en-KE,sw-KE Kenya 404 .ke
112 KG KGZ 996 Bishkek KG KGS 🇰🇬 ky,uz,ru Kyrgyzstan 417 .kg
113 KH KHM 855 Phnom Penh KH KHR 🇰🇭 km,fr,en Cambodia 116 .kh
114 KI KIR 686 Tarawa KI AUD 🇰🇮 en-KI,gil Kiribati 296 .ki
115 KM COM 269 Moroni KM KMF 🇰🇲 ar,fr-KM Comoros 174 .km
116 KN KNA 1-869 Basseterre KN XCD 🇰🇳 en-KN St. Kitts & Nevis 659 .kn
117 KP PRK 850 Pyongyang KP KPW 🇰🇵 ko-KP North Korea 408 .kp
118 KR KOR 82 Seoul KR KRW 🇰🇷 ko-KR,en South Korea 410 .kr
119 KW KWT 965 Kuwait City KW KWD 🇰🇼 ar-KW,en Kuwait 414 .kw
120 KY CYM 1-345 George Town GB KYD 🇰🇾 en-KY Cayman Islands 136 .ky
121 KZ KAZ 7 Nur-Sultan KZ KZT 🇰🇿 kk,ru Kazakhstan 398 .kz
122 LA LAO 856 Vientiane LA LAK 🇱🇦 lo,fr,en Laos 418 .la
123 LB LBN 961 Beirut LB LBP 🇱🇧 ar-LB,fr-LB,en,hy Lebanon 422 .lb
124 LC LCA 1-758 Castries LC XCD 🇱🇨 en-LC St. Lucia 662 .lc
125 LI LIE 423 Vaduz LI CHF 🇱🇮 de-LI Liechtenstein 438 .li
126 LK LKA 94 Colombo LK LKR 🇱🇰 si,ta,en Sri Lanka 144 .lk
127 LR LBR 231 Monrovia LR LRD 🇱🇷 en-LR Liberia 430 .lr
128 LS LSO 266 Maseru LS LSL 🇱🇸 en-LS,st,zu,xh Lesotho 426 .ls
129 LT LTU 370 Vilnius LT EUR 🇱🇹 lt,ru,pl Lithuania 440 .lt
130 LU LUX 352 Luxembourg LU EUR 🇱🇺 lb,de-LU,fr-LU Luxembourg 442 .lu
131 LV LVA 371 Riga LV EUR 🇱🇻 lv,ru,lt Latvia 428 .lv
132 LY LBY 218 Tripoli LY LYD 🇱🇾 ar-LY,it,en Libya 434 .ly
133 MA MAR 212 Rabat MA MAD 🇲🇦 ar-MA,ber,fr Morocco 504 .ma
134 MC MCO 377 Monaco MC EUR 🇲🇨 fr-MC,en,it Monaco 492 .mc
135 MD MDA 373 Chisinau MD MDL 🇲🇩 ro,ru,gag,tr Moldova 498 .md
136 ME MNE 382 Podgorica ME EUR 🇲🇪 sr,hu,bs,sq,hr,rom Montenegro 499 .me
137 MF MAF 590 Marigot FR EUR 🇲🇫 fr St. Martin 663 .gp
138 MG MDG 261 Antananarivo MG MGA 🇲🇬 fr-MG,mg Madagascar 450 .mg
139 MH MHL 692 Majuro MH USD 🇲🇭 mh,en-MH Marshall Islands 584 .mh
140 MK MKD 389 Skopje MK MKD 🇲🇰 mk,sq,tr,rmm,sr North Macedonia 807 .mk
141 ML MLI 223 Bamako ML XOF 🇲🇱 fr-ML,bm Mali 466 .ml
142 MM MMR 95 Nay Pyi Taw MM MMK 🇲🇲 my Myanmar 104 .mm
143 MN MNG 976 Ulaanbaatar MN MNT 🇲🇳 mn,ru Mongolia 496 .mn
144 MO MAC 853 Macao CN MOP 🇲🇴 zh,zh-MO,pt Macao 446 .mo
145 MP MNP 1-670 Saipan US USD 🇲🇵 fil,tl,zh,ch-MP,en-MP Northern Mariana Islands 580 .mp
146 MQ MTQ 596 Fort-de-France FR EUR 🇲🇶 fr-MQ Martinique 474 .mq
147 MR MRT 222 Nouakchott MR MRU 🇲🇷 ar-MR,fuc,snk,fr,mey,wo Mauritania 478 .mr
148 MS MSR 1-664 Plymouth GB XCD 🇲🇸 en-MS Montserrat 500 .ms
149 MT MLT 356 Valletta MT EUR 🇲🇹 mt,en-MT Malta 470 .mt
150 MU MUS 230 Port Louis MU MUR 🇲🇺 en-MU,bho,fr Mauritius 480 .mu
151 MV MDV 960 Male MV MVR 🇲🇻 dv,en Maldives 462 .mv
152 MW MWI 265 Lilongwe MW MWK 🇲🇼 ny,yao,tum,swk Malawi 454 .mw
153 MX MEX 52 Mexico City MX MXN 🇲🇽 es-MX Mexico 484 .mx
154 MY MYS 60 Kuala Lumpur MY MYR 🇲🇾 ms-MY,en,zh,ta,te,ml,pa,th Malaysia 458 .my
155 MZ MOZ 258 Maputo MZ MZN 🇲🇿 pt-MZ,vmw Mozambique 508 .mz
156 NA NAM 264 Windhoek NA NAD 🇳🇦 en-NA,af,de,hz,naq Namibia 516 .na
157 NC NCL 687 Noumea FR XPF 🇳🇨 fr-NC New Caledonia 540 .nc
158 NE NER 227 Niamey NE XOF 🇳🇪 fr-NE,ha,kr,dje Niger 562 .ne
159 NF NFK 672 Kingston AU AUD 🇳🇫 en-NF Norfolk Island 574 .nf
160 NG NGA 234 Abuja NG NGN 🇳🇬 en-NG,ha,yo,ig,ff Nigeria 566 .ng
161 NI NIC 505 Managua NI NIO 🇳🇮 es-NI,en Nicaragua 558 .ni
162 NL NLD 31 Amsterdam NL EUR 🇳🇱 nl-NL,fy-NL Netherlands 528 .nl
163 NO NOR 47 Oslo NO NOK 🇳🇴 no,nb,nn,se,fi Norway 578 .no
164 NP NPL 977 Kathmandu NP NPR 🇳🇵 ne,en Nepal 524 .np
165 NR NRU 674 Yaren NR AUD 🇳🇷 na,en-NR Nauru 520 .nr
166 NU NIU 683 Alofi NZ NZD 🇳🇺 niu,en-NU Niue 570 .nu
167 NZ NZL 64 Wellington NZ NZD 🇳🇿 en-NZ,mi New Zealand 554 .nz
168 OM OMN 968 Muscat OM OMR 🇴🇲 ar-OM,en,bal,ur Oman 512 .om
169 PA PAN 507 Panama City PA PAB 🇵🇦 es-PA,en Panama 591 .pa
170 PE PER 51 Lima PE PEN 🇵🇪 es-PE,qu,ay Peru 604 .pe
171 PF PYF 689 Papeete FR XPF 🇵🇫 fr-PF,ty French Polynesia 258 .pf
172 PG PNG 675 Port Moresby PG PGK 🇵🇬 en-PG,ho,meu,tpi Papua New Guinea 598 .pg
173 PH PHL 63 Manila PH PHP 🇵🇭 tl,en-PH,fil,ceb,ilo,hil,war,pam,bik,bcl,pag,mrw,tsg,mdh,cbk,krj,sgd,msb,akl,ibg,yka,mta,abx Philippines 608 .ph
174 PK PAK 92 Islamabad PK PKR 🇵🇰 ur-PK,en-PK,pa,sd,ps,brh Pakistan 586 .pk
175 PL POL 48 Warsaw PL PLN 🇵🇱 pl Poland 616 .pl
176 PM SPM 508 Saint-Pierre FR EUR 🇵🇲 fr-PM St. Pierre & Miquelon 666 .pm
177 PN PCN 870 Adamstown GB NZD 🇵🇳 en-PN Pitcairn 612 .pn
178 PR PRI 1 San Juan US USD 🇵🇷 en-PR,es-PR Puerto Rico 630 .pr
179 PT PRT 351 Lisbon PT EUR 🇵🇹 pt-PT,mwl Portugal 620 .pt
180 PW PLW 680 Melekeok PW USD 🇵🇼 pau,sov,en-PW,tox,ja,fil,zh Palau 585 .pw
181 PY PRY 595 Asuncion PY PYG 🇵🇾 es-PY,gn Paraguay 600 .py
182 QA QAT 974 Doha QA QAR 🇶🇦 ar-QA,es Qatar 634 .qa
183 RE REU 262 Saint-Denis FR EUR 🇷🇪 fr-RE Réunion 638 .re
184 RO ROU 40 Bucharest RO RON 🇷🇴 ro,hu,rom Romania 642 .ro
185 RS SRB 381 Belgrade RS RSD 🇷🇸 sr,hu,bs,rom Serbia 688 .rs
186 RU RUS 7 Moscow RU RUB 🇷🇺 ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,kbd,krc,av,sah,nog Russia 643 .ru
187 RW RWA 250 Kigali RW RWF 🇷🇼 rw,en-RW,fr-RW,sw Rwanda 646 .rw
188 SA SAU 966 Riyadh SA SAR 🇸🇦 ar-SA Saudi Arabia 682 .sa
189 SB SLB 677 Honiara SB SBD 🇸🇧 en-SB,tpi Solomon Islands 090 .sb
190 SC SYC 248 Victoria SC SCR 🇸🇨 en-SC,fr-SC Seychelles 690 .sc
191 SD SDN 249 Khartoum SD SDG 🇸🇩 ar-SD,en,fia Sudan 729 .sd
192 SE SWE 46 Stockholm SE SEK 🇸🇪 sv-SE,se,sma,fi-SE Sweden 752 .se
193 SG SGP 65 Singapore SG SGD 🇸🇬 cmn,en-SG,ms-SG,ta-SG,zh-SG Singapore 702 .sg
194 SH SHN 290 Jamestown GB SHP 🇸🇭 en-SH St. Helena 654 .sh
195 SI SVN 386 Ljubljana SI EUR 🇸🇮 sl,sh Slovenia 705 .si
196 SJ SJM 47 Longyearbyen NO NOK 🇸🇯 no,ru Svalbard & Jan Mayen 744 .sj
197 SK SVK 421 Bratislava SK EUR 🇸🇰 sk,hu Slovakia 703 .sk
198 SL SLE 232 Freetown SL SLE 🇸🇱 en-SL,men,tem Sierra Leone 694 .sl
199 SM SMR 378 San Marino SM EUR 🇸🇲 it-SM San Marino 674 .sm
200 SN SEN 221 Dakar SN XOF 🇸🇳 fr-SN,wo,fuc,mnk Senegal 686 .sn
201 SO SOM 252 Mogadishu SO SOS 🇸🇴 so-SO,ar-SO,it,en-SO Somalia 706 .so
202 SR SUR 597 Paramaribo SR SRD 🇸🇷 nl-SR,en,srn,hns,jv Suriname 740 .sr
203 SS SSD 211 Juba SS SSP 🇸🇸 en South Sudan 728 .ss
204 ST STP 239 Sao Tome ST STN 🇸🇹 pt-ST São Tomé & Príncipe 678 .st
205 SV SLV 503 San Salvador SV SVC 🇸🇻 es-SV El Salvador 222 .sv
206 SX SXM 1-721 Philipsburg NL XCG 🇸🇽 nl,en Sint Maarten 534 .sx
207 SY SYR 963 Damascus SY SYP 🇸🇾 ar-SY,ku,hy,arc,fr,en Syria 760 .sy
208 SZ SWZ 268 Mbabane SZ SZL 🇸🇿 en-SZ,ss-SZ Eswatini 748 .sz
209 TC TCA 1-649 Cockburn Town GB USD 🇹🇨 en-TC Turks & Caicos Islands 796 .tc
210 TD TCD 235 N'Djamena TD XAF 🇹🇩 fr-TD,ar-TD,sre Chad 148 .td
211 TF ATF 262 Port-aux-Francais FR EUR 🇹🇫 fr French Southern Territories 260 .tf
212 TG TGO 228 Lome TG XOF 🇹🇬 fr-TG,ee,hna,kbp,dag,ha Togo 768 .tg
213 TH THA 66 Bangkok TH THB 🇹🇭 th,en Thailand 764 .th
214 TJ TJK 992 Dushanbe TJ TJS 🇹🇯 tg,ru Tajikistan 762 .tj
215 TL TLS 670 Dili TL USD 🇹🇱 tet,pt-TL,id,en Timor-Leste 626 .tl
216 TM TKM 993 Ashgabat TM TMT 🇹🇲 tk,ru,uz Turkmenistan 795 .tm
217 TN TUN 216 Tunis TN TND 🇹🇳 ar-TN,fr Tunisia 788 .tn
218 TO TON 676 Nuku'alofa TO TOP 🇹🇴 to,en-TO Tonga 776 .to
219 TR TUR 90 Ankara TR TRY 🇹🇷 tr-TR,ku,diq,az,av Türkiye 792 .tr
220 TT TTO 1-868 Port of Spain TT TTD 🇹🇹 en-TT,hns,fr,es,zh Trinidad & Tobago 780 .tt
221 TV TUV 688 Funafuti TV AUD 🇹🇻 tvl,en,sm,gil Tuvalu 798 .tv
222 TW TWN 886 Taipei TW TWD 🇹🇼 zh-TW,zh,nan,hak Taiwan 158 .tw
223 TZ TZA 255 Dodoma TZ TZS 🇹🇿 sw-TZ,en,ar Tanzania 834 .tz
224 UA UKR 380 Kyiv UA UAH 🇺🇦 uk,ru-UA,rom,pl,hu Ukraine 804 .ua
225 UG UGA 256 Kampala UG UGX 🇺🇬 en-UG,lg,sw,ar Uganda 800 .ug
226 US USA 1 Washington US USD 🇺🇸 en-US,es-US,haw,fr US 840 .us
227 UY URY 598 Montevideo UY UYU 🇺🇾 es-UY Uruguay 858 .uy
228 UZ UZB 998 Tashkent UZ UZS 🇺🇿 uz,ru,tg Uzbekistan 860 .uz
229 VA VAT 39 Vatican City VA EUR 🇻🇦 la,it,fr Vatican City 336 .va
230 VC VCT 1-784 Kingstown VC XCD 🇻🇨 en-VC,fr St. Vincent & Grenadines 670 .vc
231 VE VEN 58 Caracas VE VES 🇻🇪 es-VE Venezuela 862 .ve
232 VG VGB 1-284 Road Town GB USD 🇻🇬 en-VG British Virgin Islands 092 .vg
233 VI VIR 1-340 Charlotte Amalie US USD 🇻🇮 en-VI U.S. Virgin Islands 850 .vi
234 VN VNM 84 Hanoi VN VND 🇻🇳 vi,en,fr,zh,km Vietnam 704 .vn
235 VU VUT 678 Port Vila VU VUV 🇻🇺 bi,en-VU,fr-VU Vanuatu 548 .vu
236 WF WLF 681 Mata Utu FR XPF 🇼🇫 wls,fud,fr-WF Wallis & Futuna 876 .wf
237 WS WSM 685 Apia WS WST 🇼🇸 sm,en-WS Samoa 882 .ws
238 YE YEM 967 Sanaa YE YER 🇾🇪 ar-YE Yemen 887 .ye
239 YT MYT 262 Mamoudzou FR EUR 🇾🇹 fr-YT Mayotte 175 .yt
240 ZA ZAF 27 Pretoria ZA ZAR 🇿🇦 zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr South Africa 710 .za
241 ZM ZMB 260 Lusaka ZM ZMW 🇿🇲 en-ZM,bem,loz,lun,lue,ny,toi Zambia 894 .zm
242 ZW ZWE 263 Harare ZW ZWG 🇿🇼 en-ZW,sn,nr,nd Zimbabwe 716 .zw
+1 -1
View File
@@ -1 +1 @@
["UTC", "Africa/Cairo", "Africa/Johannesburg", "America/Chicago", "America/Denver", "America/Los_Angeles", "America/Mexico_City", "America/New_York", "America/Sao_Paulo", "America/Toronto", "Asia/Dubai", "Asia/Hong_Kong", "Asia/Kolkata", "Asia/Shanghai", "Asia/Singapore", "Asia/Tokyo", "Australia/Sydney", "Europe/Amsterdam", "Europe/Berlin", "Europe/London", "Europe/Madrid", "Europe/Moscow", "Europe/Oslo", "Europe/Paris", "Europe/Stockholm", "Europe/Warsaw", "Pacific/Auckland"]
{ "format": "{zone}", "rows": "timezone.tsv", "key": "zone", "parent": "territory" }
+402
View File
@@ -0,0 +1,402 @@
offset territory zone
+00:00 CI Africa/Abidjan
+00:00 GH Africa/Accra
+03:00 ET Africa/Addis_Ababa
+01:00 DZ Africa/Algiers
+03:00 ER Africa/Asmara
+00:00 ML Africa/Bamako
+01:00 CF Africa/Bangui
+00:00 GM Africa/Banjul
+00:00 GW Africa/Bissau
+02:00 MW Africa/Blantyre
+01:00 CG Africa/Brazzaville
+02:00 BI Africa/Bujumbura
+02:00 EG Africa/Cairo
+00:00 MA Africa/Casablanca
+01:00 ES Africa/Ceuta
+00:00 GN Africa/Conakry
+00:00 SN Africa/Dakar
+03:00 TZ Africa/Dar_es_Salaam
+03:00 DJ Africa/Djibouti
+01:00 CM Africa/Douala
+00:00 EH Africa/El_Aaiun
+00:00 SL Africa/Freetown
+02:00 BW Africa/Gaborone
+02:00 ZW Africa/Harare
+02:00 ZA Africa/Johannesburg
+02:00 SS Africa/Juba
+03:00 UG Africa/Kampala
+02:00 SD Africa/Khartoum
+02:00 RW Africa/Kigali
+01:00 CD Africa/Kinshasa
+01:00 NG Africa/Lagos
+01:00 GA Africa/Libreville
+00:00 TG Africa/Lome
+01:00 AO Africa/Luanda
+02:00 CD Africa/Lubumbashi
+02:00 ZM Africa/Lusaka
+01:00 GQ Africa/Malabo
+02:00 MZ Africa/Maputo
+02:00 LS Africa/Maseru
+02:00 SZ Africa/Mbabane
+03:00 SO Africa/Mogadishu
+00:00 LR Africa/Monrovia
+03:00 KE Africa/Nairobi
+01:00 TD Africa/Ndjamena
+01:00 NE Africa/Niamey
+00:00 MR Africa/Nouakchott
+00:00 BF Africa/Ouagadougou
+01:00 BJ Africa/Porto-Novo
+00:00 ST Africa/Sao_Tome
+02:00 LY Africa/Tripoli
+01:00 TN Africa/Tunis
+02:00 NA Africa/Windhoek
-10:00 US America/Adak
-09:00 US America/Anchorage
-04:00 AI America/Anguilla
-04:00 AG America/Antigua
-03:00 BR America/Araguaina
-03:00 AR America/Argentina/Buenos_Aires
-03:00 AR America/Argentina/Catamarca
-03:00 AR America/Argentina/Cordoba
-03:00 AR America/Argentina/Jujuy
-03:00 AR America/Argentina/La_Rioja
-03:00 AR America/Argentina/Mendoza
-03:00 AR America/Argentina/Rio_Gallegos
-03:00 AR America/Argentina/Salta
-03:00 AR America/Argentina/San_Juan
-03:00 AR America/Argentina/San_Luis
-03:00 AR America/Argentina/Tucuman
-03:00 AR America/Argentina/Ushuaia
-04:00 AW America/Aruba
-03:00 PY America/Asuncion
-05:00 CA America/Atikokan
-03:00 BR America/Bahia
-06:00 MX America/Bahia_Banderas
-04:00 BB America/Barbados
-03:00 BR America/Belem
-06:00 BZ America/Belize
-04:00 CA America/Blanc-Sablon
-04:00 BR America/Boa_Vista
-05:00 CO America/Bogota
-07:00 US America/Boise
-07:00 CA America/Cambridge_Bay
-04:00 BR America/Campo_Grande
-05:00 MX America/Cancun
-04:00 VE America/Caracas
-03:00 GF America/Cayenne
-05:00 KY America/Cayman
-06:00 US America/Chicago
-06:00 MX America/Chihuahua
-07:00 MX America/Ciudad_Juarez
-06:00 CR America/Costa_Rica
-03:00 CL America/Coyhaique
-07:00 CA America/Creston
-04:00 BR America/Cuiaba
-04:00 CW America/Curacao
+00:00 GL America/Danmarkshavn
-07:00 CA America/Dawson
-07:00 CA America/Dawson_Creek
-07:00 US America/Denver
-05:00 US America/Detroit
-04:00 DM America/Dominica
-06:00 CA America/Edmonton
-05:00 BR America/Eirunepe
-06:00 SV America/El_Salvador
-07:00 CA America/Fort_Nelson
-03:00 BR America/Fortaleza
-04:00 CA America/Glace_Bay
-04:00 CA America/Goose_Bay
-05:00 TC America/Grand_Turk
-04:00 GD America/Grenada
-04:00 GP America/Guadeloupe
-06:00 GT America/Guatemala
-05:00 EC America/Guayaquil
-04:00 GY America/Guyana
-04:00 CA America/Halifax
-05:00 CU America/Havana
-07:00 MX America/Hermosillo
-05:00 US America/Indiana/Indianapolis
-06:00 US America/Indiana/Knox
-05:00 US America/Indiana/Marengo
-05:00 US America/Indiana/Petersburg
-06:00 US America/Indiana/Tell_City
-05:00 US America/Indiana/Vevay
-05:00 US America/Indiana/Vincennes
-05:00 US America/Indiana/Winamac
-06:00 CA America/Inuvik
-05:00 CA America/Iqaluit
-05:00 JM America/Jamaica
-09:00 US America/Juneau
-05:00 US America/Kentucky/Louisville
-05:00 US America/Kentucky/Monticello
-04:00 BO America/La_Paz
-05:00 PE America/Lima
-08:00 US America/Los_Angeles
-04:00 SX America/Lower_Princes
-03:00 BR America/Maceio
-06:00 NI America/Managua
-04:00 BR America/Manaus
-04:00 MF America/Marigot
-04:00 MQ America/Martinique
-06:00 MX America/Matamoros
-07:00 MX America/Mazatlan
-06:00 US America/Menominee
-06:00 MX America/Merida
-09:00 US America/Metlakatla
-06:00 MX America/Mexico_City
-03:00 PM America/Miquelon
-04:00 CA America/Moncton
-06:00 MX America/Monterrey
-03:00 UY America/Montevideo
-04:00 MS America/Montserrat
-05:00 BS America/Nassau
-05:00 US America/New_York
-09:00 US America/Nome
-02:00 BR America/Noronha
-06:00 US America/North_Dakota/Beulah
-06:00 US America/North_Dakota/Center
-06:00 US America/North_Dakota/New_Salem
-02:00 GL America/Nuuk
-06:00 MX America/Ojinaga
-05:00 PA America/Panama
-03:00 SR America/Paramaribo
-07:00 US America/Phoenix
-05:00 HT America/Port-au-Prince
-04:00 TT America/Port_of_Spain
-04:00 BR America/Porto_Velho
-04:00 PR America/Puerto_Rico
-03:00 CL America/Punta_Arenas
-06:00 CA America/Rankin_Inlet
-03:00 BR America/Recife
-06:00 CA America/Regina
-06:00 CA America/Resolute
-05:00 BR America/Rio_Branco
-03:00 BR America/Santarem
-04:00 CL America/Santiago
-04:00 DO America/Santo_Domingo
-03:00 BR America/Sao_Paulo
-02:00 GL America/Scoresbysund
-09:00 US America/Sitka
-04:00 BL America/St_Barthelemy
-03:30 CA America/St_Johns
-04:00 KN America/St_Kitts
-04:00 LC America/St_Lucia
-04:00 VI America/St_Thomas
-04:00 VC America/St_Vincent
-06:00 CA America/Swift_Current
-06:00 HN America/Tegucigalpa
-04:00 GL America/Thule
-08:00 MX America/Tijuana
-05:00 CA America/Toronto
-04:00 VG America/Tortola
-07:00 CA America/Vancouver
-07:00 CA America/Whitehorse
-06:00 CA America/Winnipeg
-09:00 US America/Yakutat
+10:00 AU Antarctica/Macquarie
+01:00 SJ Arctic/Longyearbyen
+03:00 YE Asia/Aden
+05:00 KZ Asia/Almaty
+03:00 JO Asia/Amman
+12:00 RU Asia/Anadyr
+05:00 KZ Asia/Aqtau
+05:00 KZ Asia/Aqtobe
+05:00 TM Asia/Ashgabat
+05:00 KZ Asia/Atyrau
+03:00 IQ Asia/Baghdad
+03:00 BH Asia/Bahrain
+04:00 AZ Asia/Baku
+07:00 TH Asia/Bangkok
+07:00 RU Asia/Barnaul
+02:00 LB Asia/Beirut
+06:00 KG Asia/Bishkek
+08:00 BN Asia/Brunei
+09:00 RU Asia/Chita
+05:30 LK Asia/Colombo
+03:00 SY Asia/Damascus
+06:00 BD Asia/Dhaka
+09:00 TL Asia/Dili
+04:00 AE Asia/Dubai
+05:00 TJ Asia/Dushanbe
+02:00 CY Asia/Famagusta
+07:00 VN Asia/Ho_Chi_Minh
+08:00 HK Asia/Hong_Kong
+07:00 MN Asia/Hovd
+08:00 RU Asia/Irkutsk
+07:00 ID Asia/Jakarta
+09:00 ID Asia/Jayapura
+02:00 IL Asia/Jerusalem
+04:30 AF Asia/Kabul
+12:00 RU Asia/Kamchatka
+05:00 PK Asia/Karachi
+05:45 NP Asia/Kathmandu
+09:00 RU Asia/Khandyga
+05:30 IN Asia/Kolkata
+07:00 RU Asia/Krasnoyarsk
+08:00 MY Asia/Kuala_Lumpur
+08:00 MY Asia/Kuching
+03:00 KW Asia/Kuwait
+08:00 MO Asia/Macau
+11:00 RU Asia/Magadan
+08:00 ID Asia/Makassar
+08:00 PH Asia/Manila
+04:00 OM Asia/Muscat
+02:00 CY Asia/Nicosia
+07:00 RU Asia/Novokuznetsk
+07:00 RU Asia/Novosibirsk
+06:00 RU Asia/Omsk
+05:00 KZ Asia/Oral
+07:00 KH Asia/Phnom_Penh
+07:00 ID Asia/Pontianak
+09:00 KP Asia/Pyongyang
+03:00 QA Asia/Qatar
+05:00 KZ Asia/Qostanay
+05:00 KZ Asia/Qyzylorda
+03:00 SA Asia/Riyadh
+11:00 RU Asia/Sakhalin
+05:00 UZ Asia/Samarkand
+09:00 KR Asia/Seoul
+08:00 CN Asia/Shanghai
+08:00 SG Asia/Singapore
+11:00 RU Asia/Srednekolymsk
+08:00 TW Asia/Taipei
+05:00 UZ Asia/Tashkent
+04:00 GE Asia/Tbilisi
+03:30 IR Asia/Tehran
+06:00 BT Asia/Thimphu
+09:00 JP Asia/Tokyo
+07:00 RU Asia/Tomsk
+08:00 MN Asia/Ulaanbaatar
+06:00 CN Asia/Urumqi
+10:00 RU Asia/Ust-Nera
+07:00 LA Asia/Vientiane
+10:00 RU Asia/Vladivostok
+09:00 RU Asia/Yakutsk
+06:30 MM Asia/Yangon
+05:00 RU Asia/Yekaterinburg
+04:00 AM Asia/Yerevan
-01:00 PT Atlantic/Azores
-04:00 BM Atlantic/Bermuda
+00:00 ES Atlantic/Canary
-01:00 CV Atlantic/Cape_Verde
+00:00 FO Atlantic/Faroe
+00:00 PT Atlantic/Madeira
+00:00 IS Atlantic/Reykjavik
+00:00 SH Atlantic/St_Helena
-03:00 FK Atlantic/Stanley
+09:30 AU Australia/Adelaide
+10:00 AU Australia/Brisbane
+09:30 AU Australia/Broken_Hill
+09:30 AU Australia/Darwin
+08:45 AU Australia/Eucla
+10:00 AU Australia/Hobart
+10:00 AU Australia/Lindeman
+10:30 AU Australia/Lord_Howe
+10:00 AU Australia/Melbourne
+08:00 AU Australia/Perth
+10:00 AU Australia/Sydney
+01:00 NL Europe/Amsterdam
+01:00 AD Europe/Andorra
+04:00 RU Europe/Astrakhan
+02:00 GR Europe/Athens
+01:00 RS Europe/Belgrade
+01:00 DE Europe/Berlin
+01:00 SK Europe/Bratislava
+01:00 BE Europe/Brussels
+02:00 RO Europe/Bucharest
+01:00 HU Europe/Budapest
+01:00 DE Europe/Busingen
+02:00 MD Europe/Chisinau
+01:00 DK Europe/Copenhagen
+01:00 IE Europe/Dublin
+01:00 GI Europe/Gibraltar
+00:00 GG Europe/Guernsey
+02:00 FI Europe/Helsinki
+00:00 IM Europe/Isle_of_Man
+03:00 TR Europe/Istanbul
+00:00 JE Europe/Jersey
+02:00 RU Europe/Kaliningrad
+03:00 RU Europe/Kirov
+02:00 UA Europe/Kyiv
+00:00 PT Europe/Lisbon
+01:00 SI Europe/Ljubljana
+00:00 GB Europe/London
+01:00 LU Europe/Luxembourg
+01:00 ES Europe/Madrid
+01:00 MT Europe/Malta
+02:00 AX Europe/Mariehamn
+03:00 BY Europe/Minsk
+01:00 MC Europe/Monaco
+03:00 RU Europe/Moscow
+01:00 NO Europe/Oslo
+01:00 FR Europe/Paris
+01:00 ME Europe/Podgorica
+01:00 CZ Europe/Prague
+02:00 LV Europe/Riga
+01:00 IT Europe/Rome
+04:00 RU Europe/Samara
+01:00 SM Europe/San_Marino
+01:00 BA Europe/Sarajevo
+04:00 RU Europe/Saratov
+03:00 UA Europe/Simferopol
+01:00 MK Europe/Skopje
+02:00 BG Europe/Sofia
+01:00 SE Europe/Stockholm
+02:00 EE Europe/Tallinn
+01:00 AL Europe/Tirane
+04:00 RU Europe/Ulyanovsk
+01:00 LI Europe/Vaduz
+01:00 VA Europe/Vatican
+01:00 AT Europe/Vienna
+02:00 LT Europe/Vilnius
+03:00 RU Europe/Volgograd
+01:00 PL Europe/Warsaw
+01:00 HR Europe/Zagreb
+01:00 CH Europe/Zurich
+03:00 MG Indian/Antananarivo
+06:00 IO Indian/Chagos
+07:00 CX Indian/Christmas
+06:30 CC Indian/Cocos
+03:00 KM Indian/Comoro
+05:00 TF Indian/Kerguelen
+04:00 SC Indian/Mahe
+05:00 MV Indian/Maldives
+04:00 MU Indian/Mauritius
+03:00 YT Indian/Mayotte
+04:00 RE Indian/Reunion
+13:00 WS Pacific/Apia
+12:00 NZ Pacific/Auckland
+11:00 PG Pacific/Bougainville
+12:45 NZ Pacific/Chatham
+10:00 FM Pacific/Chuuk
-06:00 CL Pacific/Easter
+11:00 VU Pacific/Efate
+12:00 FJ Pacific/Fiji
+12:00 TV Pacific/Funafuti
-06:00 EC Pacific/Galapagos
-09:00 PF Pacific/Gambier
+11:00 SB Pacific/Guadalcanal
+10:00 GU Pacific/Guam
-10:00 US Pacific/Honolulu
+13:00 KI Pacific/Kanton
+14:00 KI Pacific/Kiritimati
+11:00 FM Pacific/Kosrae
+12:00 MH Pacific/Kwajalein
+12:00 MH Pacific/Majuro
-09:30 PF Pacific/Marquesas
+12:00 NR Pacific/Nauru
-11:00 NU Pacific/Niue
+11:00 NF Pacific/Norfolk
+11:00 NC Pacific/Noumea
-11:00 AS Pacific/Pago_Pago
+09:00 PW Pacific/Palau
-08:00 PN Pacific/Pitcairn
+11:00 FM Pacific/Pohnpei
+10:00 PG Pacific/Port_Moresby
-10:00 CK Pacific/Rarotonga
+10:00 MP Pacific/Saipan
-10:00 PF Pacific/Tahiti
+12:00 KI Pacific/Tarawa
+13:00 TO Pacific/Tongatapu
+12:00 WF Pacific/Wallis
1 offset territory zone
2 +00:00 CI Africa/Abidjan
3 +00:00 GH Africa/Accra
4 +03:00 ET Africa/Addis_Ababa
5 +01:00 DZ Africa/Algiers
6 +03:00 ER Africa/Asmara
7 +00:00 ML Africa/Bamako
8 +01:00 CF Africa/Bangui
9 +00:00 GM Africa/Banjul
10 +00:00 GW Africa/Bissau
11 +02:00 MW Africa/Blantyre
12 +01:00 CG Africa/Brazzaville
13 +02:00 BI Africa/Bujumbura
14 +02:00 EG Africa/Cairo
15 +00:00 MA Africa/Casablanca
16 +01:00 ES Africa/Ceuta
17 +00:00 GN Africa/Conakry
18 +00:00 SN Africa/Dakar
19 +03:00 TZ Africa/Dar_es_Salaam
20 +03:00 DJ Africa/Djibouti
21 +01:00 CM Africa/Douala
22 +00:00 EH Africa/El_Aaiun
23 +00:00 SL Africa/Freetown
24 +02:00 BW Africa/Gaborone
25 +02:00 ZW Africa/Harare
26 +02:00 ZA Africa/Johannesburg
27 +02:00 SS Africa/Juba
28 +03:00 UG Africa/Kampala
29 +02:00 SD Africa/Khartoum
30 +02:00 RW Africa/Kigali
31 +01:00 CD Africa/Kinshasa
32 +01:00 NG Africa/Lagos
33 +01:00 GA Africa/Libreville
34 +00:00 TG Africa/Lome
35 +01:00 AO Africa/Luanda
36 +02:00 CD Africa/Lubumbashi
37 +02:00 ZM Africa/Lusaka
38 +01:00 GQ Africa/Malabo
39 +02:00 MZ Africa/Maputo
40 +02:00 LS Africa/Maseru
41 +02:00 SZ Africa/Mbabane
42 +03:00 SO Africa/Mogadishu
43 +00:00 LR Africa/Monrovia
44 +03:00 KE Africa/Nairobi
45 +01:00 TD Africa/Ndjamena
46 +01:00 NE Africa/Niamey
47 +00:00 MR Africa/Nouakchott
48 +00:00 BF Africa/Ouagadougou
49 +01:00 BJ Africa/Porto-Novo
50 +00:00 ST Africa/Sao_Tome
51 +02:00 LY Africa/Tripoli
52 +01:00 TN Africa/Tunis
53 +02:00 NA Africa/Windhoek
54 -10:00 US America/Adak
55 -09:00 US America/Anchorage
56 -04:00 AI America/Anguilla
57 -04:00 AG America/Antigua
58 -03:00 BR America/Araguaina
59 -03:00 AR America/Argentina/Buenos_Aires
60 -03:00 AR America/Argentina/Catamarca
61 -03:00 AR America/Argentina/Cordoba
62 -03:00 AR America/Argentina/Jujuy
63 -03:00 AR America/Argentina/La_Rioja
64 -03:00 AR America/Argentina/Mendoza
65 -03:00 AR America/Argentina/Rio_Gallegos
66 -03:00 AR America/Argentina/Salta
67 -03:00 AR America/Argentina/San_Juan
68 -03:00 AR America/Argentina/San_Luis
69 -03:00 AR America/Argentina/Tucuman
70 -03:00 AR America/Argentina/Ushuaia
71 -04:00 AW America/Aruba
72 -03:00 PY America/Asuncion
73 -05:00 CA America/Atikokan
74 -03:00 BR America/Bahia
75 -06:00 MX America/Bahia_Banderas
76 -04:00 BB America/Barbados
77 -03:00 BR America/Belem
78 -06:00 BZ America/Belize
79 -04:00 CA America/Blanc-Sablon
80 -04:00 BR America/Boa_Vista
81 -05:00 CO America/Bogota
82 -07:00 US America/Boise
83 -07:00 CA America/Cambridge_Bay
84 -04:00 BR America/Campo_Grande
85 -05:00 MX America/Cancun
86 -04:00 VE America/Caracas
87 -03:00 GF America/Cayenne
88 -05:00 KY America/Cayman
89 -06:00 US America/Chicago
90 -06:00 MX America/Chihuahua
91 -07:00 MX America/Ciudad_Juarez
92 -06:00 CR America/Costa_Rica
93 -03:00 CL America/Coyhaique
94 -07:00 CA America/Creston
95 -04:00 BR America/Cuiaba
96 -04:00 CW America/Curacao
97 +00:00 GL America/Danmarkshavn
98 -07:00 CA America/Dawson
99 -07:00 CA America/Dawson_Creek
100 -07:00 US America/Denver
101 -05:00 US America/Detroit
102 -04:00 DM America/Dominica
103 -06:00 CA America/Edmonton
104 -05:00 BR America/Eirunepe
105 -06:00 SV America/El_Salvador
106 -07:00 CA America/Fort_Nelson
107 -03:00 BR America/Fortaleza
108 -04:00 CA America/Glace_Bay
109 -04:00 CA America/Goose_Bay
110 -05:00 TC America/Grand_Turk
111 -04:00 GD America/Grenada
112 -04:00 GP America/Guadeloupe
113 -06:00 GT America/Guatemala
114 -05:00 EC America/Guayaquil
115 -04:00 GY America/Guyana
116 -04:00 CA America/Halifax
117 -05:00 CU America/Havana
118 -07:00 MX America/Hermosillo
119 -05:00 US America/Indiana/Indianapolis
120 -06:00 US America/Indiana/Knox
121 -05:00 US America/Indiana/Marengo
122 -05:00 US America/Indiana/Petersburg
123 -06:00 US America/Indiana/Tell_City
124 -05:00 US America/Indiana/Vevay
125 -05:00 US America/Indiana/Vincennes
126 -05:00 US America/Indiana/Winamac
127 -06:00 CA America/Inuvik
128 -05:00 CA America/Iqaluit
129 -05:00 JM America/Jamaica
130 -09:00 US America/Juneau
131 -05:00 US America/Kentucky/Louisville
132 -05:00 US America/Kentucky/Monticello
133 -04:00 BO America/La_Paz
134 -05:00 PE America/Lima
135 -08:00 US America/Los_Angeles
136 -04:00 SX America/Lower_Princes
137 -03:00 BR America/Maceio
138 -06:00 NI America/Managua
139 -04:00 BR America/Manaus
140 -04:00 MF America/Marigot
141 -04:00 MQ America/Martinique
142 -06:00 MX America/Matamoros
143 -07:00 MX America/Mazatlan
144 -06:00 US America/Menominee
145 -06:00 MX America/Merida
146 -09:00 US America/Metlakatla
147 -06:00 MX America/Mexico_City
148 -03:00 PM America/Miquelon
149 -04:00 CA America/Moncton
150 -06:00 MX America/Monterrey
151 -03:00 UY America/Montevideo
152 -04:00 MS America/Montserrat
153 -05:00 BS America/Nassau
154 -05:00 US America/New_York
155 -09:00 US America/Nome
156 -02:00 BR America/Noronha
157 -06:00 US America/North_Dakota/Beulah
158 -06:00 US America/North_Dakota/Center
159 -06:00 US America/North_Dakota/New_Salem
160 -02:00 GL America/Nuuk
161 -06:00 MX America/Ojinaga
162 -05:00 PA America/Panama
163 -03:00 SR America/Paramaribo
164 -07:00 US America/Phoenix
165 -05:00 HT America/Port-au-Prince
166 -04:00 TT America/Port_of_Spain
167 -04:00 BR America/Porto_Velho
168 -04:00 PR America/Puerto_Rico
169 -03:00 CL America/Punta_Arenas
170 -06:00 CA America/Rankin_Inlet
171 -03:00 BR America/Recife
172 -06:00 CA America/Regina
173 -06:00 CA America/Resolute
174 -05:00 BR America/Rio_Branco
175 -03:00 BR America/Santarem
176 -04:00 CL America/Santiago
177 -04:00 DO America/Santo_Domingo
178 -03:00 BR America/Sao_Paulo
179 -02:00 GL America/Scoresbysund
180 -09:00 US America/Sitka
181 -04:00 BL America/St_Barthelemy
182 -03:30 CA America/St_Johns
183 -04:00 KN America/St_Kitts
184 -04:00 LC America/St_Lucia
185 -04:00 VI America/St_Thomas
186 -04:00 VC America/St_Vincent
187 -06:00 CA America/Swift_Current
188 -06:00 HN America/Tegucigalpa
189 -04:00 GL America/Thule
190 -08:00 MX America/Tijuana
191 -05:00 CA America/Toronto
192 -04:00 VG America/Tortola
193 -07:00 CA America/Vancouver
194 -07:00 CA America/Whitehorse
195 -06:00 CA America/Winnipeg
196 -09:00 US America/Yakutat
197 +10:00 AU Antarctica/Macquarie
198 +01:00 SJ Arctic/Longyearbyen
199 +03:00 YE Asia/Aden
200 +05:00 KZ Asia/Almaty
201 +03:00 JO Asia/Amman
202 +12:00 RU Asia/Anadyr
203 +05:00 KZ Asia/Aqtau
204 +05:00 KZ Asia/Aqtobe
205 +05:00 TM Asia/Ashgabat
206 +05:00 KZ Asia/Atyrau
207 +03:00 IQ Asia/Baghdad
208 +03:00 BH Asia/Bahrain
209 +04:00 AZ Asia/Baku
210 +07:00 TH Asia/Bangkok
211 +07:00 RU Asia/Barnaul
212 +02:00 LB Asia/Beirut
213 +06:00 KG Asia/Bishkek
214 +08:00 BN Asia/Brunei
215 +09:00 RU Asia/Chita
216 +05:30 LK Asia/Colombo
217 +03:00 SY Asia/Damascus
218 +06:00 BD Asia/Dhaka
219 +09:00 TL Asia/Dili
220 +04:00 AE Asia/Dubai
221 +05:00 TJ Asia/Dushanbe
222 +02:00 CY Asia/Famagusta
223 +07:00 VN Asia/Ho_Chi_Minh
224 +08:00 HK Asia/Hong_Kong
225 +07:00 MN Asia/Hovd
226 +08:00 RU Asia/Irkutsk
227 +07:00 ID Asia/Jakarta
228 +09:00 ID Asia/Jayapura
229 +02:00 IL Asia/Jerusalem
230 +04:30 AF Asia/Kabul
231 +12:00 RU Asia/Kamchatka
232 +05:00 PK Asia/Karachi
233 +05:45 NP Asia/Kathmandu
234 +09:00 RU Asia/Khandyga
235 +05:30 IN Asia/Kolkata
236 +07:00 RU Asia/Krasnoyarsk
237 +08:00 MY Asia/Kuala_Lumpur
238 +08:00 MY Asia/Kuching
239 +03:00 KW Asia/Kuwait
240 +08:00 MO Asia/Macau
241 +11:00 RU Asia/Magadan
242 +08:00 ID Asia/Makassar
243 +08:00 PH Asia/Manila
244 +04:00 OM Asia/Muscat
245 +02:00 CY Asia/Nicosia
246 +07:00 RU Asia/Novokuznetsk
247 +07:00 RU Asia/Novosibirsk
248 +06:00 RU Asia/Omsk
249 +05:00 KZ Asia/Oral
250 +07:00 KH Asia/Phnom_Penh
251 +07:00 ID Asia/Pontianak
252 +09:00 KP Asia/Pyongyang
253 +03:00 QA Asia/Qatar
254 +05:00 KZ Asia/Qostanay
255 +05:00 KZ Asia/Qyzylorda
256 +03:00 SA Asia/Riyadh
257 +11:00 RU Asia/Sakhalin
258 +05:00 UZ Asia/Samarkand
259 +09:00 KR Asia/Seoul
260 +08:00 CN Asia/Shanghai
261 +08:00 SG Asia/Singapore
262 +11:00 RU Asia/Srednekolymsk
263 +08:00 TW Asia/Taipei
264 +05:00 UZ Asia/Tashkent
265 +04:00 GE Asia/Tbilisi
266 +03:30 IR Asia/Tehran
267 +06:00 BT Asia/Thimphu
268 +09:00 JP Asia/Tokyo
269 +07:00 RU Asia/Tomsk
270 +08:00 MN Asia/Ulaanbaatar
271 +06:00 CN Asia/Urumqi
272 +10:00 RU Asia/Ust-Nera
273 +07:00 LA Asia/Vientiane
274 +10:00 RU Asia/Vladivostok
275 +09:00 RU Asia/Yakutsk
276 +06:30 MM Asia/Yangon
277 +05:00 RU Asia/Yekaterinburg
278 +04:00 AM Asia/Yerevan
279 -01:00 PT Atlantic/Azores
280 -04:00 BM Atlantic/Bermuda
281 +00:00 ES Atlantic/Canary
282 -01:00 CV Atlantic/Cape_Verde
283 +00:00 FO Atlantic/Faroe
284 +00:00 PT Atlantic/Madeira
285 +00:00 IS Atlantic/Reykjavik
286 +00:00 SH Atlantic/St_Helena
287 -03:00 FK Atlantic/Stanley
288 +09:30 AU Australia/Adelaide
289 +10:00 AU Australia/Brisbane
290 +09:30 AU Australia/Broken_Hill
291 +09:30 AU Australia/Darwin
292 +08:45 AU Australia/Eucla
293 +10:00 AU Australia/Hobart
294 +10:00 AU Australia/Lindeman
295 +10:30 AU Australia/Lord_Howe
296 +10:00 AU Australia/Melbourne
297 +08:00 AU Australia/Perth
298 +10:00 AU Australia/Sydney
299 +01:00 NL Europe/Amsterdam
300 +01:00 AD Europe/Andorra
301 +04:00 RU Europe/Astrakhan
302 +02:00 GR Europe/Athens
303 +01:00 RS Europe/Belgrade
304 +01:00 DE Europe/Berlin
305 +01:00 SK Europe/Bratislava
306 +01:00 BE Europe/Brussels
307 +02:00 RO Europe/Bucharest
308 +01:00 HU Europe/Budapest
309 +01:00 DE Europe/Busingen
310 +02:00 MD Europe/Chisinau
311 +01:00 DK Europe/Copenhagen
312 +01:00 IE Europe/Dublin
313 +01:00 GI Europe/Gibraltar
314 +00:00 GG Europe/Guernsey
315 +02:00 FI Europe/Helsinki
316 +00:00 IM Europe/Isle_of_Man
317 +03:00 TR Europe/Istanbul
318 +00:00 JE Europe/Jersey
319 +02:00 RU Europe/Kaliningrad
320 +03:00 RU Europe/Kirov
321 +02:00 UA Europe/Kyiv
322 +00:00 PT Europe/Lisbon
323 +01:00 SI Europe/Ljubljana
324 +00:00 GB Europe/London
325 +01:00 LU Europe/Luxembourg
326 +01:00 ES Europe/Madrid
327 +01:00 MT Europe/Malta
328 +02:00 AX Europe/Mariehamn
329 +03:00 BY Europe/Minsk
330 +01:00 MC Europe/Monaco
331 +03:00 RU Europe/Moscow
332 +01:00 NO Europe/Oslo
333 +01:00 FR Europe/Paris
334 +01:00 ME Europe/Podgorica
335 +01:00 CZ Europe/Prague
336 +02:00 LV Europe/Riga
337 +01:00 IT Europe/Rome
338 +04:00 RU Europe/Samara
339 +01:00 SM Europe/San_Marino
340 +01:00 BA Europe/Sarajevo
341 +04:00 RU Europe/Saratov
342 +03:00 UA Europe/Simferopol
343 +01:00 MK Europe/Skopje
344 +02:00 BG Europe/Sofia
345 +01:00 SE Europe/Stockholm
346 +02:00 EE Europe/Tallinn
347 +01:00 AL Europe/Tirane
348 +04:00 RU Europe/Ulyanovsk
349 +01:00 LI Europe/Vaduz
350 +01:00 VA Europe/Vatican
351 +01:00 AT Europe/Vienna
352 +02:00 LT Europe/Vilnius
353 +03:00 RU Europe/Volgograd
354 +01:00 PL Europe/Warsaw
355 +01:00 HR Europe/Zagreb
356 +01:00 CH Europe/Zurich
357 +03:00 MG Indian/Antananarivo
358 +06:00 IO Indian/Chagos
359 +07:00 CX Indian/Christmas
360 +06:30 CC Indian/Cocos
361 +03:00 KM Indian/Comoro
362 +05:00 TF Indian/Kerguelen
363 +04:00 SC Indian/Mahe
364 +05:00 MV Indian/Maldives
365 +04:00 MU Indian/Mauritius
366 +03:00 YT Indian/Mayotte
367 +04:00 RE Indian/Reunion
368 +13:00 WS Pacific/Apia
369 +12:00 NZ Pacific/Auckland
370 +11:00 PG Pacific/Bougainville
371 +12:45 NZ Pacific/Chatham
372 +10:00 FM Pacific/Chuuk
373 -06:00 CL Pacific/Easter
374 +11:00 VU Pacific/Efate
375 +12:00 FJ Pacific/Fiji
376 +12:00 TV Pacific/Funafuti
377 -06:00 EC Pacific/Galapagos
378 -09:00 PF Pacific/Gambier
379 +11:00 SB Pacific/Guadalcanal
380 +10:00 GU Pacific/Guam
381 -10:00 US Pacific/Honolulu
382 +13:00 KI Pacific/Kanton
383 +14:00 KI Pacific/Kiritimati
384 +11:00 FM Pacific/Kosrae
385 +12:00 MH Pacific/Kwajalein
386 +12:00 MH Pacific/Majuro
387 -09:30 PF Pacific/Marquesas
388 +12:00 NR Pacific/Nauru
389 -11:00 NU Pacific/Niue
390 +11:00 NF Pacific/Norfolk
391 +11:00 NC Pacific/Noumea
392 -11:00 AS Pacific/Pago_Pago
393 +09:00 PW Pacific/Palau
394 -08:00 PN Pacific/Pitcairn
395 +11:00 FM Pacific/Pohnpei
396 +10:00 PG Pacific/Port_Moresby
397 -10:00 CK Pacific/Rarotonga
398 +10:00 MP Pacific/Saipan
399 -10:00 PF Pacific/Tahiti
400 +12:00 KI Pacific/Tarawa
401 +13:00 TO Pacific/Tongatapu
402 +12:00 WF Pacific/Wallis
+1 -1
View File
@@ -1 +1 @@
["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15", "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Mobile/15E148 Safari/604.1", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0"]
{ "format": "{ua}", "rows": "useragent.tsv" }
+97
View File
@@ -0,0 +1,97 @@
browser device os ua
Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36
Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Mobile Safari/537.36
Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Mobile Safari/537.36
Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36
Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Mobile Safari/537.36
Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36
Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Mobile Safari/537.36
Chrome mobile Android Mozilla/5.0 (Linux; Android 12; Pixel 6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36
Chrome desktop ChromeOS Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36
Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36
Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36
Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36
Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36
Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.132 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 YaBrowser/26.8.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36
Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36
Chrome mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 26_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/152.0.7977.64 Mobile/15E148 Safari/604.1
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36
Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36
Edge desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0
Edge desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36 Edg/152.0.0.0
Edge desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36 Edg/153.0.0.0
Edge desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36 Edg/152.0.0.0
Firefox desktop Linux Mozilla/5.0 (X11; Linux x86_64; rv:155.0) Gecko/20100101 Firefox/155.0
Firefox desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0
Firefox desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:154.0) Gecko/20100101 Firefox/154.0
Firefox desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0
Firefox desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:154.0) Gecko/20100101 Firefox/154.0
Firefox desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:155.0) Gecko/20100101 Firefox/155.0
Opera desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 OPR/135.0.0.0
Opera desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 OPR/134.0.0.0
Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1
Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.7.5 Mobile/15E148 Safari/604.1
Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.2 Mobile/15E148 Safari/604.1
Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.3 Mobile/15E148 Safari/604.1
Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Mobile/15E148 Safari/604.1
Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5.2 Mobile/15E148 Safari/604.1
Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Mobile/15E148 Safari/604.1
Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6.1 Mobile/15E148 Safari/604.1
Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/27.0 Mobile/15E148 Safari/604.1
Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15
Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15
Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.2 Safari/605.1.15
Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Safari/605.1.15
Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5.2 Safari/605.1.15
Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15
Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6.1 Safari/605.1.15
Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6.2 Safari/605.1.15
Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/27.0 Safari/605.1.15
Samsung Internet mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/30.0 Chrome/143.0.0.0 Mobile Safari/537.36
1 browser device os ua
2 Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36
3 Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Mobile Safari/537.36
4 Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Mobile Safari/537.36
5 Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36
6 Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Mobile Safari/537.36
7 Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36
8 Chrome mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Mobile Safari/537.36
9 Chrome mobile Android Mozilla/5.0 (Linux; Android 12; Pixel 6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36
10 Chrome desktop ChromeOS Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36
11 Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
12 Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36
13 Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36
14 Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36
15 Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36
16 Chrome desktop Linux Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36
17 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
18 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.132 Safari/537.36
19 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
20 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
21 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
22 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
23 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
24 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
25 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
26 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36
27 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
28 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
29 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36
30 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
31 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
32 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
33 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
34 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
35 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36
36 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36
37 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36
38 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36
39 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36
40 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36
41 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36
42 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 YaBrowser/26.8.0.0 Safari/537.36
43 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36
44 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36
45 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36
46 Chrome desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36
47 Chrome mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 26_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/152.0.7977.64 Mobile/15E148 Safari/604.1
48 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
49 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
50 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
51 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36
52 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
53 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
54 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
55 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36
56 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
57 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36
58 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36
59 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36
60 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36
61 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36
62 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36
63 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36
64 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36
65 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36
66 Chrome desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36
67 Edge desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0
68 Edge desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36 Edg/152.0.0.0
69 Edge desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36 Edg/153.0.0.0
70 Edge desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36 Edg/152.0.0.0
71 Firefox desktop Linux Mozilla/5.0 (X11; Linux x86_64; rv:155.0) Gecko/20100101 Firefox/155.0
72 Firefox desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0
73 Firefox desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:154.0) Gecko/20100101 Firefox/154.0
74 Firefox desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0
75 Firefox desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:154.0) Gecko/20100101 Firefox/154.0
76 Firefox desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:155.0) Gecko/20100101 Firefox/155.0
77 Opera desktop Windows Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 OPR/135.0.0.0
78 Opera desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 OPR/134.0.0.0
79 Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1
80 Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.7.5 Mobile/15E148 Safari/604.1
81 Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.2 Mobile/15E148 Safari/604.1
82 Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.3 Mobile/15E148 Safari/604.1
83 Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Mobile/15E148 Safari/604.1
84 Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5.2 Mobile/15E148 Safari/604.1
85 Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Mobile/15E148 Safari/604.1
86 Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6.1 Mobile/15E148 Safari/604.1
87 Safari mobile iOS Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/27.0 Mobile/15E148 Safari/604.1
88 Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15
89 Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15
90 Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.2 Safari/605.1.15
91 Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Safari/605.1.15
92 Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5.2 Safari/605.1.15
93 Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15
94 Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6.1 Safari/605.1.15
95 Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6.2 Safari/605.1.15
96 Safari desktop macOS Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/27.0 Safari/605.1.15
97 Samsung Internet mobile Android Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/30.0 Chrome/143.0.0.0 Mobile Safari/537.36
+23 -17
View File
@@ -95,23 +95,29 @@ func TestShippedMiscCategories(t *testing.T) {
func TestShippedMiscReferenceData(t *testing.T) {
f := newGenerator(t, "data/misc", WithSeed(1))
re := map[string]*regexp.Regexp{
"currency": regexp.MustCompile(`^[A-Z]{3}$`),
"currency.name": regexp.MustCompile(`\p{L}`),
"currency.symbol": regexp.MustCompile(`^\S+$`),
"country": regexp.MustCompile(`\p{L}`),
"country.alpha2": regexp.MustCompile(`^[A-Z]{2}$`),
"country.alpha3": regexp.MustCompile(`^[A-Z]{3}$`),
"language": regexp.MustCompile(`\p{L}`),
"language.code": regexp.MustCompile(`^[a-z]{2}$`),
"language.code3": regexp.MustCompile(`^[a-z]{3}$`),
"timezone": regexp.MustCompile(`^([A-Za-z_]+(/[A-Za-z_]+)+|UTC)$`),
"mimetype": regexp.MustCompile(`^[a-z]+/[a-z0-9.+-]+$`),
"mimetype.ext": regexp.MustCompile(`^\.[a-z0-9_-]+$`),
"httpstatus": regexp.MustCompile(`^[1-5]\d{2} \S.*$`),
"httpstatus.code": regexp.MustCompile(`^[1-5]\d{2}$`),
"useragent": regexp.MustCompile(`^Mozilla/5\.0 .+`),
"car": regexp.MustCompile(`^\S.* \S`),
"car.maker": regexp.MustCompile(`^\S`),
"currency": regexp.MustCompile(`^[A-Z]{3}$`),
"currency.name": regexp.MustCompile(`\p{L}`),
"currency.symbol": regexp.MustCompile(`^\S+$`),
"territory": regexp.MustCompile(`\p{L}`),
"territory.alpha2": regexp.MustCompile(`^[A-Z]{2}$`),
"territory.alpha3": regexp.MustCompile(`^[A-Z]{3}$`),
"territory.country": regexp.MustCompile(`^[A-Z]{2}$`),
"language": regexp.MustCompile(`\p{L}`),
"language.code": regexp.MustCompile(`^[a-z]{2}$`),
"language.code3": regexp.MustCompile(`^[a-z]{3}$`),
"timezone": regexp.MustCompile(`^[A-Za-z]+(/[A-Za-z0-9_+-]+)+$`),
"timezone.offset": regexp.MustCompile(`^[+-](0\d|1[0-4]):[0-5]\d$`),
"timezone.territory": regexp.MustCompile(`^[A-Z]{2}$`),
"mimetype": regexp.MustCompile(`^[a-z]+/[a-z0-9.+-]+$`),
"mimetype.ext": regexp.MustCompile(`^\.[a-z0-9_-]+$`),
"httpstatus": regexp.MustCompile(`^[1-5]\d{2} \S.*$`),
"httpstatus.code": regexp.MustCompile(`^[1-5]\d{2}$`),
"useragent": regexp.MustCompile(`^Mozilla/5\.0 .+`),
"useragent.browser": regexp.MustCompile(`^(Chrome|Edge|Firefox|Opera|Safari|Samsung Internet)$`),
"useragent.device": regexp.MustCompile(`^(desktop|mobile)$`),
"useragent.os": regexp.MustCompile(`^(Android|ChromeOS|Linux|Windows|iOS|macOS)$`),
"car": regexp.MustCompile(`^\S.* \S`),
"car.make": regexp.MustCompile(`^\S`),
}
for i := 0; i < 100; i++ {
for p, rx := range re {
+3 -3
View File
@@ -108,9 +108,9 @@ func TestFakeTemplateErrors(t *testing.T) {
{`name: {/no.such.path}`, "no entry"},
{`name: {..nope}`, "write {/nope}"},
{`{"format":"x"}`, "is a string"},
{`{/misc.country} {/misc.country.alpha2}`, "renders a level that {/misc.country.alpha2} reads a path into; name the fields you want instead, or draw them apart with a drawGroup"},
{`{"format":"{/misc.country.alpha2} {x}","x":"{/misc.country}"}`, "reads a path into"},
{`{"format":"{/misc.country.alpha2}","drawGroup":"g"}`, "nothing can reference"},
{`{/misc.territory} {/misc.territory.alpha2}`, "renders a level that {/misc.territory.alpha2} reads a path into; name the fields you want instead, or draw them apart with a drawGroup"},
{`{"format":"{/misc.territory.alpha2} {x}","x":"{/misc.territory}"}`, "reads a path into"},
{`{"format":"{/misc.territory.alpha2}","drawGroup":"g"}`, "nothing can reference"},
} {
_, err := f.FakeTemplate(c.input)
if err == nil || !strings.Contains(err.Error(), c.want) {
+1 -1
View File
@@ -154,7 +154,7 @@ func TestListedPathsAllRender(t *testing.T) {
}
}
}
for _, p := range []string{"misc.car.maker", "misc.country.alpha2", "misc.country.numeric", "misc.currency.symbol", "misc.httpstatus.code", "misc.mimetype.ext"} {
for _, p := range []string{"misc.car.make", "misc.territory.alpha2", "misc.territory.numeric", "misc.currency.symbol", "misc.httpstatus.code", "misc.mimetype.ext"} {
if !slices.Contains(paths, p) {
t.Errorf("List() omits %q, which the README advertises and Fake renders", p)
}
+80 -45
View File
@@ -644,17 +644,17 @@ func TestTableRowsAreAlternatives(t *testing.T) {
func TestTableOverridesByLayering(t *testing.T) {
mine := writeFiles(t, map[string]string{
"misc/country.json": `{"format":"{name}","rows":"country.tsv","key":"alpha2"}`,
"misc/country.tsv": "alpha2\tname\nXX\tNowhere\nYY\tElsewhere\n",
"misc/language.json": `{"format":"{name}","rows":"language.tsv","key":"code"}`,
"misc/language.tsv": "code\tname\nxx\tNowhere\nyy\tElsewhere\n",
})
f, err := New(WithDataPath(mine), WithSeed(1))
if err != nil {
t.Fatal(err)
}
if v := fake(t, f, "misc.country[XX]"); v != "Nowhere" {
t.Fatalf("misc.country[XX] = %q, want the layered table", v)
if v := fake(t, f, "misc.language[xx]"); v != "Nowhere" {
t.Fatalf("misc.language[xx] = %q, want the layered table", v)
}
if paths := f.List(); slices.Contains(paths, "misc.country.alpha3") {
if paths := f.List(); slices.Contains(paths, "misc.language.code3") {
t.Fatal("List() still offers the shipped table's columns under an overridden category")
}
}
@@ -662,50 +662,61 @@ func TestTableOverridesByLayering(t *testing.T) {
func TestShippedTables(t *testing.T) {
f := newGenerator(t, "data/misc", WithSeed(1))
for path, want := range map[string]string{
"country[SE]": "Sweden",
"country[Sweden].alpha3": "SWE",
"country[SE].numeric": "752",
"country[SE].tld": ".se",
"country[SE].calling-code": "46",
"country[SE].capital": "Stockholm",
"country[SE].currency": "SEK",
"country[SE].flag": "🇸🇪",
"currency[SEK].name": "Swedish Krona",
"currency[SEK].symbol": "kr",
"currency[SEK].numeric": "752",
"currency[SEK].decimals": "2",
"currency[Euro].code": "EUR",
"language[sv]": "Swedish",
"language[sv].code3": "swe",
"language[Swedish].code": "sv",
"language[nl]": "Dutch",
"httpstatus[200]": "200 OK",
"httpstatus[404]": "404 Not Found",
"httpstatus[404].reason": "Not Found",
"httpstatus[451].reason": "Unavailable For Legal Reasons",
"httpstatus[500].reason": "Internal Server Error",
"mimetype[application/json].ext": ".json",
"mimetype[text/markdown].ext": ".md",
"mimetype[.jpg]": "image/jpeg",
"mimetype[.mov]": "video/quicktime",
"mimetype[.mp3]": "audio/mpeg",
"mimetype[.mp4]": "video/mp4",
"mimetype[.ogg]": "audio/ogg",
"territory[SE]": "Sweden",
"territory[Sweden].alpha3": "SWE",
"territory[SE].numeric": "752",
"territory[SE].tld": ".se",
"territory[SE].calling-code": "46",
"territory[SE].capital": "Stockholm",
"territory[SE].currency": "SEK",
"territory[SE].flag": "🇸🇪",
"territory[SE].country": "SE",
"territory[GL]": "Greenland",
"territory[GL].country": "DK",
"territory[Åland Islands].country": "FI",
"currency[SEK].name": "Swedish Krona",
"currency[SEK].symbol": "kr",
"currency[SEK].numeric": "752",
"currency[SEK].decimals": "2",
"currency[Euro].code": "EUR",
"language[sv]": "Swedish",
"language[sv].code3": "swe",
"language[Swedish].code": "sv",
"language[nl]": "Dutch",
"httpstatus[200]": "200 OK",
"httpstatus[404]": "404 Not Found",
"httpstatus[404].reason": "Not Found",
"httpstatus[451].reason": "Unavailable For Legal Reasons",
"httpstatus[500].reason": "Internal Server Error",
"mimetype[application/json].ext": ".json",
"mimetype[text/markdown].ext": ".md",
"mimetype[.jpg]": "image/jpeg",
"mimetype[.mov]": "video/quicktime",
"mimetype[.mp3]": "audio/mpeg",
"mimetype[.mp4]": "video/mp4",
"mimetype[.ogg]": "audio/ogg",
"timezone[Europe/Stockholm]": "Europe/Stockholm",
"timezone[Europe/Stockholm].offset": "+01:00",
"timezone[Asia/Kathmandu].offset": "+05:45",
"timezone[America/New_York].offset": "-05:00",
"territory[SE].timezone": "Europe/Stockholm",
"territory[NP].timezone.offset": "+05:45",
} {
if got := fake(t, f, path); got != want {
t.Errorf("Fake(%q) = %q, want %q", path, got, want)
}
}
re := map[string]*regexp.Regexp{
"country.numeric": regexp.MustCompile(`^\d{3}$`),
"country.tld": regexp.MustCompile(`^\.[a-z]{2}$`),
"country.calling-code": regexp.MustCompile(`^\d{1,4}(-\d{3})?$`),
"country.capital": regexp.MustCompile(`\p{L}`),
"country.currency": regexp.MustCompile(`^[A-Z]{3}$`),
"country.flag": regexp.MustCompile(`^[\x{1F1E6}-\x{1F1FF}]{2}$`),
"country.languages": regexp.MustCompile(`^[a-z]{2,3}(-[A-Z]{2})?(,[a-z]{2,3}(-[A-Z]{2})?)*$`),
"currency.numeric": regexp.MustCompile(`^\d{3}$`),
"currency.decimals": regexp.MustCompile(`^[0-4]$`),
"territory.numeric": regexp.MustCompile(`^\d{3}$`),
"territory.tld": regexp.MustCompile(`^\.[a-z]{2}$`),
"territory.calling-code": regexp.MustCompile(`^\d{1,4}(-\d{3})?$`),
"territory.capital": regexp.MustCompile(`\p{L}`),
"territory.country": regexp.MustCompile(`^[A-Z]{2}$`),
"territory.currency": regexp.MustCompile(`^[A-Z]{3}$`),
"territory.flag": regexp.MustCompile(`^[\x{1F1E6}-\x{1F1FF}]{2}$`),
"territory.languages": regexp.MustCompile(`^[a-z]{2,3}(-[A-Z]{2})?(,[a-z]{2,3}(-[A-Z]{2})?)*$`),
"currency.numeric": regexp.MustCompile(`^\d{3}$`),
"currency.decimals": regexp.MustCompile(`^[0-4]$`),
}
for i := 0; i < 100; i++ {
for p, rx := range re {
@@ -716,10 +727,34 @@ func TestShippedTables(t *testing.T) {
}
count := map[string]bool{}
for i := 0; i < 5000; i++ {
count[fake(t, f, "country.alpha2")] = true
count[fake(t, f, "territory.alpha2")] = true
}
if len(count) < 200 {
t.Fatalf("country draws %d distinct rows in 5000, want the full register", len(count))
t.Fatalf("territory draws %d distinct rows in 5000, want the full register", len(count))
}
}
// TestEveryTerritoryNamesAShippedCountry proves what no parent can: the sovereign a
// territory names is a row of the same table, which a link would make a cycle.
func TestEveryTerritoryNamesAShippedCountry(t *testing.T) {
data, err := os.ReadFile(filepath.Join("data", "misc", "territory.tsv"))
if err != nil {
t.Fatal(err)
}
lines := strings.Split(strings.TrimSuffix(string(data), "\n"), "\n")
head := strings.Split(lines[0], "\t")
alpha2, country := slices.Index(head, "alpha2"), slices.Index(head, "country")
if alpha2 < 0 || country < 0 {
t.Fatalf("territory.tsv columns %v, want alpha2 and country", head)
}
keys := map[string]bool{}
for _, line := range lines[1:] {
keys[strings.Split(line, "\t")[alpha2]] = true
}
for i, line := range lines[1:] {
if c := strings.Split(line, "\t")[country]; !keys[c] {
t.Errorf("territory.tsv line %d: country %q is no alpha2 of the table", i+2, c)
}
}
}
+28 -16
View File
@@ -213,23 +213,12 @@ geo.US.street format "{name}" weight addresses parent locality
geo.US.street.addresses string
geo.US.street.locality string
geo.US.street.name string
misc.car
misc.car.maker
misc.car.model
misc.car format "{make} {model}"
misc.car.make string
misc.car.model string
misc.coordinate format "{lat}, {lon}"
misc.coordinate.lat string
misc.coordinate.lon string
misc.country format "{name}" key alpha2 name name
misc.country.alpha2 string
misc.country.alpha3 string
misc.country.calling-code string
misc.country.capital string
misc.country.currency string
misc.country.flag string
misc.country.languages string
misc.country.name string
misc.country.numeric string
misc.country.tld string
misc.creditcard
misc.creditcard.d
misc.currency format "{code}" key code name name
@@ -252,8 +241,31 @@ misc.mimetype format "{type}" key type name ext
misc.mimetype.ext string
misc.mimetype.type string
misc.objectid format "{hex(24)}"
misc.timezone
misc.useragent
misc.territory format "{name}" key alpha2 name name
misc.territory.alpha2 string
misc.territory.alpha3 string
misc.territory.calling-code string
misc.territory.capital string
misc.territory.country string
misc.territory.currency string
misc.territory.flag string
misc.territory.languages string
misc.territory.name string
misc.territory.numeric string
misc.territory.timezone
misc.territory.timezone.offset
misc.territory.timezone.territory
misc.territory.timezone.zone
misc.territory.tld string
misc.timezone format "{zone}" key zone parent territory
misc.timezone.offset string
misc.timezone.territory string
misc.timezone.zone string
misc.useragent format "{ua}"
misc.useragent.browser string
misc.useragent.device string
misc.useragent.os string
misc.useragent.ua string
misc.uuid format "{hex(8)}-{hex(4)}-4{hex(3)}-{variant}{hex(3)}-{hex(12)}"
misc.uuid.variant string
sv_SE.address format "{street} {street-number}\n{postal-code} {locality}" reads geo.SE.address
+12 -8
View File
@@ -22,7 +22,7 @@ value is composed; TSV says which values exist.
- In a data file, refuse a choice whose items are templates with one identical
field set, naming the TSV to write; an inline template is exempt, having no
file. A choice of strings stays a choice.
- Convert `misc.timezone`, `car` and `useragent` to tables.
- Convert `misc.timezone`, `car` and `useragent` to tables — done in step 4.
- Let a path select a row by key or by name, `geo.SE.municipality[0180]` and
`geo.SE.municipality[Stockholm]`, and descend to a linked table by name,
`geo.SE.region[Skåne län].street`; a key or a linked table name may not equal
@@ -32,7 +32,7 @@ value is composed; TSV says which values exist.
- Draw linked tables consistently within one render and draw group: the first
table drawn pins its ancestors, and a descendant is drawn inside them.
- Keep country data under `geo/<alpha2>/`; a locale's `address` reads its
country's tree by reference, and a locale's `country` table carries the
country's tree by reference, and a locale's `territory` table carries the
localised names keyed by alpha2.
- Ship full registers as packs, each a Go module with its own `embed.FS` and a
zip for `--data-path`; the default embed stays under ~1 MB per country and
@@ -109,7 +109,7 @@ ids. Shape: T = table, t = template, c = choice.
| `word` noun, verb, adjective, adverb; `sentence` | T+t | SALDO | CC BY 4.0 |
| `date`, `time`, month and weekday names, `holiday` | t+T | CLDR sv, lag 1989:253 | Unicode |
| `price` `1 234,56 kr`, `email` domains, `url` `.se`/`.nu` | t | curated | — |
| `country` localised names keyed by alpha2 | T | CLDR sv territory names | Unicode |
| `territory` localised names keyed by alpha2 | T | CLDR sv territory names | Unicode |
| `address` | t | `{/geo.SE…}` | — |
`en_US` (`research-sources-world.md`, part1–4)
@@ -131,13 +131,13 @@ ids. Shape: T = table, t = template, c = choice.
| Category | Shape | Source | Licence |
|---|---|---|---|
| `country` name, alpha2, alpha3, numeric, calling code, TLD, capital, currency, flag, languages | T | datasets/country-codes | PDDL |
| `territory` name, alpha2, alpha3, numeric, calling code, TLD, capital, country, currency, flag, languages | T | datasets/country-codes | PDDL |
| `currency` code, numeric, name, symbol, decimals | T | ISO 4217 list-one, CLDR symbols | free, Unicode |
| `language` ISO 639-1/2 | T | LoC | public domain |
| `timezone` zone, country, offset | T | tzdb zone1970.tab | public domain |
| `timezone` zone, territory, offset | T | tzdb zone.tab | public domain |
| `mimetype` type, extensions | T | IANA + mime-db | CC0, MIT |
| `httpstatus`, `httpmethod`, `port`, `tld`, `protocol`, `loglevel` | T/c | IANA | CC0 |
| `useragent` per browser | T | top-user-agents | MIT |
| `useragent` browser, device, os; selection per browser once `browser` is a table | T | top-user-agents | MIT |
| `ip` v4 documentation ranges, private, CIDR; `ipv6` `2001:db8::/32`; `mac` locally administered | t | RFC 5737, 1918, 9637 | facts |
| `creditcard` per network: IIN, length, CVV, expiry | T+t | network rules, `{luhn()}` | facts |
| `bic`, `iban` (exists), `isin`, `cusip` | t | structure rules | facts |
@@ -172,8 +172,12 @@ address, phone, national id, company and date names each.
spelling a tag takes rather than the reference spelling.
4. `misc` conversions and the new `misc` tables. Convert `timezone`, `car` and
`useragent`, and add the new `misc` tables.
5. The remaining locale categories: company, phone, finance, vehicle, words.
6. Records with building-block columns across the shipped set; shape re-pin.
5. Give the hand-written sets a source, as goal 10 asks: read `misc.emoji` from
the Unicode emoji-test.txt register, and `misc.car` from an international make
and model source, vPIC and Mobility Sweden being national and so `en_US.car`'s
and `sv_SE.car`'s.
6. The remaining locale categories: company, phone, finance, vehicle, words.
7. Records with building-block columns across the shipped set; shape re-pin.
### Release