Closed Bug 1776356 Opened 2 years ago Closed 2 years ago

Assertion failure: fallibleScope_ ([OOM] Cannot allocate a new chunk in an infallible scope.), at ds/LifoAlloc.cpp:169

Categories

(Core :: JavaScript Engine, defect, P1)

All
Linux
defect

Tracking

()

RESOLVED FIXED
104 Branch
Tracking Status
firefox-esr91 --- unaffected
firefox-esr102 --- wontfix
firefox101 --- wontfix
firefox102 --- wontfix
firefox103 --- wontfix
firefox104 --- fixed

People

(Reporter: gkw, Assigned: iain)

References

(Regression)

Details

(Keywords: testcase)

Attachments

(2 files)

Attached file testcase
var x = {
  "aa": "",
  "aai": "",
  "aak": "",
  "aau": "",
  "ab": "",
  "abi": "",
  "abq": "",
  "abr": "",
  "abt": "",
  "aby": "",
  "acd": "",
  "ace": "",
  "ach": "",
  "ada": "",
  "ade": "",
  "adj": "",
  "adp": "",
  "ady": "",
  "adz": "",
  "ae": "",
  "aeb": "",
  "aey": "",
  "af": "",
  "agc": "",
  "agd": "",
  "agg": "",
  "agm": "",
  "ago": "",
  "agq": "",
  "aha": "",
  "ahl": "",
  "aho": "",
  "ajg": "",
  "ak": "",
  "akk": "",
  "ala": "",
  "ali": "",
  "aln": "",
  "alt": "",
  "am": "",
  "amm": "",
  "amn": "",
  "amo": "",
  "amp": "",
  "an": "",
  "anc": "",
  "ank": "",
  "ann": "",
  "any": "",
  "aoj": "",
  "aom": "",
  "aoz": "",
  "apc": "",
  "apd": "",
  "ape": "",
  "apr": "",
  "aps": "",
  "apz": "",
  "ar": "",
  "arc": "",
  "arc-Nbat": "",
  "arc-Palm": "",
  "arh": "",
  "arn": "",
  "aro": "",
  "arq": "",
  "ars": "",
  "ary": "",
  "arz": "",
  "as": "",
  "asa": "",
  "ase": "",
  "asg": "",
  "aso": "",
  "ast": "",
  "ata": "",
  "atg": "",
  "atj": "",
  "auy": "",
  "av": "",
  "avl": "",
  "avn": "",
  "avt": "",
  "avu": "",
  "awa": "",
  "awb": "",
  "awo": "",
  "awx": "",
  "ay": "",
  "ayb": "",
  "az": "",
  "az-Arab": "",
  "az-IQ": "",
  "az-IR": "",
  "az-RU": "",
  "ba": "",
  "bal": "",
  "ban": "",
  "bap": "",
  "bar": "",
  "bas": "",
  "bav": "",
  "bax": "",
  "bba": "",
  "bbb": "",
  "bbc": "",
  "bbd": "",
  "bbj": "",
  "bbp": "",
  "bbr": "",
  "bcf": "",
  "bch": "",
  "bci": "",
  "bcm": "",
  "bcn": "",
  "bco": "",
  "bcq": "",
  "bcu": "",
  "bdd": "",
  "be": "",
  "bef": "",
  "beh": "",
  "bej": "",
  "bem": "",
  "bet": "",
  "bew": "",
  "bex": "",
  "bez": "",
  "bfd": "",
  "bfq": "",
  "bft": "",
  "bfy": "",
  "bg": "",
  "bgc": "",
  "bgn": "",
  "bgx": "",
  "bhb": "",
  "bhg": "",
  "bhi": "",
  "bhl": "",
  "bho": "",
  "bhy": "",
  "bi": "",
  "bib": "",
  "big": "",
  "bik": "",
  "bim": "",
  "bin": "",
  "bio": "",
  "biq": "",
  "bjh": "",
  "bji": "",
  "bjj": "",
  "bjn": "",
  "bjo": "",
  "bjr": "",
  "bjt": "",
  "bjz": "",
  "bkc": "",
  "bkm": "",
  "bkq": "",
  "bku": "",
  "bkv": "",
  "bla": "",
  "blg": "",
  "blt": "",
  "bm": "",
  "bmh": "",
  "bmk": "",
  "bmq": "",
  "bmu": "",
  "bn": "",
  "bng": "",
  "bnm": "",
  "bnp": "",
  "bo": "",
  "boj": "",
  "bom": "",
  "bon": "",
  "bpy": "",
  "bqc": "",
  "bqi": "",
  "bqp": "",
  "bqv": "",
  "br": "",
  "bra": "",
  "brh": "",
  "brx": "",
  "brz": "",
  "bs": "",
  "bsj": "",
  "bsq": "",
  "bss": "",
  "bst": "",
  "bto": "",
  "btt": "",
  "btv": "",
  "bua": "",
  "buc": "",
  "bud": "",
  "bug": "",
  "buk": "",
  "bum": "",
  "buo": "",
  "bus": "",
  "buu": "",
  "bvb": "",
  "bwd": "",
  "bwr": "",
  "bxh": "",
  "bye": "",
  "byn": "",
  "byr": "",
  "bys": "",
  "byv": "",
  "byx": "",
  "bza": "",
  "bze": "",
  "bzf": "",
  "bzh": "",
  "bzw": "",
  "ca": "",
  "cad": "",
  "can": "",
  "cbj": "",
  "cch": "",
  "ccp": "",
  "ce": "",
  "ceb": "",
  "cfa": "",
  "cgg": "",
  "ch": "",
  "chk": "",
  "chm": "",
  "cho": "",
  "chp": "",
  "chr": "",
  "cic": "",
  "cja": "",
  "cjm": "",
  "cjv": "",
  "ckb": "",
  "ckl": "",
  "cko": "",
  "cky": "",
  "cla": "",
  "clc": "",
  "cme": "",
  "cmg": "",
  "co": "",
  "cop": "",
  "cps": "",
  "cr": "",
  "crg": "",
  "crh": "",
  "und-Latn-UA": "",
  "und-Lepc": "",
  "und-Limb": "",
  "und-Lina": "",
  "und-Linb": "",
  "und-Lisu": "",
  "und-Lyci": "",
  "und-Lydi": "",
  "und-MA": "",
  "und-MC": "",
  "und-MD": "",
  "und-ME": "",
  "und-MF": "",
  "und-MG": "",
  "und-MK": "",
  "und-ML": "",
  "und-MM": "",
  "und-MN": "",
  "und-MO": "",
  "und-MQ": "",
  "und-MR": "",
  "und-MT": "",
  "und-MU": "",
  "und-MV": "",
  "und-MX": "",
  "und-MY": "",
  "und-MZ": "",
  "und-Mahj": "",
  "und-Maka": "",
  "und-Mand": "",
  "und-Mani": "",
  "und-Marc": "",
  "und-Medf": "",
  "und-Mend": "",
  "und-Merc": "",
  "und-Mero": "",
  "und-Mlym": "",
  "und-Modi": "",
  "und-Mong": "",
  "und-Mroo": "",
  "und-Mtei": "",
  "und-Mult": "",
  "und-Mymr": "",
  "und-Mymr-IN": "",
  "und-Mymr-TH": "",
  "und-NA": "",
  "und-NC": "",
  "und-NE": "",
  "und-NI": "",
  "und-NL": "",
  "und-NO": "",
  "und-NP": "",
  "und-Nagm": "",
  "und-Nand": "",
  "und-Narb": "",
  "und-Nbat": "",
  "und-Newa": "",
  "und-Nkoo": "",
  "und-Nshu": "",
  "und-OM": "",
  "und-Ogam": "",
  "und-Olck": "",
  "und-Orkh": "",
  "und-Orya": "",
  "und-Osge": "",
  "und-Osma": "",
  "und-Ougr": "",
  "und-PA": "",
  "und-PE": "",
  "und-PF": "",
  "und-PG": "",
  "und-PH": "",
  "und-PK": "",
  "und-PL": "",
  "und-PM": "",
  "und-PR": "",
  "und-PS": "",
  "und-PT": "",
  "und-PW": "",
  "und-PY": "",
  "und-Palm": "",
  "und-Pauc": "",
  "und-Perm": "",
  "und-Phag": "",
  "und-Phli": "",
  "und-Phlp": "",
  "und-Phnx": "",
  "und-Plrd": "",
  "und-Prti": "",
  "und-QA": "",
  "und-QO": "",
  "und-RE": "",
  "und-RO": "",
  "und-RS": "",
  "und-RU": "",
  "und-RW": "",
  "und-Rjng": "",
  "und-Rohg": "",
  "und-Runr": "",
  "und-SA": "",
  "und-SC": "",
  "und-SD": "",
  "und-SE": "",
  "und-SI": "",
  "und-SJ": "",
  "und-SK": "",
  "und-SM": "",
  "und-SN": "",
  "und-SO": "",
  "und-SR": "",
  "und-ST": "",
  "und-SV": "",
  "und-SY": "",
  "und-Samr": "",
  "und-Sarb": "",
  "und-Saur": "",
  "und-Sgnw": "",
  "und-Shaw": "",
  "und-Shrd": "",
  "und-Sidd": "",
  "und-Sind": "",
  "und-Sinh": "",
  "und-Sogd": "",
  "und-Sogo": "",
  "und-Sora": "",
  "und-Soyo": "",
  "und-Sund": "",
  "und-Sylo": "",
  "und-Syrc": "",
  "und-TD": "",
  "und-TF": "",
  "und-TG": "",
  "und-TH": "",
  "und-TJ": "",
  "und-TK": "",
  "und-TL": "",
  "und-TM": "",
  "und-TN": "",
  "und-TO": "",
  "und-TR": "",
  "und-TV": "",
  "und-TW": "",
  "und-TZ": "",
  "und-Tagb": "",
  "und-Takr": "",
  "und-Tale": "",
  "und-Talu": "",
  "und-Taml": "",
  "und-Tang": "",
  "und-Tavt": "",
  "und-Telu": "",
  "und-Tfng": "",
  "und-Tglg": "",
  "und-Thaa": "",
  "und-Thai": "",
  "und-Thai-CN": "",
  "und-Thai-KH": "",
  "und-Thai-LA": "",
  "und-Tibt": "",
  "und-Tirh": "",
  "und-Tnsa": "",
  "und-Toto": "",
  "und-UA": "",
  "und-UG": "",
  "und-UY": "",
  "und-UZ": "",
  "und-Ugar": "",
  "und-VA": "",
  "und-VE": "",
  "und-VN": "",
  "und-VU": "",
  "und-Vaii": "",
  "und-Vith": "",
  "und-WF": "",
  "und-WS": "",
  "und-Wara": "",
  "und-Wcho": "",
  "und-XK": "",
  "und-Xpeo": "",
  "und-Xsux": "",
  "und-YE": "",
  "und-YT": "",
  "und-Yezi": "",
  "und-Yiii": "",
  "und-ZW": "",
  "und-Zanb": "",
  "unr": "",
  "unr-Deva": "",
  "unr-NP": "",
  "unx": "",
  "uok": "",
  "ur": "",
  "uri": "",
  "urt": "",
  "urw": "",
  "usa": "",
  "uth": "",
  "utr": "",
  "uvh": "",
  "uvl": "",
  "uz": "",
  "uz-AF": "",
  "uz-Arab": "",
  "uz-CN": "",
  "vag": "",
  "vai": "",
  "van": "",
  "ve": "",
  "vec": "",
  "vep": "",
  "vi": "",
  "vic": "",
  "viv": "",
  "vls": "",
  "vmf": "",
  "vmw": "",
  "vo": "",
  "vot": "",
  "vro": "",
  "vun": "",
  "vut": "",
  "wa": "",
  "wae": "",
  "waj": "",
  "wal": "",
  "wan": "",
  "war": "",
  "wbp": "",
  "wbq": "",
  "wbr": "",
  "wci": "",
  "wer": "",
  "wgi": "",
  "whg": "",
  "wib": "",
  "wiu": "",
  "wiv": "",
  "wja": "",
  "wji": "",
  "wls": "",
  "wmo": "",
  "wnc": "",
  "wni": "",
  "wnu": "",
  "wo": "",
  "wob": "",
  "wos": "",
  "wrs": "",
  "wsg": "",
  "wsk": "",
  "wtm": "",
  "wuu": "",
  "wuv": "",
  "wwa": "",
  "xav": "",
  "xbi": "",
  "xco": "",
  "xcr": "",
  "xes": "",
  "xh": "",
  "xla": "",
  "xlc": "",
  "xld": "",
  "xmf": "",
  "xmn": "",
  "xmr": "",
  "xna": "",
  "xnr": "",
  "xog": "",
  "xon": "",
  "xpr": "",
  "xrb": "",
  "xsa": "",
  "xsi": "",
  "xsm": "",
  "xsr": "",
  "xwe": "",
  "yam": "",
  "yao": "",
  "yap": "",
  "yas": "",
  "yat": "",
  "yav": "",
  "yay": "",
  "yaz": "",
  "yba": "",
  "ybb": "",
  "yby": "",
  "yer": "",
  "ygr": "",
  "ygw": "",
  "yi": "",
  "yko": "",
  "yle": "",
  "ylg": "",
  "yll": "",
  "yml": "",
  "yo": "",
  "yon": "",
  "yrb": "",
  "yre": "",
  "yrl": "",
  "yss": "",
  "yua": "",
  "yue": "",
  "yue-CN": "",
  "yue-Hans": "",
  "yuj": "",
  "yut": "",
  "yuw": "",
  "za": "",
  "zag": "",
  "zdj": "",
  "zea": "",
  "zgh": "",
  "zh": "",
  "zh-AU": "",
  "zh-BN": "",
  "zh-Bopo": "",
  "zh-GB": "",
  "zh-GF": "",
  "zh-HK": "",
  "zh-Hanb": "",
  "zh-Hant": "",
  "zh-ID": "",
  "zh-MO": "",
  "zh-PA": "",
  "zh-PF": "",
  "zh-PH": "",
  "zh-SR": "",
  "zh-TH": "",
  "zh-TW": "",
  "zh-US": "",
  "zh-VN": "",
  "zhx": "",
  "zia": "",
  "zkt": "",
  "zlm": "",
  "zmi": "",
  "zne": "",
  "zu": "",
  "zza": "",
};
var y = {
  "aa-Latn-DJ": "aa-DJ",
  "aa-Latn-ET": "aa",
  "aai-Latn-ZZ": "aai",
  "aak-Latn-ZZ": "aak",
  "aau-Latn-ZZ": "aau",
  "ab-Cyrl-GE": "ab",
  "abi-Latn-ZZ": "abi",
  "abq-Cyrl-ZZ": "abq",
  "abr-Latn-GH": "abr",
  "abt-Latn-ZZ": "abt",
  "aby-Latn-ZZ": "aby",
  "acd-Latn-ZZ": "acd",
  "ace-Latn-ID": "ace",
  "ach-Latn-UG": "ach",
  "ada-Latn-GH": "ada",
  "ade-Latn-ZZ": "ade",
  "adj-Latn-ZZ": "adj",
  "ady-Cyrl-RU": "ady",
  "adz-Latn-ZZ": "adz",
  "ae-Avst-IR": "ae",
  "aeb-Arab-TN": "aeb",
  "aey-Latn-ZZ": "aey",
  "af-Latn-NA": "af-NA",
  "af-Latn-ZA": "af",
  "agc-Latn-ZZ": "agc",
  "agd-Latn-ZZ": "agd",
  "agg-Latn-ZZ": "agg",
  "agm-Latn-ZZ": "agm",
  "ago-Latn-ZZ": "ago",
  "agq-Latn-CM": "agq",
  "aha-Latn-ZZ": "aha",
  "ahl-Latn-ZZ": "ahl",
  "aho-Ahom-IN": "aho",
  "ajg-Latn-ZZ": "ajg",
  "ak-Latn-GH": "ak",
  "akk-Xsux-IQ": "akk",
  "bhl-Latn-ZZ": "bhl",
  "bho-Deva-IN": "bho",
  "bho-Deva-MU": "bho-MU",
  "bho-Kthi-IN": "bho-Kthi",
  "bhy-Latn-ZZ": "bhy",
  "bi-Latn-VU": "bi",
  "bib-Latn-ZZ": "bib",
  "big-Latn-ZZ": "big",
  "bik-Latn-PH": "bik",
  "bim-Latn-ZZ": "bim",
  "bin-Latn-NG": "bin",
  "bio-Latn-ZZ": "bio",
  "biq-Latn-ZZ": "biq",
  "bjh-Latn-ZZ": "bjh",
  "bji-Ethi-ZZ": "bji",
  "bjj-Deva-IN": "bjj",
  "bjn-Latn-ID": "bjn",
  "bjo-Latn-ZZ": "bjo",
  "bjr-Latn-ZZ": "bjr",
  "bjt-Latn-SN": "bjt",
  "bjz-Latn-ZZ": "bjz",
  "bkc-Latn-ZZ": "bkc",
  "bkm-Latn-CM": "bkm",
  "bkq-Latn-ZZ": "bkq",
  "bku-Buhd-PH": "bku-Buhd",
  "bku-Latn-PH": "bku",
  "bkv-Latn-ZZ": "bkv",
  "bla-Latn-CA": "bla",
  "blt-Tavt-VN": "blt",
  "bm-Latn-ML": "bm",
  "bmh-Latn-ZZ": "bmh",
  "bmk-Latn-ZZ": "bmk",
  "bmq-Latn-ML": "bmq",
  "bmu-Latn-ZZ": "bmu",
  "bn-Beng-BD": "bn",
  "bng-Latn-ZZ": "bng",
  "bnm-Latn-ZZ": "bnm",
  "bnp-Latn-ZZ": "bnp",
  "bo-Marc-CN": "bo-Marc",
  "bo-Tibt-CN": "bo",
  "boj-Latn-ZZ": "boj",
  "bom-Latn-ZZ": "bom",
  "bon-Latn-ZZ": "bon",
  "bpy-Beng-IN": "bpy",
  "bqc-Latn-ZZ": "bqc",
  "bqi-Arab-IR": "bqi",
  "bqp-Latn-ZZ": "bqp",
  "bqv-Latn-CI": "bqv",
  "br-Latn-FR": "br",
  "bra-Deva-IN": "bra",
  "brh-Arab-PK": "brh",
  "brx-Deva-IN": "brx",
  "brz-Latn-ZZ": "brz",
  "bs-Latn-BA": "bs",
  "bsj-Latn-ZZ": "bsj",
  "bsq-Bass-LR": "bsq",
  "bss-Latn-CM": "bss",
  "bst-Ethi-ZZ": "bst",
  "bto-Latn-PH": "bto",
  "btt-Latn-ZZ": "btt",
  "btv-Deva-PK": "btv",
  "bua-Cyrl-RU": "bua",
  "buc-Latn-YT": "buc",
  "bud-Latn-ZZ": "bud",
  "bug-Bugi-ID": "bug-Bugi",
  "bug-Latn-ID": "bug",
  "buk-Latn-ZZ": "buk",
  "bum-Latn-CM": "bum",
  "buo-Latn-ZZ": "buo",
  "bus-Latn-ZZ": "bus",
  "buu-Latn-ZZ": "buu",
  "bvb-Latn-GQ": "bvb",
  "bwd-Latn-ZZ": "bwd",
  "bwr-Latn-ZZ": "bwr",
  "bxh-Latn-ZZ": "bxh",
  "bye-Latn-ZZ": "bye",
  "byn-Ethi-ER": "byn",
  "byr-Latn-ZZ": "byr",
  "bys-Latn-ZZ": "bys",
  "byv-Latn-CM": "byv",
  "byx-Latn-ZZ": "byx",
  "bza-Latn-ZZ": "bza",
  "bze-Latn-ML": "bze",
  "bzf-Latn-ZZ": "bzf",
  "bzh-Latn-ZZ": "bzh",
  "bzw-Latn-ZZ": "bzw",
  "ca-Latn-AD": "ca-AD",
  "ca-Latn-ES": "ca",
  "cad-Latn-US": "cad",
  "can-Latn-ZZ": "can",
  "cbj-Latn-ZZ": "cbj",
  "cch-Latn-NG": "cch",
  "ccp-Cakm-BD": "ccp",
  "ce-Cyrl-RU": "ce",
  "ceb-Latn-PH": "ceb",
  "cfa-Latn-ZZ": "cfa",
  "cgg-Latn-UG": "cgg",
  "ch-Latn-GU": "ch",
  "chk-Latn-FM": "chk",
  "chm-Cyrl-RU": "chm",
  "cho-Latn-US": "cho",
  "chp-Latn-CA": "chp",
  "chr-Cher-US": "chr",
  "cic-Latn-US": "cic",
  "cja-Arab-KH": "cja",
  "cjm-Cham-VN": "cjm",
  "cjv-Latn-ZZ": "cjv",
  "ckb-Arab-IQ": "ckb",
  "ckl-Latn-ZZ": "ckl",
  "cko-Latn-ZZ": "cko",
  "cky-Latn-ZZ": "cky",
  "cla-Latn-ZZ": "cla",
  "clc-Latn-CA": "clc",
  "cme-Latn-ZZ": "cme",
  "cmg-Soyo-MN": "cmg",
  "cmg-Zanb-MN": "cmg-Zanb",
  "co-Latn-FR": "co",
  "cop-Copt-EG": "cop",
  "cps-Latn-PH": "cps",
  "cr-Cans-CA": "cr",
  "crg-Latn-CA": "crg",
  "crh-Cyrl-UA": "crh",
  "crk-Cans-CA": "crk",
  "crl-Cans-CA": "crl",
  "crs-Latn-SC": "crs",
  "cs-Latn-CZ": "cs",
  "csb-Latn-PL": "csb",
  "csw-Cans-CA": "csw",
  "ctd-Pauc-MM": "ctd",
  "cu-Cyrl-RU": "cu",
  "cu-Glag-BG": "cu-Glag",
  "cv-Cyrl-RU": "cv",
  "cy-Latn-GB": "cy",
  "da-Latn-DK": "da",
  "dad-Latn-ZZ": "dad",
  "dag-Latn-ZZ": "dag",
  "dah-Latn-ZZ": "dah",
  "dak-Latn-US": "dak",
  "dar-Cyrl-RU": "dar",
  "dav-Latn-KE": "dav",
  "dbd-Latn-ZZ": "dbd",
  "dbq-Latn-ZZ": "dbq",
  "dcc-Arab-IN": "dcc",
  "ddn-Latn-ZZ": "ddn",
  "de-Latn-AT": "de-AT",
  "de-Latn-CH": "de-CH",
  "de-Latn-DE": "de",
  "de-Latn-EZ": "de-EZ",
  "de-Latn-LI": "de-LI",
  "ded-Latn-ZZ": "ded",
  "den-Latn-CA": "den",
  "dga-Latn-ZZ": "dga",
  "dgh-Latn-ZZ": "dgh",
  "dgi-Latn-ZZ": "dgi",
  "dgl-Arab-ZZ": "dgl",
  "dgr-Latn-CA": "dgr",
  "dgz-Latn-ZZ": "dgz",
  "dia-Latn-ZZ": "dia",
  "dje-Latn-NE": "dje",
  "dmf-Medf-NG": "dmf",
  "dnj-Latn-CI": "dnj",
  "dob-Latn-ZZ": "dob",
  "doi-Deva-IN": "doi",
  "doi-Dogr-IN": "doi-Dogr",
  "doi-Takr-IN": "doi-Takr",
  "dop-Latn-ZZ": "dop",
  "dow-Latn-ZZ": "dow",
  "dri-Latn-ZZ": "dri",
  "drs-Ethi-ZZ": "drs",
  "dsb-Latn-DE": "dsb",
  "dtm-Latn-ML": "dtm",
  "dtp-Latn-MY": "dtp",
  "dts-Latn-ZZ": "dts",
  "dty-Deva-NP": "dty",
  "dua-Latn-CM": "dua",
  "duc-Latn-ZZ": "duc",
  "dug-Latn-ZZ": "dug",
  "dv-Diak-MV": "dv-Diak",
  "dv-Thaa-MV": "dv",
  "dva-Latn-ZZ": "dva",
  "dww-Latn-ZZ": "dww",
  "dyo-Latn-SN": "dyo",
  "dyu-Latn-BF": "dyu",
  "dz-Tibt-BT": "dz",
  "dzg-Latn-ZZ": "dzg",
  "ebu-Latn-KE": "ebu",
  "ee-Latn-GH": "ee",
  "efi-Latn-NG": "efi",
  "egl-Latn-IT": "egl",
  "egy-Egyp-EG": "egy",
  "eka-Latn-ZZ": "eka",
  "eky-Kali-MM": "eky",
  "el-Grek-CY": "el-CY",
  "el-Grek-GR": "el",
  "ema-Latn-ZZ": "ema",
  "emi-Latn-ZZ": "emi",
  "en-Latn-AU": "en-AU",
  "en-Latn-DG": "en-DG",
  "en-Latn-ET": "en-ET",
  "en-Latn-GB": "en-GB",
  "en-Latn-GU": "en-GU",
  "en-Latn-IE": "en-IE",
  "en-Latn-NG": "en-NG",
  "en-Latn-PG": "en-PG",
  "en-Latn-US": "en",
  "en-Latn-ZA": "en-ZA",
  "en-Shaw-GB": "en-Shaw",
  "enn-Latn-ZZ": "enn",
  "enq-Latn-ZZ": "enq",
  "eo-Latn-001": "eo",
  "eri-Latn-ZZ": "eri",
  "es-Latn-419": "es-419",
  "es-Latn-AR": "es-AR",
  "es-Latn-BO": "es-BO",
  "es-Latn-CL": "es-CL",
  "es-Latn-CO": "es-CO",
  "es-Latn-CR": "es-CR",
  "es-Latn-CU": "es-CU",
  "es-Latn-DO": "es-DO",
  "es-Latn-EA": "es-EA",
  "es-Latn-EC": "es-EC",
  "es-Latn-ES": "es",
  "es-Latn-GQ": "es-GQ",
  "es-Latn-GT": "es-GT",
  "es-Latn-HN": "es-HN",
  "es-Latn-IC": "es-IC",
  "es-Latn-MX": "es-MX",
  "es-Latn-NI": "es-NI",
  "es-Latn-PA": "es-PA",
  "es-Latn-PE": "es-PE",
  "es-Latn-PR": "es-PR",
  "es-Latn-SV": "es-SV",
  "es-Latn-UY": "es-UY",
  "es-Latn-VE": "es-VE",
  "esg-Gonm-IN": "esg",
  "esu-Latn-US": "esu",
  "et-Latn-EE": "et",
  "etr-Latn-ZZ": "etr",
  "ett-Ital-IT": "ett",
  "etu-Latn-ZZ": "etu",
  "etx-Latn-ZZ": "etx",
  "eu-Latn-ES": "eu",
  "ewo-Latn-CM": "ewo",
  "ext-Latn-ES": "ext",
  "eza-Latn-ZZ": "eza",
  "fa-Arab-AF": "fa-AF",
  "fa-Arab-IR": "fa",
  "fa-Arab-TJ": "fa-TJ",
  "faa-Latn-ZZ": "faa",
  "fab-Latn-ZZ": "fab",
  "fag-Latn-ZZ": "fag",
  "fai-Latn-ZZ": "fai",
  "fan-Latn-GQ": "fan",
  "ff-Adlm-GN": "ff-Adlm",
  "ff-Latn-SN": "ff",
  "ffi-Latn-ZZ": "ffi",
  "ffm-Latn-ML": "ffm",
  "fi-Latn-FI": "fi",
  "fia-Arab-SD": "fia",
  "fil-Latn-PH": "fil",
  "fil-Tglg-PH": "fil-Tglg",
  "fit-Latn-SE": "fit",
  "fj-Latn-FJ": "fj",
  "flr-Latn-ZZ": "flr",
  "fmp-Latn-ZZ": "fmp",
  "fo-Latn-FO": "fo",
  "fod-Latn-ZZ": "fod",
  "fon-Latn-BJ": "fon",
  "for-Latn-ZZ": "for",
  "fpe-Latn-ZZ": "fpe",
  "fqs-Latn-ZZ": "fqs",
  "fr-Brai-FR": "fr-Brai",
  "fr-Dupl-FR": "fr-Dupl",
  "fr-Latn-BF": "fr-BF",
  "fr-Latn-BJ": "fr-BJ",
  "fr-Latn-BL": "fr-BL",
  "fr-Latn-CF": "fr-CF",
  "fr-Latn-CG": "fr-CG",
  "fr-Latn-CI": "fr-CI",
  "fr-Latn-CM": "fr-CM",
  "fr-Latn-DZ": "fr-DZ",
  "fr-Latn-FR": "fr",
  "fr-Latn-GA": "fr-GA",
  "fr-Latn-GF": "fr-GF",
  "fr-Latn-GN": "fr-GN",
  "fr-Latn-GP": "fr-GP",
  "fr-Latn-KM": "fr-KM",
  "fr-Latn-LU": "fr-LU",
  "fr-Latn-MA": "fr-MA",
  "fr-Latn-MC": "fr-MC",
  "fr-Latn-MF": "fr-MF",
  "fr-Latn-MQ": "fr-MQ",
  "fr-Latn-MR": "fr-MR",
  "fr-Latn-NC": "fr-NC",
  "fr-Latn-PF": "fr-PF",
  "fr-Latn-PM": "fr-PM",
  "fr-Latn-RE": "fr-RE",
  "fr-Latn-SC": "fr-SC",
  "fr-Latn-SN": "fr-SN",
  "fr-Latn-SY": "fr-SY",
  "fr-Latn-TD": "fr-TD",
  "fr-Latn-TF": "fr-TF",
  "fr-Latn-TG": "fr-TG",
  "fr-Latn-TN": "fr-TN",
  "fr-Latn-WF": "fr-WF",
  "fr-Latn-YT": "fr-YT",
  "frc-Latn-US": "frc",
  "frp-Latn-FR": "frp",
  "frr-Latn-DE": "frr",
  "frs-Latn-DE": "frs",
  "fub-Arab-CM": "fub",
  "fud-Latn-WF": "fud",
  "fue-Latn-ZZ": "fue",
  "fuf-Latn-GN": "fuf",
  "fuh-Latn-ZZ": "fuh",
  "fuq-Latn-NE": "fuq",
  "fur-Latn-IT": "fur",
  "fuv-Latn-NG": "fuv",
  "fuy-Latn-ZZ": "fuy",
  "fvr-Latn-SD": "fvr",
  "fy-Latn-NL": "fy",
  "ga-Latn-IE": "ga",
  "gaa-Latn-GH": "gaa",
  "gaf-Latn-ZZ": "gaf",
  "gag-Latn-MD": "gag",
  "gah-Latn-ZZ": "gah",
  "gaj-Latn-ZZ": "gaj",
  "gam-Latn-ZZ": "gam",
  "gan-Hans-CN": "gan",
  "gaw-Latn-ZZ": "gaw",
  "gay-Latn-ID": "gay",
  "gba-Latn-ZZ": "gba",
  "gbf-Latn-ZZ": "gbf",
  "gbm-Deva-IN": "gbm",
  "gby-Latn-ZZ": "gby",
  "gbz-Arab-IR": "gbz",
  "gcr-Latn-GF": "gcr",
  "gd-Latn-GB": "gd",
  "gde-Latn-ZZ": "gde",
  "gdn-Latn-ZZ": "gdn",
  "gdr-Latn-ZZ": "gdr",
  "geb-Latn-ZZ": "geb",
  "gej-Latn-ZZ": "gej",
  "gel-Latn-ZZ": "gel",
  "gez-Ethi-ET": "gez",
  "gfk-Latn-ZZ": "gfk",
  "ghs-Latn-ZZ": "ghs",
  "gil-Latn-KI": "gil",
  "gim-Latn-ZZ": "gim",
  "gjk-Arab-PK": "gjk",
  "gjn-Latn-ZZ": "gjn",
  "gju-Arab-PK": "gju",
  "gkn-Latn-ZZ": "gkn",
  "gkp-Latn-ZZ": "gkp",
  "gl-Latn-ES": "gl",
  "glk-Arab-IR": "glk",
  "gmm-Latn-ZZ": "gmm",
  "gmv-Ethi-ZZ": "gmv",
  "gn-Latn-PY": "gn",
  "gnd-Latn-ZZ": "gnd",
  "gng-Latn-ZZ": "gng",
  "god-Latn-ZZ": "god",
  "gof-Ethi-ZZ": "gof",
  "goi-Latn-ZZ": "goi",
  "gom-Deva-IN": "gom",
  "gon-Telu-IN": "gon",
  "gor-Latn-ID": "gor",
  "gos-Latn-NL": "gos",
  "got-Goth-UA": "got",
  "grb-Latn-ZZ": "grb",
  "grc-Cprt-CY": "grc",
  "grc-Linb-GR": "grc-Linb",
  "grt-Beng-IN": "grt",
  "grw-Latn-ZZ": "grw",
  "gsw-Latn-CH": "gsw",
  "gu-Gujr-IN": "gu",
  "gub-Latn-BR": "gub",
  "guc-Latn-CO": "guc",
  "gud-Latn-ZZ": "gud",
  "gur-Latn-GH": "gur",
  "guw-Latn-ZZ": "guw",
  "gux-Latn-ZZ": "gux",
  "guz-Latn-KE": "guz",
  "gv-Latn-IM": "gv",
  "gvf-Latn-ZZ": "gvf",
  "gvr-Deva-NP": "gvr",
  "gvs-Latn-ZZ": "gvs",
  "gwc-Arab-ZZ": "gwc",
  "gwi-Latn-CA": "gwi",
  "gwt-Arab-ZZ": "gwt",
  "gyi-Latn-ZZ": "gyi",
  "ha-Arab-CM": "ha-CM",
  "ha-Arab-NG": "ha-Arab",
  "ha-Arab-SD": "ha-SD",
  "ha-Latn-NE": "ha-NE",
  "ha-Latn-NG": "ha",
  "hag-Latn-ZZ": "hag",
  "hak-Hans-CN": "hak",
  "ham-Latn-ZZ": "ham",
  "haw-Latn-US": "haw",
  "haz-Arab-AF": "haz",
  "hbb-Latn-ZZ": "hbb",
  "hdy-Ethi-ZZ": "hdy",
  "he-Hebr-IL": "he",
  "hhy-Latn-ZZ": "hhy",
  "hi-Deva-IN": "hi",
  "hi-Latn-IN": "hi-Latn",
  "hi-Mahj-IN": "hi-Mahj",
  "hia-Latn-ZZ": "hia",
  "hif-Deva-FJ": "hif-Deva",
  "hif-Latn-FJ": "hif",
  "hig-Latn-ZZ": "hig",
  "hih-Latn-ZZ": "hih",
  "hil-Latn-PH": "hil",
  "hla-Latn-ZZ": "hla",
  "hlu-Hluw-TR": "hlu",
  "hmd-Plrd-CN": "hmd",
  "hmt-Latn-ZZ": "hmt",
  "hnd-Arab-PK": "hnd",
  "hne-Deva-IN": "hne",
  "hnj-Hmng-LA": "hnj-Hmng-LA",
  "hnj-Hmnp-US": "hnj",
  "hnn-Hano-PH": "hnn-Hano",
  "hnn-Latn-PH": "hnn",
  "hno-Arab-PK": "hno",
  "ho-Latn-PG": "ho",
  "hoc-Deva-IN": "hoc",
  "hoc-Wara-IN": "hoc-Wara",
  "hoj-Deva-IN": "hoj",
  "hot-Latn-ZZ": "hot",
  "hr-Latn-HR": "hr",
  "hsb-Latn-DE": "hsb",
  "hsn-Hans-CN": "hsn",
  "ht-Latn-HT": "ht",
  "hu-Hung-HU": "hu-Hung",
  "hu-Latn-HU": "hu",
  "hui-Latn-ZZ": "hui",
  "hur-Latn-CA": "hur",
  "hy-Armn-AM": "hy",
  "hz-Latn-NA": "hz",
  "ia-Latn-001": "ia",
  "ian-Latn-ZZ": "ian",
  "iar-Latn-ZZ": "iar",
  "iba-Latn-MY": "iba",
  "ibb-Latn-NG": "ibb",
  "iby-Latn-ZZ": "iby",
  "ica-Latn-ZZ": "ica",
  "ich-Latn-ZZ": "ich",
  "id-Latn-ID": "id",
  "idd-Latn-ZZ": "idd",
  "idi-Latn-ZZ": "idi",
  "idu-Latn-ZZ": "idu",
  "ife-Latn-TG": "ife",
  "ig-Latn-NG": "ig",
  "igb-Latn-ZZ": "igb",
  "ige-Latn-ZZ": "ige",
  "ii-Yiii-CN": "ii",
  "ijj-Latn-ZZ": "ijj",
  "ik-Latn-US": "ik",
  "ikk-Latn-ZZ": "ikk",
  "ikw-Latn-ZZ": "ikw",
  "ikx-Latn-ZZ": "ikx",
  "ilo-Latn-PH": "ilo",
  "imo-Latn-ZZ": "imo",
  "inh-Cyrl-RU": "inh",
  "io-Latn-001": "io",
  "iou-Latn-ZZ": "iou",
  "iri-Latn-ZZ": "iri",
  "is-Latn-IS": "is",
  "it-Latn-IT": "it",
  "it-Latn-SM": "it-SM",
  "it-Latn-VA": "it-VA",
  "iu-Cans-CA": "iu",
  "iwm-Latn-ZZ": "iwm",
  "iws-Latn-ZZ": "iws",
  "izh-Latn-RU": "izh",
  "ja-Hira-JP": "ja-Hira",
  "ja-Jpan-JP": "ja",
  "ja-Kana-JP": "ja-Kana",
  "jab-Latn-ZZ": "jab",
  "jam-Latn-JM": "jam",
  "jbo-Latn-001": "jbo",
  "jbu-Latn-ZZ": "jbu",
  "jen-Latn-ZZ": "jen",
  "jgk-Latn-ZZ": "jgk",
  "jgo-Latn-CM": "jgo",
  "jib-Latn-ZZ": "jib",
  "jmc-Latn-TZ": "jmc",
  "jml-Deva-NP": "jml",
  "jra-Latn-ZZ": "jra",
  "jut-Latn-DK": "jut",
  "jv-Java-ID": "jv-Java",
  "jv-Latn-ID": "jv",
  "ka-Geor-GE": "ka",
  "kaa-Cyrl-UZ": "kaa",
  "kab-Latn-DZ": "kab",
  "kac-Latn-MM": "kac",
  "kad-Latn-ZZ": "kad",
  "kai-Latn-ZZ": "kai",
  "kaj-Latn-NG": "kaj",
  "kam-Latn-KE": "kam",
  "kao-Latn-ML": "kao",
  "kaw-Kawi-ID": "kaw",
  "kbd-Cyrl-RU": "kbd",
  "kbd-Cyrl-TR": "kbd-TR",
  "kbm-Latn-ZZ": "kbm",
  "kbp-Latn-ZZ": "kbp",
  "kbq-Latn-ZZ": "kbq",
  "kbx-Latn-ZZ": "kbx",
  "kby-Arab-NE": "kby",
  "kcg-Latn-NG": "kcg",
  "kck-Latn-ZW": "kck",
  "kcl-Latn-ZZ": "kcl",
  "kct-Latn-ZZ": "kct",
  "kde-Latn-TZ": "kde",
  "kdh-Latn-TG": "kdh",
  "kdl-Latn-ZZ": "kdl",
  "kdt-Thai-KH": "kdt-KH",
  "kdt-Thai-LA": "kdt-LA",
  "kdt-Thai-TH": "kdt",
  "kea-Latn-CV": "kea",
  "ken-Latn-CM": "ken",
  "kez-Latn-ZZ": "kez",
  "kfo-Latn-CI": "kfo",
  "kfr-Deva-IN": "kfr",
  "kfy-Deva-IN": "kfy",
  "kg-Latn-CD": "kg",
  "kge-Latn-ID": "kge",
  "kgf-Latn-ZZ": "kgf",
  "kgp-Latn-BR": "kgp",
  "kha-Latn-IN": "kha",
  "khb-Talu-CN": "khb",
  "khn-Deva-IN": "khn",
  "khq-Latn-ML": "khq",
  "khs-Latn-ZZ": "khs",
  "kht-Mymr-IN": "kht",
  "khw-Arab-PK": "khw",
  "khz-Latn-ZZ": "khz",
  "ki-Latn-KE": "ki",
  "kij-Latn-ZZ": "kij",
  "kiu-Latn-TR": "kiu",
  "kiw-Latn-ZZ": "kiw",
  "kj-Latn-NA": "kj",
  "kjd-Latn-ZZ": "kjd",
  "kjg-Laoo-LA": "kjg",
  "kjs-Latn-ZZ": "kjs",
  "kjy-Latn-ZZ": "kjy",
  "kk-Arab-AF": "kk-AF",
  "kk-Arab-CN": "kk-CN",
  "kk-Arab-IR": "kk-IR",
  "kk-Arab-MN": "kk-MN",
  "kk-Cyrl-KZ": "kk",
  "kkc-Latn-ZZ": "kkc",
  "kkj-Latn-CM": "kkj",
  "kl-Latn-GL": "kl",
  "kln-Latn-KE": "kln",
  "klq-Latn-ZZ": "klq",
  "klt-Latn-ZZ": "klt",
  "klx-Latn-ZZ": "klx",
  "km-Khmr-KH": "km",
  "kmb-Latn-AO": "kmb",
  "kmh-Latn-ZZ": "kmh",
  "kmo-Latn-ZZ": "kmo",
  "kms-Latn-ZZ": "kms",
  "kmu-Latn-ZZ": "kmu",
  "kmw-Latn-ZZ": "kmw",
  "kn-Knda-IN": "kn",
  "knf-Latn-GW": "knf",
  "knp-Latn-ZZ": "knp",
  "ko-Hang-KR": "ko-Hang",
  "ko-Jamo-KR": "ko-Jamo",
  "ko-Kore-KP": "ko-KP",
  "ko-Kore-KR": "ko",
  "koi-Cyrl-RU": "koi",
  "kok-Deva-IN": "kok",
  "kol-Latn-ZZ": "kol",
  "kos-Latn-FM": "kos",
  "koz-Latn-ZZ": "koz",
  "kpe-Latn-LR": "kpe",
  "kpf-Latn-ZZ": "kpf",
  "kpo-Latn-ZZ": "kpo",
  "kpr-Latn-ZZ": "kpr",
  "kpx-Latn-ZZ": "kpx",
  "kqb-Latn-ZZ": "kqb",
  "kqf-Latn-ZZ": "kqf",
  "kqs-Latn-ZZ": "kqs",
  "kqy-Ethi-ZZ": "kqy",
  "kr-Latn-ZZ": "kr",
  "krc-Cyrl-RU": "krc",
  "kri-Latn-SL": "kri",
  "krj-Latn-PH": "krj",
  "krl-Latn-RU": "krl",
  "krs-Latn-ZZ": "krs",
  "kru-Deva-IN": "kru",
  "ks-Arab-IN": "ks",
  "ksb-Latn-TZ": "ksb",
  "ksd-Latn-ZZ": "ksd",
  "ksf-Latn-CM": "ksf",
  "ksh-Latn-DE": "ksh",
  "ksj-Latn-ZZ": "ksj",
  "ksr-Latn-ZZ": "ksr",
  "ktb-Ethi-ZZ": "ktb",
  "ktm-Latn-ZZ": "ktm",
  "kto-Latn-ZZ": "kto",
  "ku-Arab-IQ": "ku-Arab",
  "ku-Arab-LB": "ku-LB",
  "ku-Latn-AM": "ku-AM",
  "ku-Latn-GE": "ku-GE",
  "ku-Latn-TR": "ku",
  "ku-Yezi-GE": "ku-Yezi",
  "kub-Latn-ZZ": "kub",
  "kud-Latn-ZZ": "kud",
  "kue-Latn-ZZ": "kue",
  "kuj-Latn-ZZ": "kuj",
  "kum-Cyrl-RU": "kum",
  "kun-Latn-ZZ": "kun",
  "kup-Latn-ZZ": "kup",
  "kus-Latn-ZZ": "kus",
  "kv-Cyrl-RU": "kv",
  "kv-Perm-RU": "kv-Perm",
  "kvg-Latn-ZZ": "kvg",
  "kvr-Latn-ID": "kvr",
  "kvx-Arab-PK": "kvx",
  "kw-Latn-GB": "kw",
  "kwj-Latn-ZZ": "kwj",
  "kwk-Latn-CA": "kwk",
  "kwo-Latn-ZZ": "kwo",
  "kxa-Latn-ZZ": "kxa",
  "kxc-Ethi-ZZ": "kxc",
  "kxm-Thai-TH": "kxm",
  "kxp-Arab-PK": "kxp",
  "kxw-Latn-ZZ": "kxw",
  "kxz-Latn-ZZ": "kxz",
  "ky-Arab-CN": "ky-CN",
  "ky-Cyrl-KG": "ky",
  "ky-Latn-TR": "ky-TR",
  "kye-Latn-ZZ": "kye",
  "kyx-Latn-ZZ": "kyx",
  "kzr-Latn-ZZ": "kzr",
  "la-Latn-VA": "la",
  "lab-Lina-GR": "lab",
  "lad-Hebr-IL": "lad",
  "lag-Latn-TZ": "lag",
  "lah-Arab-PK": "lah",
  "laj-Latn-UG": "laj",
  "las-Latn-ZZ": "las",
  "lb-Latn-LU": "lb",
  "lbe-Cyrl-RU": "lbe",
  "lbu-Latn-ZZ": "lbu",
  "lbw-Latn-ID": "lbw",
  "lcm-Latn-ZZ": "lcm",
  "lcp-Thai-CN": "lcp",
  "ldb-Latn-ZZ": "ldb",
  "led-Latn-ZZ": "led",
  "lee-Latn-ZZ": "lee",
  "lem-Latn-ZZ": "lem",
  "lep-Lepc-IN": "lep",
  "leq-Latn-ZZ": "leq",
  "leu-Latn-ZZ": "leu",
  "lez-Cyrl-RU": "lez",
  "lg-Latn-UG": "lg",
  "lgg-Latn-ZZ": "lgg",
  "li-Latn-NL": "li",
  "lia-Latn-ZZ": "lia",
  "lid-Latn-ZZ": "lid",
  "lif-Deva-NP": "lif",
  "lif-Limb-IN": "lif-Limb",
  "lig-Latn-ZZ": "lig",
  "lih-Latn-ZZ": "lih",
  "lij-Latn-IT": "lij",
  "lil-Latn-CA": "lil",
  "lis-Lisu-CN": "lis",
  "ljp-Latn-ID": "ljp",
  "lki-Arab-IR": "lki",
  "lkt-Latn-US": "lkt",
  "lle-Latn-ZZ": "lle",
  "lln-Latn-ZZ": "lln",
  "lmn-Telu-IN": "lmn",
  "lmo-Latn-IT": "lmo",
  "lmp-Latn-ZZ": "lmp",
  "ln-Latn-CD": "ln",
  "lns-Latn-ZZ": "lns",
  "lnu-Latn-ZZ": "lnu",
  "lo-Laoo-LA": "lo",
  "loj-Latn-ZZ": "loj",
  "lok-Latn-ZZ": "lok",
  "lol-Latn-CD": "lol",
  "lor-Latn-ZZ": "lor",
  "los-Latn-ZZ": "los",
  "loz-Latn-ZM": "loz",
  "lrc-Arab-IR": "lrc",
  "lt-Latn-LT": "lt",
  "ltg-Latn-LV": "ltg",
  "lu-Latn-CD": "lu",
  "lua-Latn-CD": "lua",
  "luo-Latn-KE": "luo",
  "luy-Latn-KE": "luy",
  "luz-Arab-IR": "luz",
  "lv-Latn-LV": "lv",
  "lwl-Thai-TH": "lwl",
  "lzh-Hans-CN": "lzh",
  "lzh-Phag-CN": "lzh-Phag",
  "lzz-Latn-TR": "lzz",
  "mad-Latn-ID": "mad",
  "maf-Latn-CM": "maf",
  "mag-Deva-IN": "mag",
  "mai-Deva-IN": "mai",
  "mai-Tirh-IN": "mai-Tirh",
  "mak-Latn-ID": "mak",
  "mak-Maka-ID": "mak-Maka",
  "man-Latn-GM": "man",
  "man-Nkoo-GN": "man-GN",
  "mas-Latn-KE": "mas",
  "maw-Latn-ZZ": "maw",
  "maz-Latn-MX": "maz",
  "mbh-Latn-ZZ": "mbh",
  "mbo-Latn-ZZ": "mbo",
  "mbq-Latn-ZZ": "mbq",
  "mbu-Latn-ZZ": "mbu",
  "mbw-Latn-ZZ": "mbw",
  "mci-Latn-ZZ": "mci",
  "mcp-Latn-ZZ": "mcp",
  "mcq-Latn-ZZ": "mcq",
  "mcr-Latn-ZZ": "mcr",
  "mcu-Latn-ZZ": "mcu",
  "mda-Latn-ZZ": "mda",
  "mde-Arab-ZZ": "mde",
  "mdf-Cyrl-RU": "mdf",
  "mdh-Latn-PH": "mdh",
  "mdj-Latn-ZZ": "mdj",
  "mdr-Latn-ID": "mdr",
  "mdx-Ethi-ZZ": "mdx",
  "med-Latn-ZZ": "med",
  "mee-Latn-ZZ": "mee",
  "mek-Latn-ZZ": "mek",
  "men-Latn-SL": "men",
  "men-Mend-SL": "men-Mend",
  "mer-Latn-KE": "mer",
  "met-Latn-ZZ": "met",
  "meu-Latn-ZZ": "meu",
  "mfa-Arab-TH": "mfa",
  "mfe-Latn-MU": "mfe",
  "mfn-Latn-ZZ": "mfn",
  "mfo-Latn-ZZ": "mfo",
  "mfq-Latn-ZZ": "mfq",
  "mg-Latn-MG": "mg",
  "mgh-Latn-MZ": "mgh",
  "mgl-Latn-ZZ": "mgl",
  "mgo-Latn-CM": "mgo",
  "mgp-Deva-NP": "mgp",
  "mgy-Latn-TZ": "mgy",
  "mh-Latn-MH": "mh",
  "mhi-Latn-ZZ": "mhi",
  "mhl-Latn-ZZ": "mhl",
  "mi-Latn-NZ": "mi",
  "mic-Latn-CA": "mic",
  "mif-Latn-ZZ": "mif",
  "min-Latn-ID": "min",
  "miw-Latn-ZZ": "miw",
  "mk-Cyrl-AL": "mk-AL",
  "mk-Cyrl-GR": "mk-GR",
  "mk-Cyrl-MK": "mk",
  "mki-Arab-ZZ": "mki",
  "mkl-Latn-ZZ": "mkl",
  "mkp-Latn-ZZ": "mkp",
  "mkw-Latn-ZZ": "mkw",
  "ml-Mlym-IN": "ml",
  "mle-Latn-ZZ": "mle",
  "mlp-Latn-ZZ": "mlp",
  "mls-Latn-SD": "mls",
  "mmo-Latn-ZZ": "mmo",
  "mmu-Latn-ZZ": "mmu",
  "mmx-Latn-ZZ": "mmx",
  "mn-Cyrl-MN": "mn",
  "mn-Mong-CN": "mn-CN",
  "mna-Latn-ZZ": "mna",
  "mnf-Latn-ZZ": "mnf",
  "mni-Beng-IN": "mni",
  "mni-Mtei-IN": "mni-Mtei",
  "mnw-Mymr-MM": "mnw",
  "mnw-Mymr-TH": "mnw-TH",
  "moa-Latn-ZZ": "moa",
  "moe-Latn-CA": "moe",
  "moh-Latn-CA": "moh",
  "mos-Latn-BF": "mos",
  "mox-Latn-ZZ": "mox",
  "mpp-Latn-ZZ": "mpp",
  "mps-Latn-ZZ": "mps",
  "mpt-Latn-ZZ": "mpt",
  "mpx-Latn-ZZ": "mpx",
  "mql-Latn-ZZ": "mql",
  "mr-Deva-IN": "mr",
  "mr-Modi-IN": "mr-Modi",
  "mrd-Deva-NP": "mrd",
  "mrj-Cyrl-RU": "mrj",
  "mro-Mroo-BD": "mro",
  "ms-Arab-CC": "ms-CC",
  "ms-Arab-ID": "ms-Arab-ID",
  "ms-Latn-BN": "ms-BN",
  "ms-Latn-MY": "ms",
  "mt-Latn-MT": "mt",
  "mtc-Latn-ZZ": "mtc",
  "mtf-Latn-ZZ": "mtf",
  "mti-Latn-ZZ": "mti",
  "mtr-Deva-IN": "mtr",
  "mua-Latn-CM": "mua",
  "mur-Latn-ZZ": "mur",
  "mus-Latn-US": "mus",
  "mva-Latn-ZZ": "mva",
  "mvn-Latn-ZZ": "mvn",
  "mvy-Arab-PK": "mvy",
  "mwk-Latn-ML": "mwk",
  "mwr-Deva-IN": "mwr",
  "mwv-Latn-ID": "mwv",
  "mww-Hmnp-US": "mww",
  "mxc-Latn-ZW": "mxc",
  "mxm-Latn-ZZ": "mxm",
  "my-Mymr-MM": "my",
  "myk-Latn-ZZ": "myk",
  "mym-Ethi-ZZ": "mym",
  "myv-Cyrl-RU": "myv",
  "myw-Latn-ZZ": "myw",
  "myx-Latn-UG": "myx",
  "myz-Mand-IR": "myz",
  "mzk-Latn-ZZ": "mzk",
  "mzm-Latn-ZZ": "mzm",
  "mzn-Arab-IR": "mzn",
  "mzp-Latn-ZZ": "mzp",
  "mzw-Latn-ZZ": "mzw",
  "mzz-Latn-ZZ": "mzz",
  "na-Latn-NR": "na",
  "nac-Latn-ZZ": "nac",
  "naf-Latn-ZZ": "naf",
  "nak-Latn-ZZ": "nak",
  "nan-Hans-CN": "nan",
  "nap-Latn-IT": "nap",
  "naq-Latn-NA": "naq",
  "nas-Latn-ZZ": "nas",
  "nb-Latn-NO": "nb",
  "nb-Latn-SJ": "nb-SJ",
  "nca-Latn-ZZ": "nca",
  "nce-Latn-ZZ": "nce",
  "ncf-Latn-ZZ": "ncf",
  "nch-Latn-MX": "nch",
  "nco-Latn-ZZ": "nco",
  "ncu-Latn-ZZ": "ncu",
  "nd-Latn-ZW": "nd",
  "ndc-Latn-MZ": "ndc",
  "nds-Latn-DE": "nds",
  "ne-Deva-BT": "ne-BT",
  "ne-Deva-NP": "ne",
  "neb-Latn-ZZ": "neb",
  "new-Deva-NP": "new",
  "new-Newa-NP": "new-Newa",
  "nex-Latn-ZZ": "nex",
  "nfr-Latn-ZZ": "nfr",
  "ng-Latn-NA": "ng",
  "nga-Latn-ZZ": "nga",
  "ngb-Latn-ZZ": "ngb",
  "ngl-Latn-MZ": "ngl",
  "nhb-Latn-ZZ": "nhb",
  "nhe-Latn-MX": "nhe",
  "nhw-Latn-MX": "nhw",
  "nif-Latn-ZZ": "nif",
  "nii-Latn-ZZ": "nii",
  "nij-Latn-ID": "nij",
  "nin-Latn-ZZ": "nin",
  "niu-Latn-NU": "niu",
  "niy-Latn-ZZ": "niy",
  "niz-Latn-ZZ": "niz",
  "njo-Latn-IN": "njo",
  "nkg-Latn-ZZ": "nkg",
  "nko-Latn-ZZ": "nko",
  "nl-Latn-AW": "nl-AW",
  "nl-Latn-BE": "nl-BE",
  "nl-Latn-NL": "nl",
  "nl-Latn-SR": "nl-SR",
  "nmg-Latn-CM": "nmg",
  "nmz-Latn-ZZ": "nmz",
  "nn-Latn-NO": "nn",
  "nnf-Latn-ZZ": "nnf",
  "nnh-Latn-CM": "nnh",
  "nnk-Latn-ZZ": "nnk",
  "nnm-Latn-ZZ": "nnm",
  "nnp-Wcho-IN": "nnp",
  "no-Latn-NO": "no",
  "nod-Lana-TH": "nod",
  "noe-Deva-IN": "noe",
  "non-Runr-SE": "non",
  "nop-Latn-ZZ": "nop",
  "nou-Latn-ZZ": "nou",
  "nqo-Nkoo-GN": "nqo",
  "nr-Latn-ZA": "nr",
  "nrb-Latn-ZZ": "nrb",
  "nsk-Cans-CA": "nsk",
  "nsn-Latn-ZZ": "nsn",
  "nso-Latn-ZA": "nso",
  "nss-Latn-ZZ": "nss",
  "nst-Tnsa-IN": "nst",
  "ntm-Latn-ZZ": "ntm",
  "ntr-Latn-ZZ": "ntr",
  "nui-Latn-ZZ": "nui",
  "nup-Latn-ZZ": "nup",
  "nus-Latn-SS": "nus",
  "nuv-Latn-ZZ": "nuv",
  "nux-Latn-ZZ": "nux",
  "nv-Latn-US": "nv",
  "nwb-Latn-ZZ": "nwb",
  "nxq-Latn-CN": "nxq",
  "nxr-Latn-ZZ": "nxr",
  "ny-Latn-MW": "ny",
  "nym-Latn-TZ": "nym",
  "nyn-Latn-UG": "nyn",
  "nzi-Latn-GH": "nzi",
  "oc-Latn-FR": "oc",
  "ogc-Latn-ZZ": "ogc",
  "oj-Cans-CA": "oj",
  "ojs-Cans-CA": "ojs",
  "oka-Latn-CA": "oka",
  "okr-Latn-ZZ": "okr",
  "okv-Latn-ZZ": "okv",
  "om-Latn-ET": "om",
  "ong-Latn-ZZ": "ong",
  "onn-Latn-ZZ": "onn",
  "ons-Latn-ZZ": "ons",
  "opm-Latn-ZZ": "opm",
  "or-Orya-IN": "or",
  "oro-Latn-ZZ": "oro",
  "oru-Arab-ZZ": "oru",
  "os-Cyrl-GE": "os",
  "osa-Osge-US": "osa",
  "ota-Arab-ZZ": "ota",
  "otk-Orkh-MN": "otk",
  "oui-Ougr-143": "oui",
  "ozm-Latn-ZZ": "ozm",
  "pa-Arab-PK": "pa-PK",
  "pa-Guru-IN": "pa",
  "pag-Latn-PH": "pag",
  "pal-Phli-IR": "pal",
  "pal-Phlp-CN": "pal-Phlp",
  "pam-Latn-PH": "pam",
  "pap-Latn-AW": "pap",
  "pap-Latn-BQ": "pap-BQ",
  "pap-Latn-CW": "pap-CW",
  "pau-Latn-PW": "pau",
  "pbi-Latn-ZZ": "pbi",
  "pcd-Latn-FR": "pcd",
  "pcm-Latn-NG": "pcm",
  "pdc-Latn-US": "pdc",
  "pdt-Latn-CA": "pdt",
  "ped-Latn-ZZ": "ped",
  "peo-Xpeo-IR": "peo",
  "pex-Latn-ZZ": "pex",
  "pfl-Latn-DE": "pfl",
  "phl-Arab-ZZ": "phl",
  "phn-Phnx-LB": "phn",
  "pil-Latn-ZZ": "pil",
  "pip-Latn-ZZ": "pip",
  "pka-Brah-IN": "pka",
  "pko-Latn-KE": "pko",
  "pl-Latn-PL": "pl",
  "pl-Latn-UA": "pl-UA",
  "pla-Latn-ZZ": "pla",
  "pms-Latn-IT": "pms",
  "png-Latn-ZZ": "png",
  "pnn-Latn-ZZ": "pnn",
  "pnt-Grek-GR": "pnt",
  "pon-Latn-FM": "pon",
  "ppo-Latn-ZZ": "ppo",
  "pqm-Latn-CA": "pqm",
  "pra-Khar-PK": "pra",
  "prd-Arab-IR": "prd",
  "prg-Latn-001": "prg",
  "ps-Arab-AF": "ps",
  "pss-Latn-ZZ": "pss",
  "pt-Latn-AO": "pt-AO",
  "pt-Latn-BR": "pt",
  "pt-Latn-CV": "pt-CV",
  "pt-Latn-GW": "pt-GW",
  "pt-Latn-MO": "pt-MO",
  "pt-Latn-MZ": "pt-MZ",
  "pt-Latn-PT": "pt-PT",
  "pt-Latn-ST": "pt-ST",
  "pt-Latn-TL": "pt-TL",
  "ptp-Latn-ZZ": "ptp",
  "puu-Latn-GA": "puu",
  "pwa-Latn-ZZ": "pwa",
  "qu-Latn-PE": "qu",
  "quc-Latn-GT": "quc",
  "qug-Latn-EC": "qug",
  "rai-Latn-ZZ": "rai",
  "raj-Deva-IN": "raj",
  "rao-Latn-ZZ": "rao",
  "rcf-Latn-RE": "rcf",
  "rej-Latn-ID": "rej",
  "rej-Rjng-ID": "rej-Rjng",
  "rel-Latn-ZZ": "rel",
  "res-Latn-ZZ": "res",
  "rgn-Latn-IT": "rgn",
  "rhg-Arab-MM": "rhg-Arab",
  "rhg-Rohg-MM": "rhg",
  "ria-Latn-IN": "ria",
  "rif-Latn-NL": "rif-NL",
  "rif-Tfng-MA": "rif",
  "rjs-Deva-NP": "rjs",
  "rkt-Beng-BD": "rkt",
  "rm-Latn-CH": "rm",
  "rmf-Latn-FI": "rmf",
  "rmo-Latn-CH": "rmo",
  "rmt-Arab-IR": "rmt",
  "rmu-Latn-SE": "rmu",
  "rn-Latn-BI": "rn",
  "rna-Latn-ZZ": "rna",
  "rng-Latn-MZ": "rng",
  "ro-Latn-MD": "ro-MD",
  "ro-Latn-RO": "ro",
  "rob-Latn-ID": "rob",
  "rof-Latn-TZ": "rof",
  "roo-Latn-ZZ": "roo",
  "rro-Latn-ZZ": "rro",
  "rtm-Latn-FJ": "rtm",
  "ru-Cyrl-KZ": "ru-KZ",
  "ru-Cyrl-RU": "ru",
  "rue-Cyrl-UA": "rue",
  "rug-Latn-SB": "rug",
  "rw-Latn-RW": "rw",
  "rwk-Latn-TZ": "rwk",
  "rwo-Latn-ZZ": "rwo",
  "ryu-Kana-JP": "ryu",
  "sa-Bhks-IN": "sa-Bhks",
  "sa-Deva-IN": "sa",
  "sa-Gran-IN": "sa-Gran",
  "sa-Nand-IN": "sa-Nand",
  "sa-Shrd-IN": "sa-Shrd",
  "sa-Sidd-IN": "sa-Sidd",
  "saf-Latn-GH": "saf",
  "sah-Cyrl-RU": "sah",
  "saq-Latn-KE": "saq",
  "sas-Latn-ID": "sas",
  "sat-Olck-IN": "sat",
  "sav-Latn-SN": "sav",
  "saz-Saur-IN": "saz",
  "sba-Latn-ZZ": "sba",
  "sbe-Latn-ZZ": "sbe",
  "sbp-Latn-TZ": "sbp",
  "sc-Latn-IT": "sc",
  "sck-Deva-IN": "sck",
  "scl-Arab-ZZ": "scl",
  "scn-Latn-IT": "scn",
  "sco-Latn-GB": "sco",
  "sd-Arab-PK": "sd",
  "sd-Deva-IN": "sd-IN",
  "sd-Khoj-IN": "sd-Khoj",
  "sd-Sind-IN": "sd-Sind",
  "sdc-Latn-IT": "sdc",
  "sdh-Arab-IR": "sdh",
  "se-Latn-NO": "se",
  "sef-Latn-CI": "sef",
  "seh-Latn-MZ": "seh",
  "sei-Latn-MX": "sei",
  "ses-Latn-ML": "ses",
  "sg-Latn-CF": "sg",
  "sga-Ogam-IE": "sga",
  "sgs-Latn-LT": "sgs",
  "sgw-Ethi-ZZ": "sgw",
  "sgz-Latn-ZZ": "sgz",
  "shi-Tfng-MA": "shi",
  "shk-Latn-ZZ": "shk",
  "shn-Mymr-MM": "shn",
  "shu-Arab-ZZ": "shu",
  "si-Sinh-LK": "si",
  "sid-Latn-ET": "sid",
  "sig-Latn-ZZ": "sig",
  "sil-Latn-ZZ": "sil",
  "sim-Latn-ZZ": "sim",
  "sjr-Latn-ZZ": "sjr",
  "sk-Latn-SK": "sk",
  "skc-Latn-ZZ": "skc",
  "skr-Arab-PK": "skr",
  "skr-Mult-PK": "skr-Mult",
  "sks-Latn-ZZ": "sks",
  "sl-Latn-SI": "sl",
  "sld-Latn-ZZ": "sld",
  "sli-Latn-PL": "sli",
  "sll-Latn-ZZ": "sll",
  "sly-Latn-ID": "sly",
  "sm-Latn-AS": "sm-AS",
  "sm-Latn-WS": "sm",
  "sma-Latn-SE": "sma",
  "smj-Latn-SE": "smj",
  "smn-Latn-FI": "smn",
  "smp-Samr-IL": "smp",
  "smq-Latn-ZZ": "smq",
  "sms-Latn-FI": "sms",
  "sn-Latn-ZW": "sn",
  "snc-Latn-ZZ": "snc",
  "snk-Latn-ML": "snk",
  "snp-Latn-ZZ": "snp",
  "snx-Latn-ZZ": "snx",
  "sny-Latn-ZZ": "sny",
  "so-Latn-SO": "so",
  "so-Osma-SO": "so-Osma",
  "sog-Sogd-UZ": "sog",
  "sog-Sogo-UZ": "sog-Sogo",
  "sok-Latn-ZZ": "sok",
  "soq-Latn-ZZ": "soq",
  "sou-Thai-TH": "sou",
  "soy-Latn-ZZ": "soy",
  "spd-Latn-ZZ": "spd",
  "spl-Latn-ZZ": "spl",
  "sps-Latn-ZZ": "sps",
  "sq-Elba-AL": "sq-Elba",
  "sq-Latn-AL": "sq",
  "sq-Latn-MK": "sq-MK",
  "sq-Latn-XK": "sq-XK",
  "sq-Vith-AL": "sq-Vith",
  "sr-Cyrl-BA": "sr-BA",
  "sr-Cyrl-RS": "sr",
  "sr-Cyrl-XK": "sr-XK",
  "sr-Latn-ME": "sr-ME",
  "sr-Latn-RO": "sr-RO",
  "sr-Latn-RU": "sr-RU",
  "sr-Latn-TR": "sr-TR",
  "srb-Sora-IN": "srb",
  "srn-Latn-SR": "srn",
  "srr-Latn-SN": "srr",
  "srx-Deva-IN": "srx",
  "ss-Latn-ZA": "ss",
  "ssd-Latn-ZZ": "ssd",
  "ssg-Latn-ZZ": "ssg",
  "ssy-Latn-ER": "ssy",
  "st-Latn-LS": "st-LS",
  "st-Latn-ZA": "st",
  "stk-Latn-ZZ": "stk",
  "stq-Latn-DE": "stq",
  "su-Latn-ID": "su",
  "su-Sund-ID": "su-Sund",
  "sua-Latn-ZZ": "sua",
  "sue-Latn-ZZ": "sue",
  "suk-Latn-TZ": "suk",
  "sur-Latn-ZZ": "sur",
  "sus-Latn-GN": "sus",
  "sv-Latn-AX": "sv-AX",
  "sv-Latn-SE": "sv",
  "sw-Latn-CD": "sw-CD",
  "sw-Latn-KE": "sw-KE",
  "sw-Latn-TZ": "sw",
  "sw-Latn-UG": "sw-UG",
  "swb-Arab-YT": "swb",
  "swg-Latn-DE": "swg",
  "swp-Latn-ZZ": "swp",
  "swv-Deva-IN": "swv",
  "sxn-Latn-ID": "sxn",
  "sxw-Latn-ZZ": "sxw",
  "syl-Beng-BD": "syl",
  "syl-Sylo-BD": "syl-Sylo",
  "syr-Syrc-IQ": "syr",
  "szl-Latn-PL": "szl",
  "ta-Taml-IN": "ta",
  "taj-Deva-NP": "taj",
  "tal-Latn-ZZ": "tal",
  "tan-Latn-ZZ": "tan",
  "taq-Latn-ZZ": "taq",
  "tbc-Latn-ZZ": "tbc",
  "tbd-Latn-ZZ": "tbd",
  "tbf-Latn-ZZ": "tbf",
  "tbg-Latn-ZZ": "tbg",
  "tbo-Latn-ZZ": "tbo",
  "tbw-Latn-PH": "tbw",
  "tbw-Tagb-PH": "tbw-Tagb",
  "tbz-Latn-ZZ": "tbz",
  "tci-Latn-ZZ": "tci",
  "tcy-Knda-IN": "tcy",
  "tdd-Tale-CN": "tdd",
  "tdg-Deva-NP": "tdg",
  "tdh-Deva-NP": "tdh",
  "te-Telu-IN": "te",
  "ted-Latn-ZZ": "ted",
  "tem-Latn-SL": "tem",
  "teo-Latn-UG": "teo",
  "tet-Latn-TL": "tet",
  "tfi-Latn-ZZ": "tfi",
  "tg-Arab-PK": "tg-PK",
  "tg-Cyrl-TJ": "tg",
  "tgc-Latn-ZZ": "tgc",
  "tgo-Latn-ZZ": "tgo",
  "tgu-Latn-ZZ": "tgu",
  "th-Thai-TH": "th",
  "thl-Deva-NP": "thl",
  "thq-Deva-NP": "thq",
  "thr-Deva-NP": "thr",
  "ti-Ethi-ER": "ti-ER",
  "ti-Ethi-ET": "ti",
  "tif-Latn-ZZ": "tif",
  "tig-Ethi-ER": "tig",
  "tik-Latn-ZZ": "tik",
  "tim-Latn-ZZ": "tim",
  "tio-Latn-ZZ": "tio",
  "tiv-Latn-NG": "tiv",
  "tk-Latn-AF": "tk-AF",
  "tk-Latn-IR": "tk-IR",
  "tk-Latn-TM": "tk",
  "tkl-Latn-TK": "tkl",
  "tkr-Latn-AZ": "tkr",
  "tkt-Deva-NP": "tkt",
  "tlf-Latn-ZZ": "tlf",
  "tlx-Latn-ZZ": "tlx",
  "tly-Latn-AZ": "tly",
  "tmh-Latn-NE": "tmh",
  "tmy-Latn-ZZ": "tmy",
  "tn-Latn-ZA": "tn",
  "tnh-Latn-ZZ": "tnh",
  "to-Latn-TO": "to",
  "tof-Latn-ZZ": "tof",
  "tog-Latn-MW": "tog",
  "toq-Latn-ZZ": "toq",
  "tpi-Latn-PG": "tpi",
  "tpm-Latn-ZZ": "tpm",
  "tpz-Latn-ZZ": "tpz",
  "tqo-Latn-ZZ": "tqo",
  "tr-Latn-CY": "tr-CY",
  "tr-Latn-TR": "tr",
  "tru-Latn-TR": "tru",
  "trv-Latn-TW": "trv",
  "trw-Arab-PK": "trw",
  "ts-Latn-ZA": "ts",
  "tsd-Grek-GR": "tsd",
  "tsg-Latn-PH": "tsg",
  "tsj-Tibt-BT": "tsj",
  "tsw-Latn-ZZ": "tsw",
  "tt-Cyrl-RU": "tt",
  "ttd-Latn-ZZ": "ttd",
  "tte-Latn-ZZ": "tte",
  "ttj-Latn-UG": "ttj",
  "ttr-Latn-ZZ": "ttr",
  "tts-Thai-TH": "tts",
  "ttt-Latn-AZ": "ttt",
  "tuh-Latn-ZZ": "tuh",
  "tul-Latn-ZZ": "tul",
  "tum-Latn-MW": "tum",
  "tuq-Latn-ZZ": "tuq",
  "tvd-Latn-ZZ": "tvd",
  "tvl-Latn-TV": "tvl",
  "tvu-Latn-ZZ": "tvu",
  "twh-Latn-ZZ": "twh",
  "twq-Latn-NE": "twq",
  "txg-Tang-CN": "txg",
  "txo-Toto-IN": "txo",
  "ty-Latn-PF": "ty",
  "tya-Latn-ZZ": "tya",
  "tyv-Cyrl-RU": "tyv",
  "tzm-Latn-MA": "tzm",
  "ubu-Latn-ZZ": "ubu",
  "udi-Aghb-RU": "udi",
  "udm-Cyrl-RU": "udm",
  "ug-Arab-CN": "ug",
  "ug-Cyrl-KZ": "ug-KZ",
  "ug-Cyrl-MN": "ug-MN",
  "uga-Ugar-SY": "uga",
  "uk-Cyrl-MD": "uk-MD",
  "uk-Cyrl-SK": "uk-SK",
  "uk-Cyrl-UA": "uk",
  "uli-Latn-FM": "uli",
  "umb-Latn-AO": "umb",
  "und-Cpmn-CY": "und-Cpmn",
  "und-Latn-AQ": "und-AQ",
  "und-Latn-BV": "und-BV",
  "und-Latn-CP": "und-CP",
  "und-Latn-GS": "und-GS",
  "und-Latn-HM": "und-HM",
  "unr-Beng-IN": "unr",
  "unr-Deva-NP": "unr-NP",
  "unr-Nagm-IN": "unr-Nagm",
  "unx-Beng-IN": "unx",
  "ur-Arab-GB": "ur-GB",
  "ur-Arab-IN": "ur-IN",
  "ur-Arab-MU": "ur-MU",
  "ur-Arab-PK": "ur",
  "uri-Latn-ZZ": "uri",
  "urt-Latn-ZZ": "urt",
  "urw-Latn-ZZ": "urw",
  "usa-Latn-ZZ": "usa",
  "uth-Latn-ZZ": "uth",
  "utr-Latn-ZZ": "utr",
  "uvh-Latn-ZZ": "uvh",
  "uvl-Latn-ZZ": "uvl",
  "uz-Arab-AF": "uz-AF",
  "uz-Cyrl-CN": "uz-CN",
  "uz-Latn-UZ": "uz",
  "vag-Latn-ZZ": "vag",
  "vai-Vaii-LR": "vai",
  "van-Latn-ZZ": "van",
  "ve-Latn-ZA": "ve",
  "vec-Latn-IT": "vec",
  "vep-Latn-RU": "vep",
  "vi-Latn-VN": "vi",
  "vic-Latn-SX": "vic",
  "viv-Latn-ZZ": "viv",
  "vls-Latn-BE": "vls",
  "vmf-Latn-DE": "vmf",
  "vmw-Latn-MZ": "vmw",
  "vo-Latn-001": "vo",
  "vot-Latn-RU": "vot",
  "vro-Latn-EE": "vro",
  "vun-Latn-TZ": "vun",
  "vut-Latn-ZZ": "vut",
  "wa-Latn-BE": "wa",
  "wae-Latn-CH": "wae",
  "waj-Latn-ZZ": "waj",
  "wal-Ethi-ET": "wal",
  "wan-Latn-ZZ": "wan",
  "war-Latn-PH": "war",
  "wbp-Latn-AU": "wbp",
  "wbq-Telu-IN": "wbq",
  "wbr-Deva-IN": "wbr",
  "wci-Latn-ZZ": "wci",
  "wer-Latn-ZZ": "wer",
  "wgi-Latn-ZZ": "wgi",
  "whg-Latn-ZZ": "whg",
  "wib-Latn-ZZ": "wib",
  "wiu-Latn-ZZ": "wiu",
  "wiv-Latn-ZZ": "wiv",
  "wja-Latn-ZZ": "wja",
  "wji-Latn-ZZ": "wji",
  "wls-Latn-WF": "wls",
  "wmo-Latn-ZZ": "wmo",
  "wnc-Latn-ZZ": "wnc",
  "wni-Arab-KM": "wni",
  "wnu-Latn-ZZ": "wnu",
  "wo-Latn-SN": "wo",
  "wob-Latn-ZZ": "wob",
  "wos-Latn-ZZ": "wos",
  "wrs-Latn-ZZ": "wrs",
  "wsg-Gong-IN": "wsg",
  "wsk-Latn-ZZ": "wsk",
  "wtm-Deva-IN": "wtm",
  "wuu-Hans-CN": "wuu",
  "wuv-Latn-ZZ": "wuv",
  "wwa-Latn-ZZ": "wwa",
  "xav-Latn-BR": "xav",
  "xbi-Latn-ZZ": "xbi",
  "xco-Chrs-UZ": "xco",
  "xcr-Cari-TR": "xcr",
  "xes-Latn-ZZ": "xes",
  "xh-Latn-ZA": "xh",
  "xla-Latn-ZZ": "xla",
  "xlc-Lyci-TR": "xlc",
  "xld-Lydi-TR": "xld",
  "xmf-Geor-GE": "xmf",
  "xmn-Mani-CN": "xmn",
  "xmr-Merc-SD": "xmr",
  "xmr-Mero-SD": "xmr-Mero",
  "xna-Narb-SA": "xna",
  "xnr-Deva-IN": "xnr",
  "xog-Latn-UG": "xog",
  "xon-Latn-ZZ": "xon",
  "xpr-Prti-IR": "xpr",
  "xrb-Latn-ZZ": "xrb",
  "xsa-Sarb-YE": "xsa",
  "xsi-Latn-ZZ": "xsi",
  "xsm-Latn-ZZ": "xsm",
  "xsr-Deva-NP": "xsr",
  "xwe-Latn-ZZ": "xwe",
  "yam-Latn-ZZ": "yam",
  "yao-Latn-MZ": "yao",
  "yap-Latn-FM": "yap",
  "yas-Latn-ZZ": "yas",
  "yat-Latn-ZZ": "yat",
  "yav-Latn-CM": "yav",
  "yay-Latn-ZZ": "yay",
  "yaz-Latn-ZZ": "yaz",
  "yba-Latn-ZZ": "yba",
  "ybb-Latn-CM": "ybb",
  "yby-Latn-ZZ": "yby",
  "yer-Latn-ZZ": "yer",
  "ygr-Latn-ZZ": "ygr",
  "ygw-Latn-ZZ": "ygw",
  "yi-Hebr-001": "yi",
  "yi-Hebr-SE": "yi-SE",
  "yi-Hebr-UA": "yi-UA",
  "yi-Hebr-US": "yi-US",
  "yko-Latn-ZZ": "yko",
  "yle-Latn-ZZ": "yle",
  "ylg-Latn-ZZ": "ylg",
  "yll-Latn-ZZ": "yll",
  "yml-Latn-ZZ": "yml",
  "yo-Latn-NG": "yo",
  "yon-Latn-ZZ": "yon",
  "yrb-Latn-ZZ": "yrb",
  "yre-Latn-ZZ": "yre",
  "yrl-Latn-BR": "yrl",
  "yss-Latn-ZZ": "yss",
  "yua-Latn-MX": "yua",
  "yue-Hans-CN": "yue-CN",
  "yue-Hant-CA": "yue-CA",
  "yue-Hant-HK": "yue",
  "yuj-Latn-ZZ": "yuj",
  "yut-Latn-ZZ": "yut",
  "yuw-Latn-ZZ": "yuw",
  "za-Latn-CN": "za",
  "zag-Latn-SD": "zag",
  "zdj-Arab-KM": "zdj",
  "zea-Latn-NL": "zea",
  "zgh-Tfng-MA": "zgh",
  "zh-Bopo-TW": "zh-Bopo",
  "zh-Hanb-TW": "zh-Hanb",
  "zh-Hani-CN": "zh-Hani",
  "zh-Hans-CN": "zh",
  "zh-Hant-AU": "zh-AU",
  "zh-Hant-BN": "zh-BN",
  "zh-Hant-GB": "zh-GB",
  "zh-Hant-GF": "zh-GF",
  "zh-Hant-HK": "zh-HK",
  "zh-Hant-ID": "zh-ID",
  "zh-Hant-MO": "zh-MO",
  "zh-Hant-PA": "zh-PA",
  "zh-Hant-PF": "zh-PF",
  "zh-Hant-PH": "zh-PH",
  "zh-Hant-SR": "zh-SR",
  "zh-Hant-TH": "zh-TH",
  "zh-Hant-TW": "zh-TW",
  "zh-Hant-US": "zh-US",
  "zh-Hant-VN": "zh-VN",
  "zhx-Nshu-CN": "zhx",
  "zia-Latn-ZZ": "zia",
  "zkt-Kits-CN": "zkt",
  "zlm-Latn-TG": "zlm",
  "zmi-Latn-MY": "zmi",
  "zne-Latn-ZZ": "zne",
  "zu-Latn-ZA": "zu",
  "zza-Latn-TR": "zza",
};
for (let [a, b] of Object.entries(x)) {
  new Intl.Locale(a);
}
for (let [c, d] of Object.entries(y)) {
  assertEq(new Intl.Locale(c).minimize().toString(), d);
}
Thread 1 "js-dbg-64-linux" received signal SIGSEGV, Segmentation fault.
js::LifoAlloc::newChunkWithCapacity (this=this@entry=0x7ffff6a17cf0, n=<optimized out>, oversize=<optimized out>) at /home/skygentoo/trees/mozilla-central/js/src/ds/LifoAlloc.cpp:168
warning: Source file is more recent than executable.
168	  MOZ_ASSERT(fallibleScope_,
(gdb) bt
#0  js::LifoAlloc::newChunkWithCapacity (this=this@entry=0x7ffff6a17cf0, n=<optimized out>, oversize=<optimized out>)
    at /home/skygentoo/trees/mozilla-central/js/src/ds/LifoAlloc.cpp:168
#1  0x000055555720b27c in js::LifoAlloc::getOrCreateChunk (this=this@entry=0x7ffff6a17cf0, n=140737350493987, n@entry=136)
    at /home/skygentoo/trees/mozilla-central/js/src/ds/LifoAlloc.cpp:221
#2  0x000055555720b3cb in js::LifoAlloc::allocImplColdPath (this=0x7ffff6a17cf0, n=136) at /home/skygentoo/trees/mozilla-central/js/src/ds/LifoAlloc.cpp:231
#3  0x000055555771720f in js::LifoAlloc::allocImpl (this=0x7ffff6a17cf0, n=136) at /home/skygentoo/trees/mozilla-central/js/src/ds/LifoAlloc.h:762
#4  js::LifoAlloc::allocInfallible (this=0x7ffff6a17cf0, n=136) at /home/skygentoo/trees/mozilla-central/js/src/ds/LifoAlloc.h:857
#5  js::jit::TempAllocator::allocateInfallible (this=<optimized out>, bytes=136) at /home/skygentoo/trees/mozilla-central/js/src/jit/JitAllocPolicy.h:45
#6  0x0000555557a7c020 in js::jit::TempObject::operator new (nbytes=136, alloc=...) at /home/skygentoo/trees/mozilla-central/js/src/jit/JitAllocPolicy.h:135
#7  js::jit::MInstruction::operator new (nbytes=136, alloc=...) at /home/skygentoo/trees/mozilla-central/js/src/jit/MIR.h:947
#8  js::jit::MAssertShape::New<js::jit::MDefinition*, js::Shape*> (alloc=..., args=<optimized out>, args=<optimized out>)
    at /home/skygentoo/trees/mozilla-central/js/src/jit/MIR.h:2888
#9  js::jit::EliminateRedundantShapeGuards (graph=...) at /home/skygentoo/trees/mozilla-central/js/src/jit/IonAnalysis.cpp:4015
#10 0x0000555557a74710 in js::jit::OptimizeMIR (mir=mir@entry=0x7ffff62e0178) at /home/skygentoo/trees/mozilla-central/js/src/jit/Ion.cpp:1420
#11 0x0000555557a7d4cc in js::jit::CompileBackEnd (mir=mir@entry=0x7ffff62e0178, snapshot=snapshot@entry=0x7ffff6239c60)
    at /home/skygentoo/trees/mozilla-central/js/src/jit/Ion.cpp:1558
#12 0x0000555557a7ea95 in js::jit::IonCompile (cx=0x7ffff6a2a200, script=..., osrPc=0x7ffff625510d "\221\035\b")
    at /home/skygentoo/trees/mozilla-central/js/src/jit/Ion.cpp:1694
#13 js::jit::Compile (cx=cx@entry=0x7ffff6a2a200, script=script@entry=..., osrFrame=osrFrame@entry=0x7fffffffb9d8, osrPc=osrPc@entry=0x7ffff625510d "\221\035\b")
    at /home/skygentoo/trees/mozilla-central/js/src/jit/Ion.cpp:1871
#14 0x0000555557a7f515 in BaselineCanEnterAtBranch (cx=0x7ffff6a2a200, script=..., osrFrame=0x7fffffffb9d8, pc=0x7ffff625510d "\221\035\b")
    at /home/skygentoo/trees/mozilla-central/js/src/jit/Ion.cpp:2072
#15 IonCompileScriptForBaseline (cx=0x7ffff6a2a200, frame=frame@entry=0x7fffffffb9d8, pc=pc@entry=0x7ffff625510d "\221\035\b")
    at /home/skygentoo/trees/mozilla-central/js/src/jit/Ion.cpp:2123
#16 0x0000555557a7fcda in js::jit::IonCompileScriptForBaselineOSR (cx=0x7ffff6a2a200, frame=0x7fffffffb9d8, frameSize=104, pc=0x7ffff625510d "\221\035\b", 
    infoPtr=0x7fffffffb978) at /home/skygentoo/trees/mozilla-central/js/src/jit/Ion.cpp:2235
#17 0x0000305cbbba5408 in ?? ()
#18 0xfffb094bd6c66bc0 in ?? ()
#19 0x00007fffffffb978 in ?? ()
#20 0x00007ffff6986290 in ?? ()
#21 0x0000000000000000 in ?? ()
(gdb)

Run with --fuzzing-safe --no-threads --fast-warmup --ion-limit-script-size=off --baseline-warmup-threshold=0, compile with AR=ar sh ./configure --enable-debug --with-ccache --enable-gczeal --enable-debug-symbols --disable-bootstrap --disable-tests, tested on m-c rev 581fb7e2cbe4.

The first bad revision is:
changeset:   https://hg.mozilla.org/mozilla-central/rev/4b8bdd2cad0d
user:        André Bargull
date:        Wed Apr 13 08:11:46 2022 +0000
summary:     Bug 1763831 - Part 1: Don't guard on prototype shapes when emitting an init-prop operation. r=iain

Not sure if this is s-s, I'd leave it to Andre.

Flags: sec-bounty?
Flags: needinfo?(andrebargull)

Bug 1763831 only uncovered an existing issue in EliminateRedundantShapeGuards: EliminateRedundantShapeGuards creates additional MAssertShape instructions in debug-mode, but doesn't check if there's enough ballast. So this is actually a regression from bug 1713579, which added the "redundant shape guards" optimisation pass. (Before it was an extra optimisation pass, the optimisation was performed during GVN and GVN took care of ensuring that there's enough ballast.)

Not sure if this is s-s, ...

Not s-s, similar to bug 1770904 or bug 1710089.

Flags: needinfo?(andrebargull)
Regressed by: 1713579
No longer regressed by: 1763831

:iain, since you are the author of the regressor, bug 1713579, could you take a look?
For more information, please visit auto_nag documentation.

Flags: needinfo?(iireland)
Group: core-security
Flags: sec-bounty?

I'm not including the testcase because it ends up being very slow in debug builds (because we're inserting thousands of shape assertions). The same testcase is fast in an opt build, so it doesn't seem worth pursuing.

Assignee: nobody → iireland
Status: NEW → ASSIGNED
Flags: needinfo?(iireland)
Severity: -- → S3
Priority: -- → P1
Pushed by iireland@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/6f678e6ceb1e
Ensure ballast when adding shape assertions r=nbp
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 104 Branch

The patch landed in nightly and beta is affected.
:iain, is this bug important enough to require an uplift?

  • If yes, please nominate the patch for beta approval.
  • If no, please set status-firefox103 to wontfix.

For more information, please visit auto_nag documentation.

Flags: needinfo?(iireland)

This bug only exists in debug builds. There's no value in uplifting it.

Flags: needinfo?(iireland)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: