Showing source for: https://www.netflix.com/gb/
Duration: 0.320731s
Server: nq_website_nonmember-prod-release 9f67b36c-0fdc-45c8-b438-40e07ba89a7e

<!doctype html><html lang="en" class=""><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta http-equiv="origin-trial" data-feature="EME Extension - Policy Check" data-expires="2018-11-26" content="Aob+++752GiUzm1RNSIkM9TINnQDxTlxz02v8hFJK/uGO2hmXnJqH8c/ZpI05b2nLsHDhGO3Ce2zXJUFQmO7jA4AAAB1eyJvcmlnaW4iOiJodHRwczovL25ldGZsaXguY29tOjQ0MyIsImZlYXR1cmUiOiJFbmNyeXB0ZWRNZWRpYUhkY3BQb2xpY3lDaGVjayIsImV4cGlyeSI6MTU0MzI0MzQyNCwiaXNTdWJkb21haW4iOnRydWV9"/><title>Netflix United Kingdom – Watch TV Programmes Online, Watch Films Online</title><link rel="preload" href="https://assets.nflxext.com/web/ffe/wp/signup/nmhp/nmhpFrameworkClient.js.93afb21616a15ee266c2.js" as="script"/><link type="text/css" rel="stylesheet" href="https://logs.netflix.com/log/wwwhead/cl/2?fetchType=css&amp;eventType=WebsiteDetect&amp;modalView=nmLanding" data-uia="botLink"/><script type="text/javascript">(function () { var request = new XMLHttpRequest(); request.open('GET', 'https://logs.netflix.com/log/wwwhead/cl/2?fetchType=js&eventType=WebsiteDetect&modalView=nmLanding', true); request.withCredentials = true; request.send(); var request2 = new XMLHttpRequest(); request2.open('GET', 'https://logs.netflix.com/log/wwwhead/cl/2?fetchType=js&eventType=WebsiteScreen' + '&winw=' + window.outerWidth + '&winh=' + window.outerHeight + '&screenw=' + window.innerWidth + '&screenh=' + window.innerHeight + '&ratio=' + ( window.devicePixelRatio ? window.devicePixelRatio : 'unsupported' ), true); request2.withCredentials = true; request2.send(); })();</script><script type="text/javascript" charSet="UTF-8" src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-document-language="true" data-domain-script="87b6a5c0-0104-4e96-a291-092c11350111"></script><script type="text/javascript">function OptanonWrapper() {};</script><meta content="watch films, watch movies, films online, movies online, watch TV, TV online, TV programmes online, watch TV programmes stream movies, stream films, stream TV, instant streaming, watch online, films, movies, watch films United Kingdom, watch TV online, no download, fullfull-length movies, TV programmes" name="keywords"/><meta content="Watch Netflix films &amp; TV programmes online or stream right to your smart TV, game console, PC, Mac, mobile, tablet and more." name="description"/><meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black"/><meta name="format-detection" content="telephone=no"/><meta name="apple-touch-icon" content="https://assets.nflxext.com/en_us/layout/ecweb/netflix-app-icon_152.jpg"/><link type="text/css" rel="stylesheet" href="https://assets.nflxext.com/web/ffe/wp/less/signup/nmhp/nmhp.a1bcda71010575046231.css" data-uia="botLink"/><link type="text/css" rel="stylesheet" href="https://assets.nflxext.com/web/ffe/wp/less/signup/nmhp/nmhp-reskin.6a003302aa4c93b29722.css" data-uia="botLink"/><link rel="shortcut icon" href="https://assets.nflxext.com/us/ffe/siteui/common/icons/nficon2023.ico"/><link rel="apple-touch-icon" href="https://assets.nflxext.com/us/ffe/siteui/common/icons/nficon2016.png"/><meta property="og:description" content="Watch Netflix films &amp; TV programmes online or stream right to your smart TV, game console, PC, Mac, mobile, tablet and more."/><meta property="al:ios:url" content="nflx://www.netflix.com/?locale=en-GB"/><meta property="al:ios:app_store_id" content="363590051"/><meta property="al:ios:app_name" content="Netflix"/><meta property="al:android:url" content="nflx://www.netflix.com/?locale=en-GB"/><meta property="al:android:package" content="com.netflix.mediaclient"/><meta property="al:android:app_name" content="Netflix"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@netflix"/><script>/* Polyfill service v4.8.0
 * For detailed credits and licence information see https://github.com/financial-times/polyfill-service.
 * 
 * Features requested: default,dom4,es5,es2015,es2016,es2017,es2018,es2019,es2020,es2021,es2022,es2023,matchMedia,Intl.DateTimeFormat.prototype.formatToParts.~locale.en,Intl.DateTimeFormat.~locale.en,Intl.DateTimeFormat.~timeZone.all.~locale.en,Intl.DateTimeFormat.~timeZone.golden.~locale.en,Intl.DisplayNames.~locale.en,Intl.ListFormat.~locale.en,Intl.Locale.~locale.en,Intl.NumberFormat.~locale.en,Intl.PluralRules.~locale.en,Intl.RelativeTimeFormat.~locale.en,Intl.getCanonicalLocales.~locale.en,console,console.error,IntersectionObserver,IntersectionObserverEntry,requestIdleCallback,ResizeObserver
 * 
 * - _DOMTokenList, License: ISC (required by "DOMTokenList", "default")
 * - _ESAbstract.ArrayCreate, License: CC0 (required by "Array.prototype.flatMap", "_ESAbstract.ArraySpeciesCreate", "es2019")
 * - _ESAbstract.Call, License: CC0 (required by "Object.hasOwn", "_ESAbstract.ToPropertyKey", "_ESAbstract.ToPrimitive", "_ESAbstract.OrdinaryToPrimitive", "es2022")
 * - _ESAbstract.CreateDataProperty, License: CC0 (required by "Array.from", "Set", "_ESAbstract.CreateIterResultObject", "es2015")
 * - _ESAbstract.CreateDataPropertyOrThrow, License: CC0 (required by "Array.prototype.flatMap", "_ESAbstract.FlattenIntoArray", "es2019")
 * - _ESAbstract.CreateMethodProperty, License: CC0 (required by "TypedArray.prototype.toSorted", "TypedArray.prototype.sort", "es2023")
 * - _ESAbstract.DefinePropertyOrThrow, License: CC0 (required by "Error.cause", "_ErrorConstructor", "_ESAbstract.CreateNonEnumerableDataPropertyOrThrow", "es2022")
 * - _ESAbstract.CreateNonEnumerableDataPropertyOrThrow, License: CC0 (required by "Error.cause", "_ErrorConstructor", "es2022")
 * - _ESAbstract.Get, License: CC0 (required by "Object.hasOwn", "_ESAbstract.ToPropertyKey", "_ESAbstract.ToPrimitive", "_ESAbstract.OrdinaryToPrimitive", "es2022")
 * - _ESAbstract.HasOwnProperty, License: CC0 (required by "Object.hasOwn", "es2022")
 * - _ESAbstract.HasProperty, License: CC0 (required by "Error.cause", "_ErrorConstructor", "es2022")
 * - _ESAbstract.IsArray, License: CC0 (required by "Array.prototype.flatMap", "_ESAbstract.FlattenIntoArray", "es2019")
 * - _ESAbstract.IsCallable, License: CC0 (required by "Object.hasOwn", "_ESAbstract.ToPropertyKey", "_ESAbstract.ToPrimitive", "_ESAbstract.OrdinaryToPrimitive", "es2022")
 * - _ESAbstract.IsInteger, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.IsValidIntegerIndex", "es2023")
 * - _ESAbstract.IsValidIntegerIndex, License: CC0 (required by "TypedArray.prototype.with", "es2023")
 * - _ESAbstract.RequireObjectCoercible, License: CC0 (required by "String.prototype.trimStart", "_ESAbstract.TrimString", "es2019")
 * - _ESAbstract.SameValueNonNumber, License: CC0 (required by "ResizeObserver", "WeakMap", "_ESAbstract.SameValue")
 * - _ESAbstract.ToBoolean, License: CC0 (required by "String.prototype.replaceAll", "_ESAbstract.IsRegExp", "es2021")
 * - _ESAbstract.ToNumber, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.ToIntegerOrInfinity", "es2023")
 * - _ESAbstract.ToIntegerOrInfinity, License: CC0 (required by "TypedArray.prototype.with", "es2023")
 * - _ESAbstract.ToObject, License: CC0 (required by "String.prototype.matchAll", "_ESAbstract.Invoke", "_ESAbstract.GetV", "es2020")
 * - _ESAbstract.GetV, License: CC0 (required by "String.prototype.matchAll", "_ESAbstract.Invoke", "es2020")
 * - _ESAbstract.GetMethod, License: CC0 (required by "Object.hasOwn", "_ESAbstract.ToPropertyKey", "_ESAbstract.ToPrimitive", "es2022")
 * - _ESAbstract.Invoke, License: CC0 (required by "String.prototype.matchAll", "es2020")
 * - _ESAbstract.ToUint32, License: CC0 (required by "Math.imul", "es2015")
 * - _ESAbstract.Type, License: CC0 (required by "Object.hasOwn", "_ESAbstract.ToPropertyKey", "_ESAbstract.ToPrimitive", "_ESAbstract.OrdinaryToPrimitive", "es2022")
 * - _ESAbstract.CreateIterResultObject, License: CC0 (required by "RegExp.prototype.@@matchAll", "_ESAbstract.CreateRegExpStringIterator", "es2020")
 * - _ESAbstract.GetPrototypeFromConstructor, License: CC0 (required by "RegExp.prototype.@@matchAll", "_ESAbstract.Construct", "_ESAbstract.OrdinaryCreateFromConstructor", "es2020")
 * - _ESAbstract.OrdinaryCreateFromConstructor, License: CC0 (required by "RegExp.prototype.@@matchAll", "_ESAbstract.Construct", "es2020")
 * - _ESAbstract.GetSubstitution, License: CC0 (required by "String.prototype.replaceAll", "es2021")
 * - _ESAbstract.IsConstructor, License: CC0 (required by "Array.prototype.flatMap", "_ESAbstract.ArraySpeciesCreate", "es2019")
 * - _ESAbstract.Construct, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.TypedArrayCreateSameType", "_ESAbstract.TypedArrayCreate", "es2023")
 * - _ESAbstract.ArraySpeciesCreate, License: CC0 (required by "Array.prototype.flatMap", "es2019")
 * - _ESAbstract.IsRegExp, License: CC0 (required by "String.prototype.replaceAll", "es2021")
 * - _ESAbstract.IteratorClose, License: CC0 (required by "Object.fromEntries", "_ESAbstract.AddEntriesFromIterable", "es2019")
 * - _ESAbstract.IteratorComplete, License: CC0 (required by "WeakSet", "_ESAbstract.IteratorStep", "es2015")
 * - _ESAbstract.IteratorNext, License: CC0 (required by "WeakSet", "_ESAbstract.IteratorStep", "es2015")
 * - _ESAbstract.IteratorStep, License: CC0 (required by "Promise.any", "_ESAbstract.IterableToList", "es2021")
 * - _ESAbstract.IteratorValue, License: CC0 (required by "Promise.any", "_ESAbstract.IterableToList", "es2021")
 * - _ESAbstract.OrdinaryToPrimitive, License: CC0 (required by "Object.hasOwn", "_ESAbstract.ToPropertyKey", "_ESAbstract.ToPrimitive", "es2022")
 * - _ESAbstract.RegExpExec, License: CC0 (required by "RegExp.prototype.@@matchAll", "_ESAbstract.CreateRegExpStringIterator", "es2020")
 * - _ESAbstract.SameValue, License: CC0 (required by "ResizeObserver", "WeakMap")
 * - _ESAbstract.SameValueZero, License: CC0 (required by "Object.getOwnPropertyNames", "Array.prototype.includes", "es5")
 * - _ESAbstract.SpeciesConstructor, License: CC0 (required by "RegExp.prototype.@@matchAll", "es2020")
 * - _ESAbstract.StringIndexOf, License: CC0 (required by "String.prototype.replaceAll", "es2021")
 * - _ESAbstract.ToInteger, License: CC0 (required by "RegExp.prototype.@@matchAll", "_ESAbstract.ToLength", "es2020")
 * - _ESAbstract.ToLength, License: CC0 (required by "Array.prototype.with", "_ESAbstract.LengthOfArrayLike", "es2023")
 * - _ESAbstract.LengthOfArrayLike, License: CC0 (required by "Array.prototype.with", "es2023")
 * - _ESAbstract.ToPrimitive, License: CC0 (required by "Object.hasOwn", "_ESAbstract.ToPropertyKey", "es2022")
 * - _ESAbstract.ToString, License: CC0 (required by "RegExp.prototype.@@matchAll", "_ESAbstract.CreateRegExpStringIterator", "es2020")
 * - _ESAbstract.FlattenIntoArray, License: CC0 (required by "Array.prototype.flatMap", "es2019")
 * - _ESAbstract.ToPropertyKey, License: CC0 (required by "Object.hasOwn", "es2022")
 * - _ESAbstract.TrimString, License: CC0 (required by "String.prototype.trimStart", "es2019")
 * - _ESAbstract.TypedArrayCreate, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.TypedArrayCreateSameType", "es2023")
 * - _ESAbstract.UTF16Decode, License: CC0 (required by "String.prototype.codePointAt", "es2015")
 * - _ESAbstract.UTF16Encoding, License: CC0 (required by "String.fromCodePoint", "es2015")
 * - _mutation, License: CC0 (required by "Element.prototype.replaceWith", "default")
 * - ~html5-elements, License: MIT (required by "default")
 * - Array.of, License: CC0 (required by "es2015")
 * - Array.prototype.at, License: CC0 (required by "es2022")
 * - Array.prototype.copyWithin, License: MIT (required by "es2015")
 * - Array.prototype.fill, License: CC0 (required by "es2015")
 * - Array.prototype.find, License: CC0 (required by "es2015")
 * - Array.prototype.findIndex, License: CC0 (required by "es2015")
 * - Array.prototype.findLast, License: CC0 (required by "es2023")
 * - Array.prototype.findLastIndex, License: CC0 (required by "es2023")
 * - Array.prototype.flat, License: CC0 (required by "es2019")
 * - Array.prototype.flatMap, License: CC0 (required by "es2019")
 * - Array.prototype.includes, License: MIT (required by "Object.getOwnPropertyNames", "es5")
 * - Array.prototype.sort, License: MIT (required by "Intl.DateTimeFormat.~locale.en", "Intl.DateTimeFormat", "Intl.NumberFormat", "Intl.getCanonicalLocales")
 * - Array.prototype.toReversed, License: MIT (required by "es2023")
 * - Array.prototype.toSorted, License: MIT (required by "es2023")
 * - ArrayBuffer, License: MIT (required by "TypedArray.prototype.toSorted", "TypedArray.prototype.sort", "es2023")
 * - atob, License: MIT (required by "default")
 * - console, License: CC0 (required by "console.error", "console.log")
 * - console.log, License: CC0 (required by "console.error")
 * - console.error, License: CC0
 * - devicePixelRatio, License: CC0 (required by "ResizeObserver")
 * - DocumentFragment, License: CC0 (required by "DocumentFragment.prototype.prepend", "default")
 * - DocumentFragment.prototype.append, License: CC0 (required by "DocumentFragment.prototype.replaceChildren", "default")
 * - DocumentFragment.prototype.prepend, License: CC0 (required by "default")
 * - DocumentFragment.prototype.replaceChildren, License: CC0 (required by "default")
 * - DOMTokenList, License: CC0 (required by "Element.prototype.classList", "default")
 * - Element.prototype.after, License: CC0 (required by "default")
 * - Element.prototype.append, License: CC0 (required by "Element.prototype.replaceChildren", "default")
 * - Element.prototype.before, License: CC0 (required by "default")
 * - Element.prototype.classList, License: ISC (required by "default")
 * - Element.prototype.matches, License: CC0 (required by "Element.prototype.closest", "default")
 * - Element.prototype.closest, License: CC0 (required by "default")
 * - Element.prototype.prepend, License: CC0 (required by "default")
 * - Element.prototype.remove, License: CC0 (required by "default")
 * - Element.prototype.replaceChildren, License: CC0 (required by "default")
 * - Element.prototype.replaceWith, License: CC0 (required by "default")
 * - Event, License: CC0 (required by "Event.hashchange", "default")
 * - CustomEvent, License: CC0 (required by "document.visibilityState", "default")
 * - document.visibilityState, License: CC0 (required by "default")
 * - Event.focusin, License: CC0 (required by "default")
 * - Event.hashchange, License: CC0 (required by "default")
 * - Function.prototype.name, License: MIT (required by "TypedArray.prototype.with", "_ESAbstract.TypedArrayCreateSameType", "es2023")
 * - _ESAbstract.TypedArrayCreateSameType, License: CC0 (required by "TypedArray.prototype.with", "es2023")
 * - Array.prototype.with, License: MIT (required by "es2023")
 * - location.origin, License: CC0 (required by "default")
 * - matchMedia, License: CC0
 * - Math.acosh, License: CC0 (required by "es2015")
 * - Math.asinh, License: CC0 (required by "es2015")
 * - Math.atanh, License: CC0 (required by "es2015")
 * - Math.cbrt, License: CC0 (required by "es2015")
 * - Math.clz32, License: CC0 (required by "es2015")
 * - Math.cosh, License: CC0 (required by "es2015")
 * - Math.expm1, License: CC0 (required by "es2015")
 * - Math.fround, License: CC0 (required by "es2015")
 * - Math.hypot, License: CC0 (required by "es2015")
 * - Math.imul, License: CC0 (required by "es2015")
 * - Math.log10, License: CC0 (required by "es2015")
 * - Math.log1p, License: CC0 (required by "es2015")
 * - Math.log2, License: CC0 (required by "es2015")
 * - Math.sign, License: CC0 (required by "es2015")
 * - Math.sinh, License: CC0 (required by "es2015")
 * - Math.tanh, License: CC0 (required by "es2015")
 * - Math.trunc, License: CC0 (required by "es2015")
 * - MutationObserver, License: WTFPL (required by "ResizeObserver")
 * - Node.prototype.contains, License: CC0 (required by "dom4")
 * - Node.prototype.isSameNode, License: CC0 (required by "dom4")
 * - Number.Epsilon, License: MIT (required by "es2015")
 * - Number.isFinite, License: MIT (required by "es2015")
 * - Number.isInteger, License: MIT (required by "es2015")
 * - Number.isNaN, License: MIT (required by "es2015")
 * - Number.isSafeInteger, License: MIT (required by "es2015")
 * - Number.MAX_SAFE_INTEGER, License: MIT (required by "RegExp.prototype.@@matchAll", "_ESAbstract.CreateRegExpStringIterator", "_ESAbstract.AdvanceStringIndex", "es2020")
 * - Array.prototype.toSpliced, License: MIT (required by "es2023")
 * - Number.MIN_SAFE_INTEGER, License: MIT (required by "es2015")
 * - Object.freeze, License: CC0 (required by "Symbol.unscopables", "Symbol", "es2015")
 * - Object.getOwnPropertyDescriptor, License: CC0 (required by "Object.entries", "_ESAbstract.EnumerableOwnProperties", "es2017")
 * - Object.hasOwn, License: CC0 (required by "es2022")
 * - Object.is, License: CC0 (required by "es2015")
 * - Object.isExtensible, License: CC0 (required by "Array.from", "Map", "es2015")
 * - Object.keys, License: MIT (required by "Object.entries", "_ESAbstract.EnumerableOwnProperties", "es2017")
 * - _ESAbstract.EnumerableOwnProperties, License: CC0 (required by "Object.entries", "es2017")
 * - Object.entries, License: CC0 (required by "es2017")
 * - Object.assign, License: CC0 (required by "String.prototype.@@iterator", "_StringIterator", "_Iterator", "es2015")
 * - Intl.getCanonicalLocales, License: MIT (required by "Intl.RelativeTimeFormat.~locale.en", "Intl.RelativeTimeFormat")
 * - Object.getOwnPropertyNames, License: CC0 (required by "Object.getOwnPropertyDescriptors", "Reflect.ownKeys", "es2017")
 * - Object.seal, License: MIT (required by "es2015")
 * - Object.setPrototypeOf, License: MIT (required by "Error.cause", "_ErrorConstructor", "es2022")
 * - _ErrorConstructor, License: CC0 (required by "Error.cause", "es2022")
 * - Error.cause, License: CC0 (required by "es2022")
 * - Object.values, License: CC0 (required by "es2017")
 * - performance.now, License: CC0 (required by "requestIdleCallback")
 * - IntersectionObserver, License: CC0 (required by "IntersectionObserverEntry")
 * - IntersectionObserverEntry, License: CC0
 * - Reflect, License: CC0 (required by "Object.getOwnPropertyDescriptors", "Reflect.ownKeys", "es2017")
 * - RegExp.prototype.flags, License: MIT (required by "String.prototype.replaceAll", "es2021")
 * - requestAnimationFrame, License: MIT (required by "ResizeObserver")
 * - requestIdleCallback, License: MIT
 * - String.fromCodePoint, License: MIT (required by "es2015")
 * - String.prototype.at, License: CC0 (required by "es2022")
 * - String.prototype.codePointAt, License: MIT (required by "RegExp.prototype.@@matchAll", "_ESAbstract.CreateRegExpStringIterator", "_ESAbstract.AdvanceStringIndex", "es2020")
 * - _ESAbstract.AdvanceStringIndex, License: CC0 (required by "RegExp.prototype.@@matchAll", "_ESAbstract.CreateRegExpStringIterator", "es2020")
 * - String.prototype.endsWith, License: CC0 (required by "es2015")
 * - String.prototype.includes, License: CC0 (required by "TypedArray.prototype.@@iterator", "TypedArray.prototype.values", "_ArrayIterator", "es2015")
 * - String.prototype.padEnd, License: CC0 (required by "es2017")
 * - String.prototype.padStart, License: CC0 (required by "es2017")
 * - String.prototype.repeat, License: CC0 (required by "es2015")
 * - String.prototype.startsWith, License: CC0 (required by "es2015")
 * - String.prototype.trim, License: CC0 (required by "Number.parseInt", "es2015")
 * - Number.parseFloat, License: MIT (required by "es2015")
 * - Number.parseInt, License: MIT (required by "es2015")
 * - String.prototype.trimEnd, License: CC0 (required by "es2019")
 * - String.prototype.trimStart, License: CC0 (required by "es2019")
 * - Symbol, License: MIT (required by "String.prototype.@@iterator", "_StringIterator", "_Iterator", "es2015")
 * - Reflect.ownKeys, License: CC0 (required by "Object.getOwnPropertyDescriptors", "es2017")
 * - Object.getOwnPropertyDescriptors, License: CC0 (required by "es2017")
 * - Symbol.asyncIterator, License: MIT (required by "es2018")
 * - Symbol.hasInstance, License: MIT (required by "es2015")
 * - Symbol.isConcatSpreadable, License: MIT (required by "es2015")
 * - Symbol.iterator, License: MIT (required by "String.prototype.@@iterator", "_StringIterator", "_Iterator", "es2015")
 * - _ESAbstract.GetIterator, License: CC0 (required by "Promise.any", "_ESAbstract.IterableToList", "es2021")
 * - _ESAbstract.AddEntriesFromIterable, License: CC0 (required by "Object.fromEntries", "es2019")
 * - _ESAbstract.IterableToList, License: CC0 (required by "Promise.any", "es2021")
 * - AggregateError, License: MIT (required by "Promise.any", "es2021")
 * - Symbol.match, License: MIT (required by "es2015")
 * - Symbol.matchAll, License: MIT (required by "String.prototype.matchAll", "es2020")
 * - Symbol.replace, License: MIT (required by "String.prototype.replaceAll", "es2021")
 * - String.prototype.replaceAll, License: MIT (required by "es2021")
 * - Symbol.search, License: MIT (required by "es2015")
 * - Symbol.species, License: MIT (required by "Array.from", "Set", "es2015")
 * - Symbol.split, License: MIT (required by "es2015")
 * - Symbol.toPrimitive, License: MIT (required by "es2015")
 * - Symbol.toStringTag, License: MIT (required by "String.prototype.@@iterator", "_StringIterator", "_Iterator", "es2015")
 * - _ESAbstract.CreateRegExpStringIterator, License: CC0 (required by "RegExp.prototype.@@matchAll", "es2020")
 * - RegExp.prototype.@@matchAll, License: MIT (required by "String.prototype.matchAll", "es2020")
 * - String.prototype.matchAll, License: MIT (required by "es2020")
 * - _Iterator, License: MIT (required by "String.prototype.@@iterator", "_StringIterator", "es2015")
 * - _ArrayIterator, License: MIT (required by "TypedArray.prototype.@@iterator", "TypedArray.prototype.values", "es2015")
 * - Array.prototype.entries, License: CC0 (required by "es2015")
 * - Array.prototype.keys, License: CC0 (required by "es2015")
 * - Array.prototype.values, License: MIT (required by "Array.prototype.@@iterator", "es2015")
 * - _StringIterator, License: MIT (required by "String.prototype.@@iterator", "es2015")
 * - Array.prototype.@@iterator, License: CC0 (required by "Object.fromEntries", "es2019")
 * - Object.fromEntries, License: CC0 (required by "es2019")
 * - ArrayBuffer.prototype.@@toStringTag, License: CC0 (required by "es2015")
 * - Map, License: CC0 (required by "Array.from", "es2015")
 * - Object.prototype.toString, License: CC0 (required by "es2015")
 * - Promise, License: MIT (required by "Promise.any", "es2021")
 * - Promise.allSettled, License: MIT (required by "es2020")
 * - Promise.any, License: MIT (required by "es2021")
 * - Promise.prototype.finally, License: MIT (required by "es2018")
 * - Set, License: CC0 (required by "Intl.DateTimeFormat.~locale.en", "Intl.DateTimeFormat", "Intl.Locale")
 * - Array.from, License: CC0 (required by "URL", "default")
 * - String.prototype.@@iterator, License: CC0 (required by "es2015")
 * - Symbol.unscopables, License: MIT (required by "es2015")
 * - TypedArray.prototype.@@toStringTag, License: CC0 (required by "es2015")
 * - TypedArray.prototype.at, License: CC0 (required by "es2022")
 * - TypedArray.prototype.entries, License: MIT (required by "es2015")
 * - TypedArray.prototype.findLast, License: CC0 (required by "es2023")
 * - TypedArray.prototype.findLastIndex, License: CC0 (required by "es2023")
 * - TypedArray.prototype.keys, License: MIT (required by "es2015")
 * - TypedArray.prototype.sort, License: MIT (required by "TypedArray.prototype.toSorted", "es2023")
 * - TypedArray.prototype.toReversed, License: MIT (required by "es2023")
 * - TypedArray.prototype.toSorted, License: MIT (required by "es2023")
 * - TypedArray.prototype.toString, License: CC0 (required by "es2015")
 * - TypedArray.prototype.values, License: MIT (required by "TypedArray.prototype.@@iterator", "es2015")
 * - TypedArray.prototype.@@iterator, License: CC0 (required by "es2015")
 * - TypedArray.prototype.with, License: MIT (required by "es2023")
 * - URL, License: CC0-1.0 (required by "default")
 * - WeakMap, License: MIT (required by "Intl.RelativeTimeFormat.~locale.en", "Intl.RelativeTimeFormat")
 * - Intl.Locale, License: MIT (required by "Intl.RelativeTimeFormat.~locale.en", "Intl.RelativeTimeFormat")
 * - Intl.DisplayNames, License: MIT (required by "Intl.DisplayNames.~locale.en")
 * - Intl.DisplayNames.~locale.en, License: MIT
 * - Intl.ListFormat, License: MIT (required by "Intl.ListFormat.~locale.en")
 * - Intl.ListFormat.~locale.en, License: MIT
 * - Intl.PluralRules, License: MIT (required by "Intl.RelativeTimeFormat.~locale.en", "Intl.RelativeTimeFormat")
 * - Intl.NumberFormat, License: MIT (required by "Intl.RelativeTimeFormat.~locale.en", "Intl.RelativeTimeFormat")
 * - Intl.DateTimeFormat, License: MIT (required by "Intl.DateTimeFormat.~locale.en")
 * - Intl.PluralRules.~locale.en, License: MIT (required by "Intl.RelativeTimeFormat.~locale.en")
 * - Intl.NumberFormat.~locale.en, License: MIT (required by "TypedArray.prototype.toLocaleString", "es2015")
 * - Intl.DateTimeFormat.~locale.en, License: MIT
 * - TypedArray.prototype.toLocaleString, License: CC0 (required by "es2015")
 * - Intl.RelativeTimeFormat, License: MIT (required by "Intl.RelativeTimeFormat.~locale.en")
 * - Intl.RelativeTimeFormat.~locale.en, License: MIT
 * - ResizeObserver, License: Apache-2.0
 * - WeakSet, License: MIT (required by "es2015")
 * 
 * These features were not recognised:
 * - Intl.DateTimeFormat.prototype.formatToParts.~locale.en,- Intl.DateTimeFormat.~timeZone.all.~locale.en,- Intl.DateTimeFormat.~timeZone.golden.~locale.en,- Intl.Locale.~locale.en,- Intl.getCanonicalLocales.~locale.en */

(function(self, undefined) {

// _DOMTokenList
/*
Copyright (c) 2016, John Gardner

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
var _DOMTokenList = (function() { // eslint-disable-line no-unused-vars
	var dpSupport = true;
	var defineGetter = function (object, name, fn, configurable) {
		if (Object.defineProperty)
			Object.defineProperty(object, name, {
				configurable: false === dpSupport ? true : !!configurable,
				get: fn
			});

		else object.__defineGetter__(name, fn);
	};

	/** Ensure the browser allows Object.defineProperty to be used on native JavaScript objects. */
	try {
		defineGetter({}, "support");
	}
	catch (e) {
		dpSupport = false;
	}


	var _DOMTokenList = function (el, prop) {
		var that = this;
		var tokens = [];
		var tokenMap = {};
		var length = 0;
		var maxLength = 0;
		var addIndexGetter = function (i) {
			defineGetter(that, i, function () {
				preop();
				return tokens[i];
			}, false);

		};
		var reindex = function () {

			/** Define getter functions for array-like access to the tokenList's contents. */
			if (length >= maxLength)
				for (; maxLength < length; ++maxLength) {
					addIndexGetter(maxLength);
				}
		};

		/** Helper function called at the start of each class method. Internal use only. */
		var preop = function () {
			var error;
			var i;
			var args = arguments;
			var rSpace = /\s+/;

			/** Validate the token/s passed to an instance method, if any. */
			if (args.length)
				for (i = 0; i < args.length; ++i)
					if (rSpace.test(args[i])) {
						error = new SyntaxError('String "' + args[i] + '" ' + "contains" + ' an invalid character');
						error.code = 5;
						error.name = "InvalidCharacterError";
						throw error;
					}


			/** Split the new value apart by whitespace*/
			if (typeof el[prop] === "object") {
				tokens = ("" + el[prop].baseVal).replace(/^\s+|\s+$/g, "").split(rSpace);
			} else {
				tokens = ("" + el[prop]).replace(/^\s+|\s+$/g, "").split(rSpace);
			}

			/** Avoid treating blank strings as single-item token lists */
			if ("" === tokens[0]) tokens = [];

			/** Repopulate the internal token lists */
			tokenMap = {};
			for (i = 0; i < tokens.length; ++i)
				tokenMap[tokens[i]] = true;
			length = tokens.length;
			reindex();
		};

		/** Populate our internal token list if the targeted attribute of the subject element isn't empty. */
		preop();

		/** Return the number of tokens in the underlying string. Read-only. */
		defineGetter(that, "length", function () {
			preop();
			return length;
		});

		/** Override the default toString/toLocaleString methods to return a space-delimited list of tokens when typecast. */
		that.toLocaleString =
			that.toString = function () {
				preop();
				return tokens.join(" ");
			};

		that.item = function (idx) {
			preop();
			return tokens[idx];
		};

		that.contains = function (token) {
			preop();
			return !!tokenMap[token];
		};

		that.add = function () {
			preop.apply(that, args = arguments);

			for (var args, token, i = 0, l = args.length; i < l; ++i) {
				token = args[i];
				if (!tokenMap[token]) {
					tokens.push(token);
					tokenMap[token] = true;
				}
			}

			/** Update the targeted attribute of the attached element if the token list's changed. */
			if (length !== tokens.length) {
				length = tokens.length >>> 0;
				if (typeof el[prop] === "object") {
					el[prop].baseVal = tokens.join(" ");
				} else {
					el[prop] = tokens.join(" ");
				}
				reindex();
			}
		};

		that.remove = function () {
			preop.apply(that, args = arguments);

			/** Build a hash of token names to compare against when recollecting our token list. */
			for (var args, ignore = {}, i = 0, t = []; i < args.length; ++i) {
				ignore[args[i]] = true;
				delete tokenMap[args[i]];
			}

			/** Run through our tokens list and reassign only those that aren't defined in the hash declared above. */
			for (i = 0; i < tokens.length; ++i)
				if (!ignore[tokens[i]]) t.push(tokens[i]);

			tokens = t;
			length = t.length >>> 0;

			/** Update the targeted attribute of the attached element. */
			if (typeof el[prop] === "object") {
				el[prop].baseVal = tokens.join(" ");
			} else {
				el[prop] = tokens.join(" ");
			}
			reindex();
		};

		that.toggle = function (token, force) {
			preop.apply(that, [token]);

			/** Token state's being forced. */
			if (undefined !== force) {
				if (force) {
					that.add(token);
					return true;
				} else {
					that.remove(token);
					return false;
				}
			}

			/** Token already exists in tokenList. Remove it, and return FALSE. */
			if (tokenMap[token]) {
				that.remove(token);
				return false;
			}

			/** Otherwise, add the token and return TRUE. */
			that.add(token);
			return true;
		};

		that.forEach = Array.prototype.forEach;

		return that;
	};

	return _DOMTokenList;
}());

// _ESAbstract.ArrayCreate
// 9.4.2.2. ArrayCreate ( length [ , proto ] )
function ArrayCreate(length /* [, proto] */) { // eslint-disable-line no-unused-vars
	// 1. Assert: length is an integer Number ≥ 0.
	// 2. If length is -0, set length to +0.
	if (1 / length === -Infinity) {
		length = 0;
	}
	// 3. If length>2^32-1, throw a RangeError exception.
	if (length > (Math.pow(2, 32) - 1)) {
		throw new RangeError('Invalid array length');
	}
	// 4. If proto is not present, set proto to the intrinsic object %ArrayPrototype%.
	// 5. Let A be a newly created Array exotic object.
	var A = [];
	// 6. Set A's essential internal methods except for [[DefineOwnProperty]] to the default ordinary object definitions specified in 9.1.
	// 7. Set A.[[DefineOwnProperty]] as specified in 9.4.2.1.
	// 8. Set A.[[Prototype]] to proto.
	// 9. Set A.[[Extensible]] to true.
	// 10. Perform ! OrdinaryDefineOwnProperty(A, "length", PropertyDescriptor{[[Value]]: length, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: false}).
	A.length = length;
	// 11. Return A.
	return A;
}

// _ESAbstract.Call
/* global IsCallable */
// 7.3.12. Call ( F, V [ , argumentsList ] )
function Call(F, V /* [, argumentsList] */) { // eslint-disable-line no-unused-vars
	// 1. If argumentsList is not present, set argumentsList to a new empty List.
	var argumentsList = arguments.length > 2 ? arguments[2] : [];
	// 2. If IsCallable(F) is false, throw a TypeError exception.
	if (IsCallable(F) === false) {
		throw new TypeError(Object.prototype.toString.call(F) + 'is not a function.');
	}
	// 3. Return ? F.[[Call]](V, argumentsList).
	return F.apply(V, argumentsList);
}

// _ESAbstract.CreateDataProperty
// 7.3.4. CreateDataProperty ( O, P, V )
// NOTE
// This abstract operation creates a property whose attributes are set to the same defaults used for properties created by the ECMAScript language assignment operator.
// Normally, the property will not already exist. If it does exist and is not configurable or if O is not extensible, [[DefineOwnProperty]] will return false.
function CreateDataProperty(O, P, V) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(O) is Object.
	// 2. Assert: IsPropertyKey(P) is true.
	// 3. Let newDesc be the PropertyDescriptor{ [[Value]]: V, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true }.
	var newDesc = {
		value: V,
		writable: true,
		enumerable: true,
		configurable: true
	};
	// 4. Return ? O.[[DefineOwnProperty]](P, newDesc).
	try {
		Object.defineProperty(O, P, newDesc);
		return true;
	} catch (e) {
		return false;
	}
}

// _ESAbstract.CreateDataPropertyOrThrow
/* global CreateDataProperty */
// 7.3.6. CreateDataPropertyOrThrow ( O, P, V )
function CreateDataPropertyOrThrow(O, P, V) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(O) is Object.
	// 2. Assert: IsPropertyKey(P) is true.
	// 3. Let success be ? CreateDataProperty(O, P, V).
	var success = CreateDataProperty(O, P, V);
	// 4. If success is false, throw a TypeError exception.
	if (!success) {
		throw new TypeError('Cannot assign value `' + Object.prototype.toString.call(V) + '` to property `' + Object.prototype.toString.call(P) + '` on object `' + Object.prototype.toString.call(O) + '`');
	}
	// 5. Return success.
	return success;
}

// _ESAbstract.CreateMethodProperty
// 7.3.5. CreateMethodProperty ( O, P, V )
function CreateMethodProperty(O, P, V) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(O) is Object.
	// 2. Assert: IsPropertyKey(P) is true.
	// 3. Let newDesc be the PropertyDescriptor{[[Value]]: V, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true}.
	var newDesc = {
		value: V,
		writable: true,
		enumerable: false,
		configurable: true
	};
	// 4. Return ? O.[[DefineOwnProperty]](P, newDesc).
	Object.defineProperty(O, P, newDesc);
}

// _ESAbstract.DefinePropertyOrThrow
// 7.3.9 DefinePropertyOrThrow ( O, P, desc )
function DefinePropertyOrThrow (O, P, desc) { // eslint-disable-line no-unused-vars
	// 1. Let success be ? O.[[DefineOwnProperty]](P, desc).
	var success;
	try {
		Object.defineProperty(O, P, desc);
		success = true;
	} catch (e) {
		success = false;
	}
	// 2. If success is false, throw a TypeError exception.
	if (!success) {
		throw new TypeError('Cannot define property `' + Object.prototype.toString.call(P) + '` on object `' + Object.prototype.toString.call(O) + '`');
	}
	// 3. Return unused.
}

// _ESAbstract.CreateNonEnumerableDataPropertyOrThrow
/* global DefinePropertyOrThrow */
// 7.3.8 CreateNonEnumerableDataPropertyOrThrow ( O, P, V )
function CreateNonEnumerableDataPropertyOrThrow (O, P, V) { // eslint-disable-line no-unused-vars
	// 1. Assert: O is an ordinary, extensible object with no non-configurable properties.
	// 2. Let newDesc be the PropertyDescriptor { [[Value]]: V, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }.
	var newDesc = {
		value: V,
		writable: true,
		enumerable: false,
		configurable: true
	};
	// 3. Perform ! DefinePropertyOrThrow(O, P, newDesc).
	DefinePropertyOrThrow(O, P, newDesc);
	// 4. Return unused.
}

// _ESAbstract.Get
// 7.3.1. Get ( O, P )
function Get(O, P) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(O) is Object.
	// 2. Assert: IsPropertyKey(P) is true.
	// 3. Return ? O.[[Get]](P, O).
	return O[P];
}

// _ESAbstract.HasOwnProperty
// 7.3.11 HasOwnProperty (O, P)
function HasOwnProperty(o, p) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(O) is Object.
	// 2. Assert: IsPropertyKey(P) is true.
	// 3. Let desc be ? O.[[GetOwnProperty]](P).
	// 4. If desc is undefined, return false.
	// 5. Return true.
	// Polyfill.io - As we expect user agents to support ES3 fully we can skip the above steps and use Object.prototype.hasOwnProperty to do them for us.
	return Object.prototype.hasOwnProperty.call(o, p);
}

// _ESAbstract.HasProperty
// 7.3.10. HasProperty ( O, P )
function HasProperty(O, P) { // eslint-disable-line no-unused-vars
	// Assert: Type(O) is Object.
	// Assert: IsPropertyKey(P) is true.
	// Return ? O.[[HasProperty]](P).
	return P in O;
}

// _ESAbstract.IsArray
// 7.2.2. IsArray ( argument )
function IsArray(argument) { // eslint-disable-line no-unused-vars
	// 1. If Type(argument) is not Object, return false.
	// 2. If argument is an Array exotic object, return true.
	// 3. If argument is a Proxy exotic object, then
		// a. If argument.[[ProxyHandler]] is null, throw a TypeError exception.
		// b. Let target be argument.[[ProxyTarget]].
		// c. Return ? IsArray(target).
	// 4. Return false.

	// Polyfill.io - We can skip all the above steps and check the string returned from Object.prototype.toString().
	return Object.prototype.toString.call(argument) === '[object Array]';
}

// _ESAbstract.IsCallable
// 7.2.3. IsCallable ( argument )
function IsCallable(argument) { // eslint-disable-line no-unused-vars
	// 1. If Type(argument) is not Object, return false.
	// 2. If argument has a [[Call]] internal method, return true.
	// 3. Return false.

	// Polyfill.io - Only function objects have a [[Call]] internal method. This means we can simplify this function to check that the argument has a type of function.
	return typeof argument === 'function';
}

// _ESAbstract.IsInteger
/* globals Type */
// 7.2.6. IsInteger ( argument )
function IsInteger(argument) { // eslint-disable-line no-unused-vars
	// 1. If Type(argument) is not Number, return false.
	if (Type(argument) !== 'number') {
		return false;
	}
	// 2. If argument is NaN, +∞, or -∞, return false.
	if ( isNaN(argument) || argument === Infinity || argument === -Infinity) {
		return false;
	}
	// 3. If floor(abs(argument)) ≠ abs(argument), return false.
	if (Math.floor(Math.abs(argument)) !== Math.abs(argument)) {
		return false;
	}
	// 4. Return true.
	return true;
}

// _ESAbstract.IsValidIntegerIndex
/* globals IsInteger */
// 10.4.5.9 IsValidIntegerIndex ( O, index )
function IsValidIntegerIndex(O, index) { // eslint-disable-line no-unused-vars
	// 1. If IsDetachedBuffer(O.[[ViewedArrayBuffer]]) is true, return false.
	// 2. If IsIntegralNumber(index) is false, return false.
	if (IsInteger(index) === false) return false;
	// 3. If index is -0𝔽, return false.
	// eslint-disable-next-line no-compare-neg-zero
	if (1 / index === -Infinity) return false;
	// 4. If ℝ(index) < 0 or ℝ(index) ≥ O.[[ArrayLength]], return false.
	if (index < 0 || index >= O.length) return false;
	// 5. Return true.
	return true;
}

// _ESAbstract.RequireObjectCoercible
// 7.2.1. RequireObjectCoercible ( argument )
// The abstract operation ToObject converts argument to a value of type Object according to Table 12:
// Table 12: ToObject Conversions
/*
|----------------------------------------------------------------------------------------------------------------------------------------------------|
| Argument Type | Result                                                                                                                             |
|----------------------------------------------------------------------------------------------------------------------------------------------------|
| Undefined     | Throw a TypeError exception.                                                                                                       |
| Null          | Throw a TypeError exception.                                                                                                       |
| Boolean       | Return argument.                                                                                                                   |
| Number        | Return argument.                                                                                                                   |
| String        | Return argument.                                                                                                                   |
| Symbol        | Return argument.                                                                                                                   |
| Object        | Return argument.                                                                                                                   |
|----------------------------------------------------------------------------------------------------------------------------------------------------|
*/
function RequireObjectCoercible(argument) { // eslint-disable-line no-unused-vars
	if (argument === null || argument === undefined) {
		throw TypeError(Object.prototype.toString.call(argument) + ' is not coercible to Object.');
	}
	return argument;
}

// _ESAbstract.SameValueNonNumber
// 7.2.12. SameValueNonNumber ( x, y )
function SameValueNonNumber(x, y) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(x) is not Number.
	// 2. Assert: Type(x) is the same as Type(y).
	// 3. If Type(x) is Undefined, return true.
	// 4. If Type(x) is Null, return true.
	// 5. If Type(x) is String, then
		// a. If x and y are exactly the same sequence of code units (same length and same code units at corresponding indices), return true; otherwise, return false.
	// 6. If Type(x) is Boolean, then
		// a. If x and y are both true or both false, return true; otherwise, return false.
	// 7. If Type(x) is Symbol, then
		// a. If x and y are both the same Symbol value, return true; otherwise, return false.
	// 8. If x and y are the same Object value, return true. Otherwise, return false.

	// Polyfill.io - We can skip all above steps because the === operator does it all for us.
	return x === y;
}

// _ESAbstract.ToBoolean
// 7.1.2. ToBoolean ( argument )
// The abstract operation ToBoolean converts argument to a value of type Boolean according to Table 9:
/*
--------------------------------------------------------------------------------------------------------------
| Argument Type | Result                                                                                     |
--------------------------------------------------------------------------------------------------------------
| Undefined     | Return false.                                                                              |
| Null          | Return false.                                                                              |
| Boolean       | Return argument.                                                                           |
| Number        | If argument is +0, -0, or NaN, return false; otherwise return true.                        |
| String        | If argument is the empty String (its length is zero), return false; otherwise return true. |
| Symbol        | Return true.                                                                               |
| Object        | Return true.                                                                               |
--------------------------------------------------------------------------------------------------------------
*/
function ToBoolean(argument) { // eslint-disable-line no-unused-vars
	return Boolean(argument);
}

// _ESAbstract.ToNumber
// 7.1.3. ToNumber ( argument )
function ToNumber(argument) { // eslint-disable-line no-unused-vars
	return Number(argument);
}

// _ESAbstract.ToIntegerOrInfinity
/* global ToNumber */
// 7.1.5. ToIntegerOrInfinity ( argument )
function ToIntegerOrInfinity(argument) { // eslint-disable-line no-unused-vars
	// 1. Let number be ? ToNumber(argument).
	var number = ToNumber(argument);
	// 2. If number is NaN, +0𝔽, or -0𝔽, return 0.
	if (isNaN(number) || number === 0 || 1/number === -Infinity) return 0;
	// 3. If number is +∞𝔽, return +∞.
	if (number === Infinity) return Infinity;
	// 4. If number is -∞𝔽, return -∞.
	if (number === -Infinity) return -Infinity;
	// 5. Let integer be floor(abs(ℝ(number))).
	var integer = Math.floor(Math.abs(number));
	// 6. If number < +0𝔽, set integer to -integer.
	if (number < 0) integer = -integer;
	// 7. Return integer.
	return integer;
}

// _ESAbstract.ToObject
// 7.1.13 ToObject ( argument )
// The abstract operation ToObject converts argument to a value of type Object according to Table 12:
// Table 12: ToObject Conversions
/*
|----------------------------------------------------------------------------------------------------------------------------------------------------|
| Argument Type | Result                                                                                                                             |
|----------------------------------------------------------------------------------------------------------------------------------------------------|
| Undefined     | Throw a TypeError exception.                                                                                                       |
| Null          | Throw a TypeError exception.                                                                                                       |
| Boolean       | Return a new Boolean object whose [[BooleanData]] internal slot is set to argument. See 19.3 for a description of Boolean objects. |
| Number        | Return a new Number object whose [[NumberData]] internal slot is set to argument. See 20.1 for a description of Number objects.    |
| String        | Return a new String object whose [[StringData]] internal slot is set to argument. See 21.1 for a description of String objects.    |
| Symbol        | Return a new Symbol object whose [[SymbolData]] internal slot is set to argument. See 19.4 for a description of Symbol objects.    |
| Object        | Return argument.                                                                                                                   |
|----------------------------------------------------------------------------------------------------------------------------------------------------|
*/
function ToObject(argument) { // eslint-disable-line no-unused-vars
	if (argument === null || argument === undefined) {
		throw TypeError();
	}
	return Object(argument);
}

// _ESAbstract.GetV
/* global ToObject */
// 7.3.2 GetV (V, P)
function GetV(v, p) { // eslint-disable-line no-unused-vars
	// 1. Assert: IsPropertyKey(P) is true.
	// 2. Let O be ? ToObject(V).
	var o = ToObject(v);
	// 3. Return ? O.[[Get]](P, V).
	return o[p];
}

// _ESAbstract.GetMethod
/* global GetV, IsCallable */
// 7.3.9. GetMethod ( V, P )
function GetMethod(V, P) { // eslint-disable-line no-unused-vars
	// 1. Assert: IsPropertyKey(P) is true.
	// 2. Let func be ? GetV(V, P).
	var func = GetV(V, P);
	// 3. If func is either undefined or null, return undefined.
	if (func === null || func === undefined) {
		return undefined;
	}
	// 4. If IsCallable(func) is false, throw a TypeError exception.
	if (IsCallable(func) === false) {
		throw new TypeError('Method not callable: ' + P);
	}
	// 5. Return func.
	return func;
}

// _ESAbstract.Invoke
/* global GetV, Call */
// 7.3.18. Invoke ( V, P [ , argumentsList ] )
function Invoke(V, P /* [ , argumentsList ] */) { // eslint-disable-line no-unused-vars
	// 1. Assert: IsPropertyKey(P) is true.
	// 2. If argumentsList is not present, set argumentsList to a new empty List.
	var argumentsList = arguments.length > 2 ? arguments[2] : [];
	// 3. Let func be ? GetV(V, P).
	var func = GetV(V, P);
	// 4. Return ? Call(func, V, argumentsList).
	return Call(func, V, argumentsList);
}

// _ESAbstract.ToUint32
// 7.1.6. ToUint32 ( argument )
function ToUint32(argument) { // eslint-disable-line no-unused-vars
	// 1. Let number be ? ToNumber(argument).
	var number = Number(argument);
	// 2. If number is NaN, +0, -0, +∞, or -∞, return +0.
	if (isNaN(number) || 1/number === Infinity || 1/number === -Infinity || number === Infinity || number === -Infinity) {
		return 0;
	}
	// 3. Let int be the mathematical value that is the same sign as number and whose magnitude is floor(abs(number)).
	var int = ((number < 0) ? -1 : 1) * Math.floor(Math.abs(number));
	// 4. Let int32bit be int modulo 2^32.
	var int32bit = int >>> 0;
	// 5. Return int32bit.
	return int32bit;
}

// _ESAbstract.Type
// "Type(x)" is used as shorthand for "the type of x"...
function Type(x) { // eslint-disable-line no-unused-vars
	switch (typeof x) {
		case 'undefined':
			return 'undefined';
		case 'boolean':
			return 'boolean';
		case 'number':
			return 'number';
		case 'string':
			return 'string';
		case 'symbol':
			return 'symbol';
		default:
			// typeof null is 'object'
			if (x === null) return 'null';
			// Polyfill.io - This is here because a Symbol polyfill will have a typeof `object`.
			if ('Symbol' in self && (x instanceof self.Symbol || x.constructor === self.Symbol)) return 'symbol';

			return 'object';
	}
}

// _ESAbstract.CreateIterResultObject
/* global Type, CreateDataProperty */
// 7.4.7. CreateIterResultObject ( value, done )
function CreateIterResultObject(value, done) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(done) is Boolean.
	if (Type(done) !== 'boolean') {
		throw new Error();
	}
	// 2. Let obj be ObjectCreate(%ObjectPrototype%).
	var obj = {};
	// 3. Perform CreateDataProperty(obj, "value", value).
	CreateDataProperty(obj, "value", value);
	// 4. Perform CreateDataProperty(obj, "done", done).
	CreateDataProperty(obj, "done", done);
	// 5. Return obj.
	return obj;
}

// _ESAbstract.GetPrototypeFromConstructor
/* global Get, Type */
// 9.1.14. GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) { // eslint-disable-line no-unused-vars
	// 1. Assert: intrinsicDefaultProto is a String value that is this specification's name of an intrinsic object. The corresponding object must be an intrinsic that is intended to be used as the [[Prototype]] value of an object.
	// 2. Assert: IsCallable(constructor) is true.
	// 3. Let proto be ? Get(constructor, "prototype").
	var proto = Get(constructor, "prototype");
	// 4. If Type(proto) is not Object, then
	if (Type(proto) !== 'object') {
		// a. Let realm be ? GetFunctionRealm(constructor).
		// b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
		proto = intrinsicDefaultProto;
	}
	// 5. Return proto.
	return proto;
}

// _ESAbstract.OrdinaryCreateFromConstructor
/* global GetPrototypeFromConstructor */
// 9.1.13. OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
function OrdinaryCreateFromConstructor(constructor, intrinsicDefaultProto) { // eslint-disable-line no-unused-vars
	var internalSlotsList = arguments[2] || {};
	// 1. Assert: intrinsicDefaultProto is a String value that is this specification's name of an intrinsic object.
	// The corresponding object must be an intrinsic that is intended to be used as the[[Prototype]] value of an object.

	// 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
	var proto = GetPrototypeFromConstructor(constructor, intrinsicDefaultProto);

	// 3. Return ObjectCreate(proto, internalSlotsList).
	// Polyfill.io - We do not pass internalSlotsList to Object.create because Object.create does not use the default ordinary object definitions specified in 9.1.
	var obj = Object.create(proto);
	for (var name in internalSlotsList) {
		if (Object.prototype.hasOwnProperty.call(internalSlotsList, name)) {
			Object.defineProperty(obj, name, {
				configurable: true,
				enumerable: false,
				writable: true,
				value: internalSlotsList[name]
			});
		}
	}
	return obj;
}

// _ESAbstract.GetSubstitution
/* global Type */
// 21.1.3.17.1 GetSubstitution ( matched, str, position, captures, namedCaptures, replacement )
var GetSubstitution = (function() { // eslint-disable-line no-unused-vars
	function isDigit(string) {
		return /^[0-9]$/.test(string);
	}
	return function GetSubstitution ( matched, str, position, captures, namedCaptures, replacement ) { // eslint-disable-line no-unused-vars
		// 1. Assert: Type(matched) is String.
		// 2. Let matchLength be the number of code units in matched.
		var matchLength = matched.length;
		// 3. Assert: Type(str) is String.
		// 4. Let stringLength be the number of code units in str.
		var stringLength = str.length;
		// 5. Assert: ! IsNonNegativeInteger(position) is true.
		// 6. Assert: position ≤ stringLength.
		// 7. Assert: captures is a possibly empty List of Strings.
		// 8. Assert: Type(replacement) is String.
		// 9. Let tailPos be position + matchLength.
		var tailPos = position + matchLength;
		// 10. Let m be the number of elements in captures.
		var m = captures.length;
		// 11. Let result be the String value derived from replacement by copying
		// code unit elements from replacement to result while performing replacements
		// as specified in Table 53. These $ replacements are done left-to-right, and,
		// once such a replacement is performed, the new replacement text is not subject to further replacements.
		var result = '';
		for (var i = 0; i < replacement.length; i += 1) {
			// if this is a $, and it's not the end of the replacement
			var current = replacement.charAt(i);
			var isLast = (i + 1) >= replacement.length;
			var nextIsLast = (i + 2) >= replacement.length;
			if (current === '$' && !isLast) {
				var next = replacement.charAt(i + 1);
				if (next === '$') {
					result += '$';
					i += 1;
				} else if (next === '&') {
					result += matched;
					i += 1;
				} else if (next === '`') {
					result += position === 0 ? '' : str.slice(0, position - 1);
					i += 1;
				} else if (next === "'") {
					result += tailPos >= stringLength ? '' : str.slice(tailPos);
					i += 1;
				} else {
					var nextNext = nextIsLast ? null : replacement.charAt(i + 2);
					if (isDigit(next) && next !== '0' && (nextIsLast || !isDigit(nextNext))) {
						// $1 through $9, and not followed by a digit
						var n = parseInt(next, 10);
						// if (n > m, impl-defined)
						result += n <= m && Type(captures[n - 1]) === 'Undefined' ? '' : captures[n - 1];
						i += 1;
					} else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) {
						// $00 through $99
						var nn = next + nextNext;
						var nnI = parseInt(nn, 10) - 1;
						// if nn === '00' or nn > m, impl-defined
						result += nn <= m && Type(captures[nnI]) === 'Undefined' ? '' : captures[nnI];
						i += 2;
					} else {
						result += '$';
					}
				}
			} else {
				// the final $, or else not a $
				result += replacement.charAt(i);
			}
		}
		// 12. Return result.
		return result;
	};
}());

// _ESAbstract.IsConstructor
/* global Type */
// 7.2.4. IsConstructor ( argument )
function IsConstructor(argument) { // eslint-disable-line no-unused-vars
	// 1. If Type(argument) is not Object, return false.
	if (Type(argument) !== 'object') {
		return false;
	}
	// 2. If argument has a [[Construct]] internal method, return true.
	// 3. Return false.

	// Polyfill.io - `new argument` is the only way  to truly test if a function is a constructor.
	// We choose to not use`new argument` because the argument could have side effects when called.
	// Instead we check to see if the argument is a function and if it has a prototype.
	// Arrow functions do not have a [[Construct]] internal method, nor do they have a prototype.
	return typeof argument === 'function' && !!argument.prototype;
}

// _ESAbstract.Construct
/* global IsConstructor, OrdinaryCreateFromConstructor, Call */
// 7.3.13. Construct ( F [ , argumentsList [ , newTarget ]] )
function Construct(F /* [ , argumentsList [ , newTarget ]] */) { // eslint-disable-line no-unused-vars
	// 1. If newTarget is not present, set newTarget to F.
	var newTarget = arguments.length > 2 ? arguments[2] : F;

	// 2. If argumentsList is not present, set argumentsList to a new empty List.
	var argumentsList = arguments.length > 1 ? arguments[1] : [];

	// 3. Assert: IsConstructor(F) is true.
	if (!IsConstructor(F)) {
		throw new TypeError('F must be a constructor.');
	}

	// 4. Assert: IsConstructor(newTarget) is true.
	if (!IsConstructor(newTarget)) {
		throw new TypeError('newTarget must be a constructor.');
	}

	// 5. Return ? F.[[Construct]](argumentsList, newTarget).
	// Polyfill.io - If newTarget is the same as F, it is equivalent to new F(...argumentsList).
	if (newTarget === F) {
		return new (Function.prototype.bind.apply(F, [null].concat(argumentsList)))();
	} else {
		// Polyfill.io - This is mimicking section 9.2.2 step 5.a.
		var obj = OrdinaryCreateFromConstructor(newTarget, Object.prototype);
		return Call(F, obj, argumentsList);
	}
}

// _ESAbstract.ArraySpeciesCreate
/* global IsArray, ArrayCreate, Get, Type, IsConstructor, Construct */
// 9.4.2.3. ArraySpeciesCreate ( originalArray, length )
function ArraySpeciesCreate(originalArray, length) { // eslint-disable-line no-unused-vars
	// 1. Assert: length is an integer Number ≥ 0.
	// 2. If length is -0, set length to +0.
	if (length === 0 && 1/length === -Infinity) {
		length = 0;
	}

	// 3. Let isArray be ? IsArray(originalArray).
	var isArray = IsArray(originalArray);

	// 4. If isArray is false, return ? ArrayCreate(length).
	if (isArray === false) {
		return ArrayCreate(length);
	}

	// 5. Let C be ? Get(originalArray, "constructor").
	var C = Get(originalArray, 'constructor');

	// Polyfill.io - We skip this section as not sure how to make a cross-realm normal Array, a same-realm Array.
	// 6. If IsConstructor(C) is true, then
	// if (IsConstructor(C)) {
		// a. Let thisRealm be the current Realm Record.
		// b. Let realmC be ? GetFunctionRealm(C).
		// c. If thisRealm and realmC are not the same Realm Record, then
			// i. If SameValue(C, realmC.[[Intrinsics]].[[%Array%]]) is true, set C to undefined.
	// }
	// 7. If Type(C) is Object, then
	if (Type(C) === 'object') {
		// a. Set C to ? Get(C, @@species).
		C = 'Symbol' in self && 'species' in self.Symbol ? Get(C, self.Symbol.species) : undefined;
		// b. If C is null, set C to undefined.
		if (C === null) {
			C = undefined;
		}
	}
	// 8. If C is undefined, return ? ArrayCreate(length).
	if (C === undefined) {
		return ArrayCreate(length);
	}
	// 9. If IsConstructor(C) is false, throw a TypeError exception.
	if (!IsConstructor(C)) {
		throw new TypeError('C must be a constructor');
	}
	// 10. Return ? Construct(C, « length »).
	return Construct(C, [length]);
}

// _ESAbstract.IsRegExp
/* global Type, Get, ToBoolean */
// 7.2.8. IsRegExp ( argument )
function IsRegExp(argument) { // eslint-disable-line no-unused-vars
	// 1. If Type(argument) is not Object, return false.
	if (Type(argument) !== 'object') {
		return false;
	}
	// 2. Let matcher be ? Get(argument, @@match).
	var matcher = 'Symbol' in self && 'match' in self.Symbol ? Get(argument, self.Symbol.match) : undefined;
	// 3. If matcher is not undefined, return ToBoolean(matcher).
	if (matcher !== undefined) {
		return ToBoolean(matcher);
	}
	// 4. If argument has a [[RegExpMatcher]] internal slot, return true.
	try {
		var lastIndex = argument.lastIndex;
		argument.lastIndex = 0;
		RegExp.prototype.exec.call(argument);
		return true;
	// eslint-disable-next-line no-empty
	} catch (e) {} finally {
		argument.lastIndex = lastIndex;
	}
	// 5. Return false.
	return false;
}

// _ESAbstract.IteratorClose
/* global GetMethod, Type, Call */
// 7.4.6. IteratorClose ( iteratorRecord, completion )
function IteratorClose(iteratorRecord, completion) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(iteratorRecord.[[Iterator]]) is Object.
	if (Type(iteratorRecord['[[Iterator]]']) !== 'object') {
		throw new Error(Object.prototype.toString.call(iteratorRecord['[[Iterator]]']) + 'is not an Object.');
	}
	// 2. Assert: completion is a Completion Record.
	// Polyfill.io - Ignoring this step as there is no way to check if something is a Completion Record in userland JavaScript.

	// 3. Let iterator be iteratorRecord.[[Iterator]].
	var iterator = iteratorRecord['[[Iterator]]'];
	// 4. Let return be ? GetMethod(iterator, "return").
	// Polyfill.io - We name it  returnMethod because return is a keyword and can not be used as an identifier (E.G. variable name, function name etc).
	var returnMethod = GetMethod(iterator, "return");
	// 5. If return is undefined, return Completion(completion).
	if (returnMethod === undefined) {
		return completion;
	}
	// 6. Let innerResult be Call(return, iterator, « »).
	try {
		var innerResult = Call(returnMethod, iterator);
	} catch (error) {
		var innerException = error;
	}
	// 7. If completion.[[Type]] is throw, return Completion(completion).
	if (completion) {
		return completion;
	}
	// 8. If innerResult.[[Type]] is throw, return Completion(innerResult).
	if (innerException) {
		throw innerException;
	}
	// 9. If Type(innerResult.[[Value]]) is not Object, throw a TypeError exception.
	if (Type(innerResult) !== 'object') {
		throw new TypeError("Iterator's return method returned a non-object.");
	}
	// 10. Return Completion(completion).
	return completion;
}

// _ESAbstract.IteratorComplete
/* global Type, ToBoolean, Get */
// 7.4.3 IteratorComplete ( iterResult )
function IteratorComplete(iterResult) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(iterResult) is Object.
	if (Type(iterResult) !== 'object') {
		throw new Error(Object.prototype.toString.call(iterResult) + 'is not an Object.');
	}
	// 2. Return ToBoolean(? Get(iterResult, "done")).
	return ToBoolean(Get(iterResult, "done"));
}

// _ESAbstract.IteratorNext
/* global Call, Type */
// 7.4.2. IteratorNext ( iteratorRecord [ , value ] )
function IteratorNext(iteratorRecord /* [, value] */) { // eslint-disable-line no-unused-vars
	// 1. If value is not present, then
	if (arguments.length < 2) {
		// a. Let result be ? Call(iteratorRecord.[[NextMethod]], iteratorRecord.[[Iterator]], « »).
		var result = Call(iteratorRecord['[[NextMethod]]'], iteratorRecord['[[Iterator]]']);
	// 2. Else,
	} else {
		// a. Let result be ? Call(iteratorRecord.[[NextMethod]], iteratorRecord.[[Iterator]], « value »).
		result = Call(iteratorRecord['[[NextMethod]]'], iteratorRecord['[[Iterator]]'], [arguments[1]]);
	}
	// 3. If Type(result) is not Object, throw a TypeError exception.
	if (Type(result) !== 'object') {
		throw new TypeError('bad iterator');
	}
	// 4. Return result.
	return result;
}

// _ESAbstract.IteratorStep
/* global IteratorNext, IteratorComplete */
// 7.4.5. IteratorStep ( iteratorRecord )
function IteratorStep(iteratorRecord) { // eslint-disable-line no-unused-vars
	// 1. Let result be ? IteratorNext(iteratorRecord).
	var result = IteratorNext(iteratorRecord);
	// 2. Let done be ? IteratorComplete(result).
	var done = IteratorComplete(result);
	// 3. If done is true, return false.
	if (done === true) {
		return false;
	}
	// 4. Return result.
	return result;
}

// _ESAbstract.IteratorValue
/* global Type, Get */
// 7.4.4 IteratorValue ( iterResult )
function IteratorValue(iterResult) { // eslint-disable-line no-unused-vars
	// Assert: Type(iterResult) is Object.
	if (Type(iterResult) !== 'object') {
		throw new Error(Object.prototype.toString.call(iterResult) + 'is not an Object.');
	}
	// Return ? Get(iterResult, "value").
	return Get(iterResult, "value");
}

// _ESAbstract.OrdinaryToPrimitive
/* global Get, IsCallable, Call, Type */
// 7.1.1.1. OrdinaryToPrimitive ( O, hint )
function OrdinaryToPrimitive(O, hint) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(O) is Object.
	// 2. Assert: Type(hint) is String and its value is either "string" or "number".
	// 3. If hint is "string", then
	if (hint === 'string') {
		// a. Let methodNames be « "toString", "valueOf" ».
		var methodNames = ['toString', 'valueOf'];
		// 4. Else,
	} else {
		// a. Let methodNames be « "valueOf", "toString" ».
		methodNames = ['valueOf', 'toString'];
	}
	// 5. For each name in methodNames in List order, do
	for (var i = 0; i < methodNames.length; ++i) {
		var name = methodNames[i];
		// a. Let method be ? Get(O, name).
		var method = Get(O, name);
		// b. If IsCallable(method) is true, then
		if (IsCallable(method)) {
			// i. Let result be ? Call(method, O).
			var result = Call(method, O);
			// ii. If Type(result) is not Object, return result.
			if (Type(result) !== 'object') {
				return result;
			}
		}
	}
	// 6. Throw a TypeError exception.
	throw new TypeError('Cannot convert to primitive.');
}

// _ESAbstract.RegExpExec
/* global Call, Get, IsCallable, Type */

// 22.2.5.2.1 RegExpExec ( R, S )
function RegExpExec(R, S) { // eslint-disable-line no-unused-vars
	// 1. Let exec be ? Get(R, "exec").
	var exec = Get(R, 'exec');
	// 2. If IsCallable(exec) is true, then
	if (IsCallable(exec)) {
		// 2.a. Let result be ? Call(exec, R, « S »).
		var result = Call(exec, R, [ S ]);
		// 2.b. If Type(result) is neither Object nor Null, throw a TypeError exception.
		if (Type(result) !== 'object' && Type(result) !== 'null') {
			throw new TypeError('Invalid result: must be an object or null.');
		}
		// 2.c. Return result.
		return result;
	}
	// 3. Perform ? RequireInternalSlot(R, [[RegExpMatcher]]).
	// 4. Return ? RegExpBuiltinExec(R, S).
	return Call(RegExp.prototype.exec, R, [ S ]);
}

// _ESAbstract.SameValue
/* global Type, SameValueNonNumber */
// 7.2.10. SameValue ( x, y )
function SameValue(x, y) { // eslint-disable-line no-unused-vars
	// 1. If Type(x) is different from Type(y), return false.
	if (Type(x) !== Type(y)) {
		return false;
	}
	// 2. If Type(x) is Number, then
	if (Type(x) === 'number') {
		// a. If x is NaN and y is NaN, return true.
		if (isNaN(x) && isNaN(y)) {
			return true;
		}
		// Polyfill.io - 0 === -0 is true, but they are not the same value.
		// b. If x is +0 and y is -0, return false.
		// c. If x is -0 and y is +0, return false.
		if (x === 0 && y === 0 && 1/x !== 1/y) {
			return false;
		}
		// d. If x is the same Number value as y, return true.
		if (x === y) {
			return true;
		}
		// e. Return false.
		return false;
	}
	// 3. Return SameValueNonNumber(x, y).
	return SameValueNonNumber(x, y);
}

// _ESAbstract.SameValueZero
/* global Type, SameValueNonNumber */
// 7.2.11. SameValueZero ( x, y )
function SameValueZero (x, y) { // eslint-disable-line no-unused-vars
	// 1. If Type(x) is different from Type(y), return false.
	if (Type(x) !== Type(y)) {
		return false;
	}
	// 2. If Type(x) is Number, then
	if (Type(x) === 'number') {
		// a. If x is NaN and y is NaN, return true.
		if (isNaN(x) && isNaN(y)) {
			return true;
		}
		// b. If x is +0 and y is -0, return true.
		if (1/x === Infinity && 1/y === -Infinity) {
			return true;
		}
		// c. If x is -0 and y is +0, return true.
		if (1/x === -Infinity && 1/y === Infinity) {
			return true;
		}
		// d. If x is the same Number value as y, return true.
		if (x === y) {
			return true;
		}
		// e. Return false.
		return false;
	}
	// 3. Return SameValueNonNumber(x, y).
	return SameValueNonNumber(x, y);
}

// _ESAbstract.SpeciesConstructor
/* global Get, Type, IsConstructor */
// 7.3.20 SpeciesConstructor(O, defaultConstructor)
function SpeciesConstructor (O, defaultConstructor) { // eslint-disable-line no-unused-vars
	// 7.3.20.1 Assert: Type(O) is Object.
	// 7.3.20.2 Let C be ? Get(O, "constructor").
	var C = Get(O, "constructor");
	// 7.3.20.3 If C is undefined, return defaultConstructor.
	if (C === undefined) {
		return defaultConstructor;
	}
	// 7.3.20.4 If Type(C) is not Object, throw a TypeError exception
	if (Type(C) !== 'object') {
		throw new TypeError('O.constructor is not an Object');
	}
	// 7.3.20.5 Let S be ? Get(C, @@species).
	var S = typeof self.Symbol === 'function' && typeof self.Symbol.species === 'symbol' ? C[self.Symbol.species] : undefined;
	// 7.3.20.6 If S is either undefined or null, return defaultConstructor.
	if (S === undefined || S === null) {
		return defaultConstructor;
	}
	// 7.3.20.7 If IsConstructor(S) is true, return S.
	if (IsConstructor(S)) {
		return S;
	}
	// 7.3.20.8 Throw a TypeError exception.
	throw new TypeError('No constructor found');
}

// _ESAbstract.StringIndexOf
/* global */
function StringIndexOf(string, searchValue, fromIndex) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(string) is String.
	// 2. Assert: Type(searchValue) is String.
	// 3. Assert: ! IsNonNegativeInteger(fromIndex) is true.
	// 4. Let len be the length of string.
	var len = string.length;
	// 5. If searchValue is the empty String and fromIndex ≤ len, return fromIndex.
	if (searchValue === "" && fromIndex <= len) {
		return fromIndex;
	}
	// 6. Let searchLen be the length of searchValue.
	var searchLen = searchValue.length;
	// 7. If there exists any integer k such that fromIndex ≤ k ≤ len - searchLen
	// and for all nonnegative integers j less than searchLen, the code unit at
	// index k + j within string is the same as the code unit at index j within searchValue,
	// let pos be the smallest (closest to -∞) such integer. Otherwise, let pos be -1.
	var k = fromIndex;
	var pos = -1;
	while (k + searchLen <= len) {
		var match = true;
		for (var j = 0; j < searchLen; j += 1) {
			if (string[k + j] !== searchValue[j]) {
				match = false;
				break;
			}
		}
		if (match) {
			pos = k;
			break;
		}
		k += 1;
	}
	// 8. Return pos.
	return pos;
}

// _ESAbstract.ToInteger
/* global Type */
// 7.1.4. ToInteger ( argument )
function ToInteger(argument) { // eslint-disable-line no-unused-vars
	if (Type(argument) === 'symbol') {
		throw new TypeError('Cannot convert a Symbol value to a number');
	}

	// 1. Let number be ? ToNumber(argument).
	var number = Number(argument);
	// 2. If number is NaN, return +0.
	if (isNaN(number)) {
		return 0;
	}
	// 3. If number is +0, -0, +∞, or -∞, return number.
	if (1/number === Infinity || 1/number === -Infinity || number === Infinity || number === -Infinity) {
		return number;
	}
	// 4. Return the number value that is the same sign as number and whose magnitude is floor(abs(number)).
	return ((number < 0) ? -1 : 1) * Math.floor(Math.abs(number));
}

// _ESAbstract.ToLength
/* global ToInteger */
// 7.1.15. ToLength ( argument )
function ToLength(argument) { // eslint-disable-line no-unused-vars
	// 1. Let len be ? ToInteger(argument).
	var len = ToInteger(argument);
	// 2. If len ≤ +0, return +0.
	if (len <= 0) {
		return 0;
	}
	// 3. Return min(len, 253-1).
	return Math.min(len, Math.pow(2, 53) -1);
}

// _ESAbstract.LengthOfArrayLike
/* global Get, ToLength */
// 7.3.19. LengthOfArrayLike ( obj )
function LengthOfArrayLike(obj) { // eslint-disable-line no-unused-vars
	// 1. Return ℝ(? ToLength(? Get(obj, "length"))).
	return ToLength(Get(obj, 'length'));
}

// _ESAbstract.ToPrimitive
/* global Type, GetMethod, Call, OrdinaryToPrimitive */
// 7.1.1. ToPrimitive ( input [ , PreferredType ] )
function ToPrimitive(input /* [, PreferredType] */) { // eslint-disable-line no-unused-vars
	var PreferredType = arguments.length > 1 ? arguments[1] : undefined;
	// 1. Assert: input is an ECMAScript language value.
	// 2. If Type(input) is Object, then
	if (Type(input) === 'object') {
		// a. If PreferredType is not present, let hint be "default".
		if (arguments.length < 2) {
			var hint = 'default';
			// b. Else if PreferredType is hint String, let hint be "string".
		} else if (PreferredType === String) {
			hint = 'string';
			// c. Else PreferredType is hint Number, let hint be "number".
		} else if (PreferredType === Number) {
			hint = 'number';
		}
		// d. Let exoticToPrim be ? GetMethod(input, @@toPrimitive).
		var exoticToPrim = typeof self.Symbol === 'function' && typeof self.Symbol.toPrimitive === 'symbol' ? GetMethod(input, self.Symbol.toPrimitive) : undefined;
		// e. If exoticToPrim is not undefined, then
		if (exoticToPrim !== undefined) {
			// i. Let result be ? Call(exoticToPrim, input, « hint »).
			var result = Call(exoticToPrim, input, [hint]);
			// ii. If Type(result) is not Object, return result.
			if (Type(result) !== 'object') {
				return result;
			}
			// iii. Throw a TypeError exception.
			throw new TypeError('Cannot convert exotic object to primitive.');
		}
		// f. If hint is "default", set hint to "number".
		if (hint === 'default') {
			hint = 'number';
		}
		// g. Return ? OrdinaryToPrimitive(input, hint).
		return OrdinaryToPrimitive(input, hint);
	}
	// 3. Return input
	return input;
}

// _ESAbstract.ToString
/* global Type, ToPrimitive */
// 7.1.12. ToString ( argument )
// The abstract operation ToString converts argument to a value of type String according to Table 11:
// Table 11: ToString Conversions
/*
|---------------|--------------------------------------------------------|
| Argument Type | Result                                                 |
|---------------|--------------------------------------------------------|
| Undefined     | Return "undefined".                                    |
|---------------|--------------------------------------------------------|
| Null	        | Return "null".                                         |
|---------------|--------------------------------------------------------|
| Boolean       | If argument is true, return "true".                    |
|               | If argument is false, return "false".                  |
|---------------|--------------------------------------------------------|
| Number        | Return NumberToString(argument).                       |
|---------------|--------------------------------------------------------|
| String        | Return argument.                                       |
|---------------|--------------------------------------------------------|
| Symbol        | Throw a TypeError exception.                           |
|---------------|--------------------------------------------------------|
| Object        | Apply the following steps:                             |
|               | Let primValue be ? ToPrimitive(argument, hint String). |
|               | Return ? ToString(primValue).                          |
|---------------|--------------------------------------------------------|
*/
function ToString(argument) { // eslint-disable-line no-unused-vars
	switch(Type(argument)) {
		case 'symbol':
			throw new TypeError('Cannot convert a Symbol value to a string');
		case 'object':
			var primValue = ToPrimitive(argument, String);
			return ToString(primValue); // eslint-disable-line no-unused-vars
		default:
			return String(argument);
	}
}

// _ESAbstract.FlattenIntoArray
/* globals ToString, HasProperty, Get, Call, IsArray, ToLength, CreateDataPropertyOrThrow */
// 22.1.3.10.1 FlattenIntoArray(target, source, sourceLen, start, depth [ , mapperFunction, thisArg ])
function FlattenIntoArray(target, source, sourceLen, start, depth /* , mapperFunction, thisArg */ ) { // eslint-disable-line no-unused-vars
	var mapperFunction = arguments[5];
	var thisArg = arguments[6];
	// 1. Let targetIndex be start.
	var targetIndex = start;
	// 2. Let sourceIndex be 0.
	var sourceIndex = 0;
	// 3. Repeat, while sourceIndex < sourceLen
	while (sourceIndex < sourceLen) {
		// a. Let P be ! ToString(sourceIndex).
		var P = ToString(sourceIndex);
		// b. Let exists be ? HasProperty(source, P).
		var exists = HasProperty(source, P);
		// c. If exists is true, then
		if (exists === true) {
			// i. Let element be ? Get(source, P).
			var element = Get(source, P);
			// ii. If mapperFunction is present, then
			if (5 in arguments) {
				// 1. Assert: thisArg is present.
				// 2. Set element to ? Call(mapperFunction, thisArg , « element, sourceIndex, source »).
				element = Call(mapperFunction, thisArg, [element, sourceIndex, source]);
			}
			// iii. Let shouldFlatten be false.
			var shouldFlatten = false;
			// iv. If depth > 0, then
			if (depth > 0) {
				// 1. Set shouldFlatten to ? IsArray(element).
				shouldFlatten = IsArray(element);
			}
			// v. If shouldFlatten is true, then
			if (shouldFlatten === true) {
				// 1. Let elementLen be ? ToLength(? Get(element, "length")).
				var elementLen = ToLength(Get(element, "length"));
				// 2. Set targetIndex to ? FlattenIntoArray(target, element, elementLen, targetIndex, depth - 1).
				targetIndex = FlattenIntoArray(target, element, elementLen, targetIndex, depth - 1); // eslint-disable-line no-unused-vars
				// vi. Else,
			} else {
				// 1. If targetIndex ≥ 253-1, throw a TypeError exception.
				if (targetIndex >= (Math.pow(2, 53) - 1)) {
					throw new TypeError("targetIndex is greater than or equal to 2^53-1");
				}
				// 2. Perform ? CreateDataPropertyOrThrow(target, ! ToString(targetIndex), element).
				CreateDataPropertyOrThrow(target, ToString(targetIndex), element);
				// 3. Increase targetIndex by 1.
				targetIndex += 1;
			}
		}
		// d. Increase sourceIndex by 1.
		sourceIndex += 1;
	}
	// 4. Return targetIndex.
	return targetIndex;
}

// _ESAbstract.ToPropertyKey
/* globals ToPrimitive, Type, ToString */
// 7.1.14. ToPropertyKey ( argument )
function ToPropertyKey(argument) { // eslint-disable-line no-unused-vars
	// 1. Let key be ? ToPrimitive(argument, hint String).
	var key = ToPrimitive(argument, String);
	// 2. If Type(key) is Symbol, then
	if (Type(key) === 'symbol') {
		// a. Return key.
		return key;
	}
	// 3. Return ! ToString(key).
	return ToString(key);
}

// _ESAbstract.TrimString
/* eslint-disable no-control-regex */
/* global RequireObjectCoercible, ToString */
// TrimString ( string, where )
function TrimString(string, where) { // eslint-disable-line no-unused-vars
	// 1. Let str be ? RequireObjectCoercible(string).
	var str = RequireObjectCoercible(string);
	// 2. Let S be ? ToString(str).
	var S = ToString(str);
	// 3. If where is "start", let T be a String value that is a copy of S with leading white space removed.
	// The definition of white space is the union of WhiteSpace and LineTerminator. When determining whether a Unicode code point is in Unicode general category “Space_Separator” (“Zs”), code unit sequences are interpreted as UTF-16 encoded code point sequences as specified in 6.1.4.
	var whitespace = /[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/.source;
	if (where === 'start') {
		var T = String.prototype.replace.call(S, new RegExp('^' + whitespace, 'g'), '');
		// 4. Else if where is "end", let T be a String value that is a copy of S with trailing white space removed.
	} else if (where === "end") {
		T = String.prototype.replace.call(S, new RegExp(whitespace + '$', 'g'), '');
		// 5. Else,
	} else {
		// a. Assert: where is "start+end".
		// b. Let T be a String value that is a copy of S with both leading and trailing white space removed.
		T = String.prototype.replace.call(S, new RegExp('^' + whitespace + '|' + whitespace + '$', 'g'), '');
	}
	// 6. Return T.
	return T;
}

// _ESAbstract.TypedArrayCreate
/* global Construct */
// 23.2.4.2 TypedArrayCreate ( constructor, argumentList )
function TypedArrayCreate(constructor, argumentList) { // eslint-disable-line no-unused-vars
	// 1. Let newTypedArray be ? Construct(constructor, argumentList).
	var newTypedArray = typeof constructor === 'object'
		// TODO: Remove this once we drop support for Safari <10, which does not consider `Int8Array` as a constructor (`typeof Int8Array === 'object'`)
		? new constructor(argumentList[0])
		: Construct(constructor, argumentList);
	// 2. Perform ? ValidateTypedArray(newTypedArray).
	// TODO: Add ValidateTypedArray
	// 3. If the number of elements in argumentList is 1 and argumentList[0] is a Number, then
	if (argumentList.length === 1 && typeof argumentList[0] === 'number') {
		// a. If newTypedArray.[[ArrayLength]] < ℝ(argumentList[0]), throw a TypeError exception.
		if (newTypedArray.length < argumentList[0]) throw TypeError();
	}
	// 4. Return newTypedArray.
	return newTypedArray;
}

// _ESAbstract.UTF16Decode
// 10.1.2. Static Semantics: UTF16Decode( lead, trail )
function UTF16Decode(lead, trail) { // eslint-disable-line no-unused-vars
	// 1. Assert: 0xD800 ≤ lead ≤ 0xDBFF and 0xDC00 ≤ trail ≤ 0xDFFF.
	// 2. Let cp be (lead - 0xD800) × 0x400 + (trail - 0xDC00) + 0x10000.
	var cp = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;
	// 3. Return the code point cp.
	return cp;
}

// _ESAbstract.UTF16Encoding
// 10.1.1. Static Semantics: UTF16Encoding ( cp )
function UTF16Encoding(cp) { // eslint-disable-line no-unused-vars
	// 1. Assert: 0 ≤ cp ≤ 0x10FFFF.
	// 2. If cp ≤ 0xFFFF, return cp.
	if (cp <= 0xFFFF) {
		return cp;
	} else {
		// 3. Let cu1 be floor((cp - 0x10000) / 0x400) + 0xD800.
		var cu1 = Math.floor((cp - 0x10000) / 0x400) + 0xD800;
		// 4. Let cu2 be ((cp - 0x10000) modulo 0x400) + 0xDC00.
		var cu2 = ((cp - 0x10000) % 0x400) + 0xDC00;
		// 5. Return the code unit sequence consisting of cu1 followed by cu2.
		return [cu1, cu2];
	}
}

// _mutation
var _mutation = (function () { // eslint-disable-line no-unused-vars

	function isNode(object) {
		// DOM, Level2
		if (typeof Node === 'function') {
			return object instanceof Node;
		}
		// Older browsers, check if it looks like a Node instance)
		return object &&
			typeof object === "object" &&
			object.nodeName &&
			object.nodeType >= 1 &&
			object.nodeType <= 12;
	}

	// http://dom.spec.whatwg.org/#mutation-method-macro
	return function mutation(nodes) {
		if (nodes.length === 1) {
			return isNode(nodes[0]) ? nodes[0] : document.createTextNode(nodes[0] + '');
		}

		var fragment = document.createDocumentFragment();
		for (var i = 0; i < nodes.length; i++) {
			fragment.appendChild(isNode(nodes[i]) ? nodes[i] : document.createTextNode(nodes[i] + ''));

		}
		return fragment;
	};
}());
if (!((function(){var e=document.createElement("p"),t=!1
return e.innerHTML="<section></section>",document.documentElement.appendChild(e),e.firstChild&&("getComputedStyle"in window?t="block"===getComputedStyle(e.firstChild).display:e.firstChild.currentStyle&&(t="block"===e.firstChild.currentStyle.display)),document.documentElement.removeChild(e),t})()
)) {

// ~html5-elements
/**
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);
}

if (!("of"in Array
)) {

// Array.of
/* global ArrayCreate, Construct, CreateDataPropertyOrThrow, CreateMethodProperty, IsConstructor, ToString */
// 22.1.2.3. Array.of ( ...items )
CreateMethodProperty(Array, 'of', function of() {
	// 1. Let len be the actual number of arguments passed to this function.
	var len = arguments.length;
	// 2. Let items be the List of arguments passed to this function.
	var items = arguments;
	// 3. Let C be the this value.
	var C = this;
	// 4. If IsConstructor(C) is true, then
	if (IsConstructor(C)) {
		// a. Let A be ? Construct(C, « len »).
		var A = Construct(C, [len]);
		// 5. Else,
	} else {
		// a. Let A be ? ArrayCreate(len).
		A = ArrayCreate(len);
	}
	// 6. Let k be 0.
	var k = 0;
	// 7. Repeat, while k < len
	while (k < len) {
		// a. Let kValue be items[k].
		var kValue = items[k];
		// b. Let Pk be ! ToString(k).
		var Pk = ToString(k);
		// c. Perform ? CreateDataPropertyOrThrow(A, Pk, kValue).
		CreateDataPropertyOrThrow(A, Pk, kValue);
		// d. Increase k by 1.
		k = k + 1;

	}
	// 8. Perform ? Set(A, "length", len, true)
	A.length = len;
	// 9. Return A.
	return A;
});

}

if (!("at"in Array.prototype
)) {

// Array.prototype.at
/* global CreateMethodProperty, Get, LengthOfArrayLike, ToIntegerOrInfinity, ToObject, ToString */
// 23.1.3.1. Array.prototype.at ( index )
CreateMethodProperty(Array.prototype, 'at', function at(index) {
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let len be ? LengthOfArrayLike(O).
	var len = LengthOfArrayLike(O);
	// 3. Let relativeIndex be ? ToIntegerOrInfinity(index).
	var relativeIndex = ToIntegerOrInfinity(index);
	// 4. If relativeIndex ≥ 0, then
	// 4.a. Let k be relativeIndex.
	// 5. Else,
	// 5.a. Let k be len + relativeIndex.
	var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
	// 6. If k < 0 or k ≥ len, return undefined.
	if (k < 0 || k >= len) return undefined;
	// 7. Return ? Get(O, ! ToString(𝔽(k))).
	return Get(O, ToString(k));
});

}

if (!("copyWithin"in Array.prototype&&function(){try{var t=function t(){}
t.prototype[0]="foo"
var o=new t
o[1]=1,o[2]=2,o.length=3
var r=Array.prototype.copyWithin.call(o,1,0)
return!(!r[0]||Object.prototype.hasOwnProperty.call(r,"0")||!Object.prototype.hasOwnProperty.call(r,"1")||"foo"!==r[0]||"foo"!==r[1]||1!==r[2]||3!==r.length)}catch(t){return!1}}()
)) {

// Array.prototype.copyWithin
/* global CreateMethodProperty, HasProperty, ToInteger */
// 22.1.3.3 Array.prototype.copyWithin ( target, start [ , end ] )
CreateMethodProperty(Array.prototype, 'copyWithin', function copyWithin(target, start /* [ , end ] */ ) {
	'use strict';
	var end = arguments[2];

	// 22.1.3.3.1 Let O be ? ToObject(this value).
	if (this === null || this === undefined) {
		throw new TypeError('Cannot call method on ' + this);
	}

	var o = Object(this);

	// 22.1.3.3.2 Let len be ? ToLength(? Get(O, "length")).
	var len = ToInteger(o.length);
	if (len <= 0) {
		len = 0;
	}
	if (len === Infinity) {
		len = Math.pow(2, 53) - 1;
	} else {
		len = Math.min(len, Math.pow(2, 53) - 1);
	}
	len = Math.max(len, 0);

	// 22.1.3.3.3 Let relativeTarget be ? ToInteger(target).
	var relativeTarget = ToInteger(target);

	// 22.1.3.3.4 If relativeTarget < 0, let to be max((len + relativeTarget), 0); else let to be min(relativeTarget, len).
	var to;
	if (relativeTarget < 0) {
		to = Math.max(len + relativeTarget, 0);
	} else {
		to = Math.min(relativeTarget, len);
	}

	// 22.1.3.3.5 Let relativeStart be ? ToInteger(start).
	var relativeStart = ToInteger(start);

	// 22.1.3.3.6 If relativeStart < 0, let from be max((len + relativeStart), 0); else let from be min(relativeStart, len).
	var from;
	if (relativeStart < 0) {
		from = Math.max(len + relativeStart, 0);
	} else {
		from = Math.min(relativeStart, len);
	}

	// 22.1.3.3.7 If end is undefined, let relativeEnd be len; else let relativeEnd be ? ToInteger(end).
	var relativeEnd;
	if (end === undefined) {
		relativeEnd = len;
	} else {
		relativeEnd = ToInteger(end);
	}

	// 22.1.3.3.8 If relativeEnd < 0, let final be max((len + relativeEnd), 0); else let final be min(relativeEnd, len).
	var final;
	if (relativeEnd < 0) {
		final = Math.max(len + relativeEnd, 0);
	} else {
		final = Math.min(relativeEnd, len);
	}

	// 22.1.3.3.9 Let count be min(final-from, len-to).
	var count = Math.min(final - from, len - to);

	// 22.1.3.3.10 If from<to and to<from+count, then
	var direction;
	if (from < to && to < from + count) {
		// 22.1.3.3.10.a Let direction be -1.
		direction = -1;

		// 22.1.3.3.10.b Let from be from + count - 1.
		from = from + count - 1;

		// 22.1.3.3.10.c Let to be to + count - 1.
		to = to + count - 1;
	} else {
		// 22.1.3.3.11 Else,
		// 22.1.3.3.11.a Let direction be 1.
		direction = 1;
	}

	// 22.1.3.3.12 Repeat, while count > 0
	while (count > 0) {
		// 22.1.3.3.12.a Let fromKey be ! ToString(from).
		var fromKey = String(from);
		// 22.1.3.3.12.b Let toKey be ! ToString(to).
		var toKey = String(to);
		// 22.1.3.3.12.c Let fromPresent be ? HasProperty(O, fromKey).
		var fromPresent = HasProperty(o, fromKey);
		// 22.1.3.3.12.d If fromPresent is true, then
		if (fromPresent) {
			// 22.1.3.3.12.d.i Let fromVal be ? Get(O, fromKey).
			var fromVal = o[fromKey];
			// 22.1.3.3.12.d.ii Perform ? Set(O, toKey, fromVal, true).
			o[toKey] = fromVal;
		} else {
			// 22.1.3.3.12.e Else fromPresent is false,
			// 22.1.3.3.12.e.i Perform ? DeletePropertyOrThrow(O, toKey).
			delete o[toKey];
		}
		// 22.1.3.3.12.f Let from be from + direction.
		from = from + direction;
		// 22.1.3.3.12.g Let to be to + direction.
		to = to + direction;
		// 22.1.3.3.12.h Let count be count - 1.
		count = count - 1;
	}
	// 22.1.3.3.13 Return O.
	return o;
});

}

if (!("fill"in Array.prototype
)) {

// Array.prototype.fill
/* global CreateMethodProperty, Get, ToInteger, ToLength, ToObject, ToString */
// 22.1.3.6. Array.prototype.fill ( value [ , start [ , end ] ] )
CreateMethodProperty(Array.prototype, 'fill', function fill(value /* [ , start [ , end ] ] */) {
	var start = arguments[1];
	var end = arguments[2];
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let len be ? ToLength(? Get(O, "length")).
	var len = ToLength(Get(O, "length"));
	// 3. Let relativeStart be ? ToInteger(start).
	var relativeStart = ToInteger(start);
	// 4. If relativeStart < 0, let k be max((len + relativeStart), 0); else let k be min(relativeStart, len)
	var k = relativeStart < 0 ? Math.max((len + relativeStart), 0) : Math.min(relativeStart, len);
	// 5. If end is undefined, let relativeEnd be len; else let relativeEnd be ? ToInteger(end).
	var relativeEnd = end === undefined ? len : ToInteger(end);
	// 6. If relativeEnd < 0, let final be max((len + relativeEnd), 0); else let final be min(relativeEnd, len).
	var final = relativeEnd < 0 ? Math.max((len + relativeEnd), 0) : Math.min(relativeEnd, len);
	// 7. Repeat, while k < final
	while (k < final) {
		// a. Let Pk be ! ToString(k).
		var Pk = ToString(k);
		// b. Perform ? Set(O, Pk, value, true).
		O[Pk] = value;
		// c. Increase k by 1.
		k = k + 1;
	}
	// 8. Return O.
	return O;
});

}

if (!("find"in Array.prototype
)) {

// Array.prototype.find
/* global Call, CreateMethodProperty, Get, IsCallable, ToBoolean, ToLength, ToObject, ToString */
// 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
CreateMethodProperty(Array.prototype, 'find', function find( predicate /* [ , thisArg ] */) {
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let len be ? ToLength(? Get(O, "length")).
	var len = ToLength(Get(O, "length"));
	// 3. If IsCallable(predicate) is false, throw a TypeError exception.
	if (IsCallable(predicate) === false) {
		throw new TypeError(predicate + ' is not a function');
	}
	// 4. If thisArg is present, let T be thisArg; else let T be undefined.
	var T = arguments.length > 1 ? arguments[1] : undefined;
	// 5. Let k be 0.
	var k = 0;
	// 6. Repeat, while k < len
	while (k < len) {
		// a. Let Pk be ! ToString(k).
		var Pk = ToString(k);
		// b. Let kValue be ? Get(O, Pk).
		var kValue = Get(O, Pk);
		// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
		var testResult = ToBoolean(Call(predicate, T, [kValue, k, O ]));
		// d. If testResult is true, return kValue.
		if (testResult) {
			return kValue;
		}
		// e. Increase k by 1.
		k = k + 1;
	}
	// 7. Return undefined.
	return undefined;
});

}

if (!("findIndex"in Array.prototype
)) {

// Array.prototype.findIndex
/* global Call, CreateMethodProperty, Get, IsCallable, ToBoolean, ToLength, ToObject, ToString */
// 22.1.3.9. Array.prototype.findIndex ( predicate [ , thisArg ] )
CreateMethodProperty(Array.prototype, 'findIndex', function findIndex(predicate /* [ , thisArg ] */) {
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let len be ? ToLength(? Get(O, "length")).
	var len = ToLength(Get(O, "length"));
	// 3. If IsCallable(predicate) is false, throw a TypeError exception.
	if (IsCallable(predicate) === false) {
		throw new TypeError(predicate + ' is not a function');
	}
	// 4. If thisArg is present, let T be thisArg; else let T be undefined.
	var T = arguments.length > 1 ? arguments[1] : undefined;
	// 5. Let k be 0.
	var k = 0;
	// 6. Repeat, while k < len
	while (k < len) {
		// a. Let Pk be ! ToString(k).
		var Pk = ToString(k);
		// b. Let kValue be ? Get(O, Pk).
		var kValue = Get(O, Pk);
		// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
		var testResult = ToBoolean(Call(predicate, T, [kValue, k, O]));
		// d. If testResult is true, return k.
		if (testResult) {
			return k;
		}
		// e. Increase k by 1.
		k = k + 1;
	}
	// 7. Return -1.
	return -1;
});

}

if (!("findLast"in Array.prototype
)) {

// Array.prototype.findLast
/* global Call, CreateMethodProperty, Get, IsCallable, LengthOfArrayLike, ToBoolean, ToObject, ToString */
// 23.1.3.11 Array.prototype.findLast ( predicate [ , thisArg ] )
CreateMethodProperty(Array.prototype, 'findLast', function findLast(predicate /*[ , thisArg ]*/) {
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let len be ? LengthOfArrayLike(O).
	var len = LengthOfArrayLike(O);
	// 3. If IsCallable(predicate) is false, throw a TypeError exception.
	if (!IsCallable(predicate)) throw TypeError();
	// 4. Let k be len - 1.
	var k = len - 1;
	// 5. Repeat, while k ≥ 0,
	while (k >= 0) {
		// a. Let Pk be ! ToString(𝔽(k)).
		var Pk = ToString(k);
		// b. Let kValue be ? Get(O, Pk).
		var kValue = Get(O, Pk);
		// c. Let testResult be ToBoolean(? Call(predicate, thisArg, « kValue, 𝔽(k), O »)).
		var testResult = ToBoolean(Call(predicate, arguments.length > 1 ? arguments[1] : undefined, [kValue, k, O]))
		// d. If testResult is true, return kValue.
		if (testResult) {
			return kValue;
		}
		// e. Set k to k - 1.
		k = k - 1;
	}
	// 6. Return undefined.
	return undefined;
});

}

if (!("findLastIndex"in Array.prototype
)) {

// Array.prototype.findLastIndex
/* global Call, CreateMethodProperty, Get, IsCallable, LengthOfArrayLike, ToBoolean, ToObject, ToString */
// 23.1.3.12 Array.prototype.findLastIndex ( predicate [ , thisArg ] )
CreateMethodProperty(Array.prototype, 'findLastIndex', function findLastIndex(predicate /*[ , thisArg ]*/) {
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let len be ? LengthOfArrayLike(O).
	var len = LengthOfArrayLike(O);
	// 3. If IsCallable(predicate) is false, throw a TypeError exception.
	if (!IsCallable(predicate)) throw TypeError();
	// 4. Let k be len - 1.
	var k = len - 1;
	// 5. Repeat, while k ≥ 0,
	while (k >= 0) {
		// a. Let Pk be ! ToString(𝔽(k)).
		var Pk = ToString(k);
		// b. Let kValue be ? Get(O, Pk).
		var kValue = Get(O, Pk);
		// c. Let testResult be ToBoolean(? Call(predicate, thisArg, « kValue, 𝔽(k), O »)).
		var testResult = ToBoolean(Call(predicate, arguments.length > 1 ? arguments[1] : undefined, [kValue, k, O]))
		// d. If testResult is true, return 𝔽(k).
		if (testResult) {
			return k;
		}
		// e. Set k to k - 1.
		k = k - 1;
	}
	// 6. Return -1𝔽.
	return -1;
});

}

if (!("flat"in Array.prototype
)) {

// Array.prototype.flat
/* global CreateMethodProperty, ToObject, ToLength, Get, ToInteger, ArraySpeciesCreate, FlattenIntoArray */
// 22.1.3.10 Array.prototype.flat( [ depth ] )
CreateMethodProperty(Array.prototype, 'flat', function flat() {
	"use strict";
	var depth = arguments[0];
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let sourceLen be ? ToLength(? Get(O, "length")).
	var sourceLen = ToLength(Get(O, "length"));
	// 3. Let depthNum be 1.
	var depthNum = 1;
	// 4. If depth is not undefined, then
	if (depth !== void 0) {
		// a. Set depthNum to ? ToInteger(depth).
		depthNum = ToInteger(depth);
	}
	// 5. Let A be ? ArraySpeciesCreate(O, 0).
	var A = ArraySpeciesCreate(O,0);
	// 6. Perform ? FlattenIntoArray(A, O, sourceLen, 0, depthNum).
	FlattenIntoArray(A, O, sourceLen, 0, depthNum);
	// 7. Return A.
	return A;
});

}

if (!("flatMap"in Array.prototype
)) {

// Array.prototype.flatMap
/* global CreateMethodProperty, ToObject, ToLength, Get, IsCallable, ArraySpeciesCreate, FlattenIntoArray */
// 22.1.3.11 Array.prototype.flatMap ( mapperFunction [ , thisArg ] )
CreateMethodProperty(Array.prototype, 'flatMap', function flatMap(mapperFunction /* , thisArg */ ) {
	"use strict";
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let sourceLen be ? ToLength(? Get(O, "length")).
	var sourceLen = ToLength(Get(O, "length"));
	// 3. If IsCallable(mapperFunction) is false, throw a TypeError exception.
	if (IsCallable(mapperFunction) === false) {
		throw new TypeError('mapperFunction is not callable.');
	}
	// 4. If thisArg is present, let T be thisArg; else let T be undefined.
	var T;
	if (1 in arguments) {
		T = arguments[1];
	} else {
		T = undefined;
	}
	// 5. Let A be ? ArraySpeciesCreate(O, 0).
	var A = ArraySpeciesCreate(O, 0);
	// 6. Perform ? FlattenIntoArray(A, O, sourceLen, 0, 1, mapperFunction, T).
	FlattenIntoArray(A, O, sourceLen, 0, 1, mapperFunction, T);
	// 7. Return A.
	return A;
});

}

if (!("includes"in Array.prototype
)) {

// Array.prototype.includes
/* global CreateMethodProperty, Get, SameValueZero, ToInteger, ToLength, ToObject, ToString */
// 22.1.3.11. Array.prototype.includes ( searchElement [ , fromIndex ] )
CreateMethodProperty(Array.prototype, 'includes', function includes(searchElement /* [ , fromIndex ] */) {
	'use strict';
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let len be ? ToLength(? Get(O, "length")).
	var len = ToLength(Get(O, "length"));
	// 3. If len is 0, return false.
	if (len === 0) {
		return false;
	}
	// 4. Let n be ? ToInteger(fromIndex). (If fromIndex is undefined, this step produces the value 0.)
	var n = ToInteger(arguments[1]);
	// 5. If n ≥ 0, then
	if (n >= 0) {
		// a. Let k be n.
		var k = n;
		// 6. Else n < 0,
	} else {
		// a. Let k be len + n.
		k = len + n;
		// b. If k < 0, let k be 0.
		if (k < 0) {
			k = 0;
		}
	}
	// 7. Repeat, while k < len
	while (k < len) {
		// a. Let elementK be the result of ? Get(O, ! ToString(k)).
		var elementK = Get(O, ToString(k));
		// b. If SameValueZero(searchElement, elementK) is true, return true.
		if (SameValueZero(searchElement, elementK)) {
			return true;
		}
		// c. Increase k by 1.
		k = k + 1;
	}
	// 8. Return false.
	return false;
});

}

if (!("sort"in Array.prototype&&function(){var r={length:3,0:2,1:1,2:3}
return Array.prototype.sort.call(r,function(r,t){return r-t})===r}()
)) {

// Array.prototype.sort
/* global CreateMethodProperty, IsCallable */
"use strict";

var origSort = Array.prototype.sort;

// 22.1.3.27 Array.prototype.sort ( comparefn )
// The elements of this array are sorted. The sort must be stable (that is,
// elements that compare equal must remain in their original order). If
// comparefn is not undefined, it should be a function that accepts two
// arguments x and y and returns a negative value
// if x < y, zero if x = y, or a positive value if x > y.

CreateMethodProperty(Array.prototype, "sort", function sort(compareFn) {
	// 1. If comparefn is not undefined and IsCallable(comparefn) is false, throw
	//    a TypeError exception.
	if (compareFn !== undefined && IsCallable(compareFn) === false) {
		throw new TypeError(
			"The comparison function must be either a function or undefined"
		);
	}

	// Polyfill.io - the steps below are handled by the native
	// Array.prototype.sort method that we call.
	// 2.Let obj be ? ToObject(this value).
	// 3.Let len be ? LengthOfArrayLike(obj).

	// if comprateFn does not exist, use the spec defined in-built SortCompare.
	if (compareFn === undefined) {
		origSort.call(this);
	} else {
		// if compareFn exists, sort the array, breaking sorting ties by using the
		// items' original index position.

		var index;

		// Keep track of the items starting index position.
		var that = [];
		for (index = 0; index < this.length; index++) {
			if (index in this) {
				that.push({ item: this[index], index: index });
			}
		}
		origSort.call(that, function(a, b) {
			// this implementation is based on https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.sort.js#L69-L76
			if (b.item === undefined) return -1;
			if (a.item === undefined) return 1;
			var compareResult = +(compareFn.call(undefined, a.item, b.item)) || 0;
			return compareResult === 0 ? a.index - b.index : compareResult;
		});
		// update the original object (`this`) with the new position for the items
		// which were moved.
		index = 0;
		while (index < that.length) {
			if (that[index]) {
				this[index] = that[index].item;
			}
			index++;
		}
		while (index < this.length) {
			delete this[index++];
		}
	}

	return this;
});

}

if (!("toReversed"in Array.prototype
)) {

// Array.prototype.toReversed
/* global ArrayCreate, CreateDataPropertyOrThrow, CreateMethodProperty, Get, LengthOfArrayLike, ToObject, ToString */
// 23.1.3.33 Array.prototype.toReversed ( )
CreateMethodProperty(Array.prototype, 'toReversed', function toReversed() {
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let len be ? LengthOfArrayLike(O).
	var len = LengthOfArrayLike(O);
	// 3. Let A be ? ArrayCreate(len).
	var A = ArrayCreate(len);
	// 4. Let k be 0.
	var k = 0;
	// 5. Repeat, while k < len,
	while (k < len) {
		// a. Let from be ! ToString(𝔽(len - k - 1)).
		var from = ToString(len - k - 1);
		// b. Let Pk be ! ToString(𝔽(k)).
		var Pk = ToString(k);
		// c. Let fromValue be ? Get(O, from).
		var fromValue = Get(O, from);
		// d. Perform ! CreateDataPropertyOrThrow(A, Pk, fromValue).
		CreateDataPropertyOrThrow(A, Pk, fromValue);
		// e. Set k to k + 1.
		k = k + 1;
	}
	// 6. Return A.
	return A;
});

}

if (!("toSorted"in Array.prototype
)) {

// Array.prototype.toSorted
/* global ArrayCreate, CreateDataPropertyOrThrow, CreateMethodProperty, IsCallable, LengthOfArrayLike, ToObject, ToString */
// 23.1.3.34 Array.prototype.toSorted ( comparefn )
CreateMethodProperty(Array.prototype, 'toSorted', function toSorted(comparefn) {
	// 1. If comparefn is not undefined and IsCallable(comparefn) is false, throw a TypeError exception.
	if (comparefn !== undefined && IsCallable(comparefn) === false) {
		throw new TypeError(
			"The comparison function must be either a function or undefined"
		);
	}
	// 2. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 3. Let len be ? LengthOfArrayLike(O).
	var len = LengthOfArrayLike(O);
	// 4. Let A be ? ArrayCreate(len).
	var A = ArrayCreate(len);

	// 7. Let j be 0.
	var j = 0;
	// 8. Repeat, while j < len,
	while (j < len) {
		// a. Perform ! CreateDataPropertyOrThrow(A, ! ToString(𝔽(j)), sortedList[j]).
		CreateDataPropertyOrThrow(A, ToString(j), O[j]);
		// b. Set j to j + 1.
		j = j + 1;
	}

	// Polyfill.io - These steps are handled by native `Array.prototype.sort`, below
	// 5. Let SortCompare be a new Abstract Closure with parameters (x, y) that captures comparefn and performs the following steps when called:
	// a. Return ? CompareArrayElements(x, y, comparefn).
	// 6. Let sortedList be ? SortIndexedProperties(O, len, SortCompare, read-through-holes).
	comparefn !== undefined ? A.sort(comparefn) : A.sort();

	// 9. Return A.
	return A;
});

}

if (!("ArrayBuffer"in self&&"DataView"in self&&"Int8Array"in self
)) {

// ArrayBuffer
/*
 Copyright (c) 2010, Linden Research, Inc.
 Copyright (c) 2014, Joshua Bell

 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:

 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Software.

 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 $/LicenseInfo$
 */

// Original can be found at:
//   https://bitbucket.org/lindenlab/llsd
// Modifications by Joshua Bell [email protected]
//   https://github.com/inexorabletash/polyfill

// ES3/ES5 implementation of the Krhonos Typed Array Specification
//   Ref: http://www.khronos.org/registry/typedarray/specs/latest/
//   Date: 2011-02-01
//
// Variations:
//  * Allows typed_array.get/set() as alias for subscripts (typed_array[])
//  * Gradually migrating structure from Khronos spec to ES2015 spec
//
// Caveats:
//  * Beyond 10000 or so entries, polyfilled array accessors (ta[0],
//    etc) become memory-prohibitive, so array creation will fail. Set
//    self.TYPED_ARRAY_POLYFILL_NO_ARRAY_ACCESSORS=true to disable
//    creation of accessors. Your code will need to use the
//    non-standard get()/set() instead, and will need to add those to
//    native arrays for interop.
(function(global) {
  'use strict';
  var undefined = (void 0); // Paranoia

  // Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to
  // create, and consume so much memory, that the browser appears frozen.
  var MAX_ARRAY_LENGTH = 1e5;

  // Approximations of internal ECMAScript conversion functions
  function Type(v) {
    switch(typeof v) {
    case 'undefined': return 'undefined';
    case 'boolean': return 'boolean';
    case 'number': return 'number';
    case 'string': return 'string';
    default: return v === null ? 'null' : 'object';
    }
  }

  // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues:
  function Class(v) { return Object.prototype.toString.call(v).replace(/^\[object *|\]$/g, ''); }
  function IsCallable(o) { return typeof o === 'function'; }
  function ToObject(v) {
    if (v === null || v === undefined) throw TypeError();
    return Object(v);
  }
  function ToInt32(v) { return v >> 0; }
  function ToUint32(v) { return v >>> 0; }

  // Snapshot intrinsics
  var LN2 = Math.LN2,
      abs = Math.abs,
      floor = Math.floor,
      log = Math.log,
      max = Math.max,
      min = Math.min,
      pow = Math.pow,
      round = Math.round;

  // emulate ES5 getter/setter API using legacy APIs
  // http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx
  // (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but
  // note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless)

  (function() {
    var orig = Object.defineProperty;
    var dom_only = !(function(){try{return Object.defineProperty({},'x',{});}catch(_){return false;}}());

    if (!orig || dom_only) {
      Object.defineProperty = function (o, prop, desc) {
        // In IE8 try built-in implementation for defining properties on DOM prototypes.
        if (orig)
          try { return orig(o, prop, desc); } catch (_) {}
        if (o !== Object(o))
          throw TypeError('Object.defineProperty called on non-object');
        if (Object.prototype.__defineGetter__ && ('get' in desc))
          Object.prototype.__defineGetter__.call(o, prop, desc.get);
        if (Object.prototype.__defineSetter__ && ('set' in desc))
          Object.prototype.__defineSetter__.call(o, prop, desc.set);
        if ('value' in desc)
          o[prop] = desc.value;
        return o;
      };
    }
  }());

  // ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value)
  // for index in 0 ... obj.length
  function makeArrayAccessors(obj) {
    if ('TYPED_ARRAY_POLYFILL_NO_ARRAY_ACCESSORS' in global)
      return;

    if (obj.length > MAX_ARRAY_LENGTH) throw RangeError('Array too large for polyfill');

    function makeArrayAccessor(index) {
      Object.defineProperty(obj, index, {
        'get': function() { return obj._getter(index); },
        'set': function(v) { obj._setter(index, v); },
        enumerable: true,
        configurable: false
      });
    }

    var i;
    for (i = 0; i < obj.length; i += 1) {
      makeArrayAccessor(i);
    }
  }

  // Internal conversion functions:
  //    pack<Type>()   - take a number (interpreted as Type), output a byte array
  //    unpack<Type>() - take a byte array, output a Type-like number

  function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; }
  function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; }

  function packI8(n) { return [n & 0xff]; }
  function unpackI8(bytes) { return as_signed(bytes[0], 8); }

  function packU8(n) { return [n & 0xff]; }
  function unpackU8(bytes) { return as_unsigned(bytes[0], 8); }

  function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; }

  function packI16(n) { return [n & 0xff, (n >> 8) & 0xff]; }
  function unpackI16(bytes) { return as_signed(bytes[1] << 8 | bytes[0], 16); }

  function packU16(n) { return [n & 0xff, (n >> 8) & 0xff]; }
  function unpackU16(bytes) { return as_unsigned(bytes[1] << 8 | bytes[0], 16); }

  function packI32(n) { return [n & 0xff, (n >> 8) & 0xff, (n >> 16) & 0xff, (n >> 24) & 0xff]; }
  function unpackI32(bytes) { return as_signed(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32); }

  function packU32(n) { return [n & 0xff, (n >> 8) & 0xff, (n >> 16) & 0xff, (n >> 24) & 0xff]; }
  function unpackU32(bytes) { return as_unsigned(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32); }

  function packIEEE754(v, ebits, fbits) {

    var bias = (1 << (ebits - 1)) - 1;

    function roundToEven(n) {
      var w = floor(n), f = n - w;
      if (f < 0.5)
        return w;
      if (f > 0.5)
        return w + 1;
      return w % 2 ? w + 1 : w;
    }

    // Compute sign, exponent, fraction
    var s, e, f;
    if (v !== v) {
      // NaN
      // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
      e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0;
    } else if (v === Infinity || v === -Infinity) {
      e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0;
    } else if (v === 0) {
      e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0;
    } else {
      s = v < 0;
      v = abs(v);

      if (v >= pow(2, 1 - bias)) {
        // Normalized
        e = min(floor(log(v) / LN2), 1023);
        var significand = v / pow(2, e);
        if (significand < 1) {
          e -= 1;
          significand *= 2;
        }
        if (significand >= 2) {
          e += 1;
          significand /= 2;
        }
        var d = pow(2, fbits);
        f = roundToEven(significand * d) - d;
        e += bias;
        if (f / d >= 1) {
          e += 1;
          f = 0;
        }
        if (e > 2 * bias) {
          // Overflow
          e = (1 << ebits) - 1;
          f = 0;
        }
      } else {
        // Denormalized
        e = 0;
        f = roundToEven(v / pow(2, 1 - bias - fbits));
      }
    }

    // Pack sign, exponent, fraction
    var bits = [], i;
    for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); }
    for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); }
    bits.push(s ? 1 : 0);
    bits.reverse();
    var str = bits.join('');

    // Bits to bytes
    var bytes = [];
    while (str.length) {
      bytes.unshift(parseInt(str.substring(0, 8), 2));
      str = str.substring(8);
    }
    return bytes;
  }

  function unpackIEEE754(bytes, ebits, fbits) {
    // Bytes to bits
    var bits = [], i, j, b, str,
        bias, s, e, f;

    for (i = 0; i < bytes.length; ++i) {
      b = bytes[i];
      for (j = 8; j; j -= 1) {
        bits.push(b % 2 ? 1 : 0); b = b >> 1;
      }
    }
    bits.reverse();
    str = bits.join('');

    // Unpack sign, exponent, fraction
    bias = (1 << (ebits - 1)) - 1;
    s = parseInt(str.substring(0, 1), 2) ? -1 : 1;
    e = parseInt(str.substring(1, 1 + ebits), 2);
    f = parseInt(str.substring(1 + ebits), 2);

    // Produce number
    if (e === (1 << ebits) - 1) {
      return f !== 0 ? NaN : s * Infinity;
    } else if (e > 0) {
      // Normalized
      return s * pow(2, e - bias) * (1 + f / pow(2, fbits));
    } else if (f !== 0) {
      // Denormalized
      return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));
    } else {
      return s < 0 ? -0 : 0;
    }
  }

  function unpackF64(b) { return unpackIEEE754(b, 11, 52); }
  function packF64(v) { return packIEEE754(v, 11, 52); }
  function unpackF32(b) { return unpackIEEE754(b, 8, 23); }
  function packF32(v) { return packIEEE754(v, 8, 23); }

  function ObjectDefinePropertyConfigurable(o, prop, desc) {
    desc.writable = true;
    desc.configurable = true;
    return Object.defineProperty(o, prop, desc);
  }

  //
  // 3 The ArrayBuffer Type
  //

  (function() {

    function ArrayBuffer(length) {
      length = ToInt32(length);
      if (length < 0) throw RangeError('ArrayBuffer size is not a small enough positive integer.');
      ObjectDefinePropertyConfigurable(this, 'byteLength', {value: length});
      ObjectDefinePropertyConfigurable(this, '_bytes', {value: Array(length)});

      for (var i = 0; i < length; i += 1)
        this._bytes[i] = 0;
    }

    global.ArrayBuffer = ArrayBuffer;

    //
    // 5 The Typed Array View Types
    //

    function $TypedArray$() {

      // %TypedArray% ( length )
      if (!arguments.length || typeof arguments[0] !== 'object') {
        return (function(length) {
          length = ToInt32(length);
          if (length < 0) throw RangeError('length is not a small enough positive integer.');
          ObjectDefinePropertyConfigurable(this, 'length', {value: length});
          ObjectDefinePropertyConfigurable(this, 'byteLength', {value: length * this.BYTES_PER_ELEMENT});
          ObjectDefinePropertyConfigurable(this, 'buffer', {value: new ArrayBuffer(this.byteLength)});
          ObjectDefinePropertyConfigurable(this, 'byteOffset', {value: 0});

         }).apply(this, arguments);
      }

      // %TypedArray% ( typedArray )
      if (arguments.length >= 1 &&
          Type(arguments[0]) === 'object' &&
          arguments[0] instanceof $TypedArray$) {
        return (function(typedArray){
          if (this.constructor !== typedArray.constructor) throw TypeError();

          var byteLength = typedArray.length * this.BYTES_PER_ELEMENT;
          ObjectDefinePropertyConfigurable(this, 'buffer', {value: new ArrayBuffer(byteLength)});
          ObjectDefinePropertyConfigurable(this, 'byteLength', {value: byteLength});
          ObjectDefinePropertyConfigurable(this, 'byteOffset', {value: 0});
          ObjectDefinePropertyConfigurable(this, 'length', {value: typedArray.length});

          for (var i = 0; i < this.length; i += 1)
            this._setter(i, typedArray._getter(i));

        }).apply(this, arguments);
      }

      // %TypedArray% ( array )
      if (arguments.length >= 1 &&
          Type(arguments[0]) === 'object' &&
          !(arguments[0] instanceof $TypedArray$) &&
          !(arguments[0] instanceof ArrayBuffer || Class(arguments[0]) === 'ArrayBuffer')) {
        return (function(array) {

          var byteLength = array.length * this.BYTES_PER_ELEMENT;
          ObjectDefinePropertyConfigurable(this, 'buffer', {value: new ArrayBuffer(byteLength)});
          ObjectDefinePropertyConfigurable(this, 'byteLength', {value: byteLength});
          ObjectDefinePropertyConfigurable(this, 'byteOffset', {value: 0});
          ObjectDefinePropertyConfigurable(this, 'length', {value: array.length});

          for (var i = 0; i < this.length; i += 1) {
            var s = array[i];
            this._setter(i, Number(s));
          }
        }).apply(this, arguments);
      }

      // %TypedArray% ( buffer, byteOffset=0, length=undefined )
      if (arguments.length >= 1 &&
          Type(arguments[0]) === 'object' &&
          (arguments[0] instanceof ArrayBuffer || Class(arguments[0]) === 'ArrayBuffer')) {
        return (function(buffer, byteOffset, length) {

          byteOffset = ToUint32(byteOffset);
          if (byteOffset > buffer.byteLength)
            throw RangeError('byteOffset out of range');

          // The given byteOffset must be a multiple of the element
          // size of the specific type, otherwise an exception is raised.
          if (byteOffset % this.BYTES_PER_ELEMENT)
            throw RangeError('buffer length minus the byteOffset is not a multiple of the element size.');

          if (length === undefined) {
            var byteLength = buffer.byteLength - byteOffset;
            if (byteLength % this.BYTES_PER_ELEMENT)
              throw RangeError('length of buffer minus byteOffset not a multiple of the element size');
            length = byteLength / this.BYTES_PER_ELEMENT;

          } else {
            length = ToUint32(length);
            byteLength = length * this.BYTES_PER_ELEMENT;
          }

          if ((byteOffset + byteLength) > buffer.byteLength)
            throw RangeError('byteOffset and length reference an area beyond the end of the buffer');

          ObjectDefinePropertyConfigurable(this, 'buffer', {value: buffer});
          ObjectDefinePropertyConfigurable(this, 'byteLength', {value: byteLength});
          ObjectDefinePropertyConfigurable(this, 'byteOffset', {value: byteOffset});
          ObjectDefinePropertyConfigurable(this, 'length', {value: length});

        }).apply(this, arguments);
      }

      // %TypedArray% ( all other argument combinations )
      throw TypeError();
    }

    // Properties of the %TypedArray Instrinsic Object

    // %TypedArray%.from ( source , mapfn=undefined, thisArg=undefined )
    ObjectDefinePropertyConfigurable($TypedArray$, 'from', {value: function(iterable) {
      return new this(iterable);
    }});

    // %TypedArray%.of ( ...items )
    ObjectDefinePropertyConfigurable($TypedArray$, 'of', {value: function(/*...items*/) {
      return new this(arguments);
    }});

    // %TypedArray%.prototype
    var $TypedArrayPrototype$ = {};
    $TypedArray$.prototype = $TypedArrayPrototype$;

    // WebIDL: getter type (unsigned long index);
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, '_getter', {value: function(index) {
      if (arguments.length < 1) throw SyntaxError('Not enough arguments');

      index = ToUint32(index);
      if (index >= this.length)
        return undefined;

      var bytes = [], i, o;
      for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;
           i < this.BYTES_PER_ELEMENT;
           i += 1, o += 1) {
        bytes.push(this.buffer._bytes[o]);
      }
      return this._unpack(bytes);
    }});

    // NONSTANDARD: convenience alias for getter: type get(unsigned long index);
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'get', {value: $TypedArray$.prototype._getter});

    // WebIDL: setter void (unsigned long index, type value);
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, '_setter', {value: function(index, value) {
      if (arguments.length < 2) throw SyntaxError('Not enough arguments');

      index = ToUint32(index);
      if (index >= this.length)
        return;

      var bytes = this._pack(value), i, o;
      for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;
           i < this.BYTES_PER_ELEMENT;
           i += 1, o += 1) {
        this.buffer._bytes[o] = bytes[i];
      }
    }});

    // get %TypedArray%.prototype.buffer
    // get %TypedArray%.prototype.byteLength
    // get %TypedArray%.prototype.byteOffset
    // -- applied directly to the object in the constructor

    // %TypedArray%.prototype.constructor
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'constructor', {value: $TypedArray$});

    // %TypedArray%.prototype.copyWithin (target, start, end = this.length )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'copyWithin', {value: function(target, start) {
      var end = arguments[2];

      var o = ToObject(this);
      var lenVal = o.length;
      var len = ToUint32(lenVal);
      len = max(len, 0);
      var relativeTarget = ToInt32(target);
      var to;
      if (relativeTarget < 0)
        to = max(len + relativeTarget, 0);
      else
        to = min(relativeTarget, len);
      var relativeStart = ToInt32(start);
      var from;
      if (relativeStart < 0)
        from = max(len + relativeStart, 0);
      else
        from = min(relativeStart, len);
      var relativeEnd;
      if (end === undefined)
        relativeEnd = len;
      else
        relativeEnd = ToInt32(end);
      var final;
      if (relativeEnd < 0)
        final = max(len + relativeEnd, 0);
      else
        final = min(relativeEnd, len);
      var count = min(final - from, len - to);
      var direction;
      if (from < to && to < from + count) {
        direction = -1;
        from = from + count - 1;
        to = to + count - 1;
      } else {
        direction = 1;
      }
      while (count > 0) {
        o._setter(to, o._getter(from));
        from = from + direction;
        to = to + direction;
        count = count - 1;
      }
      return o;
    }});

    // %TypedArray%.prototype.entries ( )
    // -- defined in es6.js to shim browsers w/ native TypedArrays

    // %TypedArray%.prototype.every ( callbackfn, thisArg = undefined )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'every', {value: function(callbackfn) {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      if (!IsCallable(callbackfn)) throw TypeError();
      var thisArg = arguments[1];
      for (var i = 0; i < len; i++) {
        if (!callbackfn.call(thisArg, t._getter(i), i, t))
          return false;
      }
      return true;
    }});

    // %TypedArray%.prototype.fill (value, start = 0, end = this.length )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'fill', {value: function(value) {
      var start = arguments[1],
          end = arguments[2];

      var o = ToObject(this);
      var lenVal = o.length;
      var len = ToUint32(lenVal);
      len = max(len, 0);
      var relativeStart = ToInt32(start);
      var k;
      if (relativeStart < 0)
        k = max((len + relativeStart), 0);
      else
        k = min(relativeStart, len);
      var relativeEnd;
      if (end === undefined)
        relativeEnd = len;
      else
        relativeEnd = ToInt32(end);
      var final;
      if (relativeEnd < 0)
        final = max((len + relativeEnd), 0);
      else
        final = min(relativeEnd, len);
      while (k < final) {
        o._setter(k, value);
        k += 1;
      }
      return o;
    }});

    // %TypedArray%.prototype.filter ( callbackfn, thisArg = undefined )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'filter', {value: function(callbackfn) {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      if (!IsCallable(callbackfn)) throw TypeError();
      var res = [];
      var thisp = arguments[1];
      for (var i = 0; i < len; i++) {
        var val = t._getter(i); // in case fun mutates this
        if (callbackfn.call(thisp, val, i, t))
          res.push(val);
      }
      return new this.constructor(res);
    }});

    // %TypedArray%.prototype.find (predicate, thisArg = undefined)
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'find', {value: function(predicate) {
      var o = ToObject(this);
      var lenValue = o.length;
      var len = ToUint32(lenValue);
      if (!IsCallable(predicate)) throw TypeError();
      var t = arguments.length > 1 ? arguments[1] : undefined;
      var k = 0;
      while (k < len) {
        var kValue = o._getter(k);
        var testResult = predicate.call(t, kValue, k, o);
        if (Boolean(testResult))
          return kValue;
        ++k;
      }
      return undefined;
    }});

    // %TypedArray%.prototype.findIndex ( predicate, thisArg = undefined )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'findIndex', {value: function(predicate) {
      var o = ToObject(this);
      var lenValue = o.length;
      var len = ToUint32(lenValue);
      if (!IsCallable(predicate)) throw TypeError();
      var t = arguments.length > 1 ? arguments[1] : undefined;
      var k = 0;
      while (k < len) {
        var kValue = o._getter(k);
        var testResult = predicate.call(t, kValue, k, o);
        if (Boolean(testResult))
          return k;
        ++k;
      }
      return -1;
    }});

    // %TypedArray%.prototype.forEach ( callbackfn, thisArg = undefined )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'forEach', {value: function(callbackfn) {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      if (!IsCallable(callbackfn)) throw TypeError();
      var thisp = arguments[1];
      for (var i = 0; i < len; i++)
        callbackfn.call(thisp, t._getter(i), i, t);
    }});

    // %TypedArray%.prototype.indexOf (searchElement, fromIndex = 0 )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'indexOf', {value: function(searchElement) {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      if (len === 0) return -1;
      var n = 0;
      if (arguments.length > 0) {
        n = Number(arguments[1]);
        if (n !== n) {
          n = 0;
        } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {
          n = (n > 0 || -1) * floor(abs(n));
        }
      }
      if (n >= len) return -1;
      var k = n >= 0 ? n : max(len - abs(n), 0);
      for (; k < len; k++) {
        if (t._getter(k) === searchElement) {
          return k;
        }
      }
      return -1;
    }});

    // %TypedArray%.prototype.join ( separator )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'join', {value: function(separator) {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      var tmp = Array(len);
      for (var i = 0; i < len; ++i)
        tmp[i] = t._getter(i);
      return tmp.join(separator === undefined ? ',' : separator); // Hack for IE7
    }});

    // %TypedArray%.prototype.keys ( )
    // -- defined in es6.js to shim browsers w/ native TypedArrays

    // %TypedArray%.prototype.lastIndexOf ( searchElement, fromIndex = this.length-1 )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'lastIndexOf', {value: function(searchElement) {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      if (len === 0) return -1;
      var n = len;
      if (arguments.length > 1) {
        n = Number(arguments[1]);
        if (n !== n) {
          n = 0;
        } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {
          n = (n > 0 || -1) * floor(abs(n));
        }
      }
      var k = n >= 0 ? min(n, len - 1) : len - abs(n);
      for (; k >= 0; k--) {
        if (t._getter(k) === searchElement)
          return k;
      }
      return -1;
    }});

    // get %TypedArray%.prototype.length
    // -- applied directly to the object in the constructor

    // %TypedArray%.prototype.map ( callbackfn, thisArg = undefined )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'map', {value: function(callbackfn) {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      if (!IsCallable(callbackfn)) throw TypeError();
      var res = []; res.length = len;
      var thisp = arguments[1];
      for (var i = 0; i < len; i++)
        res[i] = callbackfn.call(thisp, t._getter(i), i, t);
      return new this.constructor(res);
    }});

    // %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'reduce', {value: function(callbackfn) {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      if (!IsCallable(callbackfn)) throw TypeError();
      // no value to return if no initial value and an empty array
      if (len === 0 && arguments.length === 1) throw TypeError();
      var k = 0;
      var accumulator;
      if (arguments.length >= 2) {
        accumulator = arguments[1];
      } else {
        accumulator = t._getter(k++);
      }
      while (k < len) {
        accumulator = callbackfn.call(undefined, accumulator, t._getter(k), k, t);
        k++;
      }
      return accumulator;
    }});

    // %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'reduceRight', {value: function(callbackfn) {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      if (!IsCallable(callbackfn)) throw TypeError();
      // no value to return if no initial value, empty array
      if (len === 0 && arguments.length === 1) throw TypeError();
      var k = len - 1;
      var accumulator;
      if (arguments.length >= 2) {
        accumulator = arguments[1];
      } else {
        accumulator = t._getter(k--);
      }
      while (k >= 0) {
        accumulator = callbackfn.call(undefined, accumulator, t._getter(k), k, t);
        k--;
      }
      return accumulator;
    }});

    // %TypedArray%.prototype.reverse ( )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'reverse', {value: function() {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      var half = floor(len / 2);
      for (var i = 0, j = len - 1; i < half; ++i, --j) {
        var tmp = t._getter(i);
        t._setter(i, t._getter(j));
        t._setter(j, tmp);
      }
      return t;
    }});

    // %TypedArray%.prototype.set(array, offset = 0 )
    // %TypedArray%.prototype.set(typedArray, offset = 0 )
    // WebIDL: void set(TypedArray array, optional unsigned long offset);
    // WebIDL: void set(sequence<type> array, optional unsigned long offset);
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'set', {value: function(index, value) {
      if (arguments.length < 1) throw SyntaxError('Not enough arguments');
      var array, sequence, offset, len,
          i, s, d,
          byteOffset, byteLength, tmp;

      if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) {
        // void set(TypedArray array, optional unsigned long offset);
        array = arguments[0];
        offset = ToUint32(arguments[1]);

        if (offset + array.length > this.length) {
          throw RangeError('Offset plus length of array is out of range');
        }

        byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT;
        byteLength = array.length * this.BYTES_PER_ELEMENT;

        if (array.buffer === this.buffer) {
          tmp = [];
          for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) {
            tmp[i] = array.buffer._bytes[s];
          }
          for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) {
            this.buffer._bytes[d] = tmp[i];
          }
        } else {
          for (i = 0, s = array.byteOffset, d = byteOffset;
               i < byteLength; i += 1, s += 1, d += 1) {
            this.buffer._bytes[d] = array.buffer._bytes[s];
          }
        }
      } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') {
        // void set(sequence<type> array, optional unsigned long offset);
        sequence = arguments[0];
        len = ToUint32(sequence.length);
        offset = ToUint32(arguments[1]);

        if (offset + len > this.length) {
          throw RangeError('Offset plus length of array is out of range');
        }

        for (i = 0; i < len; i += 1) {
          s = sequence[i];
          this._setter(offset + i, Number(s));
        }
      } else {
        throw TypeError('Unexpected argument type(s)');
      }
    }});

    // %TypedArray%.prototype.slice ( start, end )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'slice', {value: function(start, end) {
      var o = ToObject(this);
      var lenVal = o.length;
      var len = ToUint32(lenVal);
      var relativeStart = ToInt32(start);
      var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
      var relativeEnd = (end === undefined) ? len : ToInt32(end);
      var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
      var count = final - k;
      var c = o.constructor;
      var a = new c(count);
      var n = 0;
      while (k < final) {
        var kValue = o._getter(k);
        a._setter(n, kValue);
        ++k;
        ++n;
      }
      return a;
    }});

    // %TypedArray%.prototype.some ( callbackfn, thisArg = undefined )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'some', {value: function(callbackfn) {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      if (!IsCallable(callbackfn)) throw TypeError();
      var thisp = arguments[1];
      for (var i = 0; i < len; i++) {
        if (callbackfn.call(thisp, t._getter(i), i, t)) {
          return true;
        }
      }
      return false;
    }});

    // %TypedArray%.prototype.sort ( comparefn )
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'sort', {value: function(comparefn) {
      if (this === undefined || this === null) throw TypeError();
      var t = Object(this);
      var len = ToUint32(t.length);
      var tmp = Array(len);
      for (var i = 0; i < len; ++i)
        tmp[i] = t._getter(i);
      function sortCompare(x, y) {
        if (x !== x && y !== y) return +0;
        if (x !== x) return 1;
        if (y !== y) return -1;
        if (comparefn !== undefined) {
          return comparefn(x, y);
        }
        if (x < y) return -1;
        if (x > y) return 1;
        return +0;
      }
      tmp.sort(sortCompare);
      for (i = 0; i < len; ++i)
        t._setter(i, tmp[i]);
      return t;
    }});

    // %TypedArray%.prototype.subarray(begin = 0, end = this.length )
    // WebIDL: TypedArray subarray(long begin, optional long end);
    ObjectDefinePropertyConfigurable($TypedArray$.prototype, 'subarray', {value: function(start, end) {
      function clamp(v, min, max) { return v < min ? min : v > max ? max : v; }

      start = ToInt32(start);
      end = ToInt32(end);

      if (arguments.length < 1) { start = 0; }
      if (arguments.length < 2) { end = this.length; }

      if (start < 0) { start = this.length + start; }
      if (end < 0) { end = this.length + end; }

      start = clamp(start, 0, this.length);
      end = clamp(end, 0, this.length);

      var len = end - start;
      if (len < 0) {
        len = 0;
      }

      return new this.constructor(
        this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len);
    }});

    // %TypedArray%.prototype.toLocaleString ( )
    // %TypedArray%.prototype.toString ( )
    // %TypedArray%.prototype.values ( )
    // %TypedArray%.prototype [ @@iterator ] ( )
    // get %TypedArray%.prototype [ @@toStringTag ]
    // -- defined in es6.js to shim browsers w/ native TypedArrays

    function makeTypedArray(elementSize, pack, unpack) {
      // Each TypedArray type requires a distinct constructor instance with
      // identical logic, which this produces.
      var TypedArray = function() {
        ObjectDefinePropertyConfigurable(this, 'constructor', {value: TypedArray});
        $TypedArray$.apply(this, arguments);
        makeArrayAccessors(this);
      };
      if ('__proto__' in TypedArray) {
        TypedArray.__proto__ = $TypedArray$;
      } else {
        TypedArray.from = $TypedArray$.from;
        TypedArray.of = $TypedArray$.of;
      }

      TypedArray.BYTES_PER_ELEMENT = elementSize;

      var TypedArrayPrototype = function() {};
      TypedArrayPrototype.prototype = $TypedArrayPrototype$;

      TypedArray.prototype = new TypedArrayPrototype();

      Object.defineProperty(TypedArray.prototype, 'BYTES_PER_ELEMENT', {value: elementSize});
      Object.defineProperty(TypedArray.prototype, '_pack', {value: pack});
      Object.defineProperty(TypedArray.prototype, '_unpack', {value: unpack});

      return TypedArray;
    }

    var Int8Array = makeTypedArray(1, packI8, unpackI8);
    var Uint8Array = makeTypedArray(1, packU8, unpackU8);
    var Uint8ClampedArray = makeTypedArray(1, packU8Clamped, unpackU8);
    var Int16Array = makeTypedArray(2, packI16, unpackI16);
    var Uint16Array = makeTypedArray(2, packU16, unpackU16);
    var Int32Array = makeTypedArray(4, packI32, unpackI32);
    var Uint32Array = makeTypedArray(4, packU32, unpackU32);
    var Float32Array = makeTypedArray(4, packF32, unpackF32);
    var Float64Array = makeTypedArray(8, packF64, unpackF64);

    global.Int8Array = Int8Array;
    global.Uint8Array = Uint8Array;
    global.Uint8ClampedArray = Uint8ClampedArray;
    global.Int16Array = Int16Array;
    global.Uint16Array = Uint16Array;
    global.Int32Array = Int32Array;
    global.Uint32Array = Uint32Array;
    global.Float32Array = Float32Array;
    global.Float64Array = Float64Array;
  }());

  //
  // 6 The DataView View Type
  //

  (function() {
    function r(array, index) {
      return IsCallable(array.get) ? array.get(index) : array[index];
    }

    var IS_BIG_ENDIAN = (function() {
      var u16array = new Uint16Array([0x1234]),
          u8array = new Uint8Array(u16array.buffer);
      return r(u8array, 0) === 0x12;
    }());

    // DataView(buffer, byteOffset=0, byteLength=undefined)
    // WebIDL: Constructor(ArrayBuffer buffer,
    //                     optional unsigned long byteOffset,
    //                     optional unsigned long byteLength)
    function DataView(buffer, byteOffset, byteLength) {
      if (!(buffer instanceof ArrayBuffer || Class(buffer) === 'ArrayBuffer')) throw TypeError();

      byteOffset = ToUint32(byteOffset);
      if (byteOffset > buffer.byteLength)
        throw RangeError('byteOffset out of range');

      if (byteLength === undefined)
        byteLength = buffer.byteLength - byteOffset;
      else
        byteLength = ToUint32(byteLength);

      if ((byteOffset + byteLength) > buffer.byteLength)
        throw RangeError('byteOffset and length reference an area beyond the end of the buffer');

      ObjectDefinePropertyConfigurable(this, 'buffer', {value: buffer});
      ObjectDefinePropertyConfigurable(this, 'byteLength', {value: byteLength});
      ObjectDefinePropertyConfigurable(this, 'byteOffset', {value: byteOffset});
    };

    // get DataView.prototype.buffer
    // get DataView.prototype.byteLength
    // get DataView.prototype.byteOffset
    // -- applied directly to instances by the constructor

    function makeGetter(arrayType) {
      return function GetViewValue(byteOffset, littleEndian) {
        byteOffset = ToUint32(byteOffset);

        if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength)
          throw RangeError('Array index out of range');

        byteOffset += this.byteOffset;

        var uint8Array = new Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT),
            bytes = [];
        for (var i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1)
          bytes.push(r(uint8Array, i));

        if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN))
          bytes.reverse();

        return r(new arrayType(new Uint8Array(bytes).buffer), 0);
      };
    }

    ObjectDefinePropertyConfigurable(DataView.prototype, 'getUint8', {value: makeGetter(Uint8Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'getInt8', {value: makeGetter(Int8Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'getUint16', {value: makeGetter(Uint16Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'getInt16', {value: makeGetter(Int16Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'getUint32', {value: makeGetter(Uint32Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'getInt32', {value: makeGetter(Int32Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'getFloat32', {value: makeGetter(Float32Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'getFloat64', {value: makeGetter(Float64Array)});

    function makeSetter(arrayType) {
      return function SetViewValue(byteOffset, value, littleEndian) {
        byteOffset = ToUint32(byteOffset);
        if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength)
          throw RangeError('Array index out of range');

        // Get bytes
        var typeArray = new arrayType([value]),
            byteArray = new Uint8Array(typeArray.buffer),
            bytes = [], i, byteView;

        for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1)
          bytes.push(r(byteArray, i));

        // Flip if necessary
        if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN))
          bytes.reverse();

        // Write them
        byteView = new Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT);
        byteView.set(bytes);
      };
    }

    ObjectDefinePropertyConfigurable(DataView.prototype, 'setUint8', {value: makeSetter(Uint8Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'setInt8', {value: makeSetter(Int8Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'setUint16', {value: makeSetter(Uint16Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'setInt16', {value: makeSetter(Int16Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'setUint32', {value: makeSetter(Uint32Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'setInt32', {value: makeSetter(Int32Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'setFloat32', {value: makeSetter(Float32Array)});
    ObjectDefinePropertyConfigurable(DataView.prototype, 'setFloat64', {value: makeSetter(Float64Array)});

    global.DataView = DataView;

  }());

}(self));

}

if (!("atob"in self
)) {

// atob
(function(f) {

  'use strict';

  /* istanbul ignore else */
  if (typeof exports === 'object' && exports != null &&
      typeof exports.nodeType !== 'number') {
    module.exports = f ();
  } else if (typeof define === 'function' && define.amd != null) {
    define ([], f);
  } else {
    var base64 = f ();
    var global = typeof self !== 'undefined' ? self : $.global;
    if (typeof global.btoa !== 'function') global.btoa = base64.btoa;
    if (typeof global.atob !== 'function') global.atob = base64.atob;
  }

} (function() {

  'use strict';

  var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';

  function InvalidCharacterError(message) {
    this.message = message;
  }
  InvalidCharacterError.prototype = new Error ();
  InvalidCharacterError.prototype.name = 'InvalidCharacterError';

  // encoder
  function btoa(input) {
    var data = String (input), o1, o2, o3, bits, i = 0, acc = '';

    while (i < data.length) {
      // pack three octets into four hextets
      o1 = data.charCodeAt (i++);
      o2 = data.charCodeAt (i++);
      o3 = data.charCodeAt (i++);

      if (o1 > 128 || o2 > 128 || o3 > 128) {
        throw new InvalidCharacterError ("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
      }

      bits = (o1 << 16) | (o2 << 8) | o3;
      // use hextets to index into b64, and append result to encoded string
      acc += chars.charAt ((bits >> 18) & 0x3F) +
             chars.charAt ((bits >> 12) & 0x3F) +
             chars.charAt ((bits >>  6) & 0x3F) +
             chars.charAt ((bits)       & 0x3F);
    }

    switch (data.length % 3) {
      case 0: return acc;
      case 1: return acc.slice (0, -2) + '==';
      case 2: return acc.slice (0, -1) + '=';
    }
  }

  // decoder
  // [https://gist.github.com/1020396] by [https://github.com/atk]
  function atob(input) {
    var str = (String (input)).replace (/[=]+$/, ''); // #31: ExtendScript bad parse of /=
    if (str.length % 4 === 1) {
      throw new InvalidCharacterError ("'atob' failed: The string to be decoded is not correctly encoded.");
    }
    for (
      // initialize result and counters
      var bc = 0, bs, buffer, idx = 0, output = '';
      // get next character
      buffer = str.charAt (idx++); // eslint-disable-line no-cond-assign
      // character found in table? initialize bit storage and add its ascii value;
      ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
        // and if not first of each 4 characters,
        // convert the first 8 bits to one ascii character
        bc++ % 4) ? output += String.fromCharCode (255 & bs >> (-2 * bc & 6)) : 0
    ) {
      // try to find character in table (0-63, not found => -1)
      buffer = chars.indexOf (buffer);
    }
    return output;
  }

  return {btoa: btoa, atob: atob};

}));

}

if (!("console"in self
)) {

// console
self.console = self.console || {};

}

if (!("console"in self&&"log"in self.console
)) {

// console.log
console.log = function log() {};

}

if (!("console"in self&&"error"in self.console
)) {

// console.error
console.error = console.log;

}

if (!("devicePixelRatio"in self
)) {

// devicePixelRatio
// The chances of a device that runs IE < 11 having a DPR of more than 1 are low enough that this is likely to offer the best reliability / performance / accuracy tradeoff
self.devicePixelRatio = 1;

}

if (!("DocumentFragment"in self&&function(){try{return new DocumentFragment,!0}catch(n){return!1}}()
)) {

// DocumentFragment
(function (global) {
	global.DocumentFragment = function DocumentFragment() {
		return document.createDocumentFragment();
	};

	var fragment = document.createDocumentFragment();
	global.DocumentFragment.prototype = Object.create(fragment.constructor.prototype)
}(self));

}

if (!("DocumentFragment"in self&&"append"in DocumentFragment.prototype
)) {

// DocumentFragment.prototype.append
/* global _mutation */
(function (global) {
	var fragmentProto = document.createDocumentFragment().constructor.prototype;
	fragmentProto.append = function append() {
		this.appendChild(_mutation(arguments));
	};

	global.DocumentFragment.prototype.append = function append() {
		this.appendChild(_mutation(arguments));
	};
}(self));

}

if (!("DocumentFragment"in self&&"prepend"in DocumentFragment.prototype
)) {

// DocumentFragment.prototype.prepend
/* global _mutation */
(function (global) {
	var fragmentProto = document.createDocumentFragment().constructor.prototype;
	fragmentProto.prepend = function prepend() {
		this.insertBefore(_mutation(arguments), this.firstChild);
	};

	global.DocumentFragment.prototype.prepend = function prepend() {
		this.insertBefore(_mutation(arguments), this.firstChild);
	};
}(self));

}

if (!("DocumentFragment"in self&&"replaceChildren"in DocumentFragment.prototype
)) {

// DocumentFragment.prototype.replaceChildren
(function (global) {
	function replaceChildren() {
		while (this.firstChild) {
			this.removeChild(this.firstChild);
		}
		this.append.apply(this, arguments);
	}

	var fragmentProto = document.createDocumentFragment().constructor.prototype;
	fragmentProto.replaceChildren = replaceChildren;

	global.DocumentFragment.prototype.replaceChildren = replaceChildren;
}(self));

}

if (!("DOMTokenList"in self&&function(e){return!("classList"in e)||!e.classList.toggle("x",!1)&&!e.className}(document.createElement("x"))
)) {

// DOMTokenList
/* global _DOMTokenList */
(function (global) {
	var nativeImpl = "DOMTokenList" in global && global.DOMTokenList;

	if (
			!nativeImpl ||
			(
				!!document.createElementNS &&
				!!document.createElementNS('http://www.w3.org/2000/svg', 'svg') &&
				!(document.createElementNS("http://www.w3.org/2000/svg", "svg").classList instanceof DOMTokenList)
			)
		) {
		global.DOMTokenList = _DOMTokenList;
	}

	// Add second argument to native DOMTokenList.toggle() if necessary
	(function () {
		var e = document.createElement('span');
		if (!('classList' in e)) return;
		e.classList.toggle('x', false);
		if (!e.classList.contains('x')) return;
		e.classList.constructor.prototype.toggle = function toggle(token /*, force*/) {
			var force = arguments[1];
			if (force === undefined) {
				var add = !this.contains(token);
				this[add ? 'add' : 'remove'](token);
				return add;
			}
			force = !!force;
			this[force ? 'add' : 'remove'](token);
			return force;
		};
	}());

	// Add multiple arguments to native DOMTokenList.add() if necessary
	(function () {
		var e = document.createElement('span');
		if (!('classList' in e)) return;
		e.classList.add('a', 'b');
		if (e.classList.contains('b')) return;
		var native = e.classList.constructor.prototype.add;
		e.classList.constructor.prototype.add = function () {
			var args = arguments;
			var l = arguments.length;
			for (var i = 0; i < l; i++) {
				native.call(this, args[i]);
			}
		};
	}());

	// Add multiple arguments to native DOMTokenList.remove() if necessary
	(function () {
		var e = document.createElement('span');
		if (!('classList' in e)) return;
		e.classList.add('a');
		e.classList.add('b');
		e.classList.remove('a', 'b');
		if (!e.classList.contains('b')) return;
		var native = e.classList.constructor.prototype.remove;
		e.classList.constructor.prototype.remove = function () {
			var args = arguments;
			var l = arguments.length;
			for (var i = 0; i < l; i++) {
				native.call(this, args[i]);
			}
		};
	}());

}(self));

}

if (!("Element"in self&&"after"in Element.prototype
)) {

// Element.prototype.after
/* global _mutation */
Document.prototype.after = Element.prototype.after = function after() {
	if (this.parentNode) {
		var args = Array.prototype.slice.call(arguments),
				viableNextSibling = this.nextSibling,
				idx = viableNextSibling ? args.indexOf(viableNextSibling) : -1;

		while (idx !== -1) {
			viableNextSibling = viableNextSibling.nextSibling;
			if (!viableNextSibling) {
				break;
			}
			idx = args.indexOf(viableNextSibling);
		}

		this.parentNode.insertBefore(_mutation(arguments), viableNextSibling);
	}
};

// Not all UAs support the Text constructor.  Polyfill on the Text constructor only where it exists
// TODO: Add a polyfill for the Text constructor, and make it a dependency of this polyfill.
if ("Text" in self) {
	Text.prototype.after = Element.prototype.after;
}

}

if (!("Element"in self&&"append"in Element.prototype
)) {

// Element.prototype.append
/* global _mutation */
Document.prototype.append = Element.prototype.append = function append() {
	this.appendChild(_mutation(arguments));
};

}

if (!("Element"in self&&"before"in Element.prototype
)) {

// Element.prototype.before
/* global _mutation */
Document.prototype.before = Element.prototype.before = function before() {
	if (this.parentNode) {
		var args = Array.prototype.slice.call(arguments),
			viablePreviousSibling = this.previousSibling,
			idx = viablePreviousSibling ? args.indexOf(viablePreviousSibling) : -1;

		while (idx !== -1) {
			viablePreviousSibling = viablePreviousSibling.previousSibling;
			if (!viablePreviousSibling) {
				break;
			}
			idx = args.indexOf(viablePreviousSibling);
		}

		this.parentNode.insertBefore(
			_mutation(arguments),
			viablePreviousSibling ? viablePreviousSibling.nextSibling : this.parentNode.firstChild
		);
	}
};

// Not all UAs support the Text constructor.  Polyfill on the Text constructor only where it exists
// TODO: Add a polyfill for the Text constructor, and make it a dependency of this polyfill.
if ("Text" in self) {
	Text.prototype.before = Element.prototype.before;
}

}

if (!("document"in self&&"classList"in document.documentElement&&"Element"in self&&"classList"in Element.prototype&&function(){var e=document.createElement("span")
return e.classList.add("a","b"),e.classList.contains("b")}()
)) {

// Element.prototype.classList
/* global _DOMTokenList */
/*
Copyright (c) 2016, John Gardner

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
(function (global) {
	var defineGetter = function (object, name, fn, configurable) {
		Object.defineProperty(object, name, {
			configurable: !!configurable,
			get: fn
		});
	};
	/** Polyfills a property with a DOMTokenList */
	var addProp = function (o, name, attr) {

		defineGetter(o.prototype, name, function () {
			var tokenList;

			var THIS = this,

			/** Prevent this from firing twice for some reason. What the hell, IE. */
			gibberishProperty = "__defineGetter__" + "DEFINE_PROPERTY" + name;
			if(THIS[gibberishProperty]) return tokenList;
			THIS[gibberishProperty] = true;

			tokenList = new _DOMTokenList(THIS, attr);

			defineGetter(THIS, name, function () {
				return tokenList;
			});
			delete THIS[gibberishProperty];

			return tokenList;
		}, true);
	};

	addProp(global.Element, "classList", "className");
	addProp(global.HTMLElement, "classList", "className");
	addProp(global.HTMLLinkElement, "relList", "rel");
	addProp(global.HTMLAnchorElement, "relList", "rel");
	addProp(global.HTMLAreaElement, "relList", "rel");
}(self));

}

if (!("document"in self&&"matches"in document.documentElement
)) {

// Element.prototype.matches
Element.prototype.matches = Element.prototype.webkitMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.mozMatchesSelector || function matches(selector) {

	var element = this;
	var elements = (element.document || element.ownerDocument).querySelectorAll(selector);
	var index = 0;

	while (elements[index] && elements[index] !== element) {
		++index;
	}

	return !!elements[index];
};

}

if (!("document"in self&&"closest"in document.documentElement
)) {

// Element.prototype.closest
Element.prototype.closest = function closest(selector) {
	var node = this;

	while (node) {
		if (node.matches(selector)) return node;
		else node = 'SVGElement' in window && node instanceof SVGElement ? node.parentNode : node.parentElement;
	}

	return null;
};

}

if (!("Element"in self&&"prepend"in Element.prototype
)) {

// Element.prototype.prepend
/* global _mutation */
Document.prototype.prepend = Element.prototype.prepend = function prepend() {
	this.insertBefore(_mutation(arguments), this.firstChild);
};

}

if (!("Element"in self&&"remove"in Element.prototype
)) {

// Element.prototype.remove
Document.prototype.remove = Element.prototype.remove = function remove() {
	if (this.parentNode) {
		this.parentNode.removeChild(this);
	}
};

// Not all UAs support the Text constructor.  Polyfill on the Text constructor only where it exists
// TODO: Add a polyfill for the Text constructor, and make it a dependency of this polyfill.
if ("Text" in self) {
	Text.prototype.remove = Element.prototype.remove;
}

(function () {
	var originalRemove = HTMLSelectElement.prototype.remove;

	HTMLSelectElement.prototype.remove = function remove(index) {
		if (arguments.length === 0) {
			return Element.prototype.remove.call(this);
		}
		return originalRemove.call(this, index);
	};
})();

}

if (!("Element"in self&&"replaceChildren"in Element.prototype
)) {

// Element.prototype.replaceChildren
Document.prototype.replaceChildren = Element.prototype.replaceChildren = function replaceChildren() {
	while (this.firstChild) {
		this.removeChild(this.firstChild);
	}
	this.append.apply(this, arguments);
};

}

if (!("Element"in self&&"replaceWith"in Element.prototype
)) {

// Element.prototype.replaceWith
/* global _mutation */
Document.prototype.replaceWith = Element.prototype.replaceWith = function replaceWith() {
	if (this.parentNode) {
		this.parentNode.replaceChild(_mutation(arguments), this);
	}
};

// Not all UAs support the Text constructor.  Polyfill on the Text constructor only where it exists
// TODO: Add a polyfill for the Text constructor, and make it a dependency of this polyfill.
if ('Text' in self) {
	Text.prototype.replaceWith = Element.prototype.replaceWith;
}

}

if (!((function(n){if(!("Event"in n))return!1
try{return new Event("click"),!0}catch(n){return!1}})(self)
)) {

// Event
(function () {
	// This polyfill depends on availability of `document` so will not run in a worker
	// However, we asssume there are no browsers with worker support that lack proper
	// support for `Event` within the worker
	if (typeof document === 'undefined' || typeof window === 'undefined') return;

	var existingProto = (window.Event && window.Event.prototype) || null;
	function Event(type, eventInitDict) {
		if (!type) {
			throw new Error('Not enough arguments');
		}

		var event;
		// Shortcut if browser supports createEvent
		if ('createEvent' in document) {
			event = document.createEvent('Event');
			var bubbles = eventInitDict && eventInitDict.bubbles !== undefined ? eventInitDict.bubbles : false;
			var cancelable = eventInitDict && eventInitDict.cancelable !== undefined ? eventInitDict.cancelable : false;

			event.initEvent(type, bubbles, cancelable);

			return event;
		}

		event = document.createEventObject();

		event.type = type;
		event.bubbles = eventInitDict && eventInitDict.bubbles !== undefined ? eventInitDict.bubbles : false;
		event.cancelable = eventInitDict && eventInitDict.cancelable !== undefined ? eventInitDict.cancelable : false;

		return event;
	}
	Event.NONE = 0;
	Event.CAPTURING_PHASE = 1;
	Event.AT_TARGET = 2;
	Event.BUBBLING_PHASE = 3;
	window.Event = Window.prototype.Event = Event;
	if (existingProto) {
		Object.defineProperty(window.Event, 'prototype', {
			configurable: false,
			enumerable: false,
			writable: true,
			value: existingProto
		});
	}

	if (!('createEvent' in document)) {
		window.addEventListener = Window.prototype.addEventListener = Document.prototype.addEventListener = Element.prototype.addEventListener = function addEventListener() {
			var
			element = this,
			type = arguments[0],
			listener = arguments[1];

			if (!element._events) {
				element._events = {};
			}

			if (!element._events[type]) {
				element._events[type] = function (event) {
					var
					list = element._events[event.type].list,
					events = list.slice(),
					index = -1,
					length = events.length,
					eventElement;

					event.preventDefault = function preventDefault() {
						if (event.cancelable !== false) {
							event.returnValue = false;
						}
					};

					event.stopPropagation = function stopPropagation() {
						event.cancelBubble = true;
					};

					event.stopImmediatePropagation = function stopImmediatePropagation() {
						event.cancelBubble = true;
						event.cancelImmediate = true;
					};

					event.currentTarget = element;
					event.relatedTarget = event.fromElement || null;
					event.target = event.target || event.srcElement || element;
					event.timeStamp = new Date().getTime();

					if (event.clientX) {
						event.pageX = event.clientX + document.documentElement.scrollLeft;
						event.pageY = event.clientY + document.documentElement.scrollTop;
					}

					while (++index < length && !event.cancelImmediate) {
						if (index in events) {
							eventElement = events[index];

							if (list.includes(eventElement) && typeof eventElement === 'function') {
								eventElement.call(element, event);
							}
						}
					}
				};

				element._events[type].list = [];

				if (element.attachEvent) {
					element.attachEvent('on' + type, element._events[type]);
				}
			}

			element._events[type].list.push(listener);
		};

		window.removeEventListener = Window.prototype.removeEventListener = Document.prototype.removeEventListener = Element.prototype.removeEventListener = function removeEventListener() {
			var
			element = this,
			type = arguments[0],
			listener = arguments[1],
			index;

			if (element._events && element._events[type] && element._events[type].list) {
				index = element._events[type].list.indexOf(listener);

				if (index !== -1) {
					element._events[type].list.splice(index, 1);

					if (!element._events[type].list.length) {
						if (element.detachEvent) {
							element.detachEvent('on' + type, element._events[type]);
						}
						delete element._events[type];
					}
				}
			}
		};

		window.dispatchEvent = Window.prototype.dispatchEvent = Document.prototype.dispatchEvent = Element.prototype.dispatchEvent = function dispatchEvent(event) {
			if (!arguments.length) {
				throw new Error('Not enough arguments');
			}

			if (!event || typeof event.type !== 'string') {
				throw new Error('DOM Events Exception 0');
			}

			var element = this, type = event.type;

			try {
				if (!event.bubbles) {
					event.cancelBubble = true;

					var cancelBubbleEvent = function (event) {
						event.cancelBubble = true;

						(element || window).detachEvent('on' + type, cancelBubbleEvent);
					};

					this.attachEvent('on' + type, cancelBubbleEvent);
				}

				this.fireEvent('on' + type, event);
			} catch (error) {
				event.target = element;

				do {
					event.currentTarget = element;

					if ('_events' in element && typeof element._events[type] === 'function') {
						element._events[type].call(element, event);
					}

					if (typeof element['on' + type] === 'function') {
						element['on' + type].call(element, event);
					}

					element = element.nodeType === 9 ? element.parentWindow : element.parentNode;
				} while (element && !event.cancelBubble);
			}

			return true;
		};

		// Add the DOMContentLoaded Event
		document.attachEvent('onreadystatechange', function() {
			if (document.readyState === 'complete') {
				document.dispatchEvent(new Event('DOMContentLoaded', {
					bubbles: true
				}));
			}
		});
	}
}());

}

if (!("CustomEvent"in self&&("function"==typeof self.CustomEvent||self.CustomEvent.toString().indexOf("CustomEventConstructor")>-1)
)) {

// CustomEvent
self.CustomEvent = function CustomEvent(type, eventInitDict) {
	if (!type) {
		throw Error('TypeError: Failed to construct "CustomEvent": An event name must be provided.');
	}

	var event;
	eventInitDict = eventInitDict || {bubbles: false, cancelable: false, detail: null};

	try {
		event = document.createEvent('CustomEvent');
		event.initCustomEvent(type, eventInitDict.bubbles, eventInitDict.cancelable, eventInitDict.detail);
	} catch (error) {
		// for browsers which don't support CustomEvent at all, we use a regular event instead
		event = document.createEvent('Event');
		event.initEvent(type, eventInitDict.bubbles, eventInitDict.cancelable);
		event.detail = eventInitDict.detail;
	}
	return event;
};

CustomEvent.prototype = Event.prototype;

}

if (!("document"in self&&"hidden"in document&&"visibilityState"in document
)) {

// document.visibilityState
// PageVisibility
(function () {
	var prefix = document.webkitVisibilityState ? 'webkit' : document.mozVisibilityState ? 'moz' : null;

	function normalizeState () {
		document.hidden = document[prefix + 'Hidden'];
		document.visibilityState = document[prefix + 'VisibilityState'];
	}

	if (!prefix) {
		return;
	}

	normalizeState();

	document.addEventListener(prefix + 'visibilitychange', function () {
		normalizeState();
		document.dispatchEvent(new CustomEvent('visibilitychange'));
	});

}());

}

if (!((function(){var n=!1
return document.documentElement.addEventListener("focusin",function(){n=!0}),document.documentElement.dispatchEvent(new Event("focusin")),n})()
)) {

// Event.focusin
self.addEventListener('focus', function (event) {
	event.target.dispatchEvent(new Event('focusin', {
		bubbles: true,
		cancelable: true
	}));
}, true);

self.addEventListener('blur', function (event) {
	event.target.dispatchEvent(new Event('focusout', {
		bubbles: true,
		cancelable: true
	}));
}, true);

}

if (!("onhashchange"in self&&(null==self.onhashchange||"function"==typeof self.onhashchange)
)) {

// Event.hashchange
(function (global) {
	var hash = global.location.hash;

	function poll() {
		if (hash !== global.location.hash) {
			hash = global.location.hash;

			global.dispatchEvent(new Event('hashchange'));
		}

		setTimeout(poll, 500);
	}

	// Make sure a check for 'onhashchange' in window will pass (note: setting to undefined IE<9 causes 'Not implemented' error)
	global.onhashchange = function () { };

	poll();
}(self));

}

if (!("name"in Function.prototype
)) {

// Function.prototype.name
(function () {

	var
	accessorName = 'name',
	fnNameMatchRegex = /^\s*function\s+([^(\s]*)\s*/,
	$Function = Function,
	FunctionName = 'Function',
	FunctionProto = $Function.prototype,
	FunctionProtoCtor = FunctionProto.constructor,

	getFunctionName = function(fn) {
		var match, name;

		if (fn === $Function || fn === FunctionProtoCtor) {
			name = FunctionName;
		}
		else if (fn !== FunctionProto) {
			match = ('' + fn).match(fnNameMatchRegex);
			name = match && match[1];
		}
		return name || '';
	};


	Object.defineProperty(FunctionProto, accessorName, {
		get: function Function$name() {
			var
			fn = this,
			fnName = getFunctionName(fn);

			// Since named function definitions have immutable names, also memoize the
			// output by defining the `name` property directly on this Function
			// instance so the accessor function will not need to be invoked again.
			if (fn !== FunctionProto) {
				Object.defineProperty(fn, accessorName, {
					value: fnName,
					configurable: true
				});
			}

			return fnName;
		},
		configurable: true
	});

}());

}


// _ESAbstract.TypedArrayCreateSameType
/* global TypedArrayCreate */
// 23.2.4.3 TypedArrayCreateSameType ( exemplar, argumentList )
function TypedArrayCreateSameType(exemplar, argumentList) { // eslint-disable-line no-unused-vars
	// 1. Let constructor be the intrinsic object associated with the constructor name exemplar.[[TypedArrayName]] in Table 68.
	var constructor = {
		Int8Array: self.Int8Array,
		Uint8Array: self.Uint8Array,
		Uint8ClampedArray: self.Uint8ClampedArray,
		Int16Array: self.Int16Array,
		Uint16Array: self.Uint16Array,
		Int32Array: self.Int32Array,
		Uint32Array: self.Uint32Array,
		Float32Array: self.Float32Array,
		Float64Array: self.Float64Array
	}[exemplar && exemplar.constructor && exemplar.constructor.name];

	// Polyfill.io - the `ArrayBuffer` polyfill does not expose a proper `constructor.name`
	if (!constructor) {
		var proto = Object.getPrototypeOf(Object(exemplar));
		constructor = {
			packI8: self.Int8Array,
			packU8: self.Uint8Array,
			packU8Clamped: self.Uint8ClampedArray,
			packI16: self.Int16Array,
			packU16: self.Uint16Array,
			packI32: self.Int32Array,
			packU32: self.Uint32Array,
			packF32: self.Float32Array,
			packF64: self.Float64Array
		}[proto && proto._pack && proto._pack.name];
	}

	// 2. Let result be ? TypedArrayCreate(constructor, argumentList).
	var result = TypedArrayCreate(constructor, argumentList);
	// 3. Assert: result has [[TypedArrayName]] and [[ContentType]] internal slots.
	// 4. Assert: result.[[ContentType]] is exemplar.[[ContentType]].
	// 5. Return result.
	return result;
}
if (!("with"in Array.prototype
)) {

// Array.prototype.with
/* global ArrayCreate, CreateDataPropertyOrThrow, CreateMethodProperty, Get, LengthOfArrayLike, ToIntegerOrInfinity, ToObject, ToString */
// 23.1.3.39 Array.prototype.with ( index, value )
CreateMethodProperty(Array.prototype, 'with', function With(index, value) {
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let len be ? LengthOfArrayLike(O).
	var len = LengthOfArrayLike(O);
	// 3. Let relativeIndex be ? ToIntegerOrInfinity(index).
	var relativeIndex = ToIntegerOrInfinity(index);
	// 4. If relativeIndex ≥ 0, let actualIndex be relativeIndex.
	// 5. Else, let actualIndex be len + relativeIndex.
	var actualIndex = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
	// 6. If actualIndex ≥ len or actualIndex < 0, throw a RangeError exception.
	if (actualIndex >= len || actualIndex < 0) {
		throw new RangeError('Invalid index');
	}
	// 7. Let A be ? ArrayCreate(len).
	var A = ArrayCreate(len);
	// 8. Let k be 0.
	var k = 0;
	// 9. Repeat, while k < len,
	while (k < len) {
		// a. Let Pk be ! ToString(𝔽(k)).
		var Pk = ToString(k);
		// b. If k is actualIndex, let fromValue be value.
		// c. Else, let fromValue be ? Get(O, Pk).
		var fromValue = k === actualIndex ? value : Get(O, Pk);
		// d. Perform ! CreateDataPropertyOrThrow(A, Pk, fromValue).
		CreateDataPropertyOrThrow(A, Pk, fromValue);
		// e. Set k to k + 1.
		k = k + 1;
	}
	// 10. Return A.
	return A;
});

(function () {
	var supportsDefiningFunctionName = (function () {
		var fn = function () {};
		try {
			Object.defineProperty(fn, 'name', {
				value: 'test'
			});
			return true;
		} catch (ignore) {
			return false;
		}
	})();

	if (supportsDefiningFunctionName) {
		Object.defineProperty(Array.prototype.with, 'name', {
			value: 'with',
			writable: false,
			enumerable: false,
			configurable: true
		})
	}
})();

}

if (!("location"in self&&"origin"in self.location
)) {

// location.origin
try {
	Object.defineProperty(window.location, 'origin', {
		enumerable: true,
		writable: false,
		value: window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : ''),
		configurable: false
	});
} catch(e) {

	// IE9 is throwing "Object doesn't support this action" when attempting defineProperty on window.location, so provide an alternative
	window.location.origin = window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '');
}

}

if (!("matchMedia"in self&&"MediaQueryList"in self
)) {

// matchMedia
(function() {
	"use strict";

	// For browsers that support matchMedium api such as IE 9 and webkit
	var styleMedia = (self.styleMedia || self.media);

	// For those that don't support matchMedium
	if (!styleMedia) {
		var style       = document.createElement('style'),
			script      = document.getElementsByTagName('script')[0],
			info        = null;

		style.type  = 'text/css';
		style.id    = 'matchmediajs-test';

		if (!script) {
		document.head.appendChild(style);
		} else {
		script.parentNode.insertBefore(style, script);
		}

		info = ('getComputedStyle' in self) && self.getComputedStyle(style, null);

		styleMedia = {
			matchMedium: function(media) {
				media = media.replace(/^only\s+/, '');
				var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';

				style.textContent = text;

				// Test if media query is true or false
				return info.width === '1px';
			}
		};
	}
	function MediaQueryList() {
		this.matches = false;
		this.media = 'invalid';
		this.listeners = [];
	}

	MediaQueryList.prototype.addListener = function addListener(listener) {
		var listenerIndex = this.listeners.indexOf(listener);

		if (listenerIndex === -1) {
			this.listeners.push(listener);
		}
	};

	MediaQueryList.prototype.removeListener = function removeListener(listener) {
		var listenerIndex = this.listeners.indexOf(listener);

		if (listenerIndex >= 0) {
			this.listeners.splice(listenerIndex, 1);
		}
	};

	self.MediaQueryList = MediaQueryList;

	self.matchMedia = function matchMedia(media) {
		var list = new MediaQueryList();

		if (0 === arguments.length) {
			throw new TypeError('Not enough arguments to matchMedia');
		}

		list.media = String(media);
		list.matches = styleMedia.matchMedium(media || 'all');

		self.addEventListener('resize', function () {
			var listeners = [].concat(list.addListener.listeners), matches = styleMedia.matchMedium(media || 'all');

			if (matches != list.matches) {
				list.matches = matches;
				for (var index = 0, length = listeners.length; index < length; ++index) {
					listeners[index].call(self, list);
				}
			}
		});

		return list;
	};
}());

}

if (!("acosh"in Math
)) {

// Math.acosh
/* global CreateMethodProperty */
// 20.2.2.3. Math.acosh ( x )
CreateMethodProperty(Math, 'acosh', function acosh(x) {
	// If x is NaN, the result is NaN.
	if (isNaN(x)) {
		return NaN;
	}
	// If x is less than 1, the result is NaN.
	if (x < 1) {
		return NaN;
	}
	// If x is 1, the result is +0.
	if (x === 1) {
		return 0;
	}
	// If x is +∞, the result is +∞.
	if (x === Infinity) {
		return Infinity;
	}
	return Math.log(x + Math.sqrt(x * x - 1));
});

}

if (!("asinh"in Math
)) {

// Math.asinh
/* global CreateMethodProperty */
// 20.2.2.5. Math.asinh ( x )
CreateMethodProperty(Math, 'asinh', function asinh(x) {
	// If x is NaN, the result is NaN.
	if (isNaN(x)) {
		return NaN;
	}
	// If x is +0, the result is +0.
	if (x === 0 && 1/x === Infinity) {
		return 0;
	}
	// If x is -0, the result is -0.
	if (x === 0 && 1/x === -Infinity) {
		return -0;
	}
	// If x is +∞, the result is +∞.
	if (x === Infinity) {
		return Infinity;
	}
	// If x is -∞, the result is -∞.
	if (x === -Infinity) {
		return -Infinity;
	}
	return Math.log(x + Math.sqrt(x * x + 1));
});

}

if (!("atanh"in Math
)) {

// Math.atanh
/* global CreateMethodProperty */
// 20.2.2.7. Math.atanh ( x )
CreateMethodProperty(Math, 'atanh', function atanh(x) {
	// If x is NaN, the result is NaN.
	if (isNaN(x)) {
		return NaN;
	}
	// If x is less than -1, the result is NaN.
	if (x < -1) {
		return NaN;
	}
	// If x is greater than 1, the result is NaN.
	if (x > 1) {
		return NaN;
	}
	// If x is -1, the result is -∞.
	if (x === -1) {
		return -Infinity;
	}
	// If x is +1, the result is +∞.
	if (x === 1) {
		return Infinity;
	}
	// If x is +0, the result is +0.
	if (x === 0 && 1/x === Infinity) {
		return 0;
	}
	// If x is -0, the result is -0.
	if (x === 0 && 1/x === -Infinity) {
		return -0;
	}
	return Math.log((1 + x) / (1 - x)) / 2;
});

}

if (!("cbrt"in Math
)) {

// Math.cbrt
/* global CreateMethodProperty */
// 20.2.2.9. Math.cbrt ( x )
CreateMethodProperty(Math, 'cbrt', function cbrt(x) {
	// If x is NaN, the result is NaN.
	if (isNaN(x)) {
		return NaN;
	}
	// If x is +0, the result is +0.
	if (x === 0 && 1/x === Infinity) {
		return 0;
	}
	// If x is -0, the result is -0.
	if (x === 0 && 1/x === -Infinity) {
		return -0;
	}
	// If x is +∞, the result is +∞.
	if (x === Infinity) {
		return Infinity;
	}
	// If x is -∞, the result is -∞.
	if (x === -Infinity) {
		return -Infinity;
	}
	var y = Math.pow(Math.abs(x), 1 / 3);
	return x < 0 ? -y : y;
});

}

if (!("clz32"in Math
)) {

// Math.clz32
/* global CreateMethodProperty, ToUint32 */
// 20.2.2.11. Math.clz32 ( x )
CreateMethodProperty(Math, 'clz32', function clz32(x) {
	// 1. Let n be ToUint32(x).
	var n = ToUint32(x);
	// 2. Let p be the number of leading zero bits in the 32-bit binary representation of n.
	var p = n ? 32 - n.toString(2).length : 32;
	// 3. Return p.
	return p;
});

}

if (!("cosh"in Math
)) {

// Math.cosh
/* global CreateMethodProperty */
// 20.2.2.1. 3Math.cosh ( x )
CreateMethodProperty(Math, 'cosh', function cosh(x) {
	// If x is NaN, the result is NaN.
	if (isNaN(x)) {
		return NaN;
	}
	// If x is +0, the result is 1.
	if (x === 0 && 1/x === Infinity) {
		return 1;
	}
	// If x is -0, the result is 1.
	if (x === 0 && 1/x === -Infinity) {
		return 1;
	}
	// If x is +∞, the result is +∞.
	if (x === Infinity) {
		return Infinity;
	}
	// If x is -∞, the result is +∞.
	if (x === -Infinity) {
		return Infinity;
	}
	x = Math.abs(x);
	if (x > 709) {
		var y = Math.exp(0.5 * x);
		return y / 2 * y;
	}
	y = Math.exp(x);
	return (y + 1 / y) / 2;
});

}

if (!("expm1"in Math
)) {

// Math.expm1
/* global CreateMethodProperty */
// 20.2.2.15. Math.expm1 ( x )
CreateMethodProperty(Math, 'expm1', function expm1(x) {
	// If x is NaN, the result is NaN.
	if (isNaN(x)) {
		return NaN;
	}
	// If x is +0, the result is +0.
	if (x === 0 && 1/x === Infinity) {
		return 0;
	}
	// If x is -0, the result is -0.
	if (x === 0 && 1/x === -Infinity) {
		return -0;
	}
	// If x is +∞, the result is +∞.
	if (x === Infinity) {
		return Infinity;
	}
	// If x is -∞, the result is -1.
	if (x === -Infinity) {
		return -1;
	}

	if (x > -1e-6 && x < 1e-6) {
		return x + x * x / 2;
	} else {
		return Math.exp(x) - 1;
	}
});

}

if (!("fround"in Math
)) {

// Math.fround
/* global Float32Array, CreateMethodProperty */
// 20.2.2.17 Math.fround ( x )
CreateMethodProperty(Math, 'fround', function (x) {
	// 1. If x is NaN, return NaN.
	if (isNaN(x)) {
		return NaN;
	}
	// 2. If x is one of +0, -0, +∞, -∞, return x.
	if (1 / x === +Infinity || 1 / x === -Infinity || x === +Infinity || x === -Infinity) {
		return x;
	}
	// 3. Let x32 be the result of converting x to a value in IEEE 754-2008 binary32 format using roundTiesToEven.
	// 4. Let x64 be the result of converting x32 to a value in IEEE 754-2008 binary64 format.
	// 5. Return the ECMAScript Number value corresponding to x64.
	return (new Float32Array([x]))[0];
});

}

if (!("hypot"in Math
)) {

// Math.hypot
/* global CreateMethodProperty */
// 20.2.2.18. Math.hypot ( value1, value2, ...values )
CreateMethodProperty(Math, 'hypot', function hypot(value1, value2) { // eslint-disable-line no-unused-vars
	// If no arguments are passed, the result is +0.
	if (arguments.length === 0) {
		return 0;
	}
	var y = 0;
	var max = 0;
	for (var i = 0; i < arguments.length; ++i) {
		// If any argument is +∞, the result is +∞.
		if (arguments[i] === Infinity) {
			return Infinity;
		}

		// If any argument is -∞, the result is +∞.
		if (arguments[i] === -Infinity) {
			return Infinity;
		}

		// If no argument is +∞ or -∞, and any argument is NaN, the result is NaN.
		// If all arguments are either +0 or -0, the result is +0.
		// Polyfill.io - The two conditions above are handled in the math.

		var arg = Math.abs(Number(arguments[i]));
		if (arg > max) {
			y = y * Math.pow(max / arg, 2);
			max = arg;
		}
		if (arg !== 0 || max !== 0) {
			y = y + Math.pow(arg / max, 2);
		}
	}

	return max * Math.sqrt(y);
});

}

if (!("imul"in Math
)) {

// Math.imul
/* global CreateMethodProperty, ToUint32 */
// 20.2.2.19. Math.imul ( x, y )
CreateMethodProperty(Math, 'imul', function imul(x, y) {
	// 1. Let a be ToUint32(x).
	var a = ToUint32(x);
	// 2. Let b be ToUint32(y).
	var b = ToUint32(y);
	var UINT16 = 0xffff;
	var aHigh = a >>> 16 & UINT16;
	var aLow = UINT16 & a;
	var bHigh = b >>> 16 & UINT16;
	var bLow = UINT16 & b;
	// the shift by 0 fixes the sign on the high part
	// the final |0 converts the unsigned value into a signed value
	return aLow * bLow + (aHigh * bLow + aLow * bHigh << 16 >>> 0) | 0;
});

}

if (!("log10"in Math
)) {

// Math.log10
/* global CreateMethodProperty */
// 20.2.2.22. Math.log10 ( x )
CreateMethodProperty(Math, 'log10', function log10(x) {
	return Math.log(x) / Math.LN10;
});

}

if (!("log1p"in Math
)) {

// Math.log1p
/* global CreateMethodProperty */
// 20.2.2.21. Math.log1p ( x )
CreateMethodProperty(Math, 'log1p', function log1p(x) {
	x = Number(x);
	if (-1 < x && x < 1) {
		// Polyfill.io - For numbers in the range −1 < x < 1
		// Because we are using log, the precision of the result will be identical to log(1).
		// To fix this we avoid using log and use the Taylor Series expansion of log.
		// This series converges when |x| < 1. As we can not sum to infinity,
		// we instead sum the first 300 parts of the series to give a close approximation.
		// |x|<1, log(1+x) = x - x^2/2 + x^3/3 - ... + (-1)^(n-1)*x^n/n + ...
		var y = x;
		for (var i = 2; i <= 300; i++) {
			y += Math.pow((-1), (i - 1)) * Math.pow(x, i) / i;
		}
		return y;
	}

	return Math.log(1 + x);
});

}

if (!("log2"in Math
)) {

// Math.log2
/* global CreateMethodProperty */
// 20.2.2.23. Math.log2 ( x )
CreateMethodProperty(Math, 'log2', function log2(x) {
	return Math.log(x) / Math.LN2;
});

}

if (!("sign"in Math
)) {

// Math.sign
/* global CreateMethodProperty */
// 20.2.2.29. Math.sign ( x )
CreateMethodProperty(Math, 'sign', function sign(x) {
	x = Number(x);
	// If x is NaN, the result is NaN.
	if (isNaN(x)) {
		return NaN;
	}
	// If x is -0, the result is -0.
	if (1 / x === -Infinity) {
		return -0;
	}
	// If x is +0, the result is +0.
	if (1 / x === Infinity) {
		return 0;
	}
	// If x is negative and not -0, the result is -1.
	if (x < 0) {
		return -1;
	}
	// If x is positive and not +0, the result is +1.
	if (x > 0) {
		return 1;
	}
});

}

if (!("sinh"in Math
)) {

// Math.sinh
/* global CreateMethodProperty */
// 20.2.2.31. Math.sinh ( x )
CreateMethodProperty(Math, 'sinh', function sinh(x) {
	var s = (x < 0) ? -1 : 1;
	var absx = Math.abs(x);
	if (absx < 22) {
		if (absx < Math.pow(2, -28)) {
			return x;
		}
		var t = Math.exp(absx) - 1;
		if (absx < 1) {
			return (s * (2 * t - t * t / (t + 1)))/2;
		}
		return (s * (t + t / (t + 1)))/2;
	}
	if (absx < 709.7822265625) {
		return (s * Math.exp(absx))/2;
	}
	var w = Math.exp(0.5 * absx);
	t = (s * w)/2;
	return t * w;
});

}

if (!("tanh"in Math
)) {

// Math.tanh
/* global CreateMethodProperty */
// 20.2.2.34. Math.tanh ( x )
CreateMethodProperty(Math, 'tanh', function tanh(x) {
	var y;

	return x === Infinity ? 1 : x === -Infinity ? -1 : (y = Math.exp(2 * x), (y - 1) / (y + 1));
});

}

if (!("trunc"in Math
)) {

// Math.trunc
/* global CreateMethodProperty */
CreateMethodProperty(Math, 'trunc', function trunc(x) {
	return x < 0 ? Math.ceil(x) : Math.floor(x);
});

}

if (!("MutationObserver"in self
)) {

// MutationObserver
/*!
 * Shim for MutationObserver interface
 * Author: Graeme Yeates (github.com/megawac)
 * Repository: https://github.com/megawac/MutationObserver.js
 * License: WTFPL V2, 2004 (wtfpl.net).
 * Though credit and staring the repo will make me feel pretty, you can modify and redistribute as you please.
 * Attempts to follow spec (https://www.w3.org/TR/dom/#mutation-observers) as closely as possible for native javascript
 * See https://github.com/WebKit/webkit/blob/master/Source/WebCore/dom/MutationObserver.cpp for current webkit source c++ implementation
 */

/**
 * prefix bugs:
    - https://bugs.webkit.org/show_bug.cgi?id=85161
    - https://bugzilla.mozilla.org/show_bug.cgi?id=749920
 * Don't use WebKitMutationObserver as Safari (6.0.5-6.1) use a buggy implementation
*/
if (!window.MutationObserver) {
    window.MutationObserver = (function (undefined) {
        "use strict";
        /**
         * @param {function(Array.<MutationRecord>, MutationObserver)} listener
         * @constructor
         */
        function MutationObserver(listener) {
            /**
             * @type {Array.<Object>}
             * @private
             */
            this._watched = [];
            /** @private */
            this._listener = listener;
        }

        /**
         * Start a recursive timeout function to check all items being observed for mutations
         * @type {MutationObserver} observer
         * @private
         */
        function startMutationChecker(observer) {
            (function check() {
                var mutations = observer.takeRecords();

                if (mutations.length) { // fire away
                    // calling the listener with context is not spec but currently consistent with FF and WebKit
                    observer._listener(mutations, observer);
                }
                /** @private */
                observer._timeout = setTimeout(check, MutationObserver._period);
            })();
        }

        /**
         * Period to check for mutations (~32 times/sec)
         * @type {number}
         * @expose
         */
        MutationObserver._period = 30 /*ms+runtime*/;

        /**
         * Exposed API
         * @expose
         * @final
         */
        MutationObserver.prototype = {
            /**
             * see https://dom.spec.whatwg.org/#dom-mutationobserver-observe
             * not going to throw here but going to follow the current spec config sets
             * @param {Node|null} $target
             * @param {Object|null} config : MutationObserverInit configuration dictionary
             * @expose
             * @return undefined
             */
            observe: function ($target, config) {
                /**
                 * Using slightly different names so closure can go ham
                 * @type {!Object} : A custom mutation config
                 */
                var settings = {
                    attr: !!(config.attributes || config.attributeFilter || config.attributeOldValue),

                    // some browsers enforce that subtree must be set with childList, attributes or characterData.
                    // We don't care as spec doesn't specify this rule.
                    kids: !!config.childList,
                    descendents: !!config.subtree,
                    charData: !!(config.characterData || config.characterDataOldValue)
                };

                var watched = this._watched;

                // remove already observed target element from pool
                for (var i = 0; i < watched.length; i++) {
                    if (watched[i].tar === $target) watched.splice(i, 1);
                }

                if (config.attributeFilter) {
                    /**
                     * converts to a {key: true} dict for faster lookup
                     * @type {Object.<String,Boolean>}
                     */
                    settings.afilter = reduce(config.attributeFilter, function (a, b) {
                        a[b] = true;
                        return a;
                    }, {});
                }

                watched.push({
                    tar: $target,
                    fn: createMutationSearcher($target, settings)
                });

                // reconnect if not connected
                if (!this._timeout) {
                    startMutationChecker(this);
                }
            },

            /**
             * Finds mutations since last check and empties the "record queue" i.e. mutations will only be found once
             * @expose
             * @return {Array.<MutationRecord>}
             */
            takeRecords: function () {
                var mutations = [];
                var watched = this._watched;

                for (var i = 0; i < watched.length; i++) {
                    watched[i].fn(mutations);
                }

                return mutations;
            },

            /**
             * @expose
             * @return undefined
             */
            disconnect: function () {
                this._watched = []; // clear the stuff being observed
                clearTimeout(this._timeout); // ready for garbage collection
                /** @private */
                this._timeout = null;
            }
        };

        /**
         * Simple MutationRecord pseudoclass. No longer exposing as its not fully compliant
         * @param {Object} data
         * @return {Object} a MutationRecord
         */
        function MutationRecord(data) {
            var settings = { // technically these should be on proto so hasOwnProperty will return false for non explicitly props
                type: null,
                target: null,
                addedNodes: [],
                removedNodes: [],
                previousSibling: null,
                nextSibling: null,
                attributeName: null,
                attributeNamespace: null,
                oldValue: null
            };
            for (var prop in data) {
                if (has(settings, prop) && data[prop] !== undefined) settings[prop] = data[prop];
            }
            return settings;
        }

        /**
         * Creates a func to find all the mutations
         *
         * @param {Node} $target
         * @param {!Object} config : A custom mutation config
         */
        function createMutationSearcher($target, config) {
            /** type {Elestuct} */
            var $oldstate = clone($target, config); // create the cloned datastructure

            /**
             * consumes array of mutations we can push to
             *
             * @param {Array.<MutationRecord>} mutations
             */
            return function (mutations) {
                var olen = mutations.length, dirty;

                if (config.charData && $target.nodeType === 3 && $target.nodeValue !== $oldstate.charData) {
                    mutations.push(new MutationRecord({
                        type: "characterData",
                        target: $target,
                        oldValue: $oldstate.charData
                    }));
                }

                // Alright we check base level changes in attributes... easy
                if (config.attr && $oldstate.attr) {
                    findAttributeMutations(mutations, $target, $oldstate.attr, config.afilter);
                }

                // check childlist or subtree for mutations
                if (config.kids || config.descendents) {
                    dirty = searchSubtree(mutations, $target, $oldstate, config);
                }

                // reclone data structure if theres changes
                if (dirty || mutations.length !== olen) {
                    /** type {Elestuct} */
                    $oldstate = clone($target, config);
                }
            };
        }

        /* attributes + attributeFilter helpers */

        // Check if the environment has the attribute bug (#4) which cause
        // element.attributes.style to always be null.
        var hasAttributeBug = document.createElement("i");
        hasAttributeBug.style.top = 0;
        hasAttributeBug = hasAttributeBug.attributes.style.value != "null";

        /**
         * Gets an attribute value in an environment without attribute bug
         *
         * @param {Node} el
         * @param {Attr} attr
         * @return {String} an attribute value
         */
        function getAttributeSimple(el, attr) {
            // There is a potential for a warning to occur here if the attribute is a
            // custom attribute in IE<9 with a custom .toString() method. This is
            // just a warning and doesn't affect execution (see #21)
            return attr.value;
        }

        /**
         * Gets an attribute value with special hack for style attribute (see #4)
         *
         * @param {Node} el
         * @param {Attr} attr
         * @return {String} an attribute value
         */
        function getAttributeWithStyleHack(el, attr) {
            // As with getAttributeSimple there is a potential warning for custom attribtues in IE7.
            return attr.name !== "style" ? attr.value : el.style.cssText;
        }

        var getAttributeValue = hasAttributeBug ? getAttributeSimple : getAttributeWithStyleHack;

        /**
         * fast helper to check to see if attributes object of an element has changed
         * doesnt handle the textnode case
         *
         * @param {Array.<MutationRecord>} mutations
         * @param {Node} $target
         * @param {Object.<string, string>} $oldstate : Custom attribute clone data structure from clone
         * @param {Object} filter
         */
        function findAttributeMutations(mutations, $target, $oldstate, filter) {
            var checked = {};
            var attributes = $target.attributes;
            var attr;
            var name;
            var i = attributes.length;
            while (i--) {
                attr = attributes[i];
                name = attr.name;
                if (!filter || has(filter, name)) {
                    if (getAttributeValue($target, attr) !== $oldstate[name]) {
                        // The pushing is redundant but gzips very nicely
                        mutations.push(MutationRecord({
                            type: "attributes",
                            target: $target,
                            attributeName: name,
                            oldValue: $oldstate[name],
                            attributeNamespace: attr.namespaceURI // in ie<8 it incorrectly will return undefined
                        }));
                    }
                    checked[name] = true;
                }
            }
            for (name in $oldstate) {
                if (!(checked[name])) {
                    mutations.push(MutationRecord({
                        target: $target,
                        type: "attributes",
                        attributeName: name,
                        oldValue: $oldstate[name]
                    }));
                }
            }
        }

        /**
         * searchSubtree: array of mutations so far, element, element clone, bool
         * synchronous dfs comparision of two nodes
         * This function is applied to any observed element with childList or subtree specified
         * Sorry this is kind of confusing as shit, tried to comment it a bit...
         * codereview.stackexchange.com/questions/38351 discussion of an earlier version of this func
         *
         * @param {Array} mutations
         * @param {Node} $target
         * @param {!Object} $oldstate : A custom cloned node from clone()
         * @param {!Object} config : A custom mutation config
         */
        function searchSubtree(mutations, $target, $oldstate, config) {
            // Track if the tree is dirty and has to be recomputed (#14).
            var dirty;
            /*
             * Helper to identify node rearrangment and stuff...
             * There is no gaurentee that the same node will be identified for both added and removed nodes
             * if the positions have been shuffled.
             * conflicts array will be emptied by end of operation
             */
            function resolveConflicts(conflicts, node, $kids, $oldkids, numAddedNodes) {
                // the distance between the first conflicting node and the last
                var distance = conflicts.length - 1;
                // prevents same conflict being resolved twice consider when two nodes switch places.
                // only one should be given a mutation event (note -~ is used as a math.ceil shorthand)
                var counter = -~((distance - numAddedNodes) / 2);
                var $cur;
                var oldstruct;
                var conflict;
                while ((conflict = conflicts.pop())) {
                    $cur = $kids[conflict.i];
                    oldstruct = $oldkids[conflict.j];

                    // attempt to determine if there was node rearrangement... won't gaurentee all matches
                    // also handles case where added/removed nodes cause nodes to be identified as conflicts
                    if (config.kids && counter && Math.abs(conflict.i - conflict.j) >= distance) {
                        mutations.push(MutationRecord({
                            type: "childList",
                            target: node,
                            addedNodes: [$cur],
                            removedNodes: [$cur],
                            // haha don't rely on this please
                            nextSibling: $cur.nextSibling,
                            previousSibling: $cur.previousSibling
                        }));
                        counter--; // found conflict
                    }

                    // Alright we found the resorted nodes now check for other types of mutations
                    if (config.attr && oldstruct.attr) findAttributeMutations(mutations, $cur, oldstruct.attr, config.afilter);
                    if (config.charData && $cur.nodeType === 3 && $cur.nodeValue !== oldstruct.charData) {
                        mutations.push(MutationRecord({
                            type: "characterData",
                            target: $cur,
                            oldValue: oldstruct.charData
                        }));
                    }
                    // now look @ subtree
                    if (config.descendents) findMutations($cur, oldstruct);
                }
            }

            /**
             * Main worker. Finds and adds mutations if there are any
             * @param {Node} node
             * @param {!Object} old : A cloned data structure using internal clone
             */
            function findMutations(node, old) {
                var $kids = node.childNodes;
                var $oldkids = old.kids;
                var klen = $kids.length;
                // $oldkids will be undefined for text and comment nodes
                var olen = $oldkids ? $oldkids.length : 0;
                // if (!olen && !klen) return; // both empty; clearly no changes

                // we delay the intialization of these for marginal performance in the expected case (actually quite signficant on large subtrees when these would be otherwise unused)
                // map of checked element of ids to prevent registering the same conflict twice
                var map;
                // array of potential conflicts (ie nodes that may have been re arranged)
                var conflicts;
                var id; // element id from getElementId helper
                var idx; // index of a moved or inserted element

                var oldstruct;
                // current and old nodes
                var $cur;
                var $old;
                // track the number of added nodes so we can resolve conflicts more accurately
                var numAddedNodes = 0;

                // iterate over both old and current child nodes at the same time
                var i = 0, j = 0;
                // while there is still anything left in $kids or $oldkids (same as i < $kids.length || j < $oldkids.length;)
                while (i < klen || j < olen) {
                    // current and old nodes at the indexs
                    $cur = $kids[i];
                    oldstruct = $oldkids[j];
                    $old = oldstruct && oldstruct.node;

                    if ($cur === $old) { // expected case - optimized for this case
                        // check attributes as specified by config
                        if (config.attr && oldstruct.attr) /* oldstruct.attr instead of textnode check */findAttributeMutations(mutations, $cur, oldstruct.attr, config.afilter);
                        // check character data if node is a comment or textNode and it's being observed
                        if (config.charData && oldstruct.charData !== undefined && $cur.nodeValue !== oldstruct.charData) {
                            mutations.push(MutationRecord({
                                type: "characterData",
                                target: $cur,
                                oldValue: oldstruct.charData
                            }));
                        }

                        // resolve conflicts; it will be undefined if there are no conflicts - otherwise an array
                        if (conflicts) resolveConflicts(conflicts, node, $kids, $oldkids, numAddedNodes);

                        // recurse on next level of children. Avoids the recursive call when there are no children left to iterate
                        if (config.descendents && ($cur.childNodes.length || oldstruct.kids && oldstruct.kids.length)) findMutations($cur, oldstruct);

                        i++;
                        j++;
                    } else { // (uncommon case) lookahead until they are the same again or the end of children
                        dirty = true;
                        if (!map) { // delayed initalization (big perf benefit)
                            map = {};
                            conflicts = [];
                        }
                        if ($cur) {
                            // check id is in the location map otherwise do a indexOf search
                            if (!(map[id = getElementId($cur)])) { // to prevent double checking
                                // mark id as found
                                map[id] = true;
                                // custom indexOf using comparitor checking oldkids[i].node === $cur
                                if ((idx = indexOfCustomNode($oldkids, $cur, j)) === -1) {
                                    if (config.kids) {
                                        mutations.push(MutationRecord({
                                            type: "childList",
                                            target: node,
                                            addedNodes: [$cur], // $cur is a new node
                                            nextSibling: $cur.nextSibling,
                                            previousSibling: $cur.previousSibling
                                        }));
                                        numAddedNodes++;
                                    }
                                } else {
                                    conflicts.push({ // add conflict
                                        i: i,
                                        j: idx
                                    });
                                }
                            }
                            i++;
                        }

                        if ($old &&
                            // special case: the changes may have been resolved: i and j appear congurent so we can continue using the expected case
                            $old !== $kids[i]
                        ) {
                            if (!(map[id = getElementId($old)])) {
                                map[id] = true;
                                if ((idx = indexOf($kids, $old, i)) === -1) {
                                    if (config.kids) {
                                        mutations.push(MutationRecord({
                                            type: "childList",
                                            target: old.node,
                                            removedNodes: [$old],
                                            nextSibling: $oldkids[j + 1], // praise no indexoutofbounds exception
                                            previousSibling: $oldkids[j - 1]
                                        }));
                                        numAddedNodes--;
                                    }
                                } else {
                                    conflicts.push({
                                        i: idx,
                                        j: j
                                    });
                                }
                            }
                            j++;
                        }
                    }// end uncommon case
                }// end loop

                // resolve any remaining conflicts
                if (conflicts) resolveConflicts(conflicts, node, $kids, $oldkids, numAddedNodes);
            }
            findMutations($target, $oldstate);
            return dirty;
        }

        /**
         * Utility
         * Cones a element into a custom data structure designed for comparision. https://gist.github.com/megawac/8201012
         *
         * @param {Node} $target
         * @param {!Object} config : A custom mutation config
         * @return {!Object} : Cloned data structure
         */
        function clone($target, config) {
            var recurse = true; // set true so childList we'll always check the first level
            return (function copy($target) {
                var elestruct = {
                    /** @type {Node} */
                    node: $target
                };

                // Store current character data of target text or comment node if the config requests
                // those properties to be observed.
                if (config.charData && ($target.nodeType === 3 || $target.nodeType === 8)) {
                    elestruct.charData = $target.nodeValue;
                }
                // its either a element, comment, doc frag or document node
                else {
                    // Add attr only if subtree is specified or top level and avoid if
                    // attributes is a document object (#13).
                    if (config.attr && recurse && $target.nodeType === 1) {
                        /**
                         * clone live attribute list to an object structure {name: val}
                         * @type {Object.<string, string>}
                         */
                        elestruct.attr = reduce($target.attributes, function (memo, attr) {
                            if (!config.afilter || config.afilter[attr.name]) {
                                memo[attr.name] = getAttributeValue($target, attr);
                            }
                            return memo;
                        }, {});
                    }

                    // whether we should iterate the children of $target node
                    if (recurse && ((config.kids || config.charData) || (config.attr && config.descendents))) {
                        /** @type {Array.<!Object>} : Array of custom clone */
                        elestruct.kids = map($target.childNodes, copy);
                    }

                    recurse = config.descendents;
                }
                return elestruct;
            })($target);
        }

        /**
         * indexOf an element in a collection of custom nodes
         *
         * @param {NodeList} set
         * @param {!Object} $node : A custom cloned node
         * @param {number} idx : index to start the loop
         * @return {number}
         */
        function indexOfCustomNode(set, $node, idx) {
            return indexOf(set, $node, idx, JSCompiler_renameProperty("node"));
        }

        // using a non id (eg outerHTML or nodeValue) is extremely naive and will run into issues with nodes that may appear the same like <li></li>
        var counter = 1; // don't use 0 as id (falsy)
        /** @const */
        var expando = "mo_id";

        /**
         * Attempt to uniquely id an element for hashing. We could optimize this for legacy browsers but it hopefully wont be called enough to be a concern
         *
         * @param {Node} $ele
         * @return {(string|number)}
         */
        function getElementId($ele) {
            try {
                return $ele.id || ($ele[expando] = $ele[expando] || counter++);
            } catch (o_O) { // ie <8 will throw if you set an unknown property on a text node
                try {
                    return $ele.nodeValue; // naive
                } catch (shitie) { // when text node is removed: https://gist.github.com/megawac/8355978 :(
                    return counter++;
                }
            }
        }

        /**
         * **map** Apply a mapping function to each item of a set
         * @param {Array|NodeList} set
         * @param {Function} iterator
         */
        function map(set, iterator) {
            var results = [];
            for (var index = 0; index < set.length; index++) {
                results[index] = iterator(set[index], index, set);
            }
            return results;
        }

        /**
         * **Reduce** builds up a single result from a list of values
         * @param {Array|NodeList|NamedNodeMap} set
         * @param {Function} iterator
         * @param {*} [memo] Initial value of the memo.
         */
        function reduce(set, iterator, memo) {
            for (var index = 0; index < set.length; index++) {
                memo = iterator(memo, set[index], index, set);
            }
            return memo;
        }

        /**
         * **indexOf** find index of item in collection.
         * @param {Array|NodeList} set
         * @param {Object} item
         * @param {number} idx
         * @param {string} [prop] Property on set item to compare to item
         */
        function indexOf(set, item, idx, prop) {
            for (/*idx = ~~idx*/; idx < set.length; idx++) {// start idx is always given as this is internal
                if ((prop ? set[idx][prop] : set[idx]) === item) return idx;
            }
            return -1;
        }

        /**
         * @param {Object} obj
         * @param {(string|number)} prop
         * @return {boolean}
         */
        function has(obj, prop) {
            return obj[prop] !== undefined; // will be nicely inlined by gcc
        }

        // GCC hack see https://stackoverflow.com/a/23202438/1517919
        function JSCompiler_renameProperty(a) {
            return a;
        }

        return MutationObserver;
    })(void 0);
}

}

if (!(document.contains
)) {

// Node.prototype.contains
(function() {

	function contains(node) {
		if (!(0 in arguments)) {
			throw new TypeError('1 argument is required');
		}

		do {
			if (this === node) {
				return true;
			}
		// eslint-disable-next-line no-cond-assign
		} while (node = node && node.parentNode);

		return false;
	}

	// IE
	if ('HTMLElement' in self && 'contains' in HTMLElement.prototype) {
		try {
			delete HTMLElement.prototype.contains;
		// eslint-disable-next-line no-empty
		} catch (e) {}
	}

	if ('Node' in self) {
		Node.prototype.contains = contains;
	} else {
		document.contains = Element.prototype.contains = contains;
	}

}());

}

if (!(document.isSameNode
)) {

// Node.prototype.isSameNode
(function() {

	function isSameNode(otherNode) {
		if (!(0 in arguments)) {
			throw new TypeError('1 argument is required');
		}

		return this === otherNode;
	}

	// IE
	if ('HTMLElement' in self && 'isSameNode' in HTMLElement.prototype) {
		try {
			delete HTMLElement.prototype.isSameNode;
		// eslint-disable-next-line no-empty
		} catch (e) {}
	}

	if ('Node' in self) {
		Node.prototype.isSameNode = isSameNode;
	} else {
		document.isSameNode = Element.prototype.isSameNode = isSameNode;
	}

}());

}

if (!("EPSILON"in Number
)) {

// Number.Epsilon
// 20.1.2.1. Number.EPSILON
// The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 that is representable as a Number value, which is approximately 2.2204460492503130808472633361816 x 10-16.
// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
Object.defineProperty(Number, 'EPSILON', {
	enumerable: false,
	configurable: false,
	writable: false,
	value: Math.pow(2, -52)
});

}

if (!("isFinite"in Number
)) {

// Number.isFinite
/* global CreateMethodProperty, Type */
(function () {
	var that = self;
	// 20.1.2.2. Number.isFinite ( number )
	CreateMethodProperty(Number, 'isFinite', function isFinite(number) {
		// 1. If Type(number) is not Number, return false.
		if (Type(number) !== 'number') {
			return false;
		}
		// 2. If number is NaN, +∞, or -∞, return false.
		// 3. Otherwise, return true.
		// Polyfill.io - We use isFinite as it implements steps 2 and 3.
		return that.isFinite(number);
	});
}());

}

if (!("isInteger"in Number
)) {

// Number.isInteger
/* global CreateMethodProperty, ToInteger, Type */
// 20.1.2.3. Number.isInteger ( number )
CreateMethodProperty(Number, 'isInteger', function isInteger(number) {
	// 1. If Type(number) is not Number, return false.
	if (Type(number) !== 'number') {
		return false;
	}
	// 2. If number is NaN, +∞, or -∞, return false.
	if (isNaN(number) || number === Infinity || number === -Infinity) {
		return false;
	}
	// 3. Let integer be ToInteger(number).
	var integer = ToInteger(number);
	// 4. If integer is not equal to number, return false.
	if (integer !== number) {
		return false;
	}
	// 5. Otherwise, return true.
	return true;
});

}

if (!("isNaN"in Number
)) {

// Number.isNaN
/* global CreateMethodProperty, Type */
(function () {
	var that = self;
	// 20.1.2.4. Number.isNaN ( number )
	CreateMethodProperty(Number, 'isNaN', function isNaN(number) {
		// 1. If Type(number) is not Number, return false.
		if (Type(number) !== 'number') {
			return false;
		}
		// 2. If number is NaN, return true.
		if (that.isNaN(number)) {
			return true;
		}
		// 3. Otherwise, return false.
		return false;
	});
}());

}

if (!("isSafeInteger"in Number
)) {

// Number.isSafeInteger
/* global CreateMethodProperty, Type, ToInteger */
// 20.1.2.5. Number.isSafeInteger ( number )
CreateMethodProperty(Number, 'isSafeInteger', function isSafeInteger(number) {
	// 1. If Type(number) is not Number, return false.
	if (Type(number) !== 'number') {
		return false;
	}
	// 2. If number is NaN, +∞, or -∞, return false.
	if (isNaN(number) || number === Infinity || number === -Infinity) {
		return false;
	}
	// 3. Let integer be ToInteger(number).
	var integer = ToInteger(number);
	// 4. If integer is not equal to number, return false.
	if (integer !== number) {
		return false;
	}
	// 5. If abs(integer) ≤ 2^53-1, return true.
	if (Math.abs(integer) <= (Math.pow(2, 53) - 1)) {
		return true;
	}
	// 6. Otherwise, return false.
	return false;
});

}

if (!("MAX_SAFE_INTEGER"in Number
)) {

// Number.MAX_SAFE_INTEGER
// 20.1.2.6. Number.MAX_SAFE_INTEGER
// The value of Number.MAX_SAFE_INTEGER is 9007199254740991 (2^53-1).
// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
Object.defineProperty(Number, 'MAX_SAFE_INTEGER', {
	enumerable: false,
	configurable: false,
	writable: false,
	value: Math.pow(2, 53) - 1
});

}

if (!("toSpliced"in Array.prototype
)) {

// Array.prototype.toSpliced
/* global ArrayCreate, CreateDataPropertyOrThrow, CreateMethodProperty, Get, LengthOfArrayLike, ToIntegerOrInfinity, ToObject, ToString */
// 23.1.3.35 Array.prototype.toSpliced ( start, skipCount, ...items )
CreateMethodProperty(Array.prototype, 'toSpliced', function toSpliced(start, skipCount) {
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Let len be ? LengthOfArrayLike(O).
	var len = LengthOfArrayLike(O);
	// 3. Let relativeStart be ? ToIntegerOrInfinity(start).
	var relativeStart = ToIntegerOrInfinity(start);

	var actualStart;
	// 4. If relativeStart is -∞, let actualStart be 0.
	if (relativeStart === -Infinity) {
		actualStart = 0
	}
	// 5. Else if relativeStart < 0, let actualStart be max(len + relativeStart, 0).
	else if (relativeStart < 0) {
		actualStart = Math.max(len + relativeStart, 0);
	}
	// 6. Else, let actualStart be min(relativeStart, len).
	else {
		actualStart = Math.min(relativeStart, len);
	}

	// 7. Let insertCount be the number of elements in items.
	var items = arguments.length > 2 ? Array.prototype.slice.call(arguments, 2) : [];
	var insertCount = items.length;

	var actualSkipCount;
	// 8. If start is not present, then
	if (arguments.length === 0) {
		// a. Let actualSkipCount be 0.
		actualSkipCount = 0;
	}
	// 9. Else if skipCount is not present, then
	else if (arguments.length === 1) {
		// a. Let actualSkipCount be len - actualStart.
		actualSkipCount = len - actualStart;
	}
	// 10. Else,
	else {
		// a. Let sc be ? ToIntegerOrInfinity(skipCount).
		var sc = ToIntegerOrInfinity(skipCount);
		// b. Let actualSkipCount be the result of clamping sc between 0 and len - actualStart.
		actualSkipCount = Math.min(Math.max(0, sc), len - actualStart);
	}

	// 11. Let newLen be len + insertCount - actualSkipCount.
	var newLen = len + insertCount - actualSkipCount;
	// 12. If newLen > 253 - 1, throw a TypeError exception.
	if (newLen > Number.MAX_SAFE_INTEGER) {
		throw new TypeError('Length exceeded the maximum array length');
	}
	// 13. Let A be ? ArrayCreate(newLen).
	var A = ArrayCreate(newLen);
	// 14. Let i be 0.
	var i = 0;
	// 15. Let r be actualStart + actualSkipCount.
	var r = actualStart + actualSkipCount;
	// 16. Repeat, while i < actualStart,
	while (i < actualStart) {
		// a. Let Pi be ! ToString(𝔽(i)).
		var Pi = ToString(i);
		// b. Let iValue be ? Get(O, Pi).
		var iValue = Get(O, Pi);
		// c. Perform ! CreateDataPropertyOrThrow(A, Pi, iValue).
		CreateDataPropertyOrThrow(A, Pi, iValue);
		// d. Set i to i + 1.
		i = i + 1;
	}
	// 17. For each element E of items, do
	items.forEach(function (E) {
		var Pi = ToString(i);
		CreateDataPropertyOrThrow(A, Pi, E);
		i = i + 1;
	});
	// 18. Repeat, while i < newLen,
	while (i < newLen) {
		// a. Let Pi be ! ToString(𝔽(i)).
		var Pi2 = ToString(i);
		// b. Let from be ! ToString(𝔽(r)).
		var from = ToString(r);
		// c. Let fromValue be ? Get(O, from).
		var fromValue = Get(O, from);
		// d. Perform ! CreateDataPropertyOrThrow(A, Pi, fromValue).
		CreateDataPropertyOrThrow(A, Pi2, fromValue);
		// e. Set i to i + 1.
		i = i + 1;
		// f. Set r to r + 1.
		r = r + 1;
	}
	// 19. Return A.
	return A;
});

}

if (!("MIN_SAFE_INTEGER"in Number
)) {

// Number.MIN_SAFE_INTEGER
// 20.1.2.8. Number.MIN_SAFE_INTEGER
// The value of Number.MIN_SAFE_INTEGER is -9007199254740991 (-(253-1)).
// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
Object.defineProperty(Number, 'MIN_SAFE_INTEGER', {
	enumerable: false,
	configurable: false,
	writable: false,
	value: -(Math.pow(2, 53) - 1)
});

}

if (!("freeze"in Object
)) {

// Object.freeze
/* global CreateMethodProperty */
// 19.1.2.6. Object.freeze ( O )
CreateMethodProperty(Object, 'freeze', function freeze(O) {
	// This feature cannot be implemented fully as a polyfill.
	// We choose to silently fail which allows "securable" code
	// to "gracefully" degrade to working but insecure code.
	return O;
});

}

if (!("getOwnPropertyDescriptor"in Object&&"function"==typeof Object.getOwnPropertyDescriptor&&function(){try{return"3"===Object.getOwnPropertyDescriptor("13.7",1).value}catch(t){return!1}}()
)) {

// Object.getOwnPropertyDescriptor
/* global CreateMethodProperty, ToObject, ToPropertyKey, Type */
(function () {
	var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
	var toString = ({}).toString;
	var split = ''.split;

	// 19.1.2.8 Object.getOwnPropertyDescriptor ( O, P )
	CreateMethodProperty(Object, 'getOwnPropertyDescriptor', function getOwnPropertyDescriptor(O, P) {
		// 1. Let obj be ? ToObject(O).
		var obj = ToObject(O);
		// Polyfill.io fallback for non-array-like strings which exist in some ES3 user-agents
		obj = (Type(obj) === 'string' || obj instanceof String) && toString.call(O) == '[object String]' ? split.call(O, '') : Object(O);

		// 2. Let key be ? ToPropertyKey(P).
		var key = ToPropertyKey(P);

		// 3. Let desc be ? obj.[[GetOwnProperty]](key).
		// 4. Return FromPropertyDescriptor(desc).
		return nativeGetOwnPropertyDescriptor(obj, key);
	});
}());

}

if (!("hasOwn"in Object
)) {

// Object.hasOwn
/* global CreateMethodProperty, HasOwnProperty, ToObject, ToPropertyKey */

// 20.1.2.13 Object.hasOwn ( O, P )
CreateMethodProperty(Object, 'hasOwn', function hasOwn(O, P) {
	// Let obj be ? ToObject(O).
	var obj = ToObject(O);
	// 2. Let key be ? ToPropertyKey(P).
	var key = ToPropertyKey(P);
	// 3. Return ? HasOwnProperty(obj, key).
	return HasOwnProperty(obj, key);
});

}

if (!("is"in Object
)) {

// Object.is
/* global CreateMethodProperty, SameValue */
// 19.1.2.12. Object.is ( value1, value2 )
CreateMethodProperty(Object, 'is', function is(value1, value2) {
	// 1. Return SameValue(value1, value2).
	return SameValue(value1, value2);
});

}

if (!("isExtensible"in Object
)) {

// Object.isExtensible
/* global CreateMethodProperty, Type */

(function (nativeIsExtensible) {
	// 19.1.2.13 Object.isExtensible ( O )
	CreateMethodProperty(Object, 'isExtensible', function isExtensible(O) {
		// 1. If Type(O) is not Object, return false.
		if (Type(O) !== "object") {
			return false;
		}
		// 2. Return ? IsExtensible(O).
		return nativeIsExtensible ? nativeIsExtensible(O) : true;
	});
}(Object.isExtensible));

}

if (!("keys"in Object&&function(){return 2===Object.keys(arguments).length}(1,2)&&function(){try{return Object.keys(""),!0}catch(t){return!1}}()
)) {

// Object.keys
/* global CreateMethodProperty */
CreateMethodProperty(Object, "keys", (function() {
	'use strict';

	// modified from https://github.com/es-shims/object-keys

	var has = Object.prototype.hasOwnProperty;
	var toStr = Object.prototype.toString;
	var isEnumerable = Object.prototype.propertyIsEnumerable;
	var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');
	var hasPrototypeEnumBug = isEnumerable.call(function () { }, 'prototype');
	function hasProtoEnumBug() {
		// Object.create polyfill creates an enumerable __proto__
		var createdObj;
		try {
			createdObj = Object.create({});
		} catch (e) {
			// If this fails the polyfil isn't loaded yet, but will be.
			// Can't add it to depedencies because of it would create a circular depedency.
			return true;
		}

		return isEnumerable.call(createdObj, '__proto__')
	}

	var dontEnums = [
		'toString',
		'toLocaleString',
		'valueOf',
		'hasOwnProperty',
		'isPrototypeOf',
		'propertyIsEnumerable',
		'constructor'
	];
	var equalsConstructorPrototype = function (o) {
		var ctor = o.constructor;
		return ctor && ctor.prototype === o;
	};
	var excludedKeys = {
		$console: true,
		$external: true,
		$frame: true,
		$frameElement: true,
		$frames: true,
		$innerHeight: true,
		$innerWidth: true,
		$outerHeight: true,
		$outerWidth: true,
		$pageXOffset: true,
		$pageYOffset: true,
		$parent: true,
		$scrollLeft: true,
		$scrollTop: true,
		$scrollX: true,
		$scrollY: true,
		$self: true,
		$webkitIndexedDB: true,
		$webkitStorageInfo: true,
		$window: true
	};
	var hasAutomationEqualityBug = (function () {
		if (typeof window === 'undefined') { return false; }
		for (var k in window) {
			try {
				if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {
					try {
						equalsConstructorPrototype(window[k]);
					} catch (e) {
						return true;
					}
				}
			} catch (e) {
				return true;
			}
		}
		return false;
	}());
	var equalsConstructorPrototypeIfNotBuggy = function (o) {
		if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
			return equalsConstructorPrototype(o);
		}
		try {
			return equalsConstructorPrototype(o);
		} catch (e) {
			return false;
		}
	};

	function isArgumentsObject(value) {
		var str = toStr.call(value);
		var isArgs = str === '[object Arguments]';
		if (!isArgs) {
			isArgs = str !== '[object Array]' &&
				value !== null &&
				typeof value === 'object' &&
				typeof value.length === 'number' &&
				value.length >= 0 &&
				toStr.call(value.callee) === '[object Function]';
		}
		return isArgs;
	}

	return function keys(object) {
		var isFunction = toStr.call(object) === '[object Function]';
		var isArguments = isArgumentsObject(object);
		var isString = toStr.call(object) === '[object String]';
		var theKeys = [];

		if (object === undefined || object === null) {
			throw new TypeError('Cannot convert undefined or null to object');
		}

		var skipPrototype = hasPrototypeEnumBug && isFunction;
		if (isString && object.length > 0 && !has.call(object, 0)) {
			for (var i = 0; i < object.length; ++i) {
				theKeys.push(String(i));
			}
		}

		if (isArguments && object.length > 0) {
			for (var j = 0; j < object.length; ++j) {
				theKeys.push(String(j));
			}
		} else {
			for (var name in object) {
				if (!(hasProtoEnumBug() && name === '__proto__') && !(skipPrototype && name === 'prototype') && has.call(object, name)) {
					theKeys.push(String(name));
				}
			}
		}

		if (hasDontEnumBug) {
			var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);

			for (var k = 0; k < dontEnums.length; ++k) {
				if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {
					theKeys.push(dontEnums[k]);
				}
			}
		}
		return theKeys;
	};
}()));

}


// _ESAbstract.EnumerableOwnProperties
/* globals Type, Get */
// 7.3.21. EnumerableOwnProperties ( O, kind )
function EnumerableOwnProperties(O, kind) { // eslint-disable-line no-unused-vars
	// 1. Assert: Type(O) is Object.
	// 2. Let ownKeys be ? O.[[OwnPropertyKeys]]().
	var ownKeys = Object.keys(O);
	// 3. Let properties be a new empty List.
	var properties = [];
	// 4. For each element key of ownKeys in List order, do
	var length = ownKeys.length;
	for (var i = 0; i < length; i++) {
		var key = ownKeys[i];
		// a. If Type(key) is String, then
		if (Type(key) === 'string') {
			// i. Let desc be ? O.[[GetOwnProperty]](key).
			var desc = Object.getOwnPropertyDescriptor(O, key);
			// ii. If desc is not undefined and desc.[[Enumerable]] is true, then
			if (desc && desc.enumerable) {
				// 1. If kind is "key", append key to properties.
				if (kind === 'key') {
					properties.push(key);
					// 2. Else,
				} else {
					// a. Let value be ? Get(O, key).
					var value = Get(O, key);
					// b. If kind is "value", append value to properties.
					if (kind === 'value') {
						properties.push(value);
						// c. Else,
					} else {
						// i. Assert: kind is "key+value".
						// ii. Let entry be CreateArrayFromList(« key, value »).
						var entry = [key, value];
						// iii. Append entry to properties.
						properties.push(entry);
					}
				}
			}
		}
	}
	// 5. Order the elements of properties so they are in the same relative order as would be produced by the Iterator that would be returned if the EnumerateObjectProperties internal method were invoked with O.
	// 6. Return properties.
	return properties;
}
if (!("entries"in Object
)) {

// Object.entries
/* global CreateMethodProperty, EnumerableOwnProperties, ToObject, Type */

(function () {
	var toString = ({}).toString;
	var split = ''.split;

	// 19.1.2.5. Object.entries ( O )
	CreateMethodProperty(Object, 'entries', function entries(O) {
		// 1. Let obj be ? ToObject(O).
		var obj = ToObject(O);
		// Polyfill.io fallback for non-array-like strings which exist in some ES3 user-agents
		obj = (Type(obj) === 'string' || obj instanceof String) && toString.call(O) == '[object String]' ? split.call(O, '') : Object(O);
		// 2. Let nameList be ? EnumerableOwnProperties(obj, "key+value").
		var nameList = EnumerableOwnProperties(obj, "key+value");
		// 3. Return CreateArrayFromList(nameList).
		// Polyfill.io - nameList is already an array.
		return nameList;
	});
}());

}

if (!("assign"in Object
)) {

// Object.assign
/* global CreateMethodProperty, Get, ToObject */
// 19.1.2.1 Object.assign ( target, ...sources )
CreateMethodProperty(Object, 'assign', function assign(target, source) { // eslint-disable-line no-unused-vars
	// 1. Let to be ? ToObject(target).
	var to = ToObject(target);

	// 2. If only one argument was passed, return to.
	if (arguments.length === 1) {
		return to;
	}

	// 3. Let sources be the List of argument values starting with the second argument
	var sources = Array.prototype.slice.call(arguments, 1);

	// 4. For each element nextSource of sources, in ascending index order, do
	var index1;
	var index2;
	var keys;
	var from;
	for (index1 = 0; index1 < sources.length; index1++) {
		var nextSource = sources[index1];
		// a. If nextSource is undefined or null, let keys be a new empty List.
		if (nextSource === undefined || nextSource === null) {
			keys = [];
			// b. Else,
		} else {
			// Polyfill.io - In order to get strings in ES3 and old V8 working correctly we need to split them into an array ourselves.
			// i. Let from be ! ToObject(nextSource).
			from = Object.prototype.toString.call(nextSource) === '[object String]' ? String(nextSource).split('') : ToObject(nextSource);
			// ii. Let keys be ? from.[[OwnPropertyKeys]]().
			/*
				This step in our polyfill is not complying with the specification.
				[[OwnPropertyKeys]] is meant to return ALL keys, including non-enumerable and symbols.
				TODO: When we have Reflect.ownKeys, use that instead as it is the userland equivalent of [[OwnPropertyKeys]].
			*/
			keys = Object.keys(from);
		}

		// c. For each element nextKey of keys in List order, do
		for (index2 = 0; index2 < keys.length; index2++) {
			var nextKey = keys[index2];
			var enumerable;
			try {
				// i. Let desc be ? from.[[GetOwnProperty]](nextKey).
				var desc = Object.getOwnPropertyDescriptor(from, nextKey);
				// ii. If desc is not undefined and desc.[[Enumerable]] is true, then
				enumerable = desc !== undefined && desc.enumerable === true;
			} catch (e) {
				// Polyfill.io - We use Object.prototype.propertyIsEnumerable as a fallback
				// because `Object.getOwnPropertyDescriptor(window.location, 'hash')` causes Internet Explorer 11 to crash.
				enumerable = Object.prototype.propertyIsEnumerable.call(from, nextKey);
			}
			if (enumerable) {
				// 1. Let propValue be ? Get(from, nextKey).
				var propValue = Get(from, nextKey);
				// 2. Perform ? Set(to, nextKey, propValue, true).
				to[nextKey] = propValue;
			}
		}
	}
	// 5. Return to.
	return to;
});

}

if (!("Intl"in self&&"getCanonicalLocales"in self.Intl
)) {

// Intl.getCanonicalLocales
(function() {
  // node_modules/tslib/tslib.es6.js
  var __assign = function() {
    __assign = Object.assign || function __assign2(t) {
      for (var s, i = 1, n = arguments.length; i < n; i++) {
        s = arguments[i];
        for (var p in s)
          if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
      }
      return t;
    };
    return __assign.apply(this, arguments);
  };
  function __spreadArray(to, from) {
    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
      to[j] = from[i];
    return to;
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/lib/src/parser.js
  var ALPHANUM_1_8 = /^[a-z0-9]{1,8}$/i;
  var ALPHANUM_2_8 = /^[a-z0-9]{2,8}$/i;
  var ALPHANUM_3_8 = /^[a-z0-9]{3,8}$/i;
  var KEY_REGEX = /^[a-z0-9][a-z]$/i;
  var TYPE_REGEX = /^[a-z0-9]{3,8}$/i;
  var ALPHA_4 = /^[a-z]{4}$/i;
  var OTHER_EXTENSION_TYPE = /^[0-9a-svwyz]$/i;
  var UNICODE_REGION_SUBTAG_REGEX = /^([a-z]{2}|[0-9]{3})$/i;
  var UNICODE_VARIANT_SUBTAG_REGEX = /^([a-z0-9]{5,8}|[0-9][a-z0-9]{3})$/i;
  var UNICODE_LANGUAGE_SUBTAG_REGEX = /^([a-z]{2,3}|[a-z]{5,8})$/i;
  var TKEY_REGEX = /^[a-z][0-9]$/i;
  var SEPARATOR = "-";
  function isUnicodeLanguageSubtag(lang) {
    return UNICODE_LANGUAGE_SUBTAG_REGEX.test(lang);
  }
  function isUnicodeRegionSubtag(region) {
    return UNICODE_REGION_SUBTAG_REGEX.test(region);
  }
  function isUnicodeScriptSubtag(script) {
    return ALPHA_4.test(script);
  }
  function isUnicodeVariantSubtag(variant) {
    return UNICODE_VARIANT_SUBTAG_REGEX.test(variant);
  }
  function parseUnicodeLanguageId(chunks) {
    if (typeof chunks === "string") {
      chunks = chunks.split(SEPARATOR);
    }
    var lang = chunks.shift();
    if (!lang) {
      throw new RangeError("Missing unicode_language_subtag");
    }
    if (lang === "root") {
      return {lang: "root", variants: []};
    }
    if (!isUnicodeLanguageSubtag(lang)) {
      throw new RangeError("Malformed unicode_language_subtag");
    }
    var script;
    if (chunks.length && isUnicodeScriptSubtag(chunks[0])) {
      script = chunks.shift();
    }
    var region;
    if (chunks.length && isUnicodeRegionSubtag(chunks[0])) {
      region = chunks.shift();
    }
    var variants = {};
    while (chunks.length && isUnicodeVariantSubtag(chunks[0])) {
      var variant = chunks.shift();
      if (variant in variants) {
        throw new RangeError('Duplicate variant "' + variant + '"');
      }
      variants[variant] = 1;
    }
    return {
      lang: lang,
      script: script,
      region: region,
      variants: Object.keys(variants)
    };
  }
  function parseUnicodeExtension(chunks) {
    var keywords = [];
    var keyword;
    while (chunks.length && (keyword = parseKeyword(chunks))) {
      keywords.push(keyword);
    }
    if (keywords.length) {
      return {
        type: "u",
        keywords: keywords,
        attributes: []
      };
    }
    var attributes = [];
    while (chunks.length && ALPHANUM_3_8.test(chunks[0])) {
      attributes.push(chunks.shift());
    }
    while (chunks.length && (keyword = parseKeyword(chunks))) {
      keywords.push(keyword);
    }
    if (keywords.length || attributes.length) {
      return {
        type: "u",
        attributes: attributes,
        keywords: keywords
      };
    }
    throw new RangeError("Malformed unicode_extension");
  }
  function parseKeyword(chunks) {
    var key;
    if (!KEY_REGEX.test(chunks[0])) {
      return;
    }
    key = chunks.shift();
    var type = [];
    while (chunks.length && TYPE_REGEX.test(chunks[0])) {
      type.push(chunks.shift());
    }
    var value = "";
    if (type.length) {
      value = type.join(SEPARATOR);
    }
    return [key, value];
  }
  function parseTransformedExtension(chunks) {
    var lang;
    try {
      lang = parseUnicodeLanguageId(chunks);
    } catch (e) {
    }
    var fields = [];
    while (chunks.length && TKEY_REGEX.test(chunks[0])) {
      var key = chunks.shift();
      var value = [];
      while (chunks.length && ALPHANUM_3_8.test(chunks[0])) {
        value.push(chunks.shift());
      }
      if (!value.length) {
        throw new RangeError('Missing tvalue for tkey "' + key + '"');
      }
      fields.push([key, value.join(SEPARATOR)]);
    }
    if (fields.length) {
      return {
        type: "t",
        fields: fields,
        lang: lang
      };
    }
    throw new RangeError("Malformed transformed_extension");
  }
  function parsePuExtension(chunks) {
    var exts = [];
    while (chunks.length && ALPHANUM_1_8.test(chunks[0])) {
      exts.push(chunks.shift());
    }
    if (exts.length) {
      return {
        type: "x",
        value: exts.join(SEPARATOR)
      };
    }
    throw new RangeError("Malformed private_use_extension");
  }
  function parseOtherExtensionValue(chunks) {
    var exts = [];
    while (chunks.length && ALPHANUM_2_8.test(chunks[0])) {
      exts.push(chunks.shift());
    }
    if (exts.length) {
      return exts.join(SEPARATOR);
    }
    return "";
  }
  function parseExtensions(chunks) {
    if (!chunks.length) {
      return {extensions: []};
    }
    var extensions = [];
    var unicodeExtension;
    var transformedExtension;
    var puExtension;
    var otherExtensionMap = {};
    do {
      var type = chunks.shift();
      switch (type) {
        case "u":
        case "U":
          if (unicodeExtension) {
            throw new RangeError("There can only be 1 -u- extension");
          }
          unicodeExtension = parseUnicodeExtension(chunks);
          extensions.push(unicodeExtension);
          break;
        case "t":
        case "T":
          if (transformedExtension) {
            throw new RangeError("There can only be 1 -t- extension");
          }
          transformedExtension = parseTransformedExtension(chunks);
          extensions.push(transformedExtension);
          break;
        case "x":
        case "X":
          if (puExtension) {
            throw new RangeError("There can only be 1 -x- extension");
          }
          puExtension = parsePuExtension(chunks);
          extensions.push(puExtension);
          break;
        default:
          if (!OTHER_EXTENSION_TYPE.test(type)) {
            throw new RangeError("Malformed extension type");
          }
          if (type in otherExtensionMap) {
            throw new RangeError("There can only be 1 -" + type + "- extension");
          }
          var extension = {
            type: type,
            value: parseOtherExtensionValue(chunks)
          };
          otherExtensionMap[extension.type] = extension;
          extensions.push(extension);
          break;
      }
    } while (chunks.length);
    return {extensions: extensions};
  }
  function parseUnicodeLocaleId(locale) {
    var chunks = locale.split(SEPARATOR);
    var lang = parseUnicodeLanguageId(chunks);
    return __assign({lang: lang}, parseExtensions(chunks));
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/lib/src/emitter.js
  function emitUnicodeLanguageId(lang) {
    if (!lang) {
      return "";
    }
    return __spreadArray([lang.lang, lang.script, lang.region], lang.variants || []).filter(Boolean).join("-");
  }
  function emitUnicodeLocaleId(_a) {
    var lang = _a.lang, extensions = _a.extensions;
    var chunks = [emitUnicodeLanguageId(lang)];
    for (var _i = 0, extensions_1 = extensions; _i < extensions_1.length; _i++) {
      var ext = extensions_1[_i];
      chunks.push(ext.type);
      switch (ext.type) {
        case "u":
          chunks.push.apply(chunks, __spreadArray(__spreadArray([], ext.attributes), ext.keywords.reduce(function(all, kv) {
            return all.concat(kv);
          }, [])));
          break;
        case "t":
          chunks.push.apply(chunks, __spreadArray([emitUnicodeLanguageId(ext.lang)], ext.fields.reduce(function(all, kv) {
            return all.concat(kv);
          }, [])));
          break;
        default:
          chunks.push(ext.value);
          break;
      }
    }
    return chunks.filter(Boolean).join("-");
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/lib/src/data/aliases.js
  var languageAlias = {
    "aa-saaho": "ssy",
    "aam": "aas",
    "aar": "aa",
    "abk": "ab",
    "adp": "dz",
    "afr": "af",
    "agp": "apf",
    "ais": "ami",
    "aju": "jrb",
    "aka": "ak",
    "alb": "sq",
    "als": "sq",
    "amh": "am",
    "ara": "ar",
    "arb": "ar",
    "arg": "an",
    "arm": "hy",
    "art-lojban": "jbo",
    "asd": "snz",
    "asm": "as",
    "aue": "ktz",
    "ava": "av",
    "ave": "ae",
    "aym": "ay",
    "ayr": "ay",
    "ayx": "nun",
    "aze": "az",
    "azj": "az",
    "bak": "ba",
    "bam": "bm",
    "baq": "eu",
    "baz": "nvo",
    "bcc": "bal",
    "bcl": "bik",
    "bel": "be",
    "ben": "bn",
    "bgm": "bcg",
    "bh": "bho",
    "bhk": "fbl",
    "bih": "bho",
    "bis": "bi",
    "bjd": "drl",
    "bjq": "bzc",
    "bkb": "ebk",
    "bod": "bo",
    "bos": "bs",
    "bre": "br",
    "btb": "beb",
    "bul": "bg",
    "bur": "my",
    "bxk": "luy",
    "bxr": "bua",
    "cat": "ca",
    "ccq": "rki",
    "cel-gaulish": "xtg",
    "ces": "cs",
    "cha": "ch",
    "che": "ce",
    "chi": "zh",
    "chu": "cu",
    "chv": "cv",
    "cjr": "mom",
    "cka": "cmr",
    "cld": "syr",
    "cmk": "xch",
    "cmn": "zh",
    "cnr": "sr-ME",
    "cor": "kw",
    "cos": "co",
    "coy": "pij",
    "cqu": "quh",
    "cre": "cr",
    "cwd": "cr",
    "cym": "cy",
    "cze": "cs",
    "daf": "dnj",
    "dan": "da",
    "dap": "njz",
    "deu": "de",
    "dgo": "doi",
    "dhd": "mwr",
    "dik": "din",
    "diq": "zza",
    "dit": "dif",
    "div": "dv",
    "djl": "dze",
    "dkl": "aqd",
    "drh": "mn",
    "drr": "kzk",
    "drw": "fa-AF",
    "dud": "uth",
    "duj": "dwu",
    "dut": "nl",
    "dwl": "dbt",
    "dzo": "dz",
    "ekk": "et",
    "ell": "el",
    "elp": "amq",
    "emk": "man",
    "en-GB-oed": "en-GB-oxendict",
    "eng": "en",
    "epo": "eo",
    "esk": "ik",
    "est": "et",
    "eus": "eu",
    "ewe": "ee",
    "fao": "fo",
    "fas": "fa",
    "fat": "ak",
    "fij": "fj",
    "fin": "fi",
    "fra": "fr",
    "fre": "fr",
    "fry": "fy",
    "fuc": "ff",
    "ful": "ff",
    "gav": "dev",
    "gaz": "om",
    "gbc": "wny",
    "gbo": "grb",
    "geo": "ka",
    "ger": "de",
    "gfx": "vaj",
    "ggn": "gvr",
    "ggo": "esg",
    "ggr": "gtu",
    "gio": "aou",
    "gla": "gd",
    "gle": "ga",
    "glg": "gl",
    "gli": "kzk",
    "glv": "gv",
    "gno": "gon",
    "gre": "el",
    "grn": "gn",
    "gti": "nyc",
    "gug": "gn",
    "guj": "gu",
    "guv": "duz",
    "gya": "gba",
    "hat": "ht",
    "hau": "ha",
    "hbs": "sr-Latn",
    "hdn": "hai",
    "hea": "hmn",
    "heb": "he",
    "her": "hz",
    "him": "srx",
    "hin": "hi",
    "hmo": "ho",
    "hrr": "jal",
    "hrv": "hr",
    "hun": "hu",
    "hy-arevmda": "hyw",
    "hye": "hy",
    "i-ami": "ami",
    "i-bnn": "bnn",
    "i-default": "en-x-i-default",
    "i-enochian": "und-x-i-enochian",
    "i-hak": "hak",
    "i-klingon": "tlh",
    "i-lux": "lb",
    "i-mingo": "see-x-i-mingo",
    "i-navajo": "nv",
    "i-pwn": "pwn",
    "i-tao": "tao",
    "i-tay": "tay",
    "i-tsu": "tsu",
    "ibi": "opa",
    "ibo": "ig",
    "ice": "is",
    "ido": "io",
    "iii": "ii",
    "ike": "iu",
    "iku": "iu",
    "ile": "ie",
    "ill": "ilm",
    "ilw": "gal",
    "in": "id",
    "ina": "ia",
    "ind": "id",
    "ipk": "ik",
    "isl": "is",
    "ita": "it",
    "iw": "he",
    "izi": "eza",
    "jar": "jgk",
    "jav": "jv",
    "jeg": "oyb",
    "ji": "yi",
    "jpn": "ja",
    "jw": "jv",
    "kal": "kl",
    "kan": "kn",
    "kas": "ks",
    "kat": "ka",
    "kau": "kr",
    "kaz": "kk",
    "kdv": "zkd",
    "kgc": "tdf",
    "kgd": "ncq",
    "kgh": "kml",
    "khk": "mn",
    "khm": "km",
    "kik": "ki",
    "kin": "rw",
    "kir": "ky",
    "kmr": "ku",
    "knc": "kr",
    "kng": "kg",
    "knn": "kok",
    "koj": "kwv",
    "kom": "kv",
    "kon": "kg",
    "kor": "ko",
    "kpp": "jkm",
    "kpv": "kv",
    "krm": "bmf",
    "ktr": "dtp",
    "kua": "kj",
    "kur": "ku",
    "kvs": "gdj",
    "kwq": "yam",
    "kxe": "tvd",
    "kxl": "kru",
    "kzh": "dgl",
    "kzj": "dtp",
    "kzt": "dtp",
    "lao": "lo",
    "lat": "la",
    "lav": "lv",
    "lbk": "bnc",
    "leg": "enl",
    "lii": "raq",
    "lim": "li",
    "lin": "ln",
    "lit": "lt",
    "llo": "ngt",
    "lmm": "rmx",
    "ltz": "lb",
    "lub": "lu",
    "lug": "lg",
    "lvs": "lv",
    "mac": "mk",
    "mah": "mh",
    "mal": "ml",
    "mao": "mi",
    "mar": "mr",
    "may": "ms",
    "meg": "cir",
    "mgx": "jbk",
    "mhr": "chm",
    "mkd": "mk",
    "mlg": "mg",
    "mlt": "mt",
    "mnk": "man",
    "mnt": "wnn",
    "mo": "ro",
    "mof": "xnt",
    "mol": "ro",
    "mon": "mn",
    "mri": "mi",
    "msa": "ms",
    "mst": "mry",
    "mup": "raj",
    "mwd": "dmw",
    "mwj": "vaj",
    "mya": "my",
    "myd": "aog",
    "myt": "mry",
    "nad": "xny",
    "nau": "na",
    "nav": "nv",
    "nbf": "nru",
    "nbl": "nr",
    "nbx": "ekc",
    "ncp": "kdz",
    "nde": "nd",
    "ndo": "ng",
    "nep": "ne",
    "nld": "nl",
    "nln": "azd",
    "nlr": "nrk",
    "nno": "nn",
    "nns": "nbr",
    "nnx": "ngv",
    "no-bok": "nb",
    "no-bokmal": "nb",
    "no-nyn": "nn",
    "no-nynorsk": "nn",
    "nob": "nb",
    "noo": "dtd",
    "nor": "no",
    "npi": "ne",
    "nts": "pij",
    "nxu": "bpp",
    "nya": "ny",
    "oci": "oc",
    "ojg": "oj",
    "oji": "oj",
    "ori": "or",
    "orm": "om",
    "ory": "or",
    "oss": "os",
    "oun": "vaj",
    "pan": "pa",
    "pbu": "ps",
    "pcr": "adx",
    "per": "fa",
    "pes": "fa",
    "pli": "pi",
    "plt": "mg",
    "pmc": "huw",
    "pmu": "phr",
    "pnb": "lah",
    "pol": "pl",
    "por": "pt",
    "ppa": "bfy",
    "ppr": "lcq",
    "prs": "fa-AF",
    "pry": "prt",
    "pus": "ps",
    "puz": "pub",
    "que": "qu",
    "quz": "qu",
    "rmr": "emx",
    "rmy": "rom",
    "roh": "rm",
    "ron": "ro",
    "rum": "ro",
    "run": "rn",
    "rus": "ru",
    "sag": "sg",
    "san": "sa",
    "sap": "aqt",
    "sca": "hle",
    "scc": "sr",
    "scr": "hr",
    "sgl": "isk",
    "sgn-BE-FR": "sfb",
    "sgn-BE-NL": "vgt",
    "sgn-BR": "bzs",
    "sgn-CH-DE": "sgg",
    "sgn-CO": "csn",
    "sgn-DE": "gsg",
    "sgn-DK": "dsl",
    "sgn-ES": "ssp",
    "sgn-FR": "fsl",
    "sgn-GB": "bfi",
    "sgn-GR": "gss",
    "sgn-IE": "isg",
    "sgn-IT": "ise",
    "sgn-JP": "jsl",
    "sgn-MX": "mfs",
    "sgn-NI": "ncs",
    "sgn-NL": "dse",
    "sgn-NO": "nsi",
    "sgn-PT": "psr",
    "sgn-SE": "swl",
    "sgn-US": "ase",
    "sgn-ZA": "sfs",
    "sh": "sr-Latn",
    "sin": "si",
    "skk": "oyb",
    "slk": "sk",
    "slo": "sk",
    "slv": "sl",
    "sme": "se",
    "smo": "sm",
    "sna": "sn",
    "snd": "sd",
    "som": "so",
    "sot": "st",
    "spa": "es",
    "spy": "kln",
    "sqi": "sq",
    "src": "sc",
    "srd": "sc",
    "srp": "sr",
    "ssw": "ss",
    "sul": "sgd",
    "sum": "ulw",
    "sun": "su",
    "swa": "sw",
    "swc": "sw-CD",
    "swe": "sv",
    "swh": "sw",
    "tah": "ty",
    "tam": "ta",
    "tat": "tt",
    "tdu": "dtp",
    "tel": "te",
    "tgg": "bjp",
    "tgk": "tg",
    "tgl": "fil",
    "tha": "th",
    "thc": "tpo",
    "thw": "ola",
    "thx": "oyb",
    "tib": "bo",
    "tid": "itd",
    "tie": "ras",
    "tir": "ti",
    "tkk": "twm",
    "tl": "fil",
    "tlw": "weo",
    "tmp": "tyj",
    "tne": "kak",
    "tnf": "fa-AF",
    "ton": "to",
    "tsf": "taj",
    "tsn": "tn",
    "tso": "ts",
    "ttq": "tmh",
    "tuk": "tk",
    "tur": "tr",
    "tw": "ak",
    "twi": "ak",
    "uig": "ug",
    "ukr": "uk",
    "umu": "del",
    "und-aaland": "und-AX",
    "und-arevela": "und",
    "und-arevmda": "und",
    "und-bokmal": "und",
    "und-hakka": "und",
    "und-hepburn-heploc": "und-alalc97",
    "und-lojban": "und",
    "und-nynorsk": "und",
    "und-saaho": "und",
    "und-xiang": "und",
    "unp": "wro",
    "uok": "ema",
    "urd": "ur",
    "uzb": "uz",
    "uzn": "uz",
    "ven": "ve",
    "vie": "vi",
    "vol": "vo",
    "wel": "cy",
    "wgw": "wgb",
    "wit": "nol",
    "wiw": "nwo",
    "wln": "wa",
    "wol": "wo",
    "xba": "cax",
    "xho": "xh",
    "xia": "acn",
    "xkh": "waw",
    "xpe": "kpe",
    "xrq": "dmw",
    "xsj": "suj",
    "xsl": "den",
    "ybd": "rki",
    "ydd": "yi",
    "yen": "ynq",
    "yid": "yi",
    "yiy": "yrm",
    "yma": "lrr",
    "ymt": "mtm",
    "yor": "yo",
    "yos": "zom",
    "yuu": "yug",
    "zai": "zap",
    "zh-cmn": "zh",
    "zh-cmn-Hans": "zh-Hans",
    "zh-cmn-Hant": "zh-Hant",
    "zh-gan": "gan",
    "zh-guoyu": "zh",
    "zh-hakka": "hak",
    "zh-min": "nan-x-zh-min",
    "zh-min-nan": "nan",
    "zh-wuu": "wuu",
    "zh-xiang": "hsn",
    "zh-yue": "yue",
    "zha": "za",
    "zho": "zh",
    "zir": "scv",
    "zsm": "ms",
    "zul": "zu",
    "zyb": "za"
  };
  var territoryAlias = {
    "100": "BG",
    "104": "MM",
    "108": "BI",
    "112": "BY",
    "116": "KH",
    "120": "CM",
    "124": "CA",
    "132": "CV",
    "136": "KY",
    "140": "CF",
    "144": "LK",
    "148": "TD",
    "152": "CL",
    "156": "CN",
    "158": "TW",
    "162": "CX",
    "166": "CC",
    "170": "CO",
    "172": "RU AM AZ BY GE KG KZ MD TJ TM UA UZ",
    "174": "KM",
    "175": "YT",
    "178": "CG",
    "180": "CD",
    "184": "CK",
    "188": "CR",
    "191": "HR",
    "192": "CU",
    "196": "CY",
    "200": "CZ SK",
    "203": "CZ",
    "204": "BJ",
    "208": "DK",
    "212": "DM",
    "214": "DO",
    "218": "EC",
    "222": "SV",
    "226": "GQ",
    "230": "ET",
    "231": "ET",
    "232": "ER",
    "233": "EE",
    "234": "FO",
    "238": "FK",
    "239": "GS",
    "242": "FJ",
    "246": "FI",
    "248": "AX",
    "249": "FR",
    "250": "FR",
    "254": "GF",
    "258": "PF",
    "260": "TF",
    "262": "DJ",
    "266": "GA",
    "268": "GE",
    "270": "GM",
    "275": "PS",
    "276": "DE",
    "278": "DE",
    "280": "DE",
    "288": "GH",
    "292": "GI",
    "296": "KI",
    "300": "GR",
    "304": "GL",
    "308": "GD",
    "312": "GP",
    "316": "GU",
    "320": "GT",
    "324": "GN",
    "328": "GY",
    "332": "HT",
    "334": "HM",
    "336": "VA",
    "340": "HN",
    "344": "HK",
    "348": "HU",
    "352": "IS",
    "356": "IN",
    "360": "ID",
    "364": "IR",
    "368": "IQ",
    "372": "IE",
    "376": "IL",
    "380": "IT",
    "384": "CI",
    "388": "JM",
    "392": "JP",
    "398": "KZ",
    "400": "JO",
    "404": "KE",
    "408": "KP",
    "410": "KR",
    "414": "KW",
    "417": "KG",
    "418": "LA",
    "422": "LB",
    "426": "LS",
    "428": "LV",
    "430": "LR",
    "434": "LY",
    "438": "LI",
    "440": "LT",
    "442": "LU",
    "446": "MO",
    "450": "MG",
    "454": "MW",
    "458": "MY",
    "462": "MV",
    "466": "ML",
    "470": "MT",
    "474": "MQ",
    "478": "MR",
    "480": "MU",
    "484": "MX",
    "492": "MC",
    "496": "MN",
    "498": "MD",
    "499": "ME",
    "500": "MS",
    "504": "MA",
    "508": "MZ",
    "512": "OM",
    "516": "NA",
    "520": "NR",
    "524": "NP",
    "528": "NL",
    "530": "CW SX BQ",
    "531": "CW",
    "532": "CW SX BQ",
    "533": "AW",
    "534": "SX",
    "535": "BQ",
    "536": "SA IQ",
    "540": "NC",
    "548": "VU",
    "554": "NZ",
    "558": "NI",
    "562": "NE",
    "566": "NG",
    "570": "NU",
    "574": "NF",
    "578": "NO",
    "580": "MP",
    "581": "UM",
    "582": "FM MH MP PW",
    "583": "FM",
    "584": "MH",
    "585": "PW",
    "586": "PK",
    "591": "PA",
    "598": "PG",
    "600": "PY",
    "604": "PE",
    "608": "PH",
    "612": "PN",
    "616": "PL",
    "620": "PT",
    "624": "GW",
    "626": "TL",
    "630": "PR",
    "634": "QA",
    "638": "RE",
    "642": "RO",
    "643": "RU",
    "646": "RW",
    "652": "BL",
    "654": "SH",
    "659": "KN",
    "660": "AI",
    "662": "LC",
    "663": "MF",
    "666": "PM",
    "670": "VC",
    "674": "SM",
    "678": "ST",
    "682": "SA",
    "686": "SN",
    "688": "RS",
    "690": "SC",
    "694": "SL",
    "702": "SG",
    "703": "SK",
    "704": "VN",
    "705": "SI",
    "706": "SO",
    "710": "ZA",
    "716": "ZW",
    "720": "YE",
    "724": "ES",
    "728": "SS",
    "729": "SD",
    "732": "EH",
    "736": "SD",
    "740": "SR",
    "744": "SJ",
    "748": "SZ",
    "752": "SE",
    "756": "CH",
    "760": "SY",
    "762": "TJ",
    "764": "TH",
    "768": "TG",
    "772": "TK",
    "776": "TO",
    "780": "TT",
    "784": "AE",
    "788": "TN",
    "792": "TR",
    "795": "TM",
    "796": "TC",
    "798": "TV",
    "800": "UG",
    "804": "UA",
    "807": "MK",
    "810": "RU AM AZ BY EE GE KZ KG LV LT MD TJ TM UA UZ",
    "818": "EG",
    "826": "GB",
    "830": "JE GG",
    "831": "GG",
    "832": "JE",
    "833": "IM",
    "834": "TZ",
    "840": "US",
    "850": "VI",
    "854": "BF",
    "858": "UY",
    "860": "UZ",
    "862": "VE",
    "876": "WF",
    "882": "WS",
    "886": "YE",
    "887": "YE",
    "890": "RS ME SI HR MK BA",
    "891": "RS ME",
    "894": "ZM",
    "958": "AA",
    "959": "QM",
    "960": "QN",
    "962": "QP",
    "963": "QQ",
    "964": "QR",
    "965": "QS",
    "966": "QT",
    "967": "EU",
    "968": "QV",
    "969": "QW",
    "970": "QX",
    "971": "QY",
    "972": "QZ",
    "973": "XA",
    "974": "XB",
    "975": "XC",
    "976": "XD",
    "977": "XE",
    "978": "XF",
    "979": "XG",
    "980": "XH",
    "981": "XI",
    "982": "XJ",
    "983": "XK",
    "984": "XL",
    "985": "XM",
    "986": "XN",
    "987": "XO",
    "988": "XP",
    "989": "XQ",
    "990": "XR",
    "991": "XS",
    "992": "XT",
    "993": "XU",
    "994": "XV",
    "995": "XW",
    "996": "XX",
    "997": "XY",
    "998": "XZ",
    "999": "ZZ",
    "004": "AF",
    "008": "AL",
    "010": "AQ",
    "012": "DZ",
    "016": "AS",
    "020": "AD",
    "024": "AO",
    "028": "AG",
    "031": "AZ",
    "032": "AR",
    "036": "AU",
    "040": "AT",
    "044": "BS",
    "048": "BH",
    "050": "BD",
    "051": "AM",
    "052": "BB",
    "056": "BE",
    "060": "BM",
    "062": "034 143",
    "064": "BT",
    "068": "BO",
    "070": "BA",
    "072": "BW",
    "074": "BV",
    "076": "BR",
    "084": "BZ",
    "086": "IO",
    "090": "SB",
    "092": "VG",
    "096": "BN",
    "AAA": "AA",
    "ABW": "AW",
    "AFG": "AF",
    "AGO": "AO",
    "AIA": "AI",
    "ALA": "AX",
    "ALB": "AL",
    "AN": "CW SX BQ",
    "AND": "AD",
    "ANT": "CW SX BQ",
    "ARE": "AE",
    "ARG": "AR",
    "ARM": "AM",
    "ASC": "AC",
    "ASM": "AS",
    "ATA": "AQ",
    "ATF": "TF",
    "ATG": "AG",
    "AUS": "AU",
    "AUT": "AT",
    "AZE": "AZ",
    "BDI": "BI",
    "BEL": "BE",
    "BEN": "BJ",
    "BES": "BQ",
    "BFA": "BF",
    "BGD": "BD",
    "BGR": "BG",
    "BHR": "BH",
    "BHS": "BS",
    "BIH": "BA",
    "BLM": "BL",
    "BLR": "BY",
    "BLZ": "BZ",
    "BMU": "BM",
    "BOL": "BO",
    "BRA": "BR",
    "BRB": "BB",
    "BRN": "BN",
    "BTN": "BT",
    "BU": "MM",
    "BUR": "MM",
    "BVT": "BV",
    "BWA": "BW",
    "CAF": "CF",
    "CAN": "CA",
    "CCK": "CC",
    "CHE": "CH",
    "CHL": "CL",
    "CHN": "CN",
    "CIV": "CI",
    "CMR": "CM",
    "COD": "CD",
    "COG": "CG",
    "COK": "CK",
    "COL": "CO",
    "COM": "KM",
    "CPT": "CP",
    "CPV": "CV",
    "CRI": "CR",
    "CS": "RS ME",
    "CT": "KI",
    "CUB": "CU",
    "CUW": "CW",
    "CXR": "CX",
    "CYM": "KY",
    "CYP": "CY",
    "CZE": "CZ",
    "DD": "DE",
    "DDR": "DE",
    "DEU": "DE",
    "DGA": "DG",
    "DJI": "DJ",
    "DMA": "DM",
    "DNK": "DK",
    "DOM": "DO",
    "DY": "BJ",
    "DZA": "DZ",
    "ECU": "EC",
    "EGY": "EG",
    "ERI": "ER",
    "ESH": "EH",
    "ESP": "ES",
    "EST": "EE",
    "ETH": "ET",
    "FIN": "FI",
    "FJI": "FJ",
    "FLK": "FK",
    "FQ": "AQ TF",
    "FRA": "FR",
    "FRO": "FO",
    "FSM": "FM",
    "FX": "FR",
    "FXX": "FR",
    "GAB": "GA",
    "GBR": "GB",
    "GEO": "GE",
    "GGY": "GG",
    "GHA": "GH",
    "GIB": "GI",
    "GIN": "GN",
    "GLP": "GP",
    "GMB": "GM",
    "GNB": "GW",
    "GNQ": "GQ",
    "GRC": "GR",
    "GRD": "GD",
    "GRL": "GL",
    "GTM": "GT",
    "GUF": "GF",
    "GUM": "GU",
    "GUY": "GY",
    "HKG": "HK",
    "HMD": "HM",
    "HND": "HN",
    "HRV": "HR",
    "HTI": "HT",
    "HUN": "HU",
    "HV": "BF",
    "IDN": "ID",
    "IMN": "IM",
    "IND": "IN",
    "IOT": "IO",
    "IRL": "IE",
    "IRN": "IR",
    "IRQ": "IQ",
    "ISL": "IS",
    "ISR": "IL",
    "ITA": "IT",
    "JAM": "JM",
    "JEY": "JE",
    "JOR": "JO",
    "JPN": "JP",
    "JT": "UM",
    "KAZ": "KZ",
    "KEN": "KE",
    "KGZ": "KG",
    "KHM": "KH",
    "KIR": "KI",
    "KNA": "KN",
    "KOR": "KR",
    "KWT": "KW",
    "LAO": "LA",
    "LBN": "LB",
    "LBR": "LR",
    "LBY": "LY",
    "LCA": "LC",
    "LIE": "LI",
    "LKA": "LK",
    "LSO": "LS",
    "LTU": "LT",
    "LUX": "LU",
    "LVA": "LV",
    "MAC": "MO",
    "MAF": "MF",
    "MAR": "MA",
    "MCO": "MC",
    "MDA": "MD",
    "MDG": "MG",
    "MDV": "MV",
    "MEX": "MX",
    "MHL": "MH",
    "MI": "UM",
    "MKD": "MK",
    "MLI": "ML",
    "MLT": "MT",
    "MMR": "MM",
    "MNE": "ME",
    "MNG": "MN",
    "MNP": "MP",
    "MOZ": "MZ",
    "MRT": "MR",
    "MSR": "MS",
    "MTQ": "MQ",
    "MUS": "MU",
    "MWI": "MW",
    "MYS": "MY",
    "MYT": "YT",
    "NAM": "NA",
    "NCL": "NC",
    "NER": "NE",
    "NFK": "NF",
    "NGA": "NG",
    "NH": "VU",
    "NIC": "NI",
    "NIU": "NU",
    "NLD": "NL",
    "NOR": "NO",
    "NPL": "NP",
    "NQ": "AQ",
    "NRU": "NR",
    "NT": "SA IQ",
    "NTZ": "SA IQ",
    "NZL": "NZ",
    "OMN": "OM",
    "PAK": "PK",
    "PAN": "PA",
    "PC": "FM MH MP PW",
    "PCN": "PN",
    "PER": "PE",
    "PHL": "PH",
    "PLW": "PW",
    "PNG": "PG",
    "POL": "PL",
    "PRI": "PR",
    "PRK": "KP",
    "PRT": "PT",
    "PRY": "PY",
    "PSE": "PS",
    "PU": "UM",
    "PYF": "PF",
    "PZ": "PA",
    "QAT": "QA",
    "QMM": "QM",
    "QNN": "QN",
    "QPP": "QP",
    "QQQ": "QQ",
    "QRR": "QR",
    "QSS": "QS",
    "QTT": "QT",
    "QU": "EU",
    "QUU": "EU",
    "QVV": "QV",
    "QWW": "QW",
    "QXX": "QX",
    "QYY": "QY",
    "QZZ": "QZ",
    "REU": "RE",
    "RH": "ZW",
    "ROU": "RO",
    "RUS": "RU",
    "RWA": "RW",
    "SAU": "SA",
    "SCG": "RS ME",
    "SDN": "SD",
    "SEN": "SN",
    "SGP": "SG",
    "SGS": "GS",
    "SHN": "SH",
    "SJM": "SJ",
    "SLB": "SB",
    "SLE": "SL",
    "SLV": "SV",
    "SMR": "SM",
    "SOM": "SO",
    "SPM": "PM",
    "SRB": "RS",
    "SSD": "SS",
    "STP": "ST",
    "SU": "RU AM AZ BY EE GE KZ KG LV LT MD TJ TM UA UZ",
    "SUN": "RU AM AZ BY EE GE KZ KG LV LT MD TJ TM UA UZ",
    "SUR": "SR",
    "SVK": "SK",
    "SVN": "SI",
    "SWE": "SE",
    "SWZ": "SZ",
    "SXM": "SX",
    "SYC": "SC",
    "SYR": "SY",
    "TAA": "TA",
    "TCA": "TC",
    "TCD": "TD",
    "TGO": "TG",
    "THA": "TH",
    "TJK": "TJ",
    "TKL": "TK",
    "TKM": "TM",
    "TLS": "TL",
    "TMP": "TL",
    "TON": "TO",
    "TP": "TL",
    "TTO": "TT",
    "TUN": "TN",
    "TUR": "TR",
    "TUV": "TV",
    "TWN": "TW",
    "TZA": "TZ",
    "UGA": "UG",
    "UK": "GB",
    "UKR": "UA",
    "UMI": "UM",
    "URY": "UY",
    "USA": "US",
    "UZB": "UZ",
    "VAT": "VA",
    "VCT": "VC",
    "VD": "VN",
    "VEN": "VE",
    "VGB": "VG",
    "VIR": "VI",
    "VNM": "VN",
    "VUT": "VU",
    "WK": "UM",
    "WLF": "WF",
    "WSM": "WS",
    "XAA": "XA",
    "XBB": "XB",
    "XCC": "XC",
    "XDD": "XD",
    "XEE": "XE",
    "XFF": "XF",
    "XGG": "XG",
    "XHH": "XH",
    "XII": "XI",
    "XJJ": "XJ",
    "XKK": "XK",
    "XLL": "XL",
    "XMM": "XM",
    "XNN": "XN",
    "XOO": "XO",
    "XPP": "XP",
    "XQQ": "XQ",
    "XRR": "XR",
    "XSS": "XS",
    "XTT": "XT",
    "XUU": "XU",
    "XVV": "XV",
    "XWW": "XW",
    "XXX": "XX",
    "XYY": "XY",
    "XZZ": "XZ",
    "YD": "YE",
    "YEM": "YE",
    "YMD": "YE",
    "YU": "RS ME",
    "YUG": "RS ME",
    "ZAF": "ZA",
    "ZAR": "CD",
    "ZMB": "ZM",
    "ZR": "CD",
    "ZWE": "ZW",
    "ZZZ": "ZZ"
  };
  var scriptAlias = {
    "Qaai": "Zinh"
  };
  var variantAlias = {
    "heploc": "alalc97",
    "polytoni": "polyton"
  };

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

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/lib/src/canonicalizer.js
  function canonicalizeAttrs(strs) {
    return Object.keys(strs.reduce(function(all, str) {
      all[str.toLowerCase()] = 1;
      return all;
    }, {})).sort();
  }
  function canonicalizeKVs(arr) {
    var all = {};
    var result = [];
    for (var _i = 0, arr_1 = arr; _i < arr_1.length; _i++) {
      var kv = arr_1[_i];
      if (kv[0] in all) {
        continue;
      }
      all[kv[0]] = 1;
      if (!kv[1] || kv[1] === "true") {
        result.push([kv[0].toLowerCase()]);
      } else {
        result.push([kv[0].toLowerCase(), kv[1].toLowerCase()]);
      }
    }
    return result.sort(compareKV);
  }
  function compareKV(t1, t2) {
    return t1[0] < t2[0] ? -1 : t1[0] > t2[0] ? 1 : 0;
  }
  function compareExtension(e1, e2) {
    return e1.type < e2.type ? -1 : e1.type > e2.type ? 1 : 0;
  }
  function mergeVariants(v1, v2) {
    var result = __spreadArray([], v1);
    for (var _i = 0, v2_1 = v2; _i < v2_1.length; _i++) {
      var v = v2_1[_i];
      if (v1.indexOf(v) < 0) {
        result.push(v);
      }
    }
    return result;
  }
  function canonicalizeUnicodeLanguageId(unicodeLanguageId) {
    var finalLangAst = unicodeLanguageId;
    if (unicodeLanguageId.variants.length) {
      var replacedLang_1 = "";
      for (var _i = 0, _a = unicodeLanguageId.variants; _i < _a.length; _i++) {
        var variant = _a[_i];
        if (replacedLang_1 = languageAlias[emitUnicodeLanguageId({
          lang: unicodeLanguageId.lang,
          variants: [variant]
        })]) {
          var replacedLangAst = parseUnicodeLanguageId(replacedLang_1.split(SEPARATOR));
          finalLangAst = {
            lang: replacedLangAst.lang,
            script: finalLangAst.script || replacedLangAst.script,
            region: finalLangAst.region || replacedLangAst.region,
            variants: mergeVariants(finalLangAst.variants, replacedLangAst.variants)
          };
          break;
        }
      }
    }
    if (finalLangAst.script && finalLangAst.region) {
      var replacedLang_2 = languageAlias[emitUnicodeLanguageId({
        lang: finalLangAst.lang,
        script: finalLangAst.script,
        region: finalLangAst.region,
        variants: []
      })];
      if (replacedLang_2) {
        var replacedLangAst = parseUnicodeLanguageId(replacedLang_2.split(SEPARATOR));
        finalLangAst = {
          lang: replacedLangAst.lang,
          script: replacedLangAst.script,
          region: replacedLangAst.region,
          variants: finalLangAst.variants
        };
      }
    }
    if (finalLangAst.region) {
      var replacedLang_3 = languageAlias[emitUnicodeLanguageId({
        lang: finalLangAst.lang,
        region: finalLangAst.region,
        variants: []
      })];
      if (replacedLang_3) {
        var replacedLangAst = parseUnicodeLanguageId(replacedLang_3.split(SEPARATOR));
        finalLangAst = {
          lang: replacedLangAst.lang,
          script: finalLangAst.script || replacedLangAst.script,
          region: replacedLangAst.region,
          variants: finalLangAst.variants
        };
      }
    }
    var replacedLang = languageAlias[emitUnicodeLanguageId({
      lang: finalLangAst.lang,
      variants: []
    })];
    if (replacedLang) {
      var replacedLangAst = parseUnicodeLanguageId(replacedLang.split(SEPARATOR));
      finalLangAst = {
        lang: replacedLangAst.lang,
        script: finalLangAst.script || replacedLangAst.script,
        region: finalLangAst.region || replacedLangAst.region,
        variants: finalLangAst.variants
      };
    }
    if (finalLangAst.region) {
      var region = finalLangAst.region.toUpperCase();
      var regionAlias = territoryAlias[region];
      var replacedRegion = void 0;
      if (regionAlias) {
        var regions = regionAlias.split(" ");
        replacedRegion = regions[0];
        var likelySubtag = supplemental.likelySubtags[emitUnicodeLanguageId({
          lang: finalLangAst.lang,
          script: finalLangAst.script,
          variants: []
        })];
        if (likelySubtag) {
          var likelyRegion = parseUnicodeLanguageId(likelySubtag.split(SEPARATOR)).region;
          if (likelyRegion && regions.indexOf(likelyRegion) > -1) {
            replacedRegion = likelyRegion;
          }
        }
      }
      if (replacedRegion) {
        finalLangAst.region = replacedRegion;
      }
      finalLangAst.region = finalLangAst.region.toUpperCase();
    }
    if (finalLangAst.script) {
      finalLangAst.script = finalLangAst.script[0].toUpperCase() + finalLangAst.script.slice(1).toLowerCase();
      if (scriptAlias[finalLangAst.script]) {
        finalLangAst.script = scriptAlias[finalLangAst.script];
      }
    }
    if (finalLangAst.variants.length) {
      for (var i = 0; i < finalLangAst.variants.length; i++) {
        var variant = finalLangAst.variants[i].toLowerCase();
        if (variantAlias[variant]) {
          var alias = variantAlias[variant];
          if (isUnicodeVariantSubtag(alias)) {
            finalLangAst.variants[i] = alias;
          } else if (isUnicodeLanguageSubtag(alias)) {
            finalLangAst.lang = alias;
          }
        }
      }
      finalLangAst.variants.sort();
    }
    return finalLangAst;
  }
  function canonicalizeUnicodeLocaleId(locale) {
    locale.lang = canonicalizeUnicodeLanguageId(locale.lang);
    if (locale.extensions) {
      for (var _i = 0, _a = locale.extensions; _i < _a.length; _i++) {
        var extension = _a[_i];
        switch (extension.type) {
          case "u":
            extension.keywords = canonicalizeKVs(extension.keywords);
            if (extension.attributes) {
              extension.attributes = canonicalizeAttrs(extension.attributes);
            }
            break;
          case "t":
            if (extension.lang) {
              extension.lang = canonicalizeUnicodeLanguageId(extension.lang);
            }
            extension.fields = canonicalizeKVs(extension.fields);
            break;
          default:
            extension.value = extension.value.toLowerCase();
            break;
        }
      }
      locale.extensions.sort(compareExtension);
    }
    return locale;
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/lib/index.js
  function CanonicalizeLocaleList(locales) {
    if (locales === void 0) {
      return [];
    }
    var seen = [];
    if (typeof locales === "string") {
      locales = [locales];
    }
    for (var _i = 0, locales_1 = locales; _i < locales_1.length; _i++) {
      var locale = locales_1[_i];
      var canonicalizedTag = emitUnicodeLocaleId(canonicalizeUnicodeLocaleId(parseUnicodeLocaleId(locale)));
      if (seen.indexOf(canonicalizedTag) < 0) {
        seen.push(canonicalizedTag);
      }
    }
    return seen;
  }
  function getCanonicalLocales(locales) {
    return CanonicalizeLocaleList(locales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/lib/should-polyfill.js
  function shouldPolyfill() {
    return typeof Intl === "undefined" || !("getCanonicalLocales" in Intl) || Intl.getCanonicalLocales("und-x-private")[0] === "x-private";
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/lib/polyfill.js
  if (typeof Intl === "undefined") {
    if (typeof window !== "undefined") {
      Object.defineProperty(window, "Intl", {
        value: {}
      });
    } else if (typeof global !== "undefined") {
      Object.defineProperty(global, "Intl", {
        value: {}
      });
    }
  }
  if (shouldPolyfill()) {
    Object.defineProperty(Intl, "getCanonicalLocales", {
      value: getCanonicalLocales,
      writable: true,
      enumerable: false,
      configurable: true
    });
  }
})();
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */


}

if (!("getOwnPropertyNames"in Object&&function(){try{return Object.getOwnPropertyNames(1),!0}catch(t){return!1}}()
)) {

// Object.getOwnPropertyNames
/* global CreateMethodProperty, ToObject */
(function() {
	var toString = {}.toString;
	var split = "".split;
	var concat = [].concat;
	var hasOwnProperty = Object.prototype.hasOwnProperty;
	var nativeGetOwnPropertyNames = Object.getOwnPropertyNames || Object.keys;
	var cachedWindowNames =
		typeof self === "object" ? nativeGetOwnPropertyNames(self) : [];

	// 19.1.2.10 Object.getOwnPropertyNames ( O )
	CreateMethodProperty(
		Object,
		"getOwnPropertyNames",
		function getOwnPropertyNames(O) {
			var object = ToObject(O);

			if (toString.call(object) === "[object Window]") {
				try {
					return nativeGetOwnPropertyNames(object);
				} catch (e) {
					// IE bug where layout engine calls userland Object.getOwnPropertyNames for cross-domain `window` objects
					return concat.call([], cachedWindowNames);
				}
			}

			// Polyfill.io fallback for non-array-like strings which exist in some ES3 user-agents
			object =
				toString.call(object) == "[object String]"
					? split.call(object, "")
					: Object(object);

			var result = nativeGetOwnPropertyNames(object);
			var extraNonEnumerableKeys = ["length", "prototype"];
			for (var i = 0; i < extraNonEnumerableKeys.length; i++) {
				var key = extraNonEnumerableKeys[i];
				if (hasOwnProperty.call(object, key) && !result.includes(key)) {
					result.push(key);
				}
			}

			if (result.includes("__proto__")) {
				var index = result.indexOf("__proto__");
				result.splice(index, 1);
			}

			return result;
		}
	);
})();

}

if (!("seal"in Object&&function(){try{return Object.seal("1"),!0}catch(t){return!1}}()
)) {

// Object.seal
/* global CreateMethodProperty, Type */
// 19.1.2.19 Object.seal ( O )
(function(originalObjectSeal) {
	CreateMethodProperty(Object, 'seal', function seal(O) {
		// 1. If Type(O) is not Object, return O.
		if (Type(O) === 'object') {
			return O;
		}
		// 2. Let status be ? SetIntegrityLevel(O, "sealed").
		// 3. If status is false, throw a TypeError exception.
		// 4. Return O.
		return originalObjectSeal ? originalObjectSeal(O) : O;
	});
}(Object.seal));

}

if (!("setPrototypeOf"in Object
)) {

// Object.setPrototypeOf
/* global CreateMethodProperty */
// ES6-shim 0.16.0 (c) 2013-2014 Paul Miller (http://paulmillr.com)
// ES6-shim may be freely distributed under the MIT license.
// For more details and documentation:
// https://github.com/paulmillr/es6-shim/

 // NOTE:  This versions needs object ownership
  //        because every promoted object needs to be reassigned
  //        otherwise uncompatible browsers cannot work as expected
  //
  // NOTE:  This might need es5-shim or polyfills upfront
  //        because it's based on ES5 API.
  //
  // NOTE:  nodejs is fine in version 0.8, 0.10, and future versions.
(function () {
	if (Object.setPrototypeOf) { return; }

	/*jshint proto: true */
	// @author    Andrea Giammarchi - @WebReflection

	var getOwnPropertyNames = Object.getOwnPropertyNames;
	var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
	var create = Object.create;
	var defineProperty = Object.defineProperty;
	var getPrototypeOf = Object.getPrototypeOf;
	var objProto = Object.prototype;

	var copyDescriptors = function (target, source) {
		// define into target descriptors from source
		getOwnPropertyNames(source).forEach(function (key) {
			defineProperty(
				target,
				key,
				getOwnPropertyDescriptor(source, key)
			);
		});
		return target;
	};
	// used as fallback when no promotion is possible
	var createAndCopy = function setPrototypeOf(origin, proto) {
		return copyDescriptors(create(proto), origin);
	};
	var set, sPOf;
	try {
		// this might fail for various reasons
		// ignore if Chrome cought it at runtime
		set = getOwnPropertyDescriptor(objProto, '__proto__').set;
		set.call({}, null);
		// setter not poisoned, it can promote
		// Firefox, Chrome
		sPOf = function setPrototypeOf(origin, proto) {
			set.call(origin, proto);
			return origin;
		};
	} catch (e) {
		// do one or more feature detections
		set = { __proto__: null };
		// if proto does not work, needs to fallback
		// some Opera, Rhino, ducktape
		if (set instanceof Object) {
			sPOf = createAndCopy;
		} else {
			// verify if null objects are buggy
			/* eslint-disable no-proto */
			set.__proto__ = objProto;
			/* eslint-enable no-proto */
			// if null objects are buggy
			// nodejs 0.8 to 0.10
			if (set instanceof Object) {
				sPOf = function setPrototypeOf(origin, proto) {
					// use such bug to promote
					/* eslint-disable no-proto */
					origin.__proto__ = proto;
					/* eslint-enable no-proto */
					return origin;
				};
			} else {
				// try to use proto or fallback
				// Safari, old Firefox, many others
				sPOf = function setPrototypeOf(origin, proto) {
					// if proto is not null
					if (getPrototypeOf(origin)) {
						// use __proto__ to promote
						/* eslint-disable no-proto */
						origin.__proto__ = proto;
						/* eslint-enable no-proto */
						return origin;
					} else {
						// otherwise unable to promote: fallback
						return createAndCopy(origin, proto);
					}
				};
			}
		}
	}
	CreateMethodProperty(Object, 'setPrototypeOf', sPOf);
}());

}


// _ErrorConstructor
/* global CreateMethodProperty, CreateNonEnumerableDataPropertyOrThrow, Get, HasProperty, Type */

// eslint-disable-next-line no-unused-vars
var _ErrorConstructor;

(function () {
	// 20.5.8.1 InstallErrorCause ( O, options )
	function InstallErrorCause(O, options) {
		// 1. If options is an Object and ? HasProperty(options, "cause") is true, then
		if (Type(options) === 'object' && HasProperty(options, 'cause')) {
			// a. Let cause be ? Get(options, "cause").
			var cause = Get(options, 'cause');
			// b. Perform CreateNonEnumerableDataPropertyOrThrow(O, "cause", cause).
			CreateNonEnumerableDataPropertyOrThrow(O, 'cause', cause);
		}
		// 2. Return unused.
	}

	// based on https://github.com/es-shims/error-cause/blob/de17ea05/Error/implementation.js#L12-L20
	function _makeErrorConstructor (name, _Error) {
		var _NativeError = _nativeErrors[name];
		var arity = _Error.length;
		return function () {
			var O = arity === 2
				? _NativeError.call(null, arguments[0], arguments[1])
				: _NativeError.call(null, arguments[0]);
			InstallErrorCause(O, arguments.length > arity && arguments[arity]);
			CreateMethodProperty(O, 'constructor', _Error);
			return O;
		}
	}

	// based on https://github.com/es-shims/error-cause/blob/de17ea05/Error/implementation.js#L22-L29
	function _inheritErrorPrototype (name, _Error) {
		if (name !== 'Error') {
			Object.setPrototypeOf(_Error, self.Error);
		}
		_Error.prototype = _nativeErrors[name].prototype;
		Object.defineProperty(_Error, 'prototype', { writable: false });
		// in IE11, the constructor name needs to be corrected
		if (_Error.name !== name) {
			Object.defineProperty(_Error, 'name', { value: name, configurable: true });
		}
		return _Error;
	}

	var _newErrors = {
		Error:          function Error          (_message) { return _errorConstructors.Error.apply(null, arguments); },
		EvalError:      function EvalError      (_message) { return _errorConstructors.EvalError.apply(null, arguments); },
		RangeError:     function RangeError     (_message) { return _errorConstructors.RangeError.apply(null, arguments); },
		ReferenceError: function ReferenceError (_message) { return _errorConstructors.ReferenceError.apply(null, arguments); },
		SyntaxError:    function SyntaxError    (_message) { return _errorConstructors.SyntaxError.apply(null, arguments); },
		TypeError:      function TypeError      (_message) { return _errorConstructors.TypeError.apply(null, arguments); },
		URIError:       function URIError       (_message) { return _errorConstructors.URIError.apply(null, arguments); },
		AggregateError: function AggregateError (_errors, _message) { return _errorConstructors.AggregateError.apply(null, arguments); }
	};

	var _nativeErrors = {};
	var _errorConstructors = {};

	_ErrorConstructor = function (name) {
		_nativeErrors[name] = self[name];
		_errorConstructors[name] = _makeErrorConstructor(name, _newErrors[name]);
		_inheritErrorPrototype(name, _newErrors[name]);
		return _newErrors[name];
	}
})();
if (!((function(){try{return"c"===new Error("m",{cause:"c"}).cause}catch(r){return!1}})()
)) {

// Error.cause
/* global _ErrorConstructor, CreateMethodProperty */

(function () {
	var _errorNames = [
		'Error',
		'EvalError',
		'RangeError',
		'ReferenceError',
		'SyntaxError',
		'TypeError',
		'URIError'
	];

	if ('AggregateError' in self) {
		_errorNames.push('AggregateError');
	}

	for (var i = 0; i < _errorNames.length; i++) {
		var name = _errorNames[i];
		CreateMethodProperty(self, name, _ErrorConstructor(name));
	}
})();

}

if (!("values"in Object
)) {

// Object.values
/* global CreateMethodProperty, ToObject */
(function () {
	var toString = ({}).toString;
	var split = ''.split;
	// 19.1.2.21. Object.values ( O )
	CreateMethodProperty(Object, 'values', function values(O) {
		// 1. Let obj be ? ToObject(O).
		// Polyfill.io fallback for non-array-like strings which exist in some ES3 user-agents
		var obj = toString.call(O) == '[object String]' ? split.call(O, '') : ToObject(O);
		// 2. Let nameList be ? EnumerableOwnProperties(obj, "value").
		var nameList = Object.keys(obj).map(function (key) {
			return obj[key];
		});
		// 3. Return CreateArrayFromList(nameList).
		// Polyfill.io - nameList is already an array.
		return nameList;
	});
}());

}

if (!("performance"in self&&"now"in self.performance
)) {

// performance.now
(function (global) {

var startTime = Date.now();

if (!global.performance) {
	global.performance = {};
}

global.performance.now = function () {
	return Date.now() - startTime;
};

}(self));

}

if (!("IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype
)) {

// IntersectionObserver
/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.
 *
 *  https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
 *
 */

(function(window, document) {
'use strict';

var supportedNatively = 'IntersectionObserver' in window &&
'IntersectionObserverEntry' in window &&
'intersectionRatio' in window.IntersectionObserverEntry.prototype;

if (supportedNatively) {
	return;
}
/**
 * An IntersectionObserver registry. This registry exists to hold a strong
 * reference to IntersectionObserver instances currently observing a target
 * element. Without this registry, instances without another reference may be
 * garbage collected.
 */
var registry = [];


/**
 * Creates the global IntersectionObserverEntry constructor.
 * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry
 * @param {Object} entry A dictionary of instance properties.
 * @constructor
 */
function IntersectionObserverEntry(entry) {
	this.time = entry.time;
	this.target = entry.target;
	this.rootBounds = entry.rootBounds;
	this.boundingClientRect = entry.boundingClientRect;
	this.intersectionRect = entry.intersectionRect || getEmptyRect();
	try {
		this.isIntersecting = !!entry.intersectionRect;
	} catch (err) {
		// This means we are using the IntersectionObserverEntry polyfill which has only defined a getter
	}

	// Calculates the intersection ratio.
	var targetRect = this.boundingClientRect;
	var targetArea = targetRect.width * targetRect.height;
	var intersectionRect = this.intersectionRect;
	var intersectionArea = intersectionRect.width * intersectionRect.height;

	// Sets intersection ratio.
	if (targetArea) {
		// Round the intersection ratio to avoid floating point math issues:
		// https://github.com/w3c/IntersectionObserver/issues/324
		this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));
	} else {
		// If area is zero and is intersecting, sets to 1, otherwise to 0
		this.intersectionRatio = this.isIntersecting ? 1 : 0;
	}
}

IntersectionObserverEntry.prototype.intersectionRatio = 0;

/**
 * Creates the global IntersectionObserver constructor.
 * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface
 * @param {Function} callback The function to be invoked after intersection
 *     changes have queued. The function is not invoked if the queue has
 *     been emptied by calling the `takeRecords` method.
 * @param {Object=} opt_options Optional configuration options.
 * @constructor
 */
function IntersectionObserver(callback, opt_options) {

	var options = opt_options || {};

	if (typeof callback != 'function') {
		throw new Error('callback must be a function');
	}

	if (options.root && options.root.nodeType != 1) {
		throw new Error('root must be an Element');
	}

	// Binds and throttles `this._checkForIntersections`.
	this._checkForIntersections = throttle(
			this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);

	// Private properties.
	this._callback = callback;
	this._observationTargets = [];
	this._queuedEntries = [];
	this._rootMarginValues = this._parseRootMargin(options.rootMargin);

	// Public properties.
	this.thresholds = this._initThresholds(options.threshold);
	this.root = options.root || null;
	this.rootMargin = this._rootMarginValues.map(function(margin) {
		return margin.value + margin.unit;
	}).join(' ');
}


/**
 * The minimum interval within which the document will be checked for
 * intersection changes.
 */
IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;


/**
 * The frequency in which the polyfill polls for intersection changes.
 * this can be updated on a per instance basis and must be set prior to
 * calling `observe` on the first target.
 */
IntersectionObserver.prototype.POLL_INTERVAL = null;

/**
 * Use a mutation observer on the root element
 * to detect intersection changes.
 */
IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;


/**
 * Starts observing a target element for intersection changes based on
 * the thresholds values.
 * @param {Element} target The DOM element to observe.
 */
IntersectionObserver.prototype.observe = function(target) {
	var isTargetAlreadyObserved = this._observationTargets.some(function(item) {
		return item.element == target;
	});

	if (isTargetAlreadyObserved) {
		return;
	}

	if (!(target && target.nodeType == 1)) {
		throw new Error('target must be an Element');
	}

	this._registerInstance();
	this._observationTargets.push({element: target, entry: null});
	this._monitorIntersections();
	this._checkForIntersections();
};


/**
 * Stops observing a target element for intersection changes.
 * @param {Element} target The DOM element to observe.
 */
IntersectionObserver.prototype.unobserve = function(target) {
	this._observationTargets =
			this._observationTargets.filter(function(item) {

		return item.element != target;
	});
	if (!this._observationTargets.length) {
		this._unmonitorIntersections();
		this._unregisterInstance();
	}
};


/**
 * Stops observing all target elements for intersection changes.
 */
IntersectionObserver.prototype.disconnect = function() {
	this._observationTargets = [];
	this._unmonitorIntersections();
	this._unregisterInstance();
};


/**
 * Returns any queue entries that have not yet been reported to the
 * callback and clears the queue. This can be used in conjunction with the
 * callback to obtain the absolute most up-to-date intersection information.
 * @return {Array} The currently queued entries.
 */
IntersectionObserver.prototype.takeRecords = function() {
	var records = this._queuedEntries.slice();
	this._queuedEntries = [];
	return records;
};


/**
 * Accepts the threshold value from the user configuration object and
 * returns a sorted array of unique threshold values. If a value is not
 * between 0 and 1 and error is thrown.
 * @private
 * @param {Array|number=} opt_threshold An optional threshold value or
 *     a list of threshold values, defaulting to [0].
 * @return {Array} A sorted list of unique and valid threshold values.
 */
IntersectionObserver.prototype._initThresholds = function(opt_threshold) {
	var threshold = opt_threshold || [0];
	if (!Array.isArray(threshold)) threshold = [threshold];

	return threshold.sort().filter(function(t, i, a) {
		if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {
			throw new Error('threshold must be a number between 0 and 1 inclusively');
		}
		return t !== a[i - 1];
	});
};


/**
 * Accepts the rootMargin value from the user configuration object
 * and returns an array of the four margin values as an object containing
 * the value and unit properties. If any of the values are not properly
 * formatted or use a unit other than px or %, and error is thrown.
 * @private
 * @param {string=} opt_rootMargin An optional rootMargin value,
 *     defaulting to '0px'.
 * @return {Array<Object>} An array of margin objects with the keys
 *     value and unit.
 */
IntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {
	var marginString = opt_rootMargin || '0px';
	var margins = marginString.split(/\s+/).map(function(margin) {
		var parts = /^(-?\d*\.?\d+)(px|%)$/.exec(margin);
		if (!parts) {
			throw new Error('rootMargin must be specified in pixels or percent');
		}
		return {value: parseFloat(parts[1]), unit: parts[2]};
	});

	// Handles shorthand.
	margins[1] = margins[1] || margins[0];
	margins[2] = margins[2] || margins[0];
	margins[3] = margins[3] || margins[1];

	return margins;
};


/**
 * Starts polling for intersection changes if the polling is not already
 * happening, and if the page's visibility state is visible.
 * @private
 */
IntersectionObserver.prototype._monitorIntersections = function() {
	if (!this._monitoringIntersections) {
		this._monitoringIntersections = true;

		// If a poll interval is set, use polling instead of listening to
		// resize and scroll events or DOM mutations.
		if (this.POLL_INTERVAL) {
			this._monitoringInterval = setInterval(
					this._checkForIntersections, this.POLL_INTERVAL);
		}
		else {
			addEvent(window, 'resize', this._checkForIntersections, true);
			addEvent(document, 'scroll', this._checkForIntersections, true);

			if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {
				this._domObserver = new MutationObserver(this._checkForIntersections);
				this._domObserver.observe(document, {
					attributes: true,
					childList: true,
					characterData: true,
					subtree: true
				});
			}
		}
	}
};


/**
 * Stops polling for intersection changes.
 * @private
 */
IntersectionObserver.prototype._unmonitorIntersections = function() {
	if (this._monitoringIntersections) {
		this._monitoringIntersections = false;

		clearInterval(this._monitoringInterval);
		this._monitoringInterval = null;

		removeEvent(window, 'resize', this._checkForIntersections, true);
		removeEvent(document, 'scroll', this._checkForIntersections, true);

		if (this._domObserver) {
			this._domObserver.disconnect();
			this._domObserver = null;
		}
	}
};


/**
 * Scans each observation target for intersection changes and adds them
 * to the internal entries queue. If new entries are found, it
 * schedules the callback to be invoked.
 * @private
 */
IntersectionObserver.prototype._checkForIntersections = function() {
	var rootIsInDom = this._rootIsInDom();
	var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();

	this._observationTargets.forEach(function(item) {
		var target = item.element;
		var targetRect = getBoundingClientRect(target);
		var rootContainsTarget = this._rootContainsTarget(target);
		var oldEntry = item.entry;
		var intersectionRect = rootIsInDom && rootContainsTarget &&
				this._computeTargetAndRootIntersection(target, rootRect);

		var newEntry = item.entry = new IntersectionObserverEntry({
			time: now(),
			target: target,
			boundingClientRect: targetRect,
			rootBounds: rootRect,
			intersectionRect: intersectionRect
		});

		if (!oldEntry) {
			this._queuedEntries.push(newEntry);
		} else if (rootIsInDom && rootContainsTarget) {
			// If the new entry intersection ratio has crossed any of the
			// thresholds, add a new entry.
			if (this._hasCrossedThreshold(oldEntry, newEntry)) {
				this._queuedEntries.push(newEntry);
			}
		} else {
			// If the root is not in the DOM or target is not contained within
			// root but the previous entry for this target had an intersection,
			// add a new record indicating removal.
			if (oldEntry && oldEntry.isIntersecting) {
				this._queuedEntries.push(newEntry);
			}
		}
	}, this);

	if (this._queuedEntries.length) {
		this._callback(this.takeRecords(), this);
	}
};


/**
 * Accepts a target and root rect computes the intersection between then
 * following the algorithm in the spec.
 * TODO(philipwalton): at this time clip-path is not considered.
 * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo
 * @param {Element} target The target DOM element
 * @param {Object} rootRect The bounding rect of the root after being
 *     expanded by the rootMargin value.
 * @return {?Object} The final intersection rect object or undefined if no
 *     intersection is found.
 * @private
 */
IntersectionObserver.prototype._computeTargetAndRootIntersection =
		function(target, rootRect) {

	// If the element isn't displayed, an intersection can't happen.
	if (window.getComputedStyle(target).display == 'none') return;

	var targetRect = getBoundingClientRect(target);
	var intersectionRect = targetRect;
	var parent = getParentNode(target);
	var atRoot = false;

	while (!atRoot) {
		var parentRect = null;
		var parentComputedStyle = parent.nodeType == 1 ?
				window.getComputedStyle(parent) : {};

		// If the parent isn't displayed, an intersection can't happen.
		if (parentComputedStyle.display == 'none') return;

		if (parent == this.root || parent == document) {
			atRoot = true;
			parentRect = rootRect;
		} else {
			// If the element has a non-visible overflow, and it's not the <body>
			// or <html> element, update the intersection rect.
			// Note: <body> and <html> cannot be clipped to a rect that's not also
			// the document rect, so no need to compute a new intersection.
			if (parent != document.body &&
					parent != document.documentElement &&
					parentComputedStyle.overflow != 'visible') {
				parentRect = getBoundingClientRect(parent);
			}
		}

		// If either of the above conditionals set a new parentRect,
		// calculate new intersection data.
		if (parentRect) {
			intersectionRect = computeRectIntersection(parentRect, intersectionRect);

			if (!intersectionRect) break;
		}
		parent = getParentNode(parent);
	}
	return intersectionRect;
};


/**
 * Returns the root rect after being expanded by the rootMargin value.
 * @return {Object} The expanded root rect.
 * @private
 */
IntersectionObserver.prototype._getRootRect = function() {
	var rootRect;
	if (this.root) {
		rootRect = getBoundingClientRect(this.root);
	} else {
		// Use <html>/<body> instead of window since scroll bars affect size.
		var html = document.documentElement;
		var body = document.body;
		rootRect = {
			x: 0,
			y: 0,
			top: 0,
			left: 0,
			right: html.clientWidth || body.clientWidth,
			width: html.clientWidth || body.clientWidth,
			bottom: html.clientHeight || body.clientHeight,
			height: html.clientHeight || body.clientHeight
		};
	}
	return this._expandRectByRootMargin(rootRect);
};


/**
 * Accepts a rect and expands it by the rootMargin value.
 * @param {Object} rect The rect object to expand.
 * @return {Object} The expanded rect.
 * @private
 */
IntersectionObserver.prototype._expandRectByRootMargin = function(rect) {
	var margins = this._rootMarginValues.map(function(margin, i) {
		return margin.unit == 'px' ? margin.value :
				margin.value * (i % 2 ? rect.width : rect.height) / 100;
	});
	var newRect = {
		top: rect.top - margins[0],
		right: rect.right + margins[1],
		bottom: rect.bottom + margins[2],
		left: rect.left - margins[3]
	};
	newRect.width = newRect.right - newRect.left;
	newRect.height = newRect.bottom - newRect.top;
	newRect.x = newRect.left;
	newRect.y = newRect.top;

	return newRect;
};


/**
 * Accepts an old and new entry and returns true if at least one of the
 * threshold values has been crossed.
 * @param {?IntersectionObserverEntry} oldEntry The previous entry for a
 *    particular target element or null if no previous entry exists.
 * @param {IntersectionObserverEntry} newEntry The current entry for a
 *    particular target element.
 * @return {boolean} Returns true if a any threshold has been crossed.
 * @private
 */
IntersectionObserver.prototype._hasCrossedThreshold =
		function(oldEntry, newEntry) {

	// To make comparing easier, an entry that has a ratio of 0
	// but does not actually intersect is given a value of -1
	var oldRatio = oldEntry && oldEntry.isIntersecting ?
			oldEntry.intersectionRatio || 0 : -1;
	var newRatio = newEntry.isIntersecting ?
			newEntry.intersectionRatio || 0 : -1;

	// Ignore unchanged ratios
	if (oldRatio === newRatio) return;

	for (var i = 0; i < this.thresholds.length; i++) {
		var threshold = this.thresholds[i];

		// Return true if an entry matches a threshold or if the new ratio
		// and the old ratio are on the opposite sides of a threshold.
		if (threshold == oldRatio || threshold == newRatio ||
				threshold < oldRatio !== threshold < newRatio) {
			return true;
		}
	}
};


/**
 * Returns whether or not the root element is an element and is in the DOM.
 * @return {boolean} True if the root element is an element and is in the DOM.
 * @private
 */
IntersectionObserver.prototype._rootIsInDom = function() {
	return !this.root || containsDeep(document, this.root);
};


/**
 * Returns whether or not the target element is a child of root.
 * @param {Element} target The target element to check.
 * @return {boolean} True if the target element is a child of root.
 * @private
 */
IntersectionObserver.prototype._rootContainsTarget = function(target) {
	return containsDeep(this.root || document, target);
};


/**
 * Adds the instance to the global IntersectionObserver registry if it isn't
 * already present.
 * @private
 */
IntersectionObserver.prototype._registerInstance = function() {
	if (registry.indexOf(this) < 0) {
		registry.push(this);
	}
};


/**
 * Removes the instance from the global IntersectionObserver registry.
 * @private
 */
IntersectionObserver.prototype._unregisterInstance = function() {
	var index = registry.indexOf(this);
	if (index != -1) registry.splice(index, 1);
};


/**
 * Returns the result of the performance.now() method or null in browsers
 * that don't support the API.
 * @return {number} The elapsed time since the page was requested.
 */
function now() {
	return window.performance && performance.now && performance.now();
}


/**
 * Throttles a function and delays its execution, so it's only called at most
 * once within a given time period.
 * @param {Function} fn The function to throttle.
 * @param {number} timeout The amount of time that must pass before the
 *     function can be called again.
 * @return {Function} The throttled function.
 */
function throttle(fn, timeout) {
	var timer = null;
	return function () {
		if (!timer) {
			timer = setTimeout(function() {
				fn();
				timer = null;
			}, timeout);
		}
	};
}


/**
 * Adds an event handler to a DOM node ensuring cross-browser compatibility.
 * @param {Node} node The DOM node to add the event handler to.
 * @param {string} event The event name.
 * @param {Function} fn The event handler to add.
 * @param {boolean} opt_useCapture Optionally adds the even to the capture
 *     phase. Note: this only works in modern browsers.
 */
function addEvent(node, event, fn, opt_useCapture) {
	if (typeof node.addEventListener == 'function') {
		node.addEventListener(event, fn, opt_useCapture || false);
	}
	else if (typeof node.attachEvent == 'function') {
		node.attachEvent('on' + event, fn);
	}
}


/**
 * Removes a previously added event handler from a DOM node.
 * @param {Node} node The DOM node to remove the event handler from.
 * @param {string} event The event name.
 * @param {Function} fn The event handler to remove.
 * @param {boolean} opt_useCapture If the event handler was added with this
 *     flag set to true, it should be set to true here in order to remove it.
 */
function removeEvent(node, event, fn, opt_useCapture) {
	if (typeof node.removeEventListener == 'function') {
		node.removeEventListener(event, fn, opt_useCapture || false);
	}
	else if (typeof node.detatchEvent == 'function') {
		node.detatchEvent('on' + event, fn);
	}
}


/**
 * Returns the intersection between two rect objects.
 * @param {Object} rect1 The first rect.
 * @param {Object} rect2 The second rect.
 * @return {?Object} The intersection rect or undefined if no intersection
 *     is found.
 */
function computeRectIntersection(rect1, rect2) {
	var top = Math.max(rect1.top, rect2.top);
	var bottom = Math.min(rect1.bottom, rect2.bottom);
	var left = Math.max(rect1.left, rect2.left);
	var right = Math.min(rect1.right, rect2.right);
	var width = right - left;
	var height = bottom - top;

	return (width >= 0 && height >= 0) && {
		x: left,
		y: top,
		top: top,
		bottom: bottom,
		left: left,
		right: right,
		width: width,
		height: height
	};
}


/**
 * Shims the native getBoundingClientRect for compatibility with older IE.
 * @param {Element} el The element whose bounding rect to get.
 * @return {Object} The (possibly shimmed) rect of the element.
 */
function getBoundingClientRect(el) {
	var rect;

	try {
		rect = el.getBoundingClientRect();
	} catch (err) {
		// Ignore Windows 7 IE11 "Unspecified error"
		// https://github.com/w3c/IntersectionObserver/pull/205
	}

	if (!rect) return getEmptyRect();

	// Older IE
	if (!(rect.width && rect.height && rect.x && rect.y)) {
		rect = {
			x: rect.left,
			y: rect.top,
			top: rect.top,
			right: rect.right,
			bottom: rect.bottom,
			left: rect.left,
			width: rect.right - rect.left,
			height: rect.bottom - rect.top
		};
	}
	return rect;
}


/**
 * Returns an empty rect object. An empty rect is returned when an element
 * is not in the DOM.
 * @return {Object} The empty rect.
 */
function getEmptyRect() {
	return {
		x: 0,
		y: 0,
		top: 0,
		bottom: 0,
		left: 0,
		right: 0,
		width: 0,
		height: 0
	};
}

/**
 * Checks to see if a parent element contains a child element (including inside
 * shadow DOM).
 * @param {Node} parent The parent element.
 * @param {Node} child The child element.
 * @return {boolean} True if the parent node contains the child node.
 */
function containsDeep(parent, child) {
	var node = child;
	while (node) {
		if (node == parent) return true;

		node = getParentNode(node);
	}
	return false;
}


/**
 * Gets the parent node of an element or its host element if the parent node
 * is a shadow root.
 * @param {Node} node The node whose parent to get.
 * @return {Node|null} The parent node or null if no parent exists.
 */
function getParentNode(node) {
	var parent = node.parentNode;

	if (parent && parent.nodeType == 11 && parent.host) {
		// If the parent is a shadow root, return the host element.
		return parent.host;
	}

	if (parent && parent.assignedSlot) {
		// If the parent is distributed in a <slot>, return the parent of a slot.
		return parent.assignedSlot.parentNode;
	}

	return parent;
}


// Exposes the constructors globally.
window.IntersectionObserver = IntersectionObserver;
window.IntersectionObserverEntry = IntersectionObserverEntry;

}(window, document));

}

if (!("IntersectionObserverEntry"in window&&"isIntersecting"in window.IntersectionObserverEntry.prototype
)) {

// IntersectionObserverEntry
// Minimal polyfill for Edge 15's lack of `isIntersecting`
// See: https://github.com/w3c/IntersectionObserver/issues/211
Object.defineProperty(IntersectionObserverEntry.prototype,
	'isIntersecting', {
		get: function () {
			return this.intersectionRatio > 0;
		}
	}
);

}

if (!("Reflect"in self
)) {

// Reflect
// 26.1 The Reflect Object
try {
	Object.defineProperty(self, "Reflect", {
		value: self.Reflect || {},
		writable: true,
		configurable: true,
		enumerable: false
	});
} catch (e) {
	self.Reflect = self.Reflect || {};
}

}

if (!("flags"in RegExp.prototype
)) {

// RegExp.prototype.flags
/* global Get, ToBoolean, Type */
Object.defineProperty(RegExp.prototype, 'flags', {
	configurable: true,
	enumerable: false,
	get: function () {
		// 21.2.5.3.1 Let R be the this value.
		var R = this;

		// 21.2.5.3.2 If Type(R) is not Object, throw a TypeError exception.
		if (Type(R) !== 'object') {
			throw new TypeError('Method called on incompatible type: must be an object.');
		}
		// 21.2.5.3.3 Let result be the empty String.
		var result = '';

		// 21.2.5.3.4 Let global be ToBoolean(? Get(R, "global")).
		var global = ToBoolean(Get(R, 'global'));

		// 21.2.5.3.5 If global is true, append the code unit 0x0067 (LATIN SMALL LETTER G) as the last code unit of result.
		if (global) {
			result += 'g';
		}

		// 21.2.5.3.6 Let ignoreCase be ToBoolean(? Get(R, "ignoreCase")).
		var ignoreCase = ToBoolean(Get(R, 'ignoreCase'));

		// 21.2.5.3.7 If ignoreCase is true, append the code unit 0x0069 (LATIN SMALL LETTER I) as the last code unit of result.
		if (ignoreCase) {
			result += 'i';
		}

		// 21.2.5.3.8 Let multiline be ToBoolean(? Get(R, "multiline")).
		var multiline = ToBoolean(Get(R, 'multiline'));

		// 21.2.5.3.9 If multiline is true, append the code unit 0x006D (LATIN SMALL LETTER M) as the last code unit of result.
		if (multiline) {
			result += 'm';
		}

		// 21.2.5.3.10 Let unicode be ToBoolean(? Get(R, "unicode")).
		var unicode = ToBoolean(Get(R, 'unicode'));

		// 21.2.5.3.11 If unicode is true, append the code unit 0x0075 (LATIN SMALL LETTER U) as the last code unit of result.
		if (unicode) {
			result += 'u';
		}

		// 21.2.5.3.12 Let sticky be ToBoolean(? Get(R, "sticky")).
		var sticky = ToBoolean(Get(R, 'sticky'));

		// 21.2.5.3.13 If sticky is true, append the code unit 0x0079 (LATIN SMALL LETTER Y) as the last code unit of result.
		if (sticky) {
			result += 'y';
		}

		// 21.2.5.3.14 Return result.
		return result;
	}
});

}

if (!("requestAnimationFrame"in self
)) {

// requestAnimationFrame
(function (global) {
	var rafPrefix;

	// do not inject RAF in order to avoid broken performance
	var nowOffset = Date.now();

	// use performance api if exist, otherwise use Date.now.
	// Date.now polyfill required.
	var pnow = function () {
		if (global.performance && typeof global.performance.now === 'function') {
			return global.performance.now();
		}
		// fallback
		return Date.now() - nowOffset;
	};

	if ('mozRequestAnimationFrame' in global) {
		rafPrefix = 'moz';

	} else if ('webkitRequestAnimationFrame' in global) {
		rafPrefix = 'webkit';

	}

	if (rafPrefix) {
		global.requestAnimationFrame = function (callback) {
			return global[rafPrefix + 'RequestAnimationFrame'](function () {
				callback(pnow());
			});
		};
		global.cancelAnimationFrame = global[rafPrefix + 'CancelAnimationFrame'];
	} else {

		var lastTime = Date.now();

		global.requestAnimationFrame = function (callback) {
			if (typeof callback !== 'function') {
				throw new TypeError(callback + ' is not a function');
			}

			var
			currentTime = Date.now(),
			delay = 16 + lastTime - currentTime;

			if (delay < 0) {
				delay = 0;
			}

			lastTime = currentTime;

			return setTimeout(function () {
				lastTime = Date.now();

				callback(pnow());
			}, delay);
		};

		global.cancelAnimationFrame = function (id) {
			clearTimeout(id);
		};
	}
}(self));

}

if (!("requestIdleCallback"in self
)) {

// requestIdleCallback
(function (global) {

	// The requestIdleCallback polyfill builds on ReactScheduler, which
	// calculates the browser's framerate and seperates the idle call into a
	// seperate tick:
	// "It works by scheduling a requestAnimationFrame, storing the time for the
	// start of the frame, then scheduling a postMessage which gets scheduled
	// after paint. Within the postMessage handler do as much work as possible
	// until time + frame rate. By separating the idle call into a separate
	// event tick we ensure that layout, paint and other browser work is counted
	// against the available time. The frame rate is dynamically adjusted."
	// https://github.com/facebook/react/blob/43a137d9c13064b530d95ba51138ec1607de2c99/packages/react-scheduler/src/ReactScheduler.js

	// MIT License
	//
	// Copyright (c) 2013-present, Facebook, Inc.
	//
	// Permission is hereby granted, free of charge, to any person obtaining a copy
	// of this software and associated documentation files (the "Software"), to deal
	// in the Software without restriction, including without limitation the rights
	// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
	// copies of the Software, and to permit persons to whom the Software is
	// furnished to do so, subject to the following conditions:
	//
	// The above copyright notice and this permission notice shall be included in all
	// copies or substantial portions of the Software.
	//
	// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
	// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
	// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
	// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
	// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
	// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
	// SOFTWARE.

	var idleCallbackIdentifier = 0;
	var scheduledCallbacks = [];
	var timedOutCallbacks = [];
	var nestedCallbacks = [];

	var isIdleScheduled = false;
	var isCallbackRunning = false;
	var allowIdleDeadlineConstructor = false;

	var scheduledAnimationFrameId;
	var scheduledAnimationFrameTimeout;

	// We start out assuming that we run at 30fps (1 frame per 33.3ms) but then
	// the heuristic tracking will adjust this value to a faster fps if we get
	// more frequent animation frames.
	var previousFrameTime = 33;
	var activeFrameTime = 33;

	var frameDeadline = 0;

	var port; // The object to `postMessage` on.
	var messageKey;
	var messageChannelSupport = typeof MessageChannel === 'object';

	// We use the postMessage trick to defer idle work until after the repaint.
	if (messageChannelSupport) {
		// Use MessageChannel if supported.
		var messageChannel = new MessageChannel();
		port = messageChannel.port2;
		messageChannel.port1.onmessage = processIdleCallbacks;
	} else {
		// TODO add `MessageChannel` polyfill to polyfill.io.
		// Otherwise fallback to document messaging. It is less efficient as
		// all message event listeners within a project will be called each
		// frame whilst idle callbacks remain.
		messageKey = 'polyfillIdleCallback' + Math.random().toString(36).slice(2);
		port = window;
		window.addEventListener('message', function (event) {
			// some engines return true when a strict comparison with `window` is made.
			if (event.source != window || event.data !== messageKey) {
				return;
			}
			processIdleCallbacks();
		});
	}

	function timeRemaining() {
		// Defensive coding. Time remaining should never be more than 50ms.
		// This is sometimes the case in Safari 9.
		return Math.min(frameDeadline - performance.now(), 50);
	}

	function getDeadline(callbackObject) {
		var timeout = callbackObject.options.timeout;
		var added = callbackObject.added;
		// Create deadline from global.IdleDeadline.
		// Turn off constructor error to do so.
		allowIdleDeadlineConstructor = true;
		var deadline = new global.IdleDeadline();
		allowIdleDeadlineConstructor = false;
		// Set deadline properties.
		Object.defineProperty(deadline, 'didTimeout', {
			value: timeout ? added + timeout < performance.now() : false
		});
		Object.defineProperty(deadline, 'timeRemaining', {
			value: timeRemaining
		});
		return deadline;
	}

	function runCallback(callbackObject) {
		var deadline = getDeadline(callbackObject);
		var callback = callbackObject.callback;
		callback(deadline);
	}

	function scheduleIdleWork() {
		if (!isIdleScheduled) {
			isIdleScheduled = true;
			try {
				// Safari 9 throws "TypeError: Value is not a sequence"
				port.postMessage(messageKey, '*');
			} catch (error) {
				port.postMessage(messageKey);
			}
		}
	}

	function scheduleAnimationFrame() {
		// Schedule animation frame to calculate the browsers framerate.
		if (!scheduledAnimationFrameId) {
			// Request the animation frame.
			scheduledAnimationFrameId = requestAnimationFrame(function (rafTime) {
				// Remove timeout fallback, as the animation frame run successfully.
				scheduledAnimationFrameId = undefined;
				clearTimeout(scheduledAnimationFrameTimeout);
				// Safari 9 gives a `rafTime` far into the future.
				// It appears to be (now + (frame rate) * 2).
				var futureRafTime = rafTime - activeFrameTime > performance.now();
				if (futureRafTime) {
					rafTime = rafTime - (activeFrameTime * 2);
				}
				// Calculate the frame rate.
				var nextFrameTime = rafTime - frameDeadline + activeFrameTime;
				if (nextFrameTime < activeFrameTime && previousFrameTime < activeFrameTime) {
					if (nextFrameTime < 8) {
						// Defensive coding. We don't support higher frame rates than 120hz.
						// If we get lower than that, it is probably a bug.
						nextFrameTime = 8;
					}
					// If one frame goes long, then the next one can be short to catch up.
					// If two frames are short in a row, then that's an indication that we
					// actually have a higher frame rate than what we're currently optimizing.
					// We adjust our heuristic dynamically accordingly. For example, if we're
					// running on 120hz display or 90hz VR display.
					// Take the max of the two in case one of them was an anomaly due to
					// missed frame deadlines.
					activeFrameTime = Math.max(previousFrameTime, nextFrameTime);
				} else {
					previousFrameTime = nextFrameTime;
				}
				// Update the deadline we have to run idle callbacks.
				frameDeadline = rafTime + activeFrameTime;
				// Schedule idle callback work.
				scheduleIdleWork();
			});

			// If the animation frame is not called, for example if the tab is in the
			// background, schedule work should still be run. So set a timeout as a
			// fallback.
			scheduledAnimationFrameTimeout = setTimeout(function () {
				// Cancel the animation frame which failed to run timely.
				cancelAnimationFrame(scheduledAnimationFrameId);
				scheduledAnimationFrameId = undefined;
				// Update the deadline we have to run idle callbacks.
				frameDeadline = performance.now() + 50;
				// Run callbacks.
				scheduleIdleWork();
			}, 100);
		}
	}

	function processIdleCallbacks () {
		isIdleScheduled = false;
		isCallbackRunning = true;

		// Move timed-out callbacks from the scheduled array.
		timedOutCallbacks = scheduledCallbacks.filter(function (callbackObject) {
			if (callbackObject.options.timeout !== undefined) {
				var deadline = getDeadline(callbackObject);
				return deadline.didTimeout;
			}
			return false;
		});

		scheduledCallbacks = scheduledCallbacks.filter(function (callbackObject) {
			return !timedOutCallbacks.includes(callbackObject);
		});

		// Of the timed-out callbacks, order by those with the lowest timeout.
		timedOutCallbacks.sort(function (a, b) {
			return a.options.timeout - b.options.timeout;
		});

		// Run all timed-out callbacks, regardless of the deadline time
		// remaining.
		while (timedOutCallbacks.length > 0) {
			var callbackObject = timedOutCallbacks.shift();
			runCallback(callbackObject);
		}

		// While there is deadline time remaining, run remaining scheduled
		// callbacks.
		while (scheduledCallbacks.length > 0 && timeRemaining() > 0) {
			callbackObject = scheduledCallbacks.shift();
			runCallback(callbackObject);
		}

		// Schedule callbacks added during this idle period to run in the next
		// idle period  (nested callbacks).
		if (nestedCallbacks.length > 0) {
			scheduledCallbacks = scheduledCallbacks.concat(nestedCallbacks);
			nestedCallbacks = [];
		}

		// Schedule any remaining callbacks for a future idle period.
		if (scheduledCallbacks.length > 0) {
			scheduleAnimationFrame();
		}

		isCallbackRunning = false;
	}

	/**
	* @param {function} callback
	* @return {number} - The idle callback identifier.
	*/
	global.requestIdleCallback = function requestIdleCallback(callback, options) {
		var id = ++idleCallbackIdentifier;

		// Create an object to store the callback, its options, and the time it
		// was added.
		var callbackObject = {
			id: id,
			callback: callback,
			options: options || {},
			added: performance.now()
		};

		// If an idle callback is running already this is a nested idle callback
		// and should be scheduled for a different period. If no idle callback
		// is running schedule immediately.
		if (isCallbackRunning) {
			nestedCallbacks.push(callbackObject);
		} else {
			scheduledCallbacks.push(callbackObject);
		}

		// Run scheduled idle callbacks after the next animation frame.
		scheduleAnimationFrame();

		// Return the callbacks identifier.
		return id;
	};

	/**
	* @param {number} - The idle callback identifier to cancel.
	* @return {undefined}
	*/
	global.cancelIdleCallback = function cancelIdleCallback(id) {
		if(arguments.length === 0) {
			throw new TypeError('cancelIdleCallback requires at least 1 argument');
		}

		var callbackFilter = function (callbackObject) {
			return callbackObject.id !== id;
		};
		// Find and remove the callback from the scheduled idle callbacks,
		// and nested callbacks (cancelIdleCallback may be called in an idle period).
		scheduledCallbacks = scheduledCallbacks.filter(callbackFilter);
		nestedCallbacks = nestedCallbacks.filter(callbackFilter);
	};

	/** IdleDeadline Polyfill
	*  @example
	*      requestIdleCallback(function (deadline) {
	*          console.log(deadline instanceof IdleDeadline); // true
	*      });
	*/
	global.IdleDeadline = function IdleDeadline() {
		if (!allowIdleDeadlineConstructor) {
			throw new TypeError('Illegal constructor');
		}
	};

	Object.defineProperty(global.IdleDeadline.prototype, 'timeRemaining', {
		value: function() {
			throw new TypeError('Illegal invocation');
		}
	});

	if (Object.prototype.hasOwnProperty.call(Object.prototype, '__defineGetter__')) {
		Object.defineProperty(global.IdleDeadline.prototype, 'didTimeout', {
			get: function () {
				throw new TypeError('Illegal invocation');
			}
		});
	} else {
		Object.defineProperty(global.IdleDeadline.prototype, 'didTimeout', {
			value: undefined
		});
	}

}(self));

}

if (!("fromCodePoint"in String&&1===String.fromCodePoint.length
)) {

// String.fromCodePoint
/* global CreateMethodProperty, IsArray, SameValue, ToInteger, ToNumber, UTF16Encoding */

// 21.1.2.2. String.fromCodePoint ( ...codePoints )
CreateMethodProperty(String, 'fromCodePoint', function fromCodePoint(_) {
	// Polyfill.io - List to store the characters whilst iterating over the code points.
	var result = [];
	// 1. Let codePoints be a List containing the arguments passed to this function.
	var codePoints = arguments;
	// 2. Let length be the number of elements in codePoints.
	var length = arguments.length;
	// 3. Let elements be a new empty List.
	var elements = [];
	// 4. Let nextIndex be 0.
	var nextIndex = 0;
	// 5. Repeat, while nextIndex < length
	while (nextIndex < length) {
		// Polyfill.io - We reset the elements List as we store the partial results in the result List.
		elements = [];
		// a. Let next be codePoints[nextIndex].
		var next = codePoints[nextIndex];
		// b. Let nextCP be ? ToNumber(next).
		var nextCP = ToNumber(next);
		// c. If SameValue(nextCP, ToInteger(nextCP)) is false, throw a RangeError exception.
		if (SameValue(nextCP, ToInteger(nextCP)) === false) {
			throw new RangeError('Invalid code point ' + Object.prototype.toString.call(nextCP));
		}
		// d. If nextCP < 0 or nextCP > 0x10FFFF, throw a RangeError exception.
		if (nextCP < 0 || nextCP > 0x10FFFF) {
			throw new RangeError('Invalid code point ' + Object.prototype.toString.call(nextCP));
		}
		// e. Append the elements of the UTF16Encoding of nextCP to the end of elements.
		// Polyfill.io - UTF16Encoding can return a single codepoint or a list of multiple codepoints.
		var cp = UTF16Encoding(nextCP);
		if (IsArray(cp)) {
			elements = elements.concat(cp);
		} else {
			elements.push(cp);
		}
		// f. Let nextIndex be nextIndex + 1.
		nextIndex = nextIndex + 1;

		// Polyfill.io - Retrieving the characters whilst iterating enables the function to work in a memory efficient and performant way.
		result.push(String.fromCharCode.apply(null, elements));
	}
	// 6. Return the String value whose elements are, in order, the elements in the List elements. If length is 0, the empty string is returned.
	return length === 0 ? '' : result.join('');
});

}

if (!("at"in String.prototype
)) {

// String.prototype.at
/* global CreateMethodProperty, RequireObjectCoercible, ToIntegerOrInfinity, ToString */
// 22.1.3.1. String.prototype.at ( index )
CreateMethodProperty(String.prototype, 'at', function at(index) {
	// 1. Let O be ? RequireObjectCoercible(this value).
	var O = RequireObjectCoercible(this);
	// 2. Let S be ? ToString(O).
	var S = ToString(O);
	// 3. Let len be the length of S.
	var len = S.length;
	// 4. Let relativeIndex be ? ToIntegerOrInfinity(index).
	var relativeIndex = ToIntegerOrInfinity(index);
	// 5. If relativeIndex ≥ 0, then
	// 5.a. Let k be relativeIndex.
	// 6. Else,
	// 6.a. Let k be len + relativeIndex.
	var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
	// 7. If k < 0 or k ≥ len, return undefined.
	if (k < 0 || k >= len) return undefined;
	// 8. Return the substring of S from k to k + 1.
	return S.substring(k, k + 1);
});

}

if (!("codePointAt"in String.prototype
)) {

// String.prototype.codePointAt
/* global CreateMethodProperty, RequireObjectCoercible, ToInteger, ToString, UTF16Decode */
// 21.1.3.3. String.prototype.codePointAt ( pos )
CreateMethodProperty(String.prototype, 'codePointAt', function codePointAt(pos) {
	// 1. Let O be ? RequireObjectCoercible(this value).
	var O = RequireObjectCoercible(this);
	// 2. Let S be ? ToString(O).
	var S = ToString(O);
	// 3. Let position be ? ToInteger(pos).
	var position = ToInteger(pos);
	// 4. Let size be the length of S.
	var size = S.length;
	// 5. If position < 0 or position ≥ size, return undefined.
	if (position < 0 || position >= size) {
		return undefined;
	}
	// 6. Let first be the numeric value of the code unit at index position within the String S.
	var first = String.prototype.charCodeAt.call(S, position);
	// 7. If first < 0xD800 or first > 0xDBFF or position+1 = size, return first.
	if (first < 0xD800 || first > 0xDBFF || position + 1 === size) {
		return first;
	}
	// 8. Let second be the numeric value of the code unit at index position+1 within the String S.
	var second = String.prototype.charCodeAt.call(S, position + 1);
	// 9. If second < 0xDC00 or second > 0xDFFF, return first.
	if (second < 0xDC00 || second > 0xDFFF) {
		return first;
	}
	// 10. Return UTF16Decode(first, second).
	// 21.1.3.3.10 Return UTF16Decode(first, second).
	return UTF16Decode(first, second);
});

}


// _ESAbstract.AdvanceStringIndex
/* global */

// 22.2.5.2.3 AdvanceStringIndex ( S, index, unicode )
function AdvanceStringIndex(S, index, unicode) { // eslint-disable-line no-unused-vars
	// 1. Assert: index ≤ 253 - 1.
	if (index > Number.MAX_SAFE_INTEGER) {
		throw new TypeError('Assertion failed: `index` must be <= 2**53');
	}
	// 2. If unicode is false, return index + 1.
	if (unicode === false) {
		return index + 1;
	}
	// 3. Let length be the number of code units in S.
	var length = S.length;
	// 4. If index + 1 ≥ length, return index + 1.
	if (index + 1 >= length) {
		return index + 1;
	}
	// 5. Let cp be ! CodePointAt(S, index).
	var cp = S.codePointAt(index);
	// 6. Return index + cp.[[CodeUnitCount]].
	return index + cp.length;
}
if (!("endsWith"in String.prototype
)) {

// String.prototype.endsWith
/* global CreateMethodProperty, IsRegExp, RequireObjectCoercible, ToInteger, ToString */
// 21.1.3.6. String.prototype.endsWith ( searchString [ , endPosition ] )
CreateMethodProperty(String.prototype, 'endsWith', function endsWith(searchString /* [ , endPosition ] */) {
	'use strict';
	var endPosition = arguments.length > 1 ? arguments[1] : undefined;
	// 1. Let O be ? RequireObjectCoercible(this value).
	var O = RequireObjectCoercible(this);
	// 2. Let S be ? ToString(O).
	var S = ToString(O);
	// 3. Let isRegExp be ? IsRegExp(searchString).
	var isRegExp = IsRegExp(searchString);
	// 4. If isRegExp is true, throw a TypeError exception.
	if (isRegExp) {
		throw new TypeError('First argument to String.prototype.endsWith must not be a regular expression');
	}
	// 5. Let searchStr be ? ToString(searchString).
	var searchStr = ToString(searchString);
	// 6. Let len be the length of S.
	var len = S.length;
	// 7. If endPosition is undefined, let pos be len, else let pos be ? ToInteger(endPosition).
	var pos = endPosition === undefined ? len : ToInteger(endPosition);
	// 8. Let end be min(max(pos, 0), len).
	var end = Math.min(Math.max(pos, 0), len);
	// 9. Let searchLength be the length of searchStr.
	var searchLength = searchStr.length;
	// 10. Let start be end - searchLength.
	var start = end - searchLength;
	// 11. If start is less than 0, return false.
	if (start < 0) {
		return false;
	}
	// 12. If the sequence of elements of S starting at start of length searchLength is the same as the full element sequence of searchStr, return true.
	if (S.substr(start, searchLength) === searchStr) {
		return true;
	}
	// 13. Otherwise, return false.
	return false;
});

}

if (!("includes"in String.prototype
)) {

// String.prototype.includes
/* global CreateMethodProperty, IsRegExp, RequireObjectCoercible, ToInteger, ToString */
// 21.1.3.7. String.prototype.includes ( searchString [ , position ] )
CreateMethodProperty(String.prototype, 'includes', function includes(searchString /* [ , position ] */) {
	'use strict';
	var position = arguments.length > 1 ? arguments[1] : undefined;
	// 1. Let O be ? RequireObjectCoercible(this value).
	var O = RequireObjectCoercible(this);
	// 2. Let S be ? ToString(O).
	var S = ToString(O);
	// 3. Let isRegExp be ? IsRegExp(searchString).
	var isRegExp = IsRegExp(searchString);
	// 4. If isRegExp is true, throw a TypeError exception.
	if (isRegExp) {
		throw new TypeError('First argument to String.prototype.includes must not be a regular expression');
	}
	// 5. Let searchStr be ? ToString(searchString).
	var searchStr = ToString(searchString);
	// 6. Let pos be ? ToInteger(position). (If position is undefined, this step produces the value 0.)
	var pos = ToInteger(position);
	// 7. Let len be the length of S.
	var len = S.length;
	// 8. Let start be min(max(pos, 0), len).
	var start = Math.min(Math.max(pos, 0), len);
	// 9. Let searchLen be the length of searchStr.
	// var searchLength = searchStr.length;
	// 10. If there exists any integer k not smaller than start such that k + searchLen is not greater than len, and for all nonnegative integers j less than searchLen, the code unit at index k+j within S is the same as the code unit at index j within searchStr, return true; but if there is no such integer k, return false.
	return String.prototype.indexOf.call(S, searchStr, start) !== -1;
});

}

if (!("padEnd"in String.prototype
)) {

// String.prototype.padEnd
/* global CreateMethodProperty, RequireObjectCoercible, ToLength, ToString */
// 21.1.3.13. String.prototype.padEnd( maxLength [ , fillString ] )
CreateMethodProperty(String.prototype, 'padEnd', function padEnd(maxLength /* [ , fillString ] */) {
	'use strict';
	var fillString = arguments.length > 1 ? arguments[1] : undefined;
	// 1. Let O be ? RequireObjectCoercible(this value).
	var O = RequireObjectCoercible(this);
	// 2. Let S be ? ToString(O).
	var S = ToString(O);
	// 3. Let intMaxLength be ? ToLength(maxLength).
	var intMaxLength = ToLength(maxLength);
	// 4. Let stringLength be the length of S.
	var stringLength = S.length;
	// 5. If intMaxLength is not greater than stringLength, return S.
	if (intMaxLength <= stringLength) {
		return S;
	}
	// 6. If fillString is undefined, let filler be the String value consisting solely of the code unit 0x0020 (SPACE).
	if (fillString === undefined) {
		var filler = ' ';
		// 7. Else, let filler be ? ToString(fillString).
	} else {
		filler = ToString(fillString);
	}
	// 8. If filler is the empty String, return S.
	if (filler === '') {
		return S;
	}
	// 9. Let fillLen be intMaxLength - stringLength.
	var fillLen = intMaxLength - stringLength;
	// 10. Let truncatedStringFiller be the String value consisting of repeated concatenations of filler truncated to length fillLen.
	var truncatedStringFiller = '';
	for (var i = 0; i < fillLen; i++) {
		truncatedStringFiller += filler;
	}
	truncatedStringFiller = truncatedStringFiller.substr(0, fillLen);
	// 11. Return the string-concatenation of S and truncatedStringFiller.
	return S + truncatedStringFiller;
});

}

if (!("padStart"in String.prototype
)) {

// String.prototype.padStart
/* global CreateMethodProperty, RequireObjectCoercible, ToLength, ToString */
// 21.1.3.14. String.prototype.padStart( maxLength [ , fillString ] )
CreateMethodProperty(String.prototype, 'padStart', function padStart(maxLength /* [ , fillString ] */) {
	'use strict';
	var fillString = arguments.length > 1 ? arguments[1] : undefined;
	// 1. Let O be ? RequireObjectCoercible(this value).
	var O = RequireObjectCoercible(this);
	// 2. Let S be ? ToString(O).
	var S = ToString(O);
	// 3. Let intMaxLength be ? ToLength(maxLength).
	var intMaxLength = ToLength(maxLength);
	// 4. Let stringLength be the length of S.
	var stringLength = S.length;
	// 5. If intMaxLength is not greater than stringLength, return S.
	if (intMaxLength <= stringLength) {
		return S;
	}
	// 6. If fillString is undefined, let filler be the String value consisting solely of the code unit 0x0020 (SPACE).
	if (fillString === undefined) {
		var filler = ' ';
		// 7. Else, let filler be ? ToString(fillString).
	} else {
		filler = ToString(fillString);
	}
	// 8. If filler is the empty String, return S.
	if (filler === '') {
		return S;
	}
	// 9. Let fillLen be intMaxLength - stringLength.
	var fillLen = intMaxLength - stringLength;
	// 10. Let truncatedStringFiller be the String value consisting of repeated concatenations of filler truncated to length fillLen.
	var truncatedStringFiller = '';
	for (var i = 0; i < fillLen; i++) {
		truncatedStringFiller += filler;
	}
	truncatedStringFiller = truncatedStringFiller.substr(0, fillLen);
	// 11. Return the string-concatenation of truncatedStringFiller and S.
	return truncatedStringFiller + S;
});

}

if (!("repeat"in String.prototype
)) {

// String.prototype.repeat
/* global CreateMethodProperty, RequireObjectCoercible, ToInteger, ToString */
// 21.1.3.15String.prototype.repeat ( count )
CreateMethodProperty(String.prototype, 'repeat', function repeat(count) {
	'use strict';
	// 1. Let O be ? RequireObjectCoercible(this value).
	var O = RequireObjectCoercible(this);
	// 2. Let S be ? ToString(O).
	var S = ToString(O);
	// 3. Let n be ? ToInteger(count).
	var n = ToInteger(count);
	// 4. If n < 0, throw a RangeError exception.
	if (n < 0) {
		throw new RangeError('Invalid count value');
	}
	// 5. If n is +∞, throw a RangeError exception.
	if (n === Infinity) {
		throw new RangeError('Invalid count value');
	}
	// 6. Let T be the String value that is made from n copies of S appended together. If n is 0, T is the empty String.
	var T = n === 0 ? '' : new Array(n + 1).join(S);
	// 7. Return T.
	return T;
});

}

if (!("startsWith"in String.prototype
)) {

// String.prototype.startsWith
/* global CreateMethodProperty, IsRegExp, RequireObjectCoercible, ToInteger, ToString */
// 21.1.3.20. String.prototype.startsWith ( searchString [ , position ] )
CreateMethodProperty(String.prototype, 'startsWith', function startsWith(searchString /* [ , position ] */) {
	'use strict';
	var position = arguments.length > 1 ? arguments[1] : undefined;
	// 1. Let O be ? RequireObjectCoercible(this value).
	var O = RequireObjectCoercible(this);
	// 2. Let S be ? ToString(O).
	var S = ToString(O);
	// 3. Let isRegExp be ? IsRegExp(searchString).
	var isRegExp = IsRegExp(searchString);
	// 4. If isRegExp is true, throw a TypeError exception.
	if (isRegExp) {
		throw new TypeError('First argument to String.prototype.startsWith must not be a regular expression');
	}
	// 5. Let searchStr be ? ToString(searchString).
	var searchStr = ToString(searchString);
	// 6. Let pos be ? ToInteger(position). (If position is undefined, this step produces the value 0.)
	var pos = ToInteger(position);
	// 7. Let len be the length of S.
	var len = S.length;
	// 8. Let start be min(max(pos, 0), len).
	var start = Math.min(Math.max(pos, 0), len);
	// 9. Let searchLength be the length of searchStr.
	var searchLength = searchStr.length;
	// 10. If searchLength+start is greater than len, return false.
	if (searchLength + start > len) {
		return false;
	}
	// 11. If the sequence of elements of S starting at start of length searchLength is the same as the full element sequence of searchStr, return true.
	if (S.substr(start).indexOf(searchString) === 0) {
		return true;
	}
	// 12. Otherwise, return false.
	return false;
});

}

if (!("trim"in String.prototype&&function(){var r="​…᠎"
return!"\t\n\v\f\r                 \u2028\u2029\ufeff".trim()&&r.trim()===r}()
)) {

// String.prototype.trim
/* global CreateMethodProperty, TrimString */
// 21.1.3.27. String.prototype.trim ( )
CreateMethodProperty(String.prototype, 'trim', function trim() {
	'use strict';
	// Let S be this value.
	var S = this;
	// Return ? TrimString(S, "start+end").
	return TrimString(S, "start+end");
});

}

if (!("parseFloat"in Number&&1/parseFloat("\t\n\v\f\r                 \u2028\u2029\ufeff-0")==-1/0
)) {

// Number.parseFloat
/* global CreateMethodProperty */
(function (nativeparseFloat, global) {
	// Polyfill.io - parseFloat is incorrect in older browsers
	var parseFloat = function parseFloat(str) {
		var string = String(str).trim();
		var result = nativeparseFloat(string);
		return result === 0 && string.charAt(0) == '-' ? -0 : result;
	}
	CreateMethodProperty(global, 'parseFloat', parseFloat);

	// 20.1.2.12. Number.parseFloat ( string )
	// The value of the Number.parseFloat data property is the same built-in function object that is the value of the  parseFloat property of the global object defined in 18.2.4.
	CreateMethodProperty(Number, 'parseFloat', global.parseFloat);
}(parseFloat, this));

}

if (!("parseInt"in Number&&8===Number.parseInt("08")
)) {

// Number.parseInt
/* global CreateMethodProperty */
(function (nativeParseInt, global) {
	// Polyfill.io - parseInt is incorrect in older browsers
	var parseInt = function parseInt(str, radix) {
		var string = String(str).trim();
		return nativeParseInt(string, (radix >>> 0) || (/^[-+]?0[xX]/.test(string) ? 16 : 10));
	}
	CreateMethodProperty(global, 'parseInt', parseInt);

	// 20.1.2.13. Number.parseInt ( string, radix )
	// The value of the Number.parseInt data property is the same built-in function object that is the value of the  parseInt property of the global object defined in 18.2.5.
	CreateMethodProperty(Number, 'parseInt', global.parseInt);
}(parseInt, this));

}

if (!("trimEnd"in String.prototype&&function(){var n="​…᠎"
return!"\t\n\v\f\r                 \u2028\u2029\ufeff".trimEnd()&&n.trimEnd()===n}()
)) {

// String.prototype.trimEnd
/* global CreateMethodProperty, TrimString */
// 21.1.3.28 String.prototype.trimEnd ( )
CreateMethodProperty(String.prototype, 'trimEnd', function trimEnd() {
	'use strict';
	// 1. Let S be this value.
	var S = this;
	// 2. Return ? TrimString(S, "end").
	return TrimString(S, "end");
});

}

if (!("trimStart"in String.prototype&&function(){var t="​…᠎"
return!"\t\n\v\f\r                 \u2028\u2029\ufeff".trimStart()&&t.trimStart()===t}()
)) {

// String.prototype.trimStart
/* global CreateMethodProperty, TrimString */
// 21.1.3.29 String.prototype.trimStart ( )
CreateMethodProperty(String.prototype, 'trimStart', function trimStart() {
	'use strict';
	// 1. Let S be this value.
	var S = this;
	// 2. Return ? TrimString(S, "start").
	return TrimString(S, "start");
});

}

if (!("Symbol"in self&&0===self.Symbol.length
)) {

// Symbol
// A modification of https://github.com/WebReflection/get-own-property-symbols
// (C) Andrea Giammarchi - MIT Licensed

/* global Type */
(function (Object,  GOPS, global) {
	'use strict'; //so that ({}).toString.call(null) returns the correct [object Null] rather than [object Window]

	var	setDescriptor;
	var id = 0;
	var random = '' + Math.random();
	var prefix = '__\x01symbol:';
	var prefixLength = prefix.length;
	var internalSymbol = '__\x01symbol@@' + random;
	var emptySymbolLookup = {};
	var DP = 'defineProperty';
	var DPies = 'defineProperties';
	var GOPN = 'getOwnPropertyNames';
	var GOPD = 'getOwnPropertyDescriptor';
	var PIE = 'propertyIsEnumerable';
	var ObjectProto = Object.prototype;
	var hOP = ObjectProto.hasOwnProperty;
	var pIE = ObjectProto[PIE];
	var toString = ObjectProto.toString;
	var concat = Array.prototype.concat;
	var cachedWindowNames = Object.getOwnPropertyNames ? Object.getOwnPropertyNames(self) : [];
	var nGOPN = Object[GOPN];
	var gOPN = function getOwnPropertyNames (obj) {
		if (toString.call(obj) === '[object Window]') {
			try {
				return nGOPN(obj);
			} catch (e) {
				// IE bug where layout engine calls userland gOPN for cross-domain `window` objects
				return concat.call([], cachedWindowNames);
			}
		}
		return nGOPN(obj);
	};
	var gOPD = Object[GOPD];
	var objectCreate = Object.create;
	var objectKeys = Object.keys;
	var freeze = Object.freeze || Object;
	var objectDefineProperty = Object[DP];
	var $defineProperties = Object[DPies];
	var descriptor = gOPD(Object, GOPN);
	var addInternalIfNeeded = function (o, uid, enumerable) {
		if (!hOP.call(o, internalSymbol)) {
			try {
				objectDefineProperty(o, internalSymbol, {
					enumerable: false,
					configurable: false,
					writable: false,
					value: {}
				});
			} catch (e) {
				o[internalSymbol] = {};
			}
		}
		o[internalSymbol]['@@' + uid] = enumerable;
	};
	var createWithSymbols = function (proto, descriptors) {
		var self = objectCreate(proto);
		gOPN(descriptors).forEach(function (key) {
			if (propertyIsEnumerable.call(descriptors, key)) {
				$defineProperty(self, key, descriptors[key]);
			}
		});
		return self;
	};
	var copyAsNonEnumerable = function (descriptor) {
		var newDescriptor = objectCreate(descriptor);
		newDescriptor.enumerable = false;
		return newDescriptor;
	};
	var get = function get(){};
	var onlyNonSymbols = function (name) {
		return name != internalSymbol &&
			!hOP.call(source, name);
	};
	var onlySymbols = function (name) {
		return name != internalSymbol &&
			hOP.call(source, name);
	};
	var propertyIsEnumerable = function propertyIsEnumerable(key) {
		var uid = '' + key;
		return onlySymbols(uid) ? (
			hOP.call(this, uid) &&
			this[internalSymbol] && this[internalSymbol]['@@' + uid]
		) : pIE.call(this, key);
	};
	var setAndGetSymbol = function (uid) {
		var descriptor = {
			enumerable: false,
			configurable: true,
			get: get,
			set: function (value) {
			setDescriptor(this, uid, {
				enumerable: false,
				configurable: true,
				writable: true,
				value: value
			});
			addInternalIfNeeded(this, uid, true);
			}
		};
		try {
			objectDefineProperty(ObjectProto, uid, descriptor);
		} catch (e) {
			ObjectProto[uid] = descriptor.value;
		}
		source[uid] = objectDefineProperty(
			Object(uid),
			'constructor',
			sourceConstructor
		);
		var description = gOPD(Symbol.prototype, 'description');
		if (description) {
			objectDefineProperty(
				source[uid],
				'description',
				description
			);
		}
		return freeze(source[uid]);
	};

	var symbolDescription = function (s) {
		var sym = thisSymbolValue(s);

		// 3. Return sym.[[Description]].
		if (supportsInferredNames) {
			var name = getInferredName(sym);
			if (name !== "") {
				return name.slice(1, -1); // name.slice('['.length, -']'.length);
			}
		}

		if (emptySymbolLookup[sym] !== undefined) {
			return emptySymbolLookup[sym];
		}

		var string = sym.toString();
		var randomStartIndex = string.lastIndexOf("0.");
		string = string.slice(10, randomStartIndex);

		if (string === "") {
			return undefined;
		}
		return string;
	};

	var Symbol = function Symbol() {
		var description = arguments[0];
		if (this instanceof Symbol) {
			throw new TypeError('Symbol is not a constructor');
		}

		var uid = prefix.concat(description || '', random, ++id);

		if (description !== undefined && (description === null || isNaN(description) || String(description) === "")) {
			emptySymbolLookup[uid] = String(description);
		}

		var that = setAndGetSymbol(uid);
		return that;
	};

	var source = objectCreate(null);
	var sourceConstructor = {value: Symbol};
	var sourceMap = function (uid) {
		return source[uid];
		};
	var $defineProperty = function defineProperty(o, key, descriptor) {
		var uid = '' + key;
		if (onlySymbols(uid)) {
			setDescriptor(o, uid, descriptor.enumerable ?
				copyAsNonEnumerable(descriptor) : descriptor);
			addInternalIfNeeded(o, uid, !!descriptor.enumerable);
		} else {
			objectDefineProperty(o, key, descriptor);
		}
		return o;
	};

	var onlyInternalSymbols = function (obj) {
		return function (name) {
			return hOP.call(obj, internalSymbol) && hOP.call(obj[internalSymbol], '@@' + name);
		};
	};
	var $getOwnPropertySymbols = function getOwnPropertySymbols(o) {
		return gOPN(o).filter(o === ObjectProto ? onlyInternalSymbols(o) : onlySymbols).map(sourceMap);
		}
	;

	descriptor.value = $defineProperty;
	objectDefineProperty(Object, DP, descriptor);

	descriptor.value = $getOwnPropertySymbols;
	objectDefineProperty(Object, GOPS, descriptor);

	descriptor.value = function getOwnPropertyNames(o) {
		return gOPN(o).filter(onlyNonSymbols);
	};
	objectDefineProperty(Object, GOPN, descriptor);

	descriptor.value = function defineProperties(o, descriptors) {
		var symbols = $getOwnPropertySymbols(descriptors);
		if (symbols.length) {
		objectKeys(descriptors).concat(symbols).forEach(function (uid) {
			if (propertyIsEnumerable.call(descriptors, uid)) {
			$defineProperty(o, uid, descriptors[uid]);
			}
		});
		} else {
		$defineProperties(o, descriptors);
		}
		return o;
	};
	objectDefineProperty(Object, DPies, descriptor);

	descriptor.value = propertyIsEnumerable;
	objectDefineProperty(ObjectProto, PIE, descriptor);

	descriptor.value = Symbol;
	objectDefineProperty(global, 'Symbol', descriptor);

	// defining `Symbol.for(key)`
	descriptor.value = function (key) {
		var uid = prefix.concat(prefix, key, random);
		return uid in ObjectProto ? source[uid] : setAndGetSymbol(uid);
	};
	objectDefineProperty(Symbol, 'for', descriptor);

	// defining `Symbol.keyFor(symbol)`
	descriptor.value = function (symbol) {
		if (onlyNonSymbols(symbol))
		throw new TypeError(symbol + ' is not a symbol');
		return hOP.call(source, symbol) ?
		symbol.slice(prefixLength * 2, -random.length) :
		void 0
		;
	};
	objectDefineProperty(Symbol, 'keyFor', descriptor);

	descriptor.value = function getOwnPropertyDescriptor(o, key) {
		var descriptor = gOPD(o, key);
		if (descriptor && onlySymbols(key)) {
		descriptor.enumerable = propertyIsEnumerable.call(o, key);
		}
		return descriptor;
	};
	objectDefineProperty(Object, GOPD, descriptor);

	descriptor.value = function create(proto, descriptors) {
		return arguments.length === 1 || typeof descriptors === "undefined" ?
		objectCreate(proto) :
		createWithSymbols(proto, descriptors);
	};

	objectDefineProperty(Object, 'create', descriptor);

	var strictModeSupported = (function(){ 'use strict'; return this; }).call(null) === null;
	if (strictModeSupported) {
		descriptor.value = function () {
			var str = toString.call(this);
			return (str === '[object String]' && onlySymbols(this)) ? '[object Symbol]' : str;
		};
	} else {
		descriptor.value = function () {
			// https://github.com/Financial-Times/polyfill-library/issues/164#issuecomment-486965300
			// Polyfill.io this code is here for the situation where a browser does not
			// support strict mode and is executing `Object.prototype.toString.call(null)`.
			// This code ensures that we return the correct result in that situation however,
			// this code also introduces a bug where it will return the incorrect result for
			// `Object.prototype.toString.call(window)`. We can't have the correct result for
			// both `window` and `null`, so we have opted for `null` as we believe this is the more
			// common situation.
			if (this === window) {
				return '[object Null]';
			}

			var str = toString.call(this);
			return (str === '[object String]' && onlySymbols(this)) ? '[object Symbol]' : str;
		};
	}
	objectDefineProperty(ObjectProto, 'toString', descriptor);

	setDescriptor = function (o, key, descriptor) {
		var protoDescriptor = gOPD(ObjectProto, key);
		delete ObjectProto[key];
		objectDefineProperty(o, key, descriptor);
		if (o !== ObjectProto) {
			objectDefineProperty(ObjectProto, key, protoDescriptor);
		}
	};

	// The abstract operation thisSymbolValue(value) performs the following steps:
	function thisSymbolValue(value) {
		// 1. If Type(value) is Symbol, return value.
		if (Type(value) === "symbol") {
			return value;
		}
		// 2. If Type(value) is Object and value has a [[SymbolData]] internal slot, then
		// a. Let s be value.[[SymbolData]].
		// b. Assert: Type(s) is Symbol.
		// c. Return s.
		// 3. Throw a TypeError exception.
		throw TypeError(value + " is not a symbol");
	}

	// Symbol.prototype.description
	if (function () {
		// supports getters
		try {
			var a = {};
			Object.defineProperty(a, "t", {
				configurable: true,
				enumerable: false,
				get: function() {
					return true;
				},
				set: undefined
			});
			return !!a.t;
		} catch (e) {
			return false;
		}
	}()) {
		var getInferredName;
		try {
			// eslint-disable-next-line no-new-func
			getInferredName = Function("s", "var v = s.valueOf(); return { [v]() {} }[v].name;");
			// eslint-disable-next-line no-empty
		} catch (e) { }

		var inferred = function () { };
		var supportsInferredNames = getInferredName && inferred.name === "inferred" ? getInferredName : null;


		// 19.4.3.2 get Symbol.prototype.description
		Object.defineProperty(global.Symbol.prototype, "description", {
			configurable: true,
			enumerable: false,
			get: function () {
				// 1. Let s be the this value.
				var s = this;
				return symbolDescription(s);
			}
		});
	}

}(Object, 'getOwnPropertySymbols', self));

}

if (!(self.Reflect&&"ownKeys"in self.Reflect
)) {

// Reflect.ownKeys
/* global CreateMethodProperty, Reflect, Type */
// 26.1.10 Reflect.ownKeys ( target )
CreateMethodProperty(Reflect, 'ownKeys', function ownKeys(target) {
	// 1. If Type(target) is not Object, throw a TypeError exception.
	if (Type(target) !== "object") {
		throw new TypeError(Object.prototype.toString.call(target) + ' is not an Object');
	}
	// polyfill-library - These steps are taken care of by Object.getOwnPropertyNames.
	// 2. Let keys be ? target.[[OwnPropertyKeys]]().
	// 3. Return CreateArrayFromList(keys).
	return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));
});

}

if (!("getOwnPropertyDescriptor"in Object&&"function"==typeof Object.getOwnPropertyDescriptor&&function(){try{var t={}
return t.test=0,0===Object.getOwnPropertyDescriptors(t).test.value}catch(t){return!1}}()
)) {

// Object.getOwnPropertyDescriptors
/* global CreateMethodProperty, Reflect, ToObject, CreateDataProperty */

// 19.1.2.9. Object.getOwnPropertyDescriptors ( O )
CreateMethodProperty(
	Object,
	'getOwnPropertyDescriptors',
	function getOwnPropertyDescriptors(O) {
		// 1. Let obj be ? ToObject(O).
		var obj = ToObject(O);
		// 2. Let ownKeys be ? obj.[[OwnPropertyKeys]]().
		var ownKeys = Reflect.ownKeys(obj);
		// 3. Let descriptors be ! ObjectCreate(%ObjectPrototype%).
		var descriptors = {};
		// 4. For each element key of ownKeys in List order, do
		var length = ownKeys.length;
		for (var i = 0; i < length; i++) {
			var key = ownKeys[i];
			// a. Let desc be ? obj.[[GetOwnProperty]](key).
			// b. Let descriptor be ! FromPropertyDescriptor(desc).
			var descriptor = Object.getOwnPropertyDescriptor(O, key);
			// c. If descriptor is not undefined, perform ! CreateDataProperty(descriptors, key, descriptor).
			if (descriptor !== undefined) {
				CreateDataProperty(descriptors, key, descriptor);
			}
		}
		// 5. Return descriptors.
		return descriptors;
	}
);

}

if (!("Symbol"in self&&"asyncIterator"in self.Symbol
)) {

// Symbol.asyncIterator
/* global Symbol */
Object.defineProperty(Symbol, 'asyncIterator', { value: Symbol('asyncIterator') });

}

if (!("Symbol"in self&&"hasInstance"in self.Symbol
)) {

// Symbol.hasInstance
/* global Symbol */
Object.defineProperty(Symbol, 'hasInstance', { value: Symbol('hasInstance') });

}

if (!("Symbol"in self&&"isConcatSpreadable"in self.Symbol
)) {

// Symbol.isConcatSpreadable
/* global Symbol */
Object.defineProperty(Symbol, 'isConcatSpreadable', { value: Symbol('isConcatSpreadable') });

}

if (!("Symbol"in self&&"iterator"in self.Symbol
)) {

// Symbol.iterator
Object.defineProperty(self.Symbol, 'iterator', { value: self.Symbol('iterator') });

}


// _ESAbstract.GetIterator
/* global GetMethod, Symbol, Call, Type, GetV */
// 7.4.1. GetIterator ( obj [ , method ] )
// The abstract operation GetIterator with argument obj and optional argument method performs the following steps:
function GetIterator(obj /*, method */) { // eslint-disable-line no-unused-vars
	// 1. If method is not present, then
		// a. Set method to ? GetMethod(obj, @@iterator).
	var method = arguments.length > 1 ? arguments[1] : GetMethod(obj, Symbol.iterator);
	// 2. Let iterator be ? Call(method, obj).
	var iterator = Call(method, obj);
	// 3. If Type(iterator) is not Object, throw a TypeError exception.
	if (Type(iterator) !== 'object') {
		throw new TypeError('bad iterator');
	}
	// 4. Let nextMethod be ? GetV(iterator, "next").
	var nextMethod = GetV(iterator, "next");
	// 5. Let iteratorRecord be Record {[[Iterator]]: iterator, [[NextMethod]]: nextMethod, [[Done]]: false}.
	var iteratorRecord = Object.create(null);
	iteratorRecord['[[Iterator]]'] = iterator;
	iteratorRecord['[[NextMethod]]'] = nextMethod;
	iteratorRecord['[[Done]]'] = false;
	// 6. Return iteratorRecord.
	return iteratorRecord;
}

// _ESAbstract.AddEntriesFromIterable
/* global IsCallable, GetIterator, IteratorStep, IteratorValue, IteratorClose, Get, Call, Type */
// eslint-disable-next-line no-unused-vars
var AddEntriesFromIterable = (function() {
	var toString = {}.toString;
	var split = "".split;
	// 23.1.1.2 AddEntriesFromIterable ( target, iterable, adder )
	return function AddEntriesFromIterable(target, iterable, adder) {
		// 1. If IsCallable(adder) is false, throw a TypeError exception.
		if (IsCallable(adder) === false) {
			throw new TypeError("adder is not callable.");
		}
		// 2. Assert: iterable is present, and is neither undefined nor null.
		// 3. Let iteratorRecord be ? GetIterator(iterable).
		var iteratorRecord = GetIterator(iterable);
		// 4. Repeat,
		// eslint-disable-next-line no-constant-condition
		while (true) {
			// a. Let next be ? IteratorStep(iteratorRecord).
			var next = IteratorStep(iteratorRecord);
			// b. If next is false, return target.
			if (next === false) {
				return target;
			}
			// c. Let nextItem be ? IteratorValue(next).
			var nextItem = IteratorValue(next);
			// d. If Type(nextItem) is not Object, then
			if (Type(nextItem) !== "object") {
				// i. Let error be ThrowCompletion(a newly created TypeError object).
				var error = new TypeError("nextItem is not an object");
				// ii. Return ? IteratorClose(iteratorRecord, error).
				IteratorClose(iteratorRecord, error);
				throw error;
			}
			// Polyfill.io fallback for non-array-like strings which exist in some ES3 user-agents
			nextItem =
				(Type(nextItem) === "string" || nextItem instanceof String) &&
				toString.call(nextItem) == "[object String]"
					? split.call(nextItem, "")
					: nextItem;
			var k;
			try {
				// e. Let k be Get(nextItem, "0").
				k = Get(nextItem, "0");
				// eslint-disable-next-line no-catch-shadow
			} catch (k) {
				// f. If k is an abrupt completion, return ? IteratorClose(iteratorRecord, k).
				return IteratorClose(iteratorRecord, k);
			}
			var v;
			try {
				// g. Let v be Get(nextItem, "1").
				v = Get(nextItem, "1");
				// eslint-disable-next-line no-catch-shadow
			} catch (v) {
				// h. If v is an abrupt completion, return ? IteratorClose(iteratorRecord, v).
				return IteratorClose(iteratorRecord, v);
			}
			try {
				// i. Let status be Call(adder, target, « k.[[Value]], v.[[Value]] »).
				Call(adder, target, [k, v]);
				// eslint-disable-next-line no-catch-shadow
			} catch (status) {
				// j. If status is an abrupt completion, return ? IteratorClose(iteratorRecord, status).
				return IteratorClose(iteratorRecord, status);
			}
		}
	};
})();

// _ESAbstract.IterableToList
/* global GetIterator, IteratorStep, IteratorValue */
// 7.4.11 IterableToList ( items [ , method ] )
function IterableToList(items /*, method */) { // eslint-disable-line no-unused-vars
	// 1. If method is present, then
	// 1.a. Let iteratorRecord be ? GetIterator(items, sync, method).
	// 2. Else,
	// 2.a. Let iteratorRecord be ? GetIterator(items, sync).
	var iteratorRecord = arguments.length > 1
		? GetIterator(items, arguments[1])
		: GetIterator(items);
	// 3. Let values be a new empty List.
	var values = [];
	// 4. Let next be true.
	var next = true;
	// 5. Repeat, while next is not false,
	while (next !== false) {
		// 5.a. Set next to ? IteratorStep(iteratorRecord).
		next = IteratorStep(iteratorRecord);
		// 5.b. If next is not false, then
		if (next !== false) {
			// 5.b.i. Let nextValue be ? IteratorValue(next).
			var nextValue = IteratorValue(next);
			// 5.b.ii. Append nextValue to the end of the List values.
			values.push(nextValue);
		}
	}
	// 6. Return values.
	return values;
}
if (!("AggregateError"in self
)) {

// AggregateError
/* global _ErrorConstructor, CreateDataPropertyOrThrow, CreateMethodProperty, IterableToList */
(function () {
	var hasErrorCause = (function () {
		try {
			return new Error('m', { cause: 'c' }).cause === 'c';
		} catch (e) {
			return false;
		}
	})();

	function AggregateError (errors, message) {
		if (!(this instanceof AggregateError)) return new AggregateError(errors, message);

		var temp = typeof message === 'undefined' ? new Error() : new Error(message);

		CreateDataPropertyOrThrow(this, 'name', 'AggregateError');
		CreateDataPropertyOrThrow(this, 'message', temp.message);
		CreateDataPropertyOrThrow(this, 'stack', temp.stack);

		var errorsList;
		if (Array.isArray(errors)) {
			errorsList = errors.slice();
		} else {
			try {
				errorsList = IterableToList(errors);
			} catch (_error) {
				throw new TypeError('Argument is not iterable');
			}
		}

		CreateDataPropertyOrThrow(this, 'errors', errorsList);
	}

	AggregateError.prototype = Object.create(Error.prototype);
	AggregateError.prototype.constructor = AggregateError;

	CreateMethodProperty(self, 'AggregateError', AggregateError);

	// If `Error.cause` is available, add it to `AggregateError`
	if (hasErrorCause) {
		CreateMethodProperty(self, 'AggregateError', _ErrorConstructor('AggregateError'));
	}
})();

}

if (!("Symbol"in self&&"match"in self.Symbol
)) {

// Symbol.match
/* global Symbol */
Object.defineProperty(Symbol, 'match', { value: Symbol('match') });

}

if (!("Symbol"in self&&"matchAll"in self.Symbol
)) {

// Symbol.matchAll
/* global Symbol */

// 20.4.2.8 Symbol.matchAll
Object.defineProperty(Symbol, 'matchAll', { value: Symbol('matchAll') });

}

if (!("Symbol"in self&&"replace"in self.Symbol
)) {

// Symbol.replace
/* global Symbol */
Object.defineProperty(Symbol, 'replace', { value: Symbol('replace') });

}

if (!("replaceAll"in String.prototype
)) {

// String.prototype.replaceAll
/* global CreateMethodProperty, RequireObjectCoercible, ToString, IsRegExp, Get, GetMethod, Call, IsCallable, StringIndexOf, GetSubstitution */

// 21.1.3.18 String.prototype.replaceAll ( searchValue, replaceValue )
CreateMethodProperty(String.prototype, 'replaceAll', function replaceAll(searchValue, replaceValue ) {
	'use strict';
	// 1. Let O be ? RequireObjectCoercible(this value).
	var O = RequireObjectCoercible(this);
	// 2. If searchValue is neither undefined nor null, then
	if (searchValue !== undefined && searchValue !== null) {
		// 2.a. Let isRegExp be ? IsRegExp(searchValue).
		var isRegExp = IsRegExp(searchValue);
		// 2.b. If isRegExp is true, then
		if (isRegExp) {
			// 2.b.i. Let flags be ? Get(searchValue, "flags").
			var flags = Get(searchValue, "flags");

			// IE doesn't have RegExp.prototype.flags support, it does have RegExp.prototype.global
			// 2.b.iii. If ? ToString(flags) does not contain "g", throw a TypeError exception.
			if (!('flags' in RegExp.prototype) && searchValue.global !== true) {
				throw TypeError('');
			} else if ('flags' in RegExp.prototype) {
				// 2.b.ii. Perform ? RequireObjectCoercible(flags).
				RequireObjectCoercible(flags)
				// 2.b.iii. If ? ToString(flags) does not contain "g", throw a TypeError exception.
				if (ToString(flags).indexOf('g') === -1) {
					throw TypeError('');
				}
			}
		}
		// 2.c. Let replacer be ? GetMethod(searchValue, @@replace).
		var replacer = 'Symbol' in self && 'replace' in self.Symbol ? GetMethod(searchValue, self.Symbol.replace) : undefined;
		// 2.d. If replacer is not undefined, then
		if (replacer !== undefined) {
			// 2.d.i. Return ? Call(replacer, searchValue, « O, replaceValue »).
			return Call(replacer, searchValue, [ O, replaceValue ]);
		}
	}
	// 3. Let string be ? ToString(O).
	var string = ToString(O);
	// 4. Let searchString be ? ToString(searchValue).
	var searchString = ToString(searchValue);

	// 5. Let functionalReplace be IsCallable(replaceValue).
	var functionalReplace = IsCallable(replaceValue);
	// 6. If functionalReplace is false, then
	if (functionalReplace === false) {
		// 6.a. Set replaceValue to ? ToString(replaceValue).
		replaceValue = ToString(replaceValue);
	}

	// 7. Let searchLength be the length of searchString.
	var searchLength = searchString.length;
	// 8. Let advanceBy be max(1, searchLength).
	var advanceBy = Math.max(1, searchLength);
	// 9. Let matchPositions be a new empty List.
	var matchPositions = [];
	// 10. Let position be ! StringIndexOf(string, searchString, 0).
	var position = StringIndexOf(string, searchString, 0);
	// 11. Repeat, while position is not -1,
	while (position !== -1) {
		// 11.a. Append position to the end of matchPositions.
		matchPositions.push(position);
		// 11.b. Set position to ! StringIndexOf(string, searchString, position + advanceBy).
		position = StringIndexOf(string, searchString, position + advanceBy);
	}

	// 12. Let endOfLastMatch be 0.
	var endOfLastMatch = 0;
	// 13. Let result be the empty String.
	var result = '';
	// 14. For each element position of matchPositions, do
	for (var i = 0; i < matchPositions.length; i++) {
		// 14.a. Let preserved be the substring of string from endOfLastMatch to position.
		var preserved = string.substring(endOfLastMatch, matchPositions[i]);
		// 14.b. If functionalReplace is true, then
		if (functionalReplace) {
			// 14.b.i. Let replacement be ? ToString(? Call(replaceValue, undefined, « searchString, position, string »)).
			var replacement = ToString(Call(replaceValue, undefined, [searchString, matchPositions[i], string]));
			// 14.c. Else,
		} else {
			// 14.c.i. Assert: Type(replaceValue) is String.
			// 14.c.ii. Let captures be a new empty List.
			var captures = [];
			// 14.c.iii. Let replacement be ! GetSubstitution(searchString, string, position, captures, undefined, replaceValue).
			replacement = GetSubstitution(searchString, string, matchPositions[i], captures, undefined, replaceValue);
		}
		// 14.d. Set result to the string-concatenation of result, preserved, and replacement.
		result = result + preserved + replacement;
		// 14.e. Set endOfLastMatch to position + searchLength.
		endOfLastMatch = matchPositions[i] + searchLength;
	}
	// 15. If endOfLastMatch < the length of string, then
	if (endOfLastMatch < string.length) {
		// 15.a. Set result to the string-concatenation of result and the substring of string from endOfLastMatch.
		result = result + string.substring(endOfLastMatch);
	}
	// 16. Return result.
	return result;
});

}

if (!("Symbol"in self&&"search"in self.Symbol
)) {

// Symbol.search
/* global Symbol */
Object.defineProperty(Symbol, 'search', { value: Symbol('search') });

}

if (!("Symbol"in self&&"species"in self.Symbol
)) {

// Symbol.species
/* global Symbol */
Object.defineProperty(Symbol, 'species', { value: Symbol('species') });

}

if (!("Symbol"in self&&"split"in self.Symbol
)) {

// Symbol.split
/* global Symbol */
Object.defineProperty(Symbol, 'split', { value: Symbol('split') });

}

if (!("Symbol"in self&&"toPrimitive"in self.Symbol
)) {

// Symbol.toPrimitive
/* global Symbol */
Object.defineProperty(Symbol, 'toPrimitive', { value: Symbol('toPrimitive') });

}

if (!("Symbol"in self&&"toStringTag"in self.Symbol
)) {

// Symbol.toStringTag
/* global Symbol */
Object.defineProperty(Symbol, 'toStringTag', {
	value: Symbol('toStringTag')
});

}


// _ESAbstract.CreateRegExpStringIterator
/* global AdvanceStringIndex, CreateIterResultObject, CreateMethodProperty, Get, RegExpExec, Symbol, ToLength, ToString */

// 22.2.7.1 CreateRegExpStringIterator ( R, S, global, fullUnicode )
function CreateRegExpStringIterator(R, S, global, fullUnicode) { // eslint-disable-line no-unused-vars
	// 22.2.7.2 The %RegExpStringIteratorPrototype% Object
	var RegExpStringIteratorPrototype = {}

	// 22.2.7.2.1 %RegExpStringIteratorPrototype%.next ( )
	CreateMethodProperty(RegExpStringIteratorPrototype, 'next', function next() {
		// 1. Let closure be a new Abstract Closure with no parameters that captures R, S, global, and fullUnicode and performs the following steps when called:
		// 1.a. Repeat,
		// 2. Return ! CreateIteratorFromClosure(closure, "%RegExpStringIteratorPrototype%", %RegExpStringIteratorPrototype%).

		if (this['[[Done]]'] === true) {
			return CreateIterResultObject(undefined, true);
		}

		// 1.a.i. Let match be ? RegExpExec(R, S).
		var match = RegExpExec(R, S);
		// 1.a.ii. If match is null, return undefined.
		if (match === null) {
			this['[[Done]]'] = true;
			return CreateIterResultObject(undefined, true);
		}
		// 1.a.iii. If global is false, then
		if (global === false) {
			// 1.a.iii.1. Perform ? Yield(match).
			// 1.a.iii.2. Return undefined.
			var result = CreateIterResultObject(match, false);
			this['[[Done]]'] = true;
			return result;
		}
		// 1.a.iv. Let matchStr be ? ToString(? Get(match, "0")).
		var matchStr = ToString(Get(match, '0'));
		// 1.a.v. If matchStr is the empty String, then
		if (matchStr === '') {
			// 1.a.v.1. Let thisIndex be ℝ(? ToLength(? Get(R, "lastIndex"))).
			var thisIndex = ToLength(Get(R, 'lastIndex'));
			// 1.a.v.2. Let nextIndex be ! AdvanceStringIndex(S, thisIndex, fullUnicode).
			var nextIndex = AdvanceStringIndex(S, thisIndex, fullUnicode);
			// 1.a.v.3. Perform ? Set(R, "lastIndex", 𝔽(nextIndex), true).
			R.lastIndex = nextIndex;
		}
		// 1.a.vi. Perform ? Yield(match).
		return CreateIterResultObject(match, false);
	});

	// 22.2.7.2.2 %RegExpStringIteratorPrototype% [ @@toStringTag ]
	Object.defineProperty(RegExpStringIteratorPrototype, Symbol.toStringTag, {
		configurable: true,
		enumerable: false,
		writable: false,
		value: 'RegExp String Iterator'
	});

	CreateMethodProperty(RegExpStringIteratorPrototype, Symbol.iterator, function iterator() {
			return this;
		}
	);

	return RegExpStringIteratorPrototype;
}
if (!("Symbol"in self&&"matchAll"in self.Symbol&&!!RegExp.prototype[self.Symbol.matchAll]
)) {

// RegExp.prototype.@@matchAll
/* global Construct, CreateMethodProperty, CreateRegExpStringIterator, Get, SpeciesConstructor, Symbol, ToLength, ToString, Type */

var supportsRegexpLiteralConstructorWithFlags = (function () {
	try {
		new RegExp(/x/, 'g')
		return true
	} catch (ignore) {
		return false
	}
})();

// 22.2.5.8 RegExp.prototype [ @@matchAll ] ( string )
CreateMethodProperty(RegExp.prototype, Symbol.matchAll, function (string) {
	'use strict';
	// 1. Let R be the this value.
	var R = this;
	// 2. If Type(R) is not Object, throw a TypeError exception.
	if (Type(R) !== 'object') {
		throw new TypeError('Method called on incompatible type: must be an object.');
	}
	// 3. Let S be ? ToString(string).
	var S = ToString(string);
	// 4. Let C be ? SpeciesConstructor(R, %RegExp%).
	var C = SpeciesConstructor(R, RegExp);
	// 5. Let flags be ? ToString(? Get(R, "flags")).
	var flags = ToString(Get(R, 'flags'));
	// IE doesn't have RegExp.prototype.flags support
	if (!('flags' in RegExp.prototype)) {
		flags = '';
		if (R.global === true) {
			flags += 'g';
		}
		if (R.ignoreCase === true) {
			flags += 'i';
		}
		if (R.multiline === true) {
			flags += 'm';
		}
	}
	// 6. Let matcher be ? Construct(C, « R, flags »).
	var matcher = Construct(C, [ supportsRegexpLiteralConstructorWithFlags ? R : R.source, flags ]);
	// 7. Let lastIndex be ? ToLength(? Get(R, "lastIndex")).
	var lastIndex = ToLength(Get(R, 'lastIndex'));
	// 8. Perform ? Set(matcher, "lastIndex", lastIndex, true).
	matcher.lastIndex = lastIndex;
	// 9. If flags contains "g", let global be true.
	// 10. Else, let global be false.
	var global = flags.indexOf('g') > -1;
	// 11. If flags contains "u", let fullUnicode be true.
	// 12. Else, let fullUnicode be false.
	var fullUnicode = flags.indexOf('u') > -1;
	// 13. Return ! CreateRegExpStringIterator(matcher, S, global, fullUnicode).
	return CreateRegExpStringIterator(matcher, S, global, fullUnicode);
});

}

if (!("matchAll"in String.prototype
)) {

// String.prototype.matchAll
/* global Call, CreateMethodProperty, Get, GetMethod, Invoke, IsRegExp, RequireObjectCoercible, ToString */

// 22.1.3.13 String.prototype.matchAll ( regexp )
CreateMethodProperty(String.prototype, 'matchAll', function matchAll(regexp) {
	'use strict';
	// 1. Let O be ? RequireObjectCoercible(this value).
	var O = RequireObjectCoercible(this);
	// 2. If regexp is neither undefined nor null, then
	if (regexp !== undefined && regexp !== null) {
		// 2.a. Let isRegExp be ? IsRegExp(regexp).
		var isRegExp = IsRegExp(regexp);
		// 2.b. If isRegExp is true, then
		if (isRegExp) {
			// 2.b.i. Let flags be ? Get(regexp, "flags").
			var flags = Get(regexp, "flags");

			// IE doesn't have RegExp.prototype.flags support, it does have RegExp.prototype.global
			// 2.b.iii. If ? ToString(flags) does not contain "g", throw a TypeError exception.
			if (!('flags' in RegExp.prototype) && regexp.global !== true) {
				throw TypeError('');
			} else if ('flags' in RegExp.prototype) {
				// 2.b.ii. Perform ? RequireObjectCoercible(flags).
				RequireObjectCoercible(flags)
				// 2.b.iii. If ? ToString(flags) does not contain "g", throw a TypeError exception.
				if (ToString(flags).indexOf('g') === -1) {
					throw TypeError('');
				}
			}
		}
		// 2.c. Let matcher be ? GetMethod(regexp, @@matchAll).
		var matcher = 'Symbol' in self && 'matchAll' in self.Symbol ? GetMethod(regexp, self.Symbol.matchAll) : undefined;
		// 2.d. If matcher is not undefined, then
		if (matcher !== undefined) {
			// 2.d.i. Return ? Call(matcher, regexp, « O »).
			return Call(matcher, regexp, [ O ]);
		}
	}
	// 3. Let S be ? ToString(O).
	var S = ToString(O);
	// 4. Let rx be ? RegExpCreate(regexp, "g").
	var rx = new RegExp(regexp, 'g');
	// 5. Return ? Invoke(rx, @@matchAll, « S »).
	return Invoke(rx, 'Symbol' in self && 'matchAll' in self.Symbol && self.Symbol.matchAll, [ S ]);
});

}


// _Iterator
/* global Symbol */
// A modification of https://github.com/medikoo/es6-iterator
// Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.com)

var Iterator = (function () { // eslint-disable-line no-unused-vars
	var clear = function () {
		this.length = 0;
		return this;
	};
	var callable = function (fn) {
		if (typeof fn !== 'function') throw new TypeError(fn + " is not a function");
		return fn;
	};

	var Iterator = function (list, context) {
		if (!(this instanceof Iterator)) {
			return new Iterator(list, context);
		}
		Object.defineProperties(this, {
			__list__: {
				writable: true,
				value: list
			},
			__context__: {
				writable: true,
				value: context
			},
			__nextIndex__: {
				writable: true,
				value: 0
			}
		});
		if (!context) return;
		callable(context.on);
		context.on('_add', this._onAdd.bind(this));
		context.on('_delete', this._onDelete.bind(this));
		context.on('_clear', this._onClear.bind(this));
	};

	Object.defineProperties(Iterator.prototype, Object.assign({
		constructor: {
			value: Iterator,
			configurable: true,
			enumerable: false,
			writable: true
		},
		_next: {
			value: function () {
				var i;
				if (!this.__list__) return;
				if (this.__redo__) {
					i = this.__redo__.shift();
					if (i !== undefined) return i;
				}
				if (this.__nextIndex__ < this.__list__.length) return this.__nextIndex__++;
				this._unBind();
			},
			configurable: true,
			enumerable: false,
			writable: true
		},
		next: {
			value: function () {
				return this._createResult(this._next());
			},
			configurable: true,
			enumerable: false,
			writable: true
		},
		_createResult: {
			value: function (i) {
				if (i === undefined) return {
					done: true,
					value: undefined
				};
				return {
					done: false,
					value: this._resolve(i)
				};
			},
			configurable: true,
			enumerable: false,
			writable: true
		},
		_resolve: {
			value: function (i) {
				return this.__list__[i];
			},
			configurable: true,
			enumerable: false,
			writable: true
		},
		_unBind: {
			value: function () {
				this.__list__ = null;
				delete this.__redo__;
				if (!this.__context__) return;
				this.__context__.off('_add', this._onAdd.bind(this));
				this.__context__.off('_delete', this._onDelete.bind(this));
				this.__context__.off('_clear', this._onClear.bind(this));
				this.__context__ = null;
			},
			configurable: true,
			enumerable: false,
			writable: true
		},
		toString: {
			value: function () {
				return '[object Iterator]';
			},
			configurable: true,
			enumerable: false,
			writable: true
		}
	}, {
		_onAdd: {
			value: function (index) {
				if (index >= this.__nextIndex__) return;
				++this.__nextIndex__;
				if (!this.__redo__) {
					Object.defineProperty(this, '__redo__', {
						value: [index],
						configurable: true,
						enumerable: false,
						writable: false
					});
					return;
				}
				this.__redo__.forEach(function (redo, i) {
					if (redo >= index) this.__redo__[i] = ++redo;
				}, this);
				this.__redo__.push(index);
			},
			configurable: true,
			enumerable: false,
			writable: true
		},
		_onDelete: {
			value: function (index) {
				var i;
				if (index >= this.__nextIndex__) return;
				--this.__nextIndex__;
				if (!this.__redo__) return;
				i = this.__redo__.indexOf(index);
				if (i !== -1) this.__redo__.splice(i, 1);
				this.__redo__.forEach(function (redo, i) {
					if (redo > index) this.__redo__[i] = --redo;
				}, this);
			},
			configurable: true,
			enumerable: false,
			writable: true
		},
		_onClear: {
			value: function () {
				if (this.__redo__) clear.call(this.__redo__);
				this.__nextIndex__ = 0;
			},
			configurable: true,
			enumerable: false,
			writable: true
		}
	}));

	Object.defineProperty(Iterator.prototype, Symbol.iterator, {
		value: function () {
			return this;
		},
		configurable: true,
		enumerable: false,
		writable: true
	});
	Object.defineProperty(Iterator.prototype, Symbol.toStringTag, {
		value: 'Iterator',
		configurable: false,
		enumerable: false,
		writable: true
	});

	return Iterator;
}());

// _ArrayIterator
/* global Iterator, Symbol */
// A modification of https://github.com/medikoo/es6-iterator
// Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.com)

var ArrayIterator = (function() { // eslint-disable-line no-unused-vars

	var ArrayIterator = function(arr, kind) {
		if (!(this instanceof ArrayIterator)) return new ArrayIterator(arr, kind);
		Iterator.call(this, arr);
		if (!kind) kind = 'value';
		else if (String.prototype.includes.call(kind, 'key+value')) kind = 'key+value';
		else if (String.prototype.includes.call(kind, 'key')) kind = 'key';
		else kind = 'value';
		Object.defineProperty(this, '__kind__', {
			value: kind,
			configurable: false,
			enumerable: false,
			writable: false
		});
	};
	if (Object.setPrototypeOf) Object.setPrototypeOf(ArrayIterator, Iterator.prototype);

	ArrayIterator.prototype = Object.create(Iterator.prototype, {
		constructor: {
			value: ArrayIterator,
			configurable: true,
			enumerable: false,
			writable: true
		},
		_resolve: {
			value: function(i) {
				if (this.__kind__ === 'value') return this.__list__[i];
				if (this.__kind__ === 'key+value') return [i, this.__list__[i]];
				return i;
			},
			configurable: true,
			enumerable: false,
			writable: true
		},
		toString: {
			value: function() {
				return '[object Array Iterator]';
			},
			configurable: true,
			enumerable: false,
			writable: true
		}
	});

	Object.defineProperty(ArrayIterator.prototype, Symbol.toStringTag, {
		value: 'Array Iterator',
		writable: false,
		enumerable: false,
		configurable: true
	});

	return ArrayIterator;
}());
if (!("Symbol"in self&&"iterator"in self.Symbol&&!!Array.prototype.entries
)) {

// Array.prototype.entries
/* global CreateMethodProperty, ToObject, ArrayIterator */
// 22.1.3.4. Array.prototype.entries ( )
CreateMethodProperty(Array.prototype, 'entries', function entries() {
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Return CreateArrayIterator(O, "key+value").
	// TODO: Add CreateArrayIterator
	return new ArrayIterator(O, 'key+value');
});

}

if (!("Symbol"in self&&"iterator"in self.Symbol&&!!Array.prototype.keys
)) {

// Array.prototype.keys
/* global CreateMethodProperty, ToObject, ArrayIterator */
// 22.1.3.14. Array.prototype.keys ( )
CreateMethodProperty(Array.prototype, 'keys', function keys() {
	// 1. Let O be ? ToObject(this value).
	var O = ToObject(this);
	// 2. Return CreateArrayIterator(O, "key").
	// TODO: Add CreateArrayIterator.
	return new ArrayIterator(O, 'key');
});

}

if (!("values"in Array.prototype
)) {

// Array.prototype.values
/* global CreateMethodProperty, Symbol, ToObject, ArrayIterator */
// 22.1.3.30/ Array.prototype.values ( )
// Polyfill.io - Firefox, Chrome and Opera have Array.prototype[Symbol.iterator], which is the exact same function as Array.prototype.values.
if ('Symbol' in self && 'iterator' in Symbol && typeof Array.prototype[Symbol.iterator] === 'function') {
	CreateMethodProperty(Array.prototype, 'values', Array.prototype[Symbol.iterator]);
} else {
	CreateMethodProperty(Array.prototype, 'values', function values () {
		// 1. Let O be ? ToObject(this value).
		var O = ToObject(this);
		// 2. Return CreateArrayIterator(O, "value").
		// TODO: Add CreateArrayIterator
		return new ArrayIterator(O, 'value');
	});
}

}


// _StringIterator
// A modification of https://github.com/medikoo/es6-iterator
// Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.com)

/* global Iterator, Symbol */

var StringIterator = (function() { // eslint-disable-line no-unused-vars

	var StringIterator = function (str) {
		if (!(this instanceof StringIterator)) return new StringIterator(str);
		str = String(str);
		Iterator.call(this, str);
		Object.defineProperty(this, '__length__', {
			value: str.length,
			configurable: false,
			enumerable: false,
			writable: false
		});
	};
	if (Object.setPrototypeOf) Object.setPrototypeOf(StringIterator, Iterator);

	StringIterator.prototype = Object.create(Iterator.prototype, {
		constructor: {
			value: StringIterator,
			configurable: true,
			enumerable: false,
			writable: true
		},
		_next: {
			value: function() {
				if (!this.__list__) return;
				if (this.__nextIndex__ < this.__length__) return this.__nextIndex__++;
				this._unBind();
			},
			configurable: true,
			enumerable: false,
			writable: true
		},
		_resolve: {
			value: function (i) {
				var char = this.__list__[i], code;
				if (this.__nextIndex__ === this.__length__) return char;
				code = char.charCodeAt(0);
				if ((code >= 0xD800) && (code <= 0xDBFF)) return char + this.__list__[this.__nextIndex__++];
				return char;
			},
			configurable: true,
			enumerable: false,
			writable: true
		},
		toString: {
			value: function() {
				return '[object String Iterator]';
			},
			configurable: true,
			enumerable: false,
			writable: true
		}
	});

	Object.defineProperty(StringIterator.prototype, Symbol.toStringTag, {
		value: 'String Iterator',
		writable: false,
		enumerable: false,
		configurable: true
	});

	return StringIterator;
}());
if (!("Symbol"in self&&"iterator"in self.Symbol&&!!Array.prototype[self.Symbol.iterator]
)) {

// Array.prototype.@@iterator
/* global Symbol, CreateMethodProperty */
// 22.1.3.31. Array.prototype [ @@iterator ] ( )
// The initial value of the @@iterator property is the same function object as the initial value of the  Array.prototype.values property.
CreateMethodProperty(Array.prototype, Symbol.iterator, Array.prototype.values);

}

if (!("fromEntries"in Object
)) {

// Object.fromEntries
/* global CreateMethodProperty, RequireObjectCoercible, ToPropertyKey, CreateDataPropertyOrThrow, AddEntriesFromIterable */

// 19.1.2.5 Object.fromEntries ( iterable )
CreateMethodProperty(Object, 'fromEntries', function fromEntries(iterable) {
	// 1. Perform ? RequireObjectCoercible(iterable).
	RequireObjectCoercible(iterable);
	// 2. Let obj be ObjectCreate(%ObjectPrototype%).
	var obj = {};
	// 3. Assert: obj is an extensible ordinary object with no own properties.
	// 4. Let stepsDefine be the algorithm steps defined in CreateDataPropertyOnObject Functions.
	// 5. Let adder be CreateBuiltinFunction(stepsDefine, « »).
	var adder = function (key, value) {
		// Let O be the this value.
		var O = this;
		// Assert: Type(O) is Object.
		// Assert: O is an extensible ordinary object.
		// Let propertyKey be ? ToPropertyKey(key).
		var propertyKey = ToPropertyKey(key);
		// Perform ! CreateDataPropertyOrThrow(O, propertyKey, value).
		CreateDataPropertyOrThrow(O, propertyKey, value);
	};
	// 6. Return ? AddEntriesFromIterable(obj, iterable, adder).
	return AddEntriesFromIterable(obj, iterable, adder);
});

}

if (!("Symbol"in self&&"toStringTag"in self.Symbol&&"ArrayBuffer"in self&&self.Symbol.toStringTag in self.ArrayBuffer.prototype&&void 0!==self.ArrayBuffer.prototype[self.Symbol.toStringTag]
)) {

// ArrayBuffer.prototype.@@toStringTag
/* global ArrayBuffer, DataView, Symbol */
// 25.1.5.4 ArrayBuffer.prototype [ @@toStringTag ]
(function () {
	Object.defineProperty(ArrayBuffer.prototype, Symbol.toStringTag, {
		value: 'ArrayBuffer',
		writable: false,
		enumerable: false,
		configurable: true
	});

	Object.defineProperty(DataView.prototype, Symbol.toStringTag, {
		value: 'DataView',
		writable: false,
		enumerable: false,
		configurable: true
	});
})();

}

if (!("Map"in self&&function(t){try{var n=new t.Map([[1,1],[2,2]])
return 0===t.Map.length&&2===n.size&&"Symbol"in t&&"iterator"in t.Symbol&&"function"==typeof n[t.Symbol.iterator]&&"toStringTag"in t.Symbol&&void 0!==n[t.Symbol.toStringTag]}catch(t){return!1}}(self)
)) {

// Map
/* global CreateIterResultObject, CreateMethodProperty, GetIterator, IsCallable, IteratorClose, IteratorStep, IteratorValue, OrdinaryCreateFromConstructor, SameValueZero, Type, Symbol */
(function (global) {
	// Need an internal counter to assign unique IDs to a key map
	var _uniqueHashId = 0;
	// Create a unique key name for storing meta data on functions and objects to enable lookups in hash table
	var _metaKey = Symbol('meta_' + ((Math.random() * 100000000) + '').replace('.', ''));

	/**
	 * hashKey()
	 * Function that given a key of `any` type, returns a string key value to enable hash map optimization for accessing Map data structure
	 * @param {string|integer|function|object} recordKey - Record key to normalize to string accessor for hash map
	 * @returns {string|false} - Returns a hashed string value or false if non extensible object key
	 */
	var hashKey = function(recordKey) {
		// Check to see if we are dealing with object or function type.
		if (typeof recordKey === 'object' ? recordKey !== null : typeof recordKey === 'function') {
			// Check to see if we are dealing with a non extensible object
			if (!Object.isExtensible(recordKey)) {
				// Return `false`
				return false;
			}
			if (!Object.prototype.hasOwnProperty.call(recordKey, _metaKey)) {
				var uniqueHashKey = typeof(recordKey)+'-'+(++_uniqueHashId);
				Object.defineProperty(recordKey, _metaKey, {
					configurable: false,
					enumerable: false,
					writable: false,
					value: uniqueHashKey
				});
			}
			// Return previously defined hashed key
			return recordKey[_metaKey];
		}
		// If this is just a primitive:
		// - prepend the type
		// - add a unique marker
		// - cast to a string
		return (typeof recordKey) + '_f1cc2551-7df7-4319-ba53-5b263a78a257_' + recordKey;
	};

	/**
	 * getRecordIndex()
	 * Function that given a Map and a key of `any` type, returns an index number that coorelates with a record found in `this._keys[index]` and `this._values[index]`
	 * @param {Map} map - Map structure
	 * @param {string|number|function|object} recordKey - Record key to normalize to string accessor for hash map
	 * @returns {number|false} - Returns either a index to access map._keys and map._values, or false if not found
	 */
	var getRecordIndex = function(map, recordKey) {
		var hashedKey = hashKey(recordKey); // Casts key to unique string (unless already string or number)
		if (hashedKey === false) {
			// We have to iterate through our Map structure because `recordKey` is non-primitive and not extensible
			return getRecordIndexSlow(map, recordKey);
		}
		var recordIndex = map._table[hashedKey]; // O(1) access to record
		return recordIndex !== undefined ? recordIndex : false;
	};

	/**
	 * getRecordIndexSlow()
	 * Alternative (and slower) function to `getRecordIndex()`.  Necessary for looking up non-extensible object keys.
	 * @param {Map} map - Map structure
	 * @param {string|number|function|object} recordKey - Record key to normalize to string accessor for hash map
	 * @returns {number|false} - Returns either a index to access map._keys and map._values, or false if not found
	 */
	var getRecordIndexSlow = function(map, recordKey) {
		// We have to iterate through our Map structure because `recordKey` is non-primitive and not extensible
		for (var i = 0; i < map._keys.length; i++) {
			var _recordKey = map._keys[i];
			if (_recordKey !== undefMarker && SameValueZero(_recordKey, recordKey)) {
				return i;
			}
		}
		return false;
	};

	/**
	 * setHashIndex()
	 * Function that given a map, key of `any` type, and a value, creates a new entry in Map hash table
	 * @param {Map} map
	 * @param {string|number|function|object} recordKey - Key to translate into normalized key for hash map
	 * @param {number|bool} recordIndex - new record index for the hashedKey or `false` to delete the record index for the hashedKey
	 * @returns {bool} - indicates success of operation
	 */
	var setHashIndex = function(map, recordKey, recordIndex) {
		var hashedKey = hashKey(recordKey);
		if (hashedKey === false) {
			// If hashed key is false, the recordKey is an object which is not extensible.
			// That indicates we cannot use the hash map for it, so this operation becomes no-op.
			return false;
		}
		if (recordIndex === false) {
			delete map._table[hashedKey];
		} else {
			map._table[hashedKey] = recordIndex;
		}
		return true;
	};

	// Deleted map items mess with iterator pointers, so rather than removing them mark them as deleted. Can't use undefined or null since those both valid keys so use a private symbol.
	var undefMarker = Symbol('undef');
	// 23.1.1.1 Map ( [ iterable ] )
	var Map = function Map(/* iterable */) {
		// 1. If NewTarget is undefined, throw a TypeError exception.
		if (!(this instanceof Map)) {
			throw new TypeError('Constructor Map requires "new"');
		}
		// 2. Let map be ? OrdinaryCreateFromConstructor(NewTarget, "%MapPrototype%", « [[MapData]] »).
		var map = OrdinaryCreateFromConstructor(this, Map.prototype, {
			_table: {}, // O(1) access table for retrieving records
			_keys: [],
			_values: [],
			_size: 0,
			_es6Map: true
		});

		// 3. Set map.[[MapData]] to a new empty List.
		// Polyfill.io - This step was done as part of step two.

		// 4. If iterable is not present, let iterable be undefined.
		var iterable = arguments.length > 0 ? arguments[0] : undefined;

		// 5. If iterable is either undefined or null, return map.
		if (iterable === null || iterable === undefined) {
			return map;
		}

		// 6. Let adder be ? Get(map, "set").
		var adder = map.set;

		// 7. If IsCallable(adder) is false, throw a TypeError exception.
		if (!IsCallable(adder)) {
			throw new TypeError("Map.prototype.set is not a function");
		}

		// 8. Let iteratorRecord be ? GetIterator(iterable).
		try {
			var iteratorRecord = GetIterator(iterable);
			// 9. Repeat,
			// eslint-disable-next-line no-constant-condition
			while (true) {
				// a. Let next be ? IteratorStep(iteratorRecord).
				var next = IteratorStep(iteratorRecord);
				// b. If next is false, return map.
				if (next === false) {
					return map;
				}
				// c. Let nextItem be ? IteratorValue(next).
				var nextItem = IteratorValue(next);
				// d. If Type(nextItem) is not Object, then
				if (Type(nextItem) !== 'object') {
					// i. Let error be Completion{[[Type]]: throw, [[Value]]: a newly created TypeError object, [[Target]]: empty}.
					try {
						throw new TypeError('Iterator value ' + nextItem + ' is not an entry object');
					} catch (error) {
						// ii. Return ? IteratorClose(iteratorRecord, error).
						return IteratorClose(iteratorRecord, error);
					}
				}
				try {
					// Polyfill.io - The try catch accounts for steps: f, h, and j.

					// e. Let k be Get(nextItem, "0").
					var k = nextItem[0];
					// f. If k is an abrupt completion, return ? IteratorClose(iteratorRecord, k).
					// g. Let v be Get(nextItem, "1").
					var v = nextItem[1];
					// h. If v is an abrupt completion, return ? IteratorClose(iteratorRecord, v).
					// i. Let status be Call(adder, map, « k.[[Value]], v.[[Value]] »).
					adder.call(map, k, v);
				} catch (e) {
					// j. If status is an abrupt completion, return ? IteratorClose(iteratorRecord, status).
					return IteratorClose(iteratorRecord, e);
				}
			}
		} catch (e) {
			// Polyfill.io - For user agents which do not have iteration methods on argument objects or arrays, we can special case those.
			if (Array.isArray(iterable) ||
				Object.prototype.toString.call(iterable) === '[object Arguments]') {
				var index;
				var length = iterable.length;
				for (index = 0; index < length; index++) {
					adder.call(map, iterable[index][0], iterable[index][1]);
				}
			}
		}
		return map;
	};

	// 23.1.2.1. Map.prototype
	// The initial value of Map.prototype is the intrinsic object %MapPrototype%.
	// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
	Object.defineProperty(Map, 'prototype', {
		configurable: false,
		enumerable: false,
		writable: false,
		value: {}
	});

	// 23.1.2.2 get Map [ @@species ]
	Object.defineProperty(Map, Symbol.species, {
		configurable: true,
		enumerable: false,
		get: function () {
			// 1. Return the this value.
			return this;
		},
		set: undefined
	});

	// 23.1.3.1 Map.prototype.clear ( )
	CreateMethodProperty(Map.prototype, 'clear', function clear() {
			// 1. Let M be the this value.
			var M = this;
			// 2. If Type(M) is not Object, throw a TypeError exception.
			if (Type(M) !== 'object') {
				throw new TypeError('Method Map.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
			if (M._es6Map !== true) {
				throw new TypeError('Method Map.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 4. Let entries be the List that is M.[[MapData]].
			var entries = M._keys;
			// 5. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
			for (var i = 0; i < entries.length; i++) {
				// 5.a. Set p.[[Key]] to empty.
				M._keys[i] = undefMarker;
				// 5.b. Set p.[[Value]] to empty.
				M._values[i] = undefMarker;
			}
			this._size = 0;
			// 5a. Clear lookup table
			this._table = {};
			// 6. Return undefined.
			return undefined;
		}
	);

	// 23.1.3.2. Map.prototype.constructor
	CreateMethodProperty(Map.prototype, 'constructor', Map);

	// 23.1.3.3. Map.prototype.delete ( key )
	CreateMethodProperty(Map.prototype, 'delete', function (key) {
			// 1. Let M be the this value.
			var M = this;
			// 2. If Type(M) is not Object, throw a TypeError exception.
			if (Type(M) !== 'object') {
				throw new TypeError('Method Map.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
			if (M._es6Map !== true) {
				throw new TypeError('Method Map.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 4. Let entries be the List that is M.[[MapData]].
			// 5. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
				// 5a. If p.[[Key]] is not empty and SameValueZero(p.[[Key]], key) is true, then
					// i. Set p.[[Key]] to empty.
					// ii. Set p.[[Value]] to empty.
					// ii-a. Remove key from lookup table
					// iii. Return true.
			// 6. Return false.

			// Implement steps 4-6 with a more optimal algo

			// Steps 4-5: Access record
			var recordIndex = getRecordIndex(M, key); // O(1) access to record index

			if (recordIndex !== false) {
				// Get record's `key` (could be `any` type);
				var recordKey = M._keys[recordIndex];
				// 5a. If p.[[Key]] is not empty and SameValueZero(p.[[Key]], key) is true, then
				if (recordKey !== undefMarker && SameValueZero(recordKey, key)) {
					// i. Set p.[[Key]] to empty.
					this._keys[recordIndex] = undefMarker;
					// ii. Set p.[[Value]] to empty.
					this._values[recordIndex] = undefMarker;
					this._size = --this._size;
					// iia. Remove key from lookup table
					setHashIndex(this, key, false);
					// iii. Return true.
					return true;
				}
			}

			// 6. Return false.
			return false;
		}
	);

	// 23.1.3.4. Map.prototype.entries ( )
	CreateMethodProperty(Map.prototype, 'entries', function entries () {
			// 1. Let M be the this value.
			var M = this;
			// 2. Return ? CreateMapIterator(M, "key+value").
			return CreateMapIterator(M, 'key+value');
		}
	);

	// 23.1.3.5. Map.prototype.forEach ( callbackfn [ , thisArg ] )
	CreateMethodProperty(Map.prototype, 'forEach', function (callbackFn) {
			// 1. Let M be the this value.
			var M = this;
			// 2. If Type(M) is not Object, throw a TypeError exception.
			if (Type(M) !== 'object') {
				throw new TypeError('Method Map.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
			if (M._es6Map !== true) {
				throw new TypeError('Method Map.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 4. If IsCallable(callbackfn) is false, throw a TypeError exception.
			if (!IsCallable(callbackFn)) {
				throw new TypeError(Object.prototype.toString.call(callbackFn) + ' is not a function.');
			}
			// 5. If thisArg is present, let T be thisArg; else let T be undefined.
			if (arguments[1]) {
				var T = arguments[1];
			}
			// 6. Let entries be the List that is M.[[MapData]].
			var entries = M._keys;
			// 7. For each Record {[[Key]], [[Value]]} e that is an element of entries, in original key insertion order, do
			for (var i = 0; i < entries.length; i++) {
				// a. If e.[[Key]] is not empty, then
				if (M._keys[i] !== undefMarker && M._values[i] !== undefMarker ) {
					// i. Perform ? Call(callbackfn, T, « e.[[Value]], e.[[Key]], M »).
					callbackFn.call(T, M._values[i], M._keys[i], M);
				}
			}
			// 8. Return undefined.
			return undefined;
		}
	);

	// 23.1.3.6. Map.prototype.get ( key )
	CreateMethodProperty(Map.prototype, 'get', function get(key) {
			// 1. Let M be the this value.
			var M = this;
			// 2. If Type(M) is not Object, throw a TypeError exception.
			if (Type(M) !== 'object') {
				throw new TypeError('Method Map.prototype.get called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
			if (M._es6Map !== true) {
				throw new TypeError('Method Map.prototype.get called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 4. Let entries be the List that is M.[[MapData]].
			// 5. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
				// a. If p.[[Key]] is not empty and SameValueZero(p.[[Key]], key) is true, return p.[[Value]].
			// 6. Return undefined.

			// Implement steps 4-6 with a more optimal algo
			var recordIndex = getRecordIndex(M, key); // O(1) access to record index
			if (recordIndex !== false) {
				var recordKey = M._keys[recordIndex];
				if (recordKey !== undefMarker && SameValueZero(recordKey, key)) {
					return M._values[recordIndex];
				}
			}

			return undefined;
		});

	// 23.1.3.7. Map.prototype.has ( key )
	CreateMethodProperty(Map.prototype, 'has', function has (key) {
			// 1. Let M be the this value.
			var M = this;
			// 2. If Type(M) is not Object, throw a TypeError exception.
			if (typeof M !== 'object') {
				throw new TypeError('Method Map.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
			if (M._es6Map !== true) {
				throw new TypeError('Method Map.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 4. Let entries be the List that is M.[[MapData]].
			// 5. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
				// a. If p.[[Key]] is not empty and SameValueZero(p.[[Key]], key) is true, return true.
			// 6. Return false.

			// Implement steps 4-6 with a more optimal algo
			var recordIndex = getRecordIndex(M, key); // O(1) access to record index
			if (recordIndex !== false) {
				var recordKey = M._keys[recordIndex];
				if (recordKey !== undefMarker && SameValueZero(recordKey, key)) {
					return true;
				}
			}

			return false;
		});

	// 23.1.3.8. Map.prototype.keys ( )
	CreateMethodProperty(Map.prototype, 'keys', function keys () {
			// 1. Let M be the this value.
			var M = this;
			// 2. Return ? CreateMapIterator(M, "key").
			return CreateMapIterator(M, "key");
		});

	// 23.1.3.9. Map.prototype.set ( key, value )
	CreateMethodProperty(Map.prototype, 'set', function set(key, value) {
			// 1. Let M be the this value.
			var M = this;
			// 2. If Type(M) is not Object, throw a TypeError exception.
			if (Type(M) !== 'object') {
				throw new TypeError('Method Map.prototype.set called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
			if (M._es6Map !== true) {
				throw new TypeError('Method Map.prototype.set called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 4. Let entries be the List that is M.[[MapData]].
			// 5. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
			// 6. If key is -0, let key be +0.
			// 7. Let p be the Record {[[Key]]: key, [[Value]]: value}.
			// 8. Append p as the last element of entries.
			// 9. Return M.

			// Strictly following the above steps 4-9 will lead to an inefficient algorithm.
			// Step 8 also doesn't seem to be required if an entry already exists
			var recordIndex = getRecordIndex(M, key); // O(1) access to record index
			if (recordIndex !== false) {
				// update path
				M._values[recordIndex] = value;
			} else {
				// eslint-disable-next-line no-compare-neg-zero
				if (key === -0) {
					key = 0;
				}
				var p = {
					'[[Key]]': key,
					'[[Value]]': value
				};
				M._keys.push(p['[[Key]]']);
				M._values.push(p['[[Value]]']);
				setHashIndex(M, key, M._keys.length - 1); // update lookup table
				++M._size;
			}
			return M;
		});

	// 23.1.3.10. get Map.prototype.size
	Object.defineProperty(Map.prototype, 'size', {
		configurable: true,
		enumerable: false,
		get: function () {
			// 1. Let M be the this value.
			var M = this;
			// 2. If Type(M) is not Object, throw a TypeError exception.
			if (Type(M) !== 'object') {
				throw new TypeError('Method Map.prototype.size called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
			if (M._es6Map !== true) {
				throw new TypeError('Method Map.prototype.size called on incompatible receiver ' + Object.prototype.toString.call(M));
			}
			// 4. Let entries be the List that is M.[[MapData]].
			// 5. Let count be 0.
			// 6. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
				// 6a. If p.[[Key]] is not empty, set count to count+1.
			// 7. Return count.

			// Implement 4-7 more efficently by returning pre-computed property
			return this._size;
		},
		set: undefined
	});

	// 23.1.3.11. Map.prototype.values ( )
	CreateMethodProperty(Map.prototype, 'values', function values () {
			// 1. Let M be the this value.
			var M = this;
			// 2. Return ? CreateMapIterator(M, "value").
			return CreateMapIterator(M, 'value');
		}
	);

	// 23.1.3.12. Map.prototype [ @@iterator ] ( )
	// The initial value of the @@iterator property is the same function object as the initial value of the entries property.
	CreateMethodProperty(Map.prototype, Symbol.iterator, Map.prototype.entries);

	// 23.1.3.13. Map.prototype [ @@toStringTag ]
	// The initial value of the @@toStringTag property is the String value "Map".
	// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
	Object.defineProperty(Map.prototype, Symbol.toStringTag, {
		value: 'Map',
		writable: false,
		enumerable: false,
		configurable: true
	});

	// Polyfill.io - Safari 8 implements Map.name but as a non-configurable property, which means it would throw an error if we try and configure it here.
	if (!('name' in Map)) {
		// 19.2.4.2 name
		Object.defineProperty(Map, 'name', {
			configurable: true,
			enumerable: false,
			writable: false,
			value: 'Map'
		});
	}

	// 23.1.5.1. CreateMapIterator ( map, kind )
	function CreateMapIterator(map, kind) {
		// 1. If Type(map) is not Object, throw a TypeError exception.
		if (Type(map) !== 'object') {
			throw new TypeError('createMapIterator called on incompatible receiver ' + Object.prototype.toString.call(map));
		}
		// 2. If map does not have a [[MapData]] internal slot, throw a TypeError exception.
		if (map._es6Map !== true) {
			throw new TypeError('createMapIterator called on incompatible receiver ' + Object.prototype.toString.call(map));
		}
		// 3. Let iterator be ObjectCreate(%MapIteratorPrototype%, « [[Map]], [[MapNextIndex]], [[MapIterationKind]] »).
		var iterator = Object.create(MapIteratorPrototype);
		// 4. Set iterator.[[Map]] to map.
		Object.defineProperty(iterator, '[[Map]]', {
			configurable: true,
			enumerable: false,
			writable: true,
			value: map
		});
		// 5. Set iterator.[[MapNextIndex]] to 0.
		Object.defineProperty(iterator, '[[MapNextIndex]]', {
			configurable: true,
			enumerable: false,
			writable: true,
			value: 0
		});
		// 6. Set iterator.[[MapIterationKind]] to kind.
		Object.defineProperty(iterator, '[[MapIterationKind]]', {
			configurable: true,
			enumerable: false,
			writable: true,
			value: kind
		});
		// 7. Return iterator.
		return iterator;
	}

	// 23.1.5.2. The %MapIteratorPrototype% Object
	var MapIteratorPrototype = {};
	// Polyfill.io - We use this as a quick way to check if an object is a Map Iterator instance.
	Object.defineProperty(MapIteratorPrototype, 'isMapIterator', {
		configurable: false,
		enumerable: false,
		writable: false,
		value: true
	});

	// 23.1.5.2.1. %MapIteratorPrototype%.next ( )
	CreateMethodProperty(MapIteratorPrototype, 'next', function next() {
			// 1. Let O be the this value.
			var O = this;
			// 2. If Type(O) is not Object, throw a TypeError exception.
			if (Type(O) !== 'object') {
				throw new TypeError('Method %MapIteratorPrototype%.next called on incompatible receiver ' + Object.prototype.toString.call(O));
			}
			// 3. If O does not have all of the internal slots of a Map Iterator Instance (23.1.5.3), throw a TypeError exception.
			if (!O.isMapIterator) {
				throw new TypeError('Method %MapIteratorPrototype%.next called on incompatible receiver ' + Object.prototype.toString.call(O));
			}
			// 4. Let m be O.[[Map]].
			var m = O['[[Map]]'];
			// 5. Let index be O.[[MapNextIndex]].
			var index = O['[[MapNextIndex]]'];
			// 6. Let itemKind be O.[[MapIterationKind]].
			var itemKind = O['[[MapIterationKind]]'];
			// 7. If m is undefined, return CreateIterResultObject(undefined, true).
			if (m === undefined) {
				return CreateIterResultObject(undefined, true);
			}
			// 8. Assert: m has a [[MapData]] internal slot.
			if (!m._es6Map) {
				throw new Error(Object.prototype.toString.call(m) + ' has a [[MapData]] internal slot.');
			}
			// 9. Let entries be the List that is m.[[MapData]].
			var entries = m._keys;
			// 10. Let numEntries be the number of elements of entries.
			var numEntries = entries.length;
			// 11. NOTE: numEntries must be redetermined each time this method is evaluated.
			// 12. Repeat, while index is less than numEntries,
			while (index < numEntries) {
				// a. Let e be the Record {[[Key]], [[Value]]} that is the value of entries[index].
				var e = Object.create(null);
				e['[[Key]]'] = m._keys[index];
				e['[[Value]]'] = m._values[index];
				// b. Set index to index+1.
				index = index + 1;
				// c. Set O.[[MapNextIndex]] to index.
				O['[[MapNextIndex]]'] = index;
				// d. If e.[[Key]] is not empty, then
				if (e['[[Key]]'] !== undefMarker) {
					// i. If itemKind is "key", let result be e.[[Key]].
					if (itemKind === 'key') {
						var result = e['[[Key]]'];
						// ii. Else if itemKind is "value", let result be e.[[Value]].
					} else if (itemKind === 'value') {
						result = e['[[Value]]'];
						// iii. Else,
					} else {
						// 1. Assert: itemKind is "key+value".
						if (itemKind !== 'key+value') {
							throw new Error();
						}
						// 2. Let result be CreateArrayFromList(« e.[[Key]], e.[[Value]] »).
						result = [
							e['[[Key]]'],
							e['[[Value]]']
						];
					}
					// iv. Return CreateIterResultObject(result, false).
					return CreateIterResultObject(result, false);
				}
			}
			// 13. Set O.[[Map]] to undefined.
			O['[[Map]]'] = undefined;
			// 14. Return CreateIterResultObject(undefined, true).
			return CreateIterResultObject(undefined, true);
		}
	);

	// 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
	// The initial value of the @@toStringTag property is the String value "Map Iterator".
	// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
	Object.defineProperty(MapIteratorPrototype, Symbol.toStringTag, {
		value: 'Map Iterator',
		writable: false,
		enumerable: false,
		configurable: true
	});

	CreateMethodProperty(MapIteratorPrototype, Symbol.iterator, function iterator() {
			return this;
		}
	);

	// Export the object
	CreateMethodProperty(global, 'Map', Map);
}(self));

}

if (!("Symbol"in self&&"toStringTag"in self.Symbol&&"toString"in Object.prototype&&!0===function(){var t={}
return t[self.Symbol.toStringTag]="x","[object x]"===Object.prototype.toString.call(t)}()
)) {

// Object.prototype.toString
/* global CreateMethodProperty, Get, Symbol, ToObject, Type */

// 20.1.3.6 Object.prototype.toString ( )
(function () {
	var ObjectProtoToStringOriginal = Object.prototype.toString;

	CreateMethodProperty(Object.prototype, 'toString', function toString () {
		'use strict';

		// 1. If the this value is undefined, return "[object Undefined]".
		if (this === undefined) return '[object Undefined]';
		// 2. If the this value is null, return "[object Null]".
		if (this === null) return '[object Null]';
		// 3. Let O be ! ToObject(this value).
		var O = ToObject(this);

		// Polyfill.io - We will not implement these; we will use the original `Object.prototype.toString` to determine the object class
		// 4. Let isArray be ? IsArray(O).
		// 5. If isArray is true, let builtinTag be "Array".
		// 6. Else if O has a [[ParameterMap]] internal slot, let builtinTag be "Arguments".
		// 7. Else if O has a [[Call]] internal method, let builtinTag be "Function".
		// 8. Else if O has an [[ErrorData]] internal slot, let builtinTag be "Error".
		// 9. Else if O has a [[BooleanData]] internal slot, let builtinTag be "Boolean".
		// 10. Else if O has a [[NumberData]] internal slot, let builtinTag be "Number".
		// 11. Else if O has a [[StringData]] internal slot, let builtinTag be "String".
		// 12. Else if O has a [[DateValue]] internal slot, let builtinTag be "Date".
		// 13. Else if O has a [[RegExpMatcher]] internal slot, let builtinTag be "RegExp".
		// 14. Else, let builtinTag be "Object".

		// 15. Let tag be ? Get(O, @@toStringTag).
		var tag = Get(O, Symbol.toStringTag);
		// 16. If Type(tag) is not String, set tag to builtinTag.
		if (Type(tag) !== 'string') return ObjectProtoToStringOriginal.call(O);
		// 17. Return the string-concatenation of "[object ", tag, and "]".
		return '[object ' + tag + ']';
	});
})();

}

if (!("Promise"in self
)) {

// Promise
/*
	Yaku v0.19.3
	(c) 2015 Yad Smood. http://ysmood.org
	License MIT
*/
/*
	Yaku v0.17.9
	(c) 2015 Yad Smood. http://ysmood.org
	License MIT
*/
(function () {
	'use strict';

	var $undefined
	, $null = null
	, isBrowser = typeof self === 'object'
	, root = self
	, nativePromise = root.Promise
	, process = root.process
	, console = root.console
	, isLongStackTrace = true
	, Arr = Array
	, Err = Error

	, $rejected = 1
	, $resolved = 2
	, $pending = 3

	, $Symbol = 'Symbol'
	, $iterator = 'iterator'
	, $species = 'species'
	, $speciesKey = $Symbol + '(' + $species + ')'
	, $return = 'return'

	, $unhandled = '_uh'
	, $promiseTrace = '_pt'
	, $settlerTrace = '_st'

	, $invalidThis = 'Invalid this'
	, $invalidArgument = 'Invalid argument'
	, $fromPrevious = '\nFrom previous '
	, $promiseCircularChain = 'Chaining cycle detected for promise'
	, $unhandledRejectionMsg = 'Uncaught (in promise)'
	, $rejectionHandled = 'rejectionHandled'
	, $unhandledRejection = 'unhandledRejection'

	, $tryCatchFn
	, $tryCatchThis
	, $tryErr = { e: $null }
	, $noop = function () {}
	, $cleanStackReg = /^.+\/node_modules\/yaku\/.+\n?/mg
	;

	/**
	* This class follows the [Promises/A+](https://promisesaplus.com) and
	* [ES6](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-promise-objects) spec
	* with some extra helpers.
	* @param  {Function} executor Function object with two arguments resolve, reject.
	* The first argument fulfills the promise, the second argument rejects it.
	* We can call these functions, once our operation is completed.
	*/
	var Yaku = function (executor) {
	var self = this,
		err;

	// "this._s" is the internao state of: pending, resolved or rejected
	// "this._v" is the internal value

	if (!isObject(self) || self._s !== $undefined)
		throw genTypeError($invalidThis);

	self._s = $pending;

	if (isLongStackTrace) self[$promiseTrace] = genTraceInfo();

	if (executor !== $noop) {
		if (!isFunction(executor))
			throw genTypeError($invalidArgument);

		err = genTryCatcher(executor)(
			genSettler(self, $resolved),
			genSettler(self, $rejected)
		);

		if (err === $tryErr)
			settlePromise(self, $rejected, err.e);
	}
	};

	Yaku.default = Yaku;

	extend(Yaku.prototype, {
	/**
		* Appends fulfillment and rejection handlers to the promise,
		* and returns a new promise resolving to the return value of the called handler.
		* @param  {Function} onFulfilled Optional. Called when the Promise is resolved.
		* @param  {Function} onRejected  Optional. Called when the Promise is rejected.
		* @return {Yaku} It will return a new Yaku which will resolve or reject after
		* @example
		* the current Promise.
		* ```js
		* var Promise = require('yaku');
		* var p = Promise.resolve(10);
		*
		* p.then((v) => {
		*     console.log(v);
		* });
		* ```
		*/
	then: function (onFulfilled, onRejected) {
		if (this._s === undefined) throw genTypeError();

		return addHandler(
			this,
			newCapablePromise(Yaku.speciesConstructor(this, Yaku)),
			onFulfilled,
			onRejected
		);
	},

	/**
		* The `catch()` method returns a Promise and deals with rejected cases only.
		* It behaves the same as calling `Promise.prototype.then(undefined, onRejected)`.
		* @param  {Function} onRejected A Function called when the Promise is rejected.
		* This function has one argument, the rejection reason.
		* @return {Yaku} A Promise that deals with rejected cases only.
		* @example
		* ```js
		* var Promise = require('yaku');
		* var p = Promise.reject(new Error("ERR"));
		*
		* p['catch']((v) => {
		*     console.log(v);
		* });
		* ```
		*/
	'catch': function (onRejected) {
		return this.then($undefined, onRejected);
	},

	/**
		* Register a callback to be invoked when a promise is settled (either fulfilled or rejected).
		* Similar with the try-catch-finally, it's often used for cleanup.
		* @param  {Function} onFinally A Function called when the Promise is settled.
		* It will not receive any argument.
		* @return {Yaku} A Promise that will reject if onFinally throws an error or returns a rejected promise.
		* Else it will resolve previous promise's final state (either fulfilled or rejected).
		* @example
		* ```js
		* var Promise = require('yaku');
		* var p = Math.random() > 0.5 ? Promise.resolve() : Promise.reject();
		* p.finally(() => {
		*     console.log('finally');
		* });
		* ```
		*/
	'finally': function (onFinally) {
		return this.then(function (val) {
			return Yaku.resolve(onFinally()).then(function () {
				return val;
			});
		}, function (err) {
			return Yaku.resolve(onFinally()).then(function () {
				throw err;
			});
		});
	},

	// The number of current promises that attach to this Yaku instance.
	_c: 0,

	// The parent Yaku.
	_p: $null
	});

	/**
	* The `Promise.resolve(value)` method returns a Promise object that is resolved with the given value.
	* If the value is a thenable (i.e. has a then method), the returned promise will "follow" that thenable,
	* adopting its eventual state; otherwise the returned promise will be fulfilled with the value.
	* @param  {Any} value Argument to be resolved by this Promise.
	* Can also be a Promise or a thenable to resolve.
	* @return {Yaku}
	* @example
	* ```js
	* var Promise = require('yaku');
	* var p = Promise.resolve(10);
	* ```
	*/
	Yaku.resolve = function (val) {
	return isYaku(val) ? val : settleWithX(newCapablePromise(this), val);
	};

	/**
	* The `Promise.reject(reason)` method returns a Promise object that is rejected with the given reason.
	* @param  {Any} reason Reason why this Promise rejected.
	* @return {Yaku}
	* @example
	* ```js
	* var Promise = require('yaku');
	* var p = Promise.reject(new Error("ERR"));
	* ```
	*/
	Yaku.reject = function (reason) {
	return settlePromise(newCapablePromise(this), $rejected, reason);
	};

	/**
	* The `Promise.race(iterable)` method returns a promise that resolves or rejects
	* as soon as one of the promises in the iterable resolves or rejects,
	* with the value or reason from that promise.
	* @param  {iterable} iterable An iterable object, such as an Array.
	* @return {Yaku} The race function returns a Promise that is settled
	* the same way as the first passed promise to settle.
	* It resolves or rejects, whichever happens first.
	* @example
	* ```js
	* var Promise = require('yaku');
	* Promise.race([
	*     123,
	*     Promise.resolve(0)
	* ])
	* .then((value) => {
	*     console.log(value); // => 123
	* });
	* ```
	*/
	Yaku.race = function (iterable) {
	var self = this
		, p = newCapablePromise(self)

		, resolve = function (val) {
			settlePromise(p, $resolved, val);
		}

		, reject = function (val) {
			settlePromise(p, $rejected, val);
		}

		, ret = genTryCatcher(each)(iterable, function (v) {
			self.resolve(v).then(resolve, reject);
		});

	if (ret === $tryErr) return self.reject(ret.e);

	return p;
	};

	/**
	* The `Promise.all(iterable)` method returns a promise that resolves when
	* all of the promises in the iterable argument have resolved.
	*
	* The result is passed as an array of values from all the promises.
	* If something passed in the iterable array is not a promise,
	* it's converted to one by Promise.resolve. If any of the passed in promises rejects,
	* the all Promise immediately rejects with the value of the promise that rejected,
	* discarding all the other promises whether or not they have resolved.
	* @param  {iterable} iterable An iterable object, such as an Array.
	* @return {Yaku}
	* @example
	* ```js
	* var Promise = require('yaku');
	* Promise.all([
	*     123,
	*     Promise.resolve(0)
	* ])
	* .then((values) => {
	*     console.log(values); // => [123, 0]
	* });
	* ```
	* @example
	* Use with iterable.
	* ```js
	* var Promise = require('yaku');
	* Promise.all((function * () {
	*     yield 10;
	*     yield new Promise(function (r) { setTimeout(r, 1000, "OK") });
	* })())
	* .then((values) => {
	*     console.log(values); // => [123, 0]
	* });
	* ```
	*/
	Yaku.all = function (iterable) {
	var self = this
		, p1 = newCapablePromise(self)
		, res = []
		, ret
	;

	function reject (reason) {
		settlePromise(p1, $rejected, reason);
	}

	ret = genTryCatcher(each)(iterable, function (item, i) {
		self.resolve(item).then(function (value) {
			res[i] = value;
			if (!--ret) settlePromise(p1, $resolved, res);
		}, reject);
	});

	if (ret === $tryErr) return self.reject(ret.e);

	if (!ret) settlePromise(p1, $resolved, []);

	return p1;
	};

	/**
	* The ES6 Symbol object that Yaku should use, by default it will use the
	* global one.
	* @type {Object}
	* @example
	* ```js
	* var core = require("core-js/library");
	* var Promise = require("yaku");
	* Promise.Symbol = core.Symbol;
	* ```
	*/
	Yaku.Symbol = root[$Symbol] || {};

	// To support browsers that don't support `Object.defineProperty`.
	genTryCatcher(function () {
	Object.defineProperty(Yaku, getSpecies(), {
		get: function () { return this; }
	});
	})();

	/**
	* Use this api to custom the species behavior.
	* https://tc39.github.io/ecma262/#sec-speciesconstructor
	* @param {Any} O The current this object.
	* @param {Function} defaultConstructor
	*/
	Yaku.speciesConstructor = function (O, D) {
	var C = O.constructor;

	return C ? (C[getSpecies()] || D) : D;
	};

	/**
	* Catch all possibly unhandled rejections. If you want to use specific
	* format to display the error stack, overwrite it.
	* If it is set, auto `console.error` unhandled rejection will be disabled.
	* @param {Any} reason The rejection reason.
	* @param {Yaku} p The promise that was rejected.
	* @example
	* ```js
	* var Promise = require('yaku');
	* Promise.unhandledRejection = (reason) => {
	*     console.error(reason);
	* };
	*
	* // The console will log an unhandled rejection error message.
	* Promise.reject('my reason');
	*
	* // The below won't log the unhandled rejection error message.
	* Promise.reject('v')["catch"](() => {});
	* ```
	*/
	Yaku.unhandledRejection = function (reason, p) {
	console && console.error(
		$unhandledRejectionMsg,
		isLongStackTrace ? p.longStack : genStackInfo(reason, p)
	);
	};

	/**
	* Emitted whenever a Promise was rejected and an error handler was
	* attached to it (for example with `["catch"]()`) later than after an event loop turn.
	* @param {Any} reason The rejection reason.
	* @param {Yaku} p The promise that was rejected.
	*/
	Yaku.rejectionHandled = $noop;

	/**
	* It is used to enable the long stack trace.
	* Once it is enabled, it can't be reverted.
	* While it is very helpful in development and testing environments,
	* it is not recommended to use it in production. It will slow down
	* application and eat up memory.
	* It will add an extra property `longStack` to the Error object.
	* @example
	* ```js
	* var Promise = require('yaku');
	* Promise.enableLongStackTrace();
	* Promise.reject(new Error("err"))["catch"]((err) => {
	*     console.log(err.longStack);
	* });
	* ```
	*/
	Yaku.enableLongStackTrace = function () {
	isLongStackTrace = true;
	};

	/**
	* Only Node has `process.nextTick` function. For browser there are
	* so many ways to polyfill it. Yaku won't do it for you, instead you
	* can choose what you prefer. For example, this project
	* [next-tick](https://github.com/medikoo/next-tick).
	* By default, Yaku will use `process.nextTick` on Node, `setTimeout` on browser.
	* @type {Function}
	* @example
	* ```js
	* var Promise = require('yaku');
	* Promise.nextTick = require('next-tick');
	* ```
	* @example
	* You can even use sync resolution if you really know what you are doing.
	* ```js
	* var Promise = require('yaku');
	* Promise.nextTick = fn => fn();
	* ```
	*/
	Yaku.nextTick = isBrowser ?
	function (fn) {
		nativePromise ?
			new nativePromise(function (resolve) { resolve(); }).then(fn) :
			setTimeout(fn);
	} :
	process.nextTick;

	// ********************** Private **********************

	Yaku._s = 1;

	/**
	* All static variable name will begin with `$`. Such as `$rejected`.
	* @private
	*/

	// ******************************* Utils ********************************

	function getSpecies () {
	return Yaku[$Symbol][$species] || $speciesKey;
	}

	function extend (src, target) {
	for (var k in target) {
		src[k] = target[k];
	}
	}

	function isObject (obj) {
	return obj && typeof obj === 'object';
	}

	function isFunction (obj) {
	return typeof obj === 'function';
	}

	function isInstanceOf (a, b) {
	return a instanceof b;
	}

	function isError (obj) {
	return isInstanceOf(obj, Err);
	}

	function ensureType (obj, fn, msg) {
	if (!fn(obj)) throw genTypeError(msg);
	}

	/**
	* Wrap a function into a try-catch.
	* @private
	* @return {Any | $tryErr}
	*/
	function tryCatcher () {
	try {
		return $tryCatchFn.apply($tryCatchThis, arguments);
	} catch (e) {
		$tryErr.e = e;
		return $tryErr;
	}
	}

	/**
	* Generate a try-catch wrapped function.
	* @private
	* @param  {Function} fn
	* @return {Function}
	*/
	function genTryCatcher (fn, self) {
	$tryCatchFn = fn;
	$tryCatchThis = self;
	return tryCatcher;
	}

	/**
	* Generate a scheduler.
	* @private
	* @param  {Integer}  initQueueSize
	* @param  {Function} fn `(Yaku, Value) ->` The schedule handler.
	* @return {Function} `(Yaku, Value) ->` The scheduler.
	*/
	function genScheduler (initQueueSize, fn) {
	/**
		* All async promise will be scheduled in
		* here, so that they can be execute on the next tick.
		* @private
		*/
	var fnQueue = Arr(initQueueSize)
		, fnQueueLen = 0;

	/**
		* Run all queued functions.
		* @private
		*/
	function flush () {
		var i = 0;
		while (i < fnQueueLen) {
			fn(fnQueue[i], fnQueue[i + 1]);
			fnQueue[i++] = $undefined;
			fnQueue[i++] = $undefined;
		}

		fnQueueLen = 0;
		if (fnQueue.length > initQueueSize) fnQueue.length = initQueueSize;
	}

	return function (v, arg) {
		fnQueue[fnQueueLen++] = v;
		fnQueue[fnQueueLen++] = arg;

		if (fnQueueLen === 2) Yaku.nextTick(flush);
	};
	}

	/**
	* Generate a iterator
	* @param  {Any} obj
	* @private
	* @return {Object || TypeError}
	*/
	function each (iterable, fn) {
	var len
		, i = 0
		, iter
		, item
		, ret
	;

	if (!iterable) throw genTypeError($invalidArgument);

	var gen = iterable[Yaku[$Symbol][$iterator]];
	if (isFunction(gen))
		iter = gen.call(iterable);
	else if (isFunction(iterable.next)) {
		iter = iterable;
	}
	else if (isInstanceOf(iterable, Arr)) {
		len = iterable.length;
		while (i < len) {
			fn(iterable[i], i++);
		}
		return i;
	} else
		throw genTypeError($invalidArgument);

	while (!(item = iter.next()).done) {
		ret = genTryCatcher(fn)(item.value, i++);
		if (ret === $tryErr) {
			isFunction(iter[$return]) && iter[$return]();
			throw ret.e;
		}
	}

	return i;
	}

	/**
	* Generate type error object.
	* @private
	* @param  {String} msg
	* @return {TypeError}
	*/
	function genTypeError (msg) {
	return new TypeError(msg);
	}

	function genTraceInfo (noTitle) {
	return (noTitle ? '' : $fromPrevious) + new Err().stack;
	}


	// *************************** Promise Helpers ****************************

	/**
	* Resolve the value returned by onFulfilled or onRejected.
	* @private
	* @param {Yaku} p1
	* @param {Yaku} p2
	*/
	var scheduleHandler = genScheduler(999, function (p1, p2) {
	var x, handler;

	// 2.2.2
	// 2.2.3
	handler = p1._s !== $rejected ? p2._onFulfilled : p2._onRejected;

	// 2.2.7.3
	// 2.2.7.4
	if (handler === $undefined) {
		settlePromise(p2, p1._s, p1._v);
		return;
	}

	// 2.2.7.1
	x = genTryCatcher(callHanler)(handler, p1._v);
	if (x === $tryErr) {
		// 2.2.7.2
		settlePromise(p2, $rejected, x.e);
		return;
	}

	settleWithX(p2, x);
	});

	var scheduleUnhandledRejection = genScheduler(9, function (p) {
	if (!hashOnRejected(p)) {
		p[$unhandled] = 1;
		emitEvent($unhandledRejection, p);
	}
	});

	function emitEvent (name, p) {
	var browserEventName = 'on' + name.toLowerCase()
		, browserHandler = root[browserEventName];

	if (process && process.listeners(name).length)
		name === $unhandledRejection ?
			process.emit(name, p._v, p) : process.emit(name, p);
	else if (browserHandler)
		browserHandler({ reason: p._v, promise: p });
	else
		Yaku[name](p._v, p);
	}

	function isYaku (val) { return val && val._s; }

	function newCapablePromise (Constructor) {
	if (isYaku(Constructor)) return new Constructor($noop);

	var p, r, j;
	p = new Constructor(function (resolve, reject) {
		if (p) throw genTypeError();

		r = resolve;
		j = reject;
	});

	ensureType(r, isFunction);
	ensureType(j, isFunction);

	return p;
	}

	/**
	* It will produce a settlePromise function to user.
	* Such as the resolve and reject in this `new Yaku (resolve, reject) ->`.
	* @private
	* @param  {Yaku} self
	* @param  {Integer} state The value is one of `$pending`, `$resolved` or `$rejected`.
	* @return {Function} `(value) -> undefined` A resolve or reject function.
	*/
	function genSettler (self, state) {
	var isCalled = false;
	return function (value) {
		if (isCalled) return;
		isCalled = true;

		if (isLongStackTrace)
			self[$settlerTrace] = genTraceInfo(true);

		if (state === $resolved)
			settleWithX(self, value);
		else
			settlePromise(self, state, value);
	};
	}

	/**
	* Link the promise1 to the promise2.
	* @private
	* @param {Yaku} p1
	* @param {Yaku} p2
	* @param {Function} onFulfilled
	* @param {Function} onRejected
	*/
	function addHandler (p1, p2, onFulfilled, onRejected) {
	// 2.2.1
	if (isFunction(onFulfilled))
		p2._onFulfilled = onFulfilled;
	if (isFunction(onRejected)) {
		if (p1[$unhandled]) emitEvent($rejectionHandled, p1);

		p2._onRejected = onRejected;
	}

	if (isLongStackTrace) p2._p = p1;
	p1[p1._c++] = p2;

	// 2.2.6
	if (p1._s !== $pending)
		scheduleHandler(p1, p2);

	// 2.2.7
	return p2;
	}

	// iterate tree
	function hashOnRejected (node) {
	// A node shouldn't be checked twice.
	if (node._umark)
		return true;
	else
		node._umark = true;

	var i = 0
		, len = node._c
		, child;

	while (i < len) {
		child = node[i++];
		if (child._onRejected || hashOnRejected(child)) return true;
	}
	}

	function genStackInfo (reason, p) {
	var stackInfo = [];

	function push (trace) {
		return stackInfo.push(trace.replace(/^\s+|\s+$/g, ''));
	}

	if (isLongStackTrace) {
		if (p[$settlerTrace])
			push(p[$settlerTrace]);

		// Hope you guys could understand how the back trace works.
		// We only have to iterate through the tree from the bottom to root.
		(function iter (node) {
			if (node && $promiseTrace in node) {
				iter(node._next);
				push(node[$promiseTrace] + '');
				iter(node._p);
			}
		})(p);
	}

	return (reason && reason.stack ? reason.stack : reason) +
		('\n' + stackInfo.join('\n')).replace($cleanStackReg, '');
	}

	function callHanler (handler, value) {
	// 2.2.5
	return handler(value);
	}

	/**
	* Resolve or reject a promise.
	* @private
	* @param  {Yaku} p
	* @param  {Integer} state
	* @param  {Any} value
	*/
	function settlePromise (p, state, value) {
	var i = 0
		, len = p._c;

	// 2.1.2
	// 2.1.3
	if (p._s === $pending) {
		// 2.1.1.1
		p._s = state;
		p._v = value;

		if (state === $rejected) {
			if (isLongStackTrace && isError(value)) {
				value.longStack = genStackInfo(value, p);
			}

			scheduleUnhandledRejection(p);
		}

		// 2.2.4
		while (i < len) {
			scheduleHandler(p, p[i++]);
		}
	}

	return p;
	}

	/**
	* Resolve or reject promise with value x. The x can also be a thenable.
	* @private
	* @param {Yaku} p
	* @param {Any | Thenable} x A normal value or a thenable.
	*/
	function settleWithX (p, x) {
	// 2.3.1
	if (x === p && x) {
		settlePromise(p, $rejected, genTypeError($promiseCircularChain));
		return p;
	}

	// 2.3.2
	// 2.3.3
	if (x !== $null && (isFunction(x) || isObject(x))) {
		// 2.3.2.1
		var xthen = genTryCatcher(getThen)(x);

		if (xthen === $tryErr) {
			// 2.3.3.2
			settlePromise(p, $rejected, xthen.e);
			return p;
		}

		if (isFunction(xthen)) {
			if (isLongStackTrace && isYaku(x))
				p._next = x;

			// Fix https://bugs.chromium.org/p/v8/issues/detail?id=4162
			if (isYaku(x))
				settleXthen(p, x, xthen);
			else
				Yaku.nextTick(function () {
					settleXthen(p, x, xthen);
				});
		} else
			// 2.3.3.4
			settlePromise(p, $resolved, x);
	} else
		// 2.3.4
		settlePromise(p, $resolved, x);

	return p;
	}

	/**
	* Try to get a promise's then method.
	* @private
	* @param  {Thenable} x
	* @return {Function}
	*/
	function getThen (x) { return x.then; }

	/**
	* Resolve then with its promise.
	* @private
	* @param  {Yaku} p
	* @param  {Thenable} x
	* @param  {Function} xthen
	*/
	function settleXthen (p, x, xthen) {
	// 2.3.3.3
	var err = genTryCatcher(xthen, x)(function (y) {
		// 2.3.3.3.3
		// 2.3.3.3.1
		x && (x = $null, settleWithX(p, y));
	}, function (r) {
		// 2.3.3.3.3
		// 2.3.3.3.2
		x && (x = $null, settlePromise(p, $rejected, r));
	});

	// 2.3.3.3.4.1
	if (err === $tryErr && x) {
		// 2.3.3.3.4.2
		settlePromise(p, $rejected, err.e);
		x = $null;
	}
	}

	// 27.2.5.5 Promise.prototype [ @@toStringTag ]
	// The initial value of the @@toStringTag property is the String value "Promise".
	// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
	Object.defineProperty(Yaku.prototype, Yaku.Symbol.toStringTag, {
		value: 'Promise',
		writable: false,
		enumerable: false,
		configurable: true
	});

	root.Promise = Yaku;
})();

}

if (!("Promise"in self&&"allSettled"in self.Promise
)) {

// Promise.allSettled
/* global CreateMethodProperty, IterableToList, Promise, Type */
(function () {
	// Based on https://github.com/es-shims/Promise.allSettled/blob/main/implementation.js

	CreateMethodProperty(Promise, 'allSettled', function allSettled (iterable) {
		var C = this;
		if (Type(C) !== 'object') {
			throw new TypeError('`this` value must be an object');
		}

		var arr;
		if (Array.isArray(iterable)) {
			arr = iterable;
		} else {
			try {
				arr = IterableToList(iterable);
			} catch (_error) {
				return Promise.reject(new TypeError('Argument of Promise.allSettled is not iterable'));
			}
		}

		var promises = arr.map(function (promise) {
			var onFulfill = function (value) {
				return { status: 'fulfilled', value: value };
			};
			var onReject = function (reason) {
				return { status: 'rejected', reason: reason };
			};
			var itemPromise = C.resolve(promise);
			try {
				return itemPromise.then(onFulfill, onReject);
			} catch (e) {
				return C.reject(e);
			}
		});

		return C.all(promises);
	});
}());

}

if (!("Promise"in self&&"any"in self.Promise
)) {

// Promise.any
/* global AggregateError, CreateMethodProperty, IterableToList, Promise, Type */
(function () {
	// Based on https://github.com/es-shims/Promise.any/blob/master/implementation.js

	var identity = function (x) {
		return x;
	}

	CreateMethodProperty(Promise, 'any', function any (iterable) {
		var C = this;
		if (Type(C) !== 'object') {
			throw new TypeError('`this` value must be an object');
		}

		var arr;
		if (Array.isArray(iterable)) {
			arr = iterable;
		} else {
			try {
				arr = IterableToList(iterable);
			} catch (_error) {
				return Promise.reject(new TypeError('Argument of Promise.any is not iterable'));
			}
		}

		var thrower = function (value) {
			return C.reject(value);
		};

		var promises = arr.map(function (promise) {
			var itemPromise = C.resolve(promise);
			try {
				return itemPromise.then(thrower, identity);
			} catch (e) {
				return e;
			}
		});

		return C.all(promises).then(function (errors) {
			throw new AggregateError(errors, 'Every promise rejected')
		}, identity);
	});
}());

}

if (!("Promise"in self&&"finally"in self.Promise.prototype
)) {

// Promise.prototype.finally
/* global CreateMethodProperty, IsCallable, SpeciesConstructor, Type, Promise */
(function () {
	// Based on https://github.com/tc39/proposal-promise-finally/blob/master/polyfill.js
	var then = Function.prototype.bind.call(Function.prototype.call, Promise.prototype.then);

	var getPromise = function (C, handler) {
		return new C(function (resolve) {
			resolve(handler());
		});
	};
	// 1. Promise.prototype.finally ( onFinally )
	CreateMethodProperty(Promise.prototype, 'finally', function (onFinally) {
		// 1. Let promise be the this value.
		var promise = this;
		// 2. If Type(promise) is not Object, throw a TypeError exception.
		if (Type(promise) !== 'object') {
			throw new TypeError('Method %PromisePrototype%.finally called on incompatible receiver ' + Object.prototype.toString.call(promise));
		}
		// 3. Let C be ? SpeciesConstructor(promise, %Promise%).
		var C = SpeciesConstructor(promise, Promise);
		// 4. Assert: IsConstructor(C) is true.
		// 5. If IsCallable(onFinally) is false,
		if (IsCallable(onFinally) === false) {
			// a. Let thenFinally be onFinally.
			var thenFinally = onFinally;
			// b. Let catchFinally be onFinally.
			var catchFinally = onFinally;
			// 6. Else,
		} else {
			// a. Let thenFinally be a new built-in function object as defined in ThenFinally Function.
			thenFinally = function (x) {
				return then(getPromise(C, onFinally), function () {
					return x;
				});
			};
			// b. Let catchFinally be a new built-in function object as defined in CatchFinally Function.
			catchFinally = function (e) {
				return then(getPromise(C, onFinally), function () {
					throw e;
				});
			};
			// c. Set thenFinally and catchFinally's [[Constructor]] internal slots to C.
			// d. Set thenFinally and catchFinally's [[OnFinally]] internal slots to onFinally.
		}
		// 7. Return ? Invoke(promise, "then", « thenFinally, catchFinally »).
		return then(promise, thenFinally, catchFinally);
	});
}());

}

if (!("Set"in self&&function(){try{var e=new self.Set([1,2])
return 0===self.Set.length&&2===e.size&&"Symbol"in self&&"iterator"in self.Symbol&&"function"==typeof e[self.Symbol.iterator]&&"toStringTag"in self.Symbol&&void 0!==e[self.Symbol.toStringTag]}catch(e){return!1}}()
)) {

// Set
/* global CreateIterResultObject, CreateMethodProperty, GetIterator, IsCallable, IteratorClose, IteratorStep, IteratorValue, OrdinaryCreateFromConstructor, SameValueZero, Symbol */
(function (global) {
	// Deleted set items mess with iterator pointers, so rather than removing them mark them as deleted. Can't use undefined or null since those both valid keys so use a private symbol.
	var undefMarker = Symbol('undef');
	// 23.2.1.1. Set ( [ iterable ] )
	var Set = function Set(/* iterable */) {
		// 1. If NewTarget is undefined, throw a TypeError exception.
		if (!(this instanceof Set)) {
			throw new TypeError('Constructor Set requires "new"');
		}
		// 2. Let set be ? OrdinaryCreateFromConstructor(NewTarget, "%SetPrototype%", « [[SetData]] »).
		var set = OrdinaryCreateFromConstructor(this, Set.prototype, {
			_values: [],
			_size: 0,
			_es6Set: true
		});

		// 3. Set set.[[SetData]] to a new empty List.
		// Polyfill.io - This step was done as part of step two.

		// 4. If iterable is not present, let iterable be undefined.
		var iterable = arguments.length > 0 ? arguments[0] : undefined;

		// 5. If iterable is either undefined or null, return set.
		if (iterable === null || iterable === undefined) {
			return set;
		}

		// 6. Let adder be ? Get(set, "add").
		var adder = set.add;
		// 7. If IsCallable(adder) is false, throw a TypeError exception.
		if (!IsCallable(adder)) {
			throw new TypeError("Set.prototype.add is not a function");
		}

		try {
			// 8. Let iteratorRecord be ? GetIterator(iterable).
			var iteratorRecord = GetIterator(iterable);
			// 9. Repeat,
			// eslint-disable-next-line no-constant-condition
			while (true) {
				// a. Let next be ? IteratorStep(iteratorRecord).
				var next = IteratorStep(iteratorRecord);
				// b. If next is false, return set.
				if (next === false) {
					return set;
				}
				// c. Let nextValue be ? IteratorValue(next).
				var nextValue = IteratorValue(next);
				// d. Let status be Call(adder, set, « nextValue.[[Value]] »).
				try {
					adder.call(set, nextValue);
				} catch (e) {
					// e. If status is an abrupt completion, return ? IteratorClose(iteratorRecord, status).
					return IteratorClose(iteratorRecord, e);
				}
			}
		} catch (e) {
			// Polyfill.io - For user agents which do not have iteration methods on argument objects or arrays, we can special case those.
			if (Array.isArray(iterable) ||
				Object.prototype.toString.call(iterable) === '[object Arguments]') {
				var index;
				var length = iterable.length;
				for (index = 0; index < length; index++) {
					adder.call(set, iterable[index]);
				}
			} else {
				throw (e);
			}
		}
		return set;
	};

	// 23.2.2.1. Set.prototype
	// The initial value of Set.prototype is the intrinsic %SetPrototype% object.
	// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
	Object.defineProperty(Set, 'prototype', {
		configurable: false,
		enumerable: false,
		writable: false,
		value: {}
	});

	// 23.2.2.2 get Set [ @@species ]
	Object.defineProperty(Set, Symbol.species, {
		configurable: true,
		enumerable: false,
		get: function () {
			// 1. Return the this value.
			return this;
		},
		set: undefined
	});

	// 23.2.3.1. Set.prototype.add ( value )
	CreateMethodProperty(Set.prototype, 'add', function add(value) {
			// 1. Let S be the this value.
			var S = this;
			// 2. If Type(S) is not Object, throw a TypeError exception.
			if (typeof S !== 'object') {
				throw new TypeError('Method Set.prototype.add called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
			if (S._es6Set !== true) {
				throw new TypeError('Method Set.prototype.add called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 4. Let entries be the List that is S.[[SetData]].
			var entries = S._values;
			// 5. For each e that is an element of entries, do
			for (var i = 0; i < entries.length; i++) {
				var e = entries[i];
				// a. If e is not empty and SameValueZero(e, value) is true, then
				if (e !== undefMarker && SameValueZero(e, value)) {
					// i. Return S.
					return S;
				}
			}
			// 6. If value is -0, let value be +0.
			if (value === 0 && 1/value === -Infinity) {
				value = 0;
			}
			// 7. Append value as the last element of entries.
			S._values.push(value);

			this._size = ++this._size;
			// 8. Return S.
			return S;
		});

	// 23.2.3.2. Set.prototype.clear ( )
	CreateMethodProperty(Set.prototype, 'clear', function clear() {
			// 1. Let S be the this value.
			var S = this;
			// 2. If Type(S) is not Object, throw a TypeError exception.
			if (typeof S !== 'object') {
				throw new TypeError('Method Set.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
			if (S._es6Set !== true) {
				throw new TypeError('Method Set.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 4. Let entries be the List that is S.[[SetData]].
			var entries = S._values;
			// 5. For each e that is an element of entries, do
			for (var i = 0; i < entries.length; i++) {
				// a. Replace the element of entries whose value is e with an element whose value is empty.
				entries[i] = undefMarker;
			}
			this._size = 0;
			// 6. Return undefined.
			return undefined;
		});

	// 23.2.3.3. Set.prototype.constructor
	CreateMethodProperty(Set.prototype, 'constructor', Set);

	// 23.2.3.4. Set.prototype.delete ( value )
	CreateMethodProperty(Set.prototype, 'delete', function (value) {
			// 1. Let S be the this value.
			var S = this;
			// 2. If Type(S) is not Object, throw a TypeError exception.
			if (typeof S !== 'object') {
				throw new TypeError('Method Set.prototype.delete called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
			if (S._es6Set !== true) {
				throw new TypeError('Method Set.prototype.delete called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 4. Let entries be the List that is S.[[SetData]].
			var entries = S._values;
			// 5. For each e that is an element of entries, do
			for (var i = 0; i < entries.length; i++) {
				var e = entries[i];
				// a. If e is not empty and SameValueZero(e, value) is true, then
				if (e !== undefMarker && SameValueZero(e, value)) {
					// i. Replace the element of entries whose value is e with an element whose value is empty.
					entries[i] = undefMarker;

					this._size = --this._size;
					// ii. Return true.
					return true;
				}
			}
			// 6. Return false.
			return false;
		}
	);

	// 23.2.3.5. Set.prototype.entries ( )
	CreateMethodProperty(Set.prototype, 'entries', function entries() {
			// 1. Let S be the this value.
			var S = this;
			// 2. Return ? CreateSetIterator(S, "key+value").
			return CreateSetIterator(S, 'key+value');
		}
	);

	// 23.2.3.6. Set.prototype.forEach ( callbackfn [ , thisArg ] )
	CreateMethodProperty(Set.prototype, 'forEach', function forEach(callbackFn /*[ , thisArg ]*/) {
			// 1. Let S be the this value.
			var S = this;
			// 2. If Type(S) is not Object, throw a TypeError exception.
			if (typeof S !== 'object') {
				throw new TypeError('Method Set.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
			if (S._es6Set !== true) {
				throw new TypeError('Method Set.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 4. If IsCallable(callbackfn) is false, throw a TypeError exception.
			if (!IsCallable(callbackFn)) {
				throw new TypeError(Object.prototype.toString.call(callbackFn) + ' is not a function.');
			}
			// 5. If thisArg is present, let T be thisArg; else let T be undefined.
			if (arguments[1]) {
				var T = arguments[1];
			}
			// 6. Let entries be the List that is S.[[SetData]].
			var entries = S._values;
			// 7. For each e that is an element of entries, in original insertion order, do
			for (var i = 0; i < entries.length; i++) {
				var e = entries[i];
				// a. If e is not empty, then
				if (e !== undefMarker) {
					// i. Perform ? Call(callbackfn, T, « e, e, S »).
					callbackFn.call(T, e, e, S);
				}
			}
			// 8. Return undefined.
			return undefined;
		}
	);

	// 23.2.3.7. Set.prototype.has ( value )
	CreateMethodProperty(Set.prototype, 'has', function has(value) {
			// 1. Let S be the this value.
			var S = this;
			// 2. If Type(S) is not Object, throw a TypeError exception.
			if (typeof S !== 'object') {
				throw new TypeError('Method Set.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
			if (S._es6Set !== true) {
				throw new TypeError('Method Set.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 4. Let entries be the List that is S.[[SetData]].
			var entries = S._values;
			// 5. For each e that is an element of entries, do
			for (var i = 0; i < entries.length; i++) {
				var e = entries[i];
				// a. If e is not empty and SameValueZero(e, value) is true, return true.
				if (e !== undefMarker && SameValueZero(e, value)) {
					return true;
				}
			}
			// 6. Return false.
			return false;
		}
	);

	// Polyfill.io - We need to define Set.prototype.values before Set.prototype.keys because keys is a reference to values.
	// 23.2.3.10. Set.prototype.values()
	var values = function values() {
		// 1. Let S be the this value.
		var S = this;
		// 2. Return ? CreateSetIterator(S, "value").
		return CreateSetIterator(S, "value");
	};
	CreateMethodProperty(Set.prototype, 'values', values);

	// 23.2.3.8 Set.prototype.keys ( )
	// The initial value of the keys property is the same function object as the initial value of the values property.
	CreateMethodProperty(Set.prototype, 'keys', values);

	// 23.2.3.9. get Set.prototype.size
	Object.defineProperty(Set.prototype, 'size', {
		configurable: true,
		enumerable: false,
		get: function () {
			// 1. Let S be the this value.
			var S = this;
			// 2. If Type(S) is not Object, throw a TypeError exception.
			if (typeof S !== 'object') {
				throw new TypeError('Method Set.prototype.size called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
			if (S._es6Set !== true) {
				throw new TypeError('Method Set.prototype.size called on incompatible receiver ' + Object.prototype.toString.call(S));
			}
			// 4. Let entries be the List that is S.[[SetData]].
			var entries = S._values;
			// 5. Let count be 0.
			var count = 0;
			// 6. For each e that is an element of entries, do
			for (var i = 0; i < entries.length; i++) {
				var e = entries[i];
				// a. If e is not empty, set count to count+1.
				if (e !== undefMarker) {
					count = count + 1;
				}
			}
			// 7. Return count.
			return count;
		},
		set: undefined
	});

	// 23.2.3.11. Set.prototype [ @@iterator ] ( )
	// The initial value of the @@iterator property is the same function object as the initial value of the values property.
	CreateMethodProperty(Set.prototype, Symbol.iterator, values);

	// 23.2.3.12. Set.prototype [ @@toStringTag ]
	// The initial value of the @@toStringTag property is the String value "Set".
	// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
	Object.defineProperty(Set.prototype, Symbol.toStringTag, {
		value: 'Set',
		writable: false,
		enumerable: false,
		configurable: true
	});

	// Polyfill.io - Safari 8 implements Set.name but as a non-configurable property, which means it would throw an error if we try and configure it here.
	if (!('name' in Set)) {
		// 19.2.4.2 name
		Object.defineProperty(Set, 'name', {
			configurable: true,
			enumerable: false,
			writable: false,
			value: 'Set'
		});
	}

	// 23.2.5.1. CreateSetIterator ( set, kind )
	function CreateSetIterator(set, kind) {
		// 1. If Type(set) is not Object, throw a TypeError exception.
		if (typeof set !== 'object') {
			throw new TypeError('createSetIterator called on incompatible receiver ' + Object.prototype.toString.call(set));
		}
		// 2. If set does not have a [[SetData]] internal slot, throw a TypeError exception.
		if (set._es6Set !== true) {
			throw new TypeError('createSetIterator called on incompatible receiver ' + Object.prototype.toString.call(set));
		}
		// 3. Let iterator be ObjectCreate(%SetIteratorPrototype%, « [[IteratedSet]], [[SetNextIndex]], [[SetIterationKind]] »).
		var iterator = Object.create(SetIteratorPrototype);
		// 4. Set iterator.[[IteratedSet]] to set.
		Object.defineProperty(iterator, '[[IteratedSet]]', {
			configurable: true,
			enumerable: false,
			writable: true,
			value: set
		});
		// 5. Set iterator.[[SetNextIndex]] to 0.
		Object.defineProperty(iterator, '[[SetNextIndex]]', {
			configurable: true,
			enumerable: false,
			writable: true,
			value: 0
		});
		// 6. Set iterator.[[SetIterationKind]] to kind.
		Object.defineProperty(iterator, '[[SetIterationKind]]', {
			configurable: true,
			enumerable: false,
			writable: true,
			value: kind
		});
		// 7. Return iterator.
		return iterator;
	}

	// 23.2.5.2. The %SetIteratorPrototype% Object
	var SetIteratorPrototype = {};
	//Polyfill.io - We add this property to help us identify what is a set iterator.
	Object.defineProperty(SetIteratorPrototype, 'isSetIterator', {
		configurable: false,
		enumerable: false,
		writable: false,
		value: true
	});

	// 23.2.5.2.1. %SetIteratorPrototype%.next ( )
	CreateMethodProperty(SetIteratorPrototype, 'next', function next() {
		// 1. Let O be the this value.
		var O = this;
		// 2. If Type(O) is not Object, throw a TypeError exception.
		if (typeof O !== 'object') {
			throw new TypeError('Method %SetIteratorPrototype%.next called on incompatible receiver ' + Object.prototype.toString.call(O));
		}
		// 3. If O does not have all of the internal slots of a Set Iterator Instance (23.2.5.3), throw a TypeError exception.
		if (!O.isSetIterator) {
			throw new TypeError('Method %SetIteratorPrototype%.next called on incompatible receiver ' + Object.prototype.toString.call(O));
		}
		// 4. Let s be O.[[IteratedSet]].
		var s = O['[[IteratedSet]]'];
		// 5. Let index be O.[[SetNextIndex]].
		var index = O['[[SetNextIndex]]'];
		// 6. Let itemKind be O.[[SetIterationKind]].
		var itemKind = O['[[SetIterationKind]]'];
		// 7. If s is undefined, return CreateIterResultObject(undefined, true).
		if (s === undefined) {
			return CreateIterResultObject(undefined, true);
		}
		// 8. Assert: s has a [[SetData]] internal slot.
		if (!s._es6Set) {
			throw new Error(Object.prototype.toString.call(s) + ' does not have [[SetData]] internal slot.');
		}
		// 9. Let entries be the List that is s.[[SetData]].
		var entries = s._values;
		// 10. Let numEntries be the number of elements of entries.
		var numEntries = entries.length;
		// 11. NOTE: numEntries must be redetermined each time this method is evaluated.
		// 12. Repeat, while index is less than numEntries,
		while (index < numEntries) {
			// a. Let e be entries[index].
			var e = entries[index];
			// b. Set index to index+1.
			index = index + 1;
			// c. Set O.[[SetNextIndex]] to index.
			O['[[SetNextIndex]]'] = index;
			// d. If e is not empty, then
			if (e !== undefMarker) {
				// i. If itemKind is "key+value", then
				if (itemKind === 'key+value') {
					// 1. Return CreateIterResultObject(CreateArrayFromList(« e, e »), false).
					return CreateIterResultObject([e, e], false);
				}
				// ii. Return CreateIterResultObject(e, false).
				return CreateIterResultObject(e, false);
			}
		}
		// 13. Set O.[[IteratedSet]] to undefined.
		O['[[IteratedSet]]'] = undefined;
		// 14. Return CreateIterResultObject(undefined, true).
		return CreateIterResultObject(undefined, true);
	});

	// 23.2.5.2.2. %SetIteratorPrototype% [ @@toStringTag ]
	// The initial value of the @@toStringTag property is the String value "Set Iterator".
	// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
	Object.defineProperty(SetIteratorPrototype, Symbol.toStringTag, {
		value: 'Set Iterator',
		writable: false,
		enumerable: false,
		configurable: true
	});

	CreateMethodProperty(SetIteratorPrototype, Symbol.iterator, function iterator() {
			return this;
		}
	);

	// Export the object
	CreateMethodProperty(global, 'Set', Set);
}(self));

}

if (!("from"in Array&&function(){try{return Array.from({length:-1/0}),"a"===Array.from(new self.Set(["a"]))[0]&&"a"===Array.from(new self.Map([["a","one"]]))[0][0]}catch(r){return!1}}()
)) {

// Array.from
/* globals
	IsCallable, GetMethod, Symbol, IsConstructor, Construct, ArrayCreate, GetIterator, IteratorClose,
	ToString, IteratorStep, IteratorValue, Call, CreateDataPropertyOrThrow, ToObject, ToLength, Get, CreateMethodProperty
*/
(function () {
	var toString = Object.prototype.toString;
	var stringMatch = String.prototype.match;
	// A cross-realm friendly way to detect if a value is a String object or literal.
	function isString(value) {
		if (typeof value === 'string') { return true; }
		if (typeof value !== 'object') { return false; }
		return toString.call(value) === '[object String]';
	}

	// 22.1.2.1. Array.from ( items [ , mapfn [ , thisArg ] ] )
	CreateMethodProperty(Array, 'from', function from(items /* [ , mapfn [ , thisArg ] ] */) { // eslint-disable-line no-undef
		// 1. Let C be the this value.
		var C = this;
		// 2. If mapfn is undefined, let mapping be false.
		var mapfn = arguments.length > 1 ? arguments[1] : undefined;
		if (mapfn === undefined) {
			var mapping = false;
			// 3. Else,
		} else {
			// a. If IsCallable(mapfn) is false, throw a TypeError exception.
			if (IsCallable(mapfn) === false) {
				throw new TypeError(Object.prototype.toString.call(mapfn) + ' is not a function.');
			}
			// b. If thisArg is present, let T be thisArg; else let T be undefined.
			var thisArg = arguments.length > 2 ? arguments[2] : undefined;
			if (thisArg !== undefined) {
				var T = thisArg;
			} else {
				T = undefined;
			}
			// c. Let mapping be true.
			mapping = true;

		}
		// 4. Let usingIterator be ? GetMethod(items, @@iterator).
		var usingIterator = GetMethod(items, Symbol.iterator);
		// 5. If usingIterator is not undefined, then
		if (usingIterator !== undefined) {
			// a. If IsConstructor(C) is true, then
			if (IsConstructor(C)) {
				// i. Let A be ? Construct(C).
				var A = Construct(C);
				// b. Else,
			} else {
				// i. Let A be ! ArrayCreate(0).
				A = ArrayCreate(0);
			}
			// c. Let iteratorRecord be ? GetIterator(items, usingIterator).
			var iteratorRecord = GetIterator(items, usingIterator);
			// d. Let k be 0.
			var k = 0;
			// e. Repeat,
			// eslint-disable-next-line no-constant-condition
			while (true) {
				// i. If k ≥ 2^53-1, then
				if (k >= (Math.pow(2, 53) - 1)) {
					// 1. Let error be Completion{[[Type]]: throw, [[Value]]: a newly created TypeError object, [[Target]]: empty}.
					var error = new TypeError('Iteration count can not be greater than or equal 9007199254740991.');
					// 2. Return ? IteratorClose(iteratorRecord, error).
					return IteratorClose(iteratorRecord, error);
				}
				// ii. Let Pk be ! ToString(k).
				var Pk = ToString(k);
				// iii. Let next be ? IteratorStep(iteratorRecord).
				var next = IteratorStep(iteratorRecord);
				// iv. If next is false, then
				if (next === false) {
					// 1. Perform ? Set(A, "length", k, true).
					A.length = k;
					// 2. Return A.
					return A;
				}
				// v. Let nextValue be ? IteratorValue(next).
				var nextValue = IteratorValue(next);
				// vi. If mapping is true, then
				if (mapping) {
					try {
						// Polyfill.io - The try catch accounts for step 2.
						// 1. Let mappedValue be Call(mapfn, T, « nextValue, k »).
						var mappedValue = Call(mapfn, T, [nextValue, k]);
						// 2. If mappedValue is an abrupt completion, return ? IteratorClose(iteratorRecord, mappedValue).
						// 3. Let mappedValue be mappedValue.[[Value]].
					} catch (e) {
						return IteratorClose(iteratorRecord, e);
					}

					// vii. Else, let mappedValue be nextValue.
				} else {
					mappedValue = nextValue;
				}
				try {
					// Polyfill.io - The try catch accounts for step ix.
					// viii. Let defineStatus be CreateDataPropertyOrThrow(A, Pk, mappedValue).
					CreateDataPropertyOrThrow(A, Pk, mappedValue);
					// ix. If defineStatus is an abrupt completion, return ? IteratorClose(iteratorRecord, defineStatus).
				} catch (e) {
					return IteratorClose(iteratorRecord, e);
				}
				// x. Increase k by 1.
				k = k + 1;
			}
		}
		// 6. NOTE: items is not an Iterable so assume it is an array-like object.
		// 7. Let arrayLike be ! ToObject(items).
		// Polyfill.io - For Strings we need to split astral symbols into surrogate pairs.
		if (isString(items)) {
			var arrayLike = stringMatch.call(items, /[\uD800-\uDBFF][\uDC00-\uDFFF]?|[^\uD800-\uDFFF]|./g) || [];
		} else {
			arrayLike = ToObject(items);
		}
		// 8. Let len be ? ToLength(? Get(arrayLike, "length")).
		var len = ToLength(Get(arrayLike, "length"));
		// 9. If IsConstructor(C) is true, then
		if (IsConstructor(C)) {
			// a. Let A be ? Construct(C, « len »).
			A = Construct(C, [len]);
			// 10. Else,
		} else {
			// a. Let A be ? ArrayCreate(len).
			A = ArrayCreate(len);
		}
		// 11. Let k be 0.
		k = 0;
		// 12. Repeat, while k < len
		while (k < len) {
			// a. Let Pk be ! ToString(k).
			Pk = ToString(k);
			// b. Let kValue be ? Get(arrayLike, Pk).
			var kValue = Get(arrayLike, Pk);
			// c. If mapping is true, then
			if (mapping === true) {
				// i. Let mappedValue be ? Call(mapfn, T, « kValue, k »).
				mappedValue = Call(mapfn, T, [kValue, k]);
				// d. Else, let mappedValue be kValue.
			} else {
				mappedValue = kValue;
			}
			// e. Perform ? CreateDataPropertyOrThrow(A, Pk, mappedValue).
			CreateDataPropertyOrThrow(A, Pk, mappedValue);
			// f. Increase k by 1.
			k = k + 1;
		}
		// 13. Perform ? Set(A, "length", len, true).
		A.length = len;
		// 14. Return A.
		return A;
	});
}());

}

if (!("Symbol"in self&&"iterator"in self.Symbol&&!!String.prototype[self.Symbol.iterator]
)) {

// String.prototype.@@iterator
/* global CreateMethodProperty, RequireObjectCoercible, ToString, StringIterator, Symbol */
// 21.1.3.29. String.prototype [ @@iterator ] ( )
CreateMethodProperty(String.prototype, Symbol.iterator, function () {
	// 1. Let O be ? RequireObjectCoercible(this value).
	var O = RequireObjectCoercible(this);
	// 2. Let S be ? ToString(O).
	var S = ToString(O);
	// 3. Return CreateStringIterator(S).
	// TODO: Add CreateStringIterator.
	return new StringIterator(S);
});

}

if (!("Symbol"in self&&"unscopables"in self.Symbol
)) {

// Symbol.unscopables
/* global Symbol */
Object.defineProperty(Symbol, 'unscopables', { value: Symbol('unscopables') });

}

if (!("Symbol"in self&&"toStringTag"in self.Symbol&&"Int8Array"in self&&Object.getOwnPropertyDescriptor("__proto__"in self.Int8Array.prototype&&self.Int8Array.prototype.__proto__!==Object.prototype&&self.Int8Array.prototype.__proto__||self.Int8Array.prototype,self.Symbol.toStringTag)
)) {

// TypedArray.prototype.@@toStringTag
/* global Symbol, Type */
// 23.2.3.33 get %TypedArray%.prototype [ @@toStringTag ]
(function () {
	var supportsDefiningFunctionName = (function () {
		var fn = function () {};
		try {
			Object.defineProperty(fn, 'name', {
				value: 'test'
			});
			return true;
		} catch (ignore) {
			return false;
		}
	})();

	function _get() {
		// 1. Let O be the this value.
		var O = this;
		// 2. If Type(O) is not Object, return undefined.
		if (Type(O) !== 'object') {
			return undefined;
		}
		// 3. If O does not have a [[TypedArrayName]] internal slot, return undefined.
		if (!('_name' in O)) {
			return undefined;
		}
		// 4. Let name be O.[[TypedArrayName]].
		var name = O._name;
		// 5. Assert: Type(name) is String.
		if (Type(name) !== 'string') {
			throw TypeError();
		}
		// 6. Return name.
		return name;
	}

	if (supportsDefiningFunctionName) {
		Object.defineProperty(_get, 'name', {
			value: 'get [Symbol.toStringTag]',
			writable: false,
			enumerable: false,
			configurable: true
		});
	}

	function defineToStringTag(proto) {
		Object.defineProperty(proto, Symbol.toStringTag, {
			get: _get,
			enumerable: false,
			configurable: true
		});
	}

	function defineNameInternalSlot(proto, name) {
		Object.defineProperty(proto, '_name', {
			value: name,
			writable: false,
			enumerable: false,
			configurable: false
		});
	}

	defineNameInternalSlot(self.Int8Array.prototype, 'Int8Array');
	defineNameInternalSlot(self.Uint8Array.prototype, 'Uint8Array');
	defineNameInternalSlot(self.Uint8ClampedArray.prototype, 'Uint8ClampedArray');
	defineNameInternalSlot(self.Int16Array.prototype, 'Int16Array');
	defineNameInternalSlot(self.Uint16Array.prototype, 'Uint16Array');
	defineNameInternalSlot(self.Int32Array.prototype, 'Int32Array');
	defineNameInternalSlot(self.Uint32Array.prototype, 'Uint32Array');
	defineNameInternalSlot(self.Float32Array.prototype, 'Float32Array');
	defineNameInternalSlot(self.Float64Array.prototype, 'Float64Array');

	// IE11, and potentially other browsers, have `Int8Array.prototype` inherit directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		defineToStringTag(self.Int8Array.prototype.__proto__);
	} else {
		defineToStringTag(self.Int8Array.prototype);
		defineToStringTag(self.Uint8Array.prototype);
		defineToStringTag(self.Uint8ClampedArray.prototype);
		defineToStringTag(self.Int16Array.prototype);
		defineToStringTag(self.Uint16Array.prototype);
		defineToStringTag(self.Int32Array.prototype);
		defineToStringTag(self.Uint32Array.prototype);
		defineToStringTag(self.Float32Array.prototype);
		defineToStringTag(self.Float64Array.prototype);
	}
})();

}

if (!("Int8Array"in self&&"at"in self.Int8Array.prototype
)) {

// TypedArray.prototype.at
/* global CreateMethodProperty, Get, ToIntegerOrInfinity, ToString */
// 23.2.3.1. %TypedArray%.prototype.at ( index )
(function () {
	function at(index) {
		// 1. Let O be the this value.
		var O = this;
		// 2. Perform ? ValidateTypedArray(O).
		// TODO: Add ValidateTypedArray
		// 3. Let len be O.[[ArrayLength]].
		var len = O.length;
		// 4. Let relativeIndex be ? ToIntegerOrInfinity(index).
		var relativeIndex = ToIntegerOrInfinity(index);
		// 5. If relativeIndex ≥ 0, then
		// 5.a. Let k be relativeIndex.
		// 6. Else,
		// 6.a. Let k be len + relativeIndex.
		var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
		// 7. If k < 0 or k ≥ len, return undefined.
		if (k < 0 || k >= len) return undefined;
		// 8. Return ! Get(O, ! ToString(𝔽(k))).
		return Get(O, ToString(k));
	}

	// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		CreateMethodProperty(self.Int8Array.prototype.__proto__, 'at', at);
	} else {
		CreateMethodProperty(self.Int8Array.prototype, 'at', at);
		CreateMethodProperty(self.Uint8Array.prototype, 'at', at);
		CreateMethodProperty(self.Uint8ClampedArray.prototype, 'at', at);
		CreateMethodProperty(self.Int16Array.prototype, 'at', at);
		CreateMethodProperty(self.Uint16Array.prototype, 'at', at);
		CreateMethodProperty(self.Int32Array.prototype, 'at', at);
		CreateMethodProperty(self.Uint32Array.prototype, 'at', at);
		CreateMethodProperty(self.Float32Array.prototype, 'at', at);
		CreateMethodProperty(self.Float64Array.prototype, 'at', at);
	}
})();

}

if (!("Int8Array"in self&&"entries"in self.Int8Array.prototype
)) {

// TypedArray.prototype.entries
/* global CreateMethodProperty, ArrayIterator */
// 23.2.3.7 %TypedArray%.prototype.entries ( )
(function () {
	function entries() {
		// 1. Let O be the this value.
		var O = this;
		// 2. Perform ? ValidateTypedArray(O).
		// TODO: Add ValidateTypedArray
		// 3. Return CreateArrayIterator(O, key).
		// TODO: Add CreateArrayIterator
		return new ArrayIterator(O, 'key+value');
	}

	// use "Int8Array" as a proxy for support of "TypedArray" subclasses
	var fnName = 'entries'
	// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		CreateMethodProperty(self.Int8Array.prototype.__proto__, fnName, entries);
	} else {
		CreateMethodProperty(self.Int8Array.prototype, fnName, entries);
		CreateMethodProperty(self.Uint8Array.prototype, fnName, entries);
		CreateMethodProperty(self.Uint8ClampedArray.prototype, fnName, entries);
		CreateMethodProperty(self.Int16Array.prototype, fnName, entries);
		CreateMethodProperty(self.Uint16Array.prototype, fnName, entries);
		CreateMethodProperty(self.Int32Array.prototype, fnName, entries);
		CreateMethodProperty(self.Uint32Array.prototype, fnName, entries);
		CreateMethodProperty(self.Float32Array.prototype, fnName, entries);
		CreateMethodProperty(self.Float64Array.prototype, fnName, entries);
	}
})();

}

if (!("Int8Array"in self&&"findLast"in self.Int8Array.prototype
)) {

// TypedArray.prototype.findLast
/* global Call, CreateMethodProperty, Get, IsCallable, ToBoolean, ToString */
// 23.2.3.13 %TypedArray%.prototype.findLast ( predicate [ , thisArg ] )
(function () {
	function findLast(predicate /*[ , thisArg ]*/) {
		// 1. Let O be the this value.
		var O = this;
		// 2. Perform ? ValidateTypedArray(O).
		// TODO: Add ValidateTypedArray
		// 3. Let len be O.[[ArrayLength]].
		var len = O.length;
		// 4. If IsCallable(predicate) is false, throw a TypeError exception.
		if (!IsCallable(predicate)) throw TypeError();
		// 5. Let k be len - 1.
		var k = len - 1;
		// 6. Repeat, while k ≥ 0,
		while (k >= 0) {
			// a. Let Pk be ! ToString(𝔽(k)).
			var Pk = ToString(k);
			// b. Let kValue be ! Get(O, Pk).
			var kValue = Get(O, Pk);
			// c. Let testResult be ToBoolean(? Call(predicate, thisArg, « kValue, 𝔽(k), O »)).
			var testResult = ToBoolean(Call(predicate, arguments.length > 1 ? arguments[1] : undefined, [kValue, k, O]))
			// d. If testResult is true, return kValue.
			if (testResult) {
				return kValue;
			}
			// e. Set k to k - 1.
			k = k - 1;
		}
		// 7. Return undefined.
		return undefined;
	}

	var fnName = 'findLast'
	// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		CreateMethodProperty(self.Int8Array.prototype.__proto__, fnName, findLast);
	} else {
		CreateMethodProperty(self.Int8Array.prototype, fnName, findLast);
		CreateMethodProperty(self.Uint8Array.prototype, fnName, findLast);
		CreateMethodProperty(self.Uint8ClampedArray.prototype, fnName, findLast);
		CreateMethodProperty(self.Int16Array.prototype, fnName, findLast);
		CreateMethodProperty(self.Uint16Array.prototype, fnName, findLast);
		CreateMethodProperty(self.Int32Array.prototype, fnName, findLast);
		CreateMethodProperty(self.Uint32Array.prototype, fnName, findLast);
		CreateMethodProperty(self.Float32Array.prototype, fnName, findLast);
		CreateMethodProperty(self.Float64Array.prototype, fnName, findLast);
	}
})();

}

if (!("Int8Array"in self&&"findLastIndex"in self.Int8Array.prototype
)) {

// TypedArray.prototype.findLastIndex
/* global Call, CreateMethodProperty, Get, IsCallable, ToBoolean, ToString */
// 23.2.3.14 %TypedArray%.prototype.findLastIndex ( predicate [ , thisArg ] )
(function () {
	function findLastIndex(predicate /*[ , thisArg ]*/) {
		// 1. Let O be the this value.
		var O = this;
		// 2. Perform ? ValidateTypedArray(O).
		// TODO: Add ValidateTypedArray
		// 3. Let len be O.[[ArrayLength]].
		var len = O.length;
		// 4. If IsCallable(predicate) is false, throw a TypeError exception.
		if (!IsCallable(predicate)) throw TypeError();
		// 5. Let k be len - 1.
		var k = len - 1;
		// 6. Repeat, while k ≥ 0,
		while (k >= 0) {
			// a. Let Pk be ! ToString(𝔽(k)).
			var Pk = ToString(k);
			// b. Let kValue be ! Get(O, Pk).
			var kValue = Get(O, Pk);
			// c. Let testResult be ToBoolean(? Call(predicate, thisArg, « kValue, 𝔽(k), O »)).
			var testResult = ToBoolean(Call(predicate, arguments.length > 1 ? arguments[1] : undefined, [kValue, k, O]))
			// d. If testResult is true, return 𝔽(k).
			if (testResult) {
				return k;
			}
			// e. Set k to k - 1.
			k = k - 1;
		}
		// 7. Return -1𝔽.
		return -1;
	}

	var fnName = 'findLastIndex'
	// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		CreateMethodProperty(self.Int8Array.prototype.__proto__, fnName, findLastIndex);
	} else {
		CreateMethodProperty(self.Int8Array.prototype, fnName, findLastIndex);
		CreateMethodProperty(self.Uint8Array.prototype, fnName, findLastIndex);
		CreateMethodProperty(self.Uint8ClampedArray.prototype, fnName, findLastIndex);
		CreateMethodProperty(self.Int16Array.prototype, fnName, findLastIndex);
		CreateMethodProperty(self.Uint16Array.prototype, fnName, findLastIndex);
		CreateMethodProperty(self.Int32Array.prototype, fnName, findLastIndex);
		CreateMethodProperty(self.Uint32Array.prototype, fnName, findLastIndex);
		CreateMethodProperty(self.Float32Array.prototype, fnName, findLastIndex);
		CreateMethodProperty(self.Float64Array.prototype, fnName, findLastIndex);
	}
})();

}

if (!("Int8Array"in self&&"keys"in self.Int8Array.prototype
)) {

// TypedArray.prototype.keys
/* global CreateMethodProperty, ArrayIterator */
// 23.2.3.19 %TypedArray%.prototype.keys ( )
(function () {
	function keys() {
		// 1. Let O be the this value.
		var O = this;
		// 2. Perform ? ValidateTypedArray(O).
		// TODO: Add ValidateTypedArray
		// 3. Return CreateArrayIterator(O, key).
		// TODO: Add CreateArrayIterator
		return new ArrayIterator(O, 'key');
	}

	// use "Int8Array" as a proxy for support of "TypedArray" subclasses
	var fnName = 'keys'
	// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		CreateMethodProperty(self.Int8Array.prototype.__proto__, fnName, keys);
	} else {
		CreateMethodProperty(self.Int8Array.prototype, fnName, keys);
		CreateMethodProperty(self.Uint8Array.prototype, fnName, keys);
		CreateMethodProperty(self.Uint8ClampedArray.prototype, fnName, keys);
		CreateMethodProperty(self.Int16Array.prototype, fnName, keys);
		CreateMethodProperty(self.Uint16Array.prototype, fnName, keys);
		CreateMethodProperty(self.Int32Array.prototype, fnName, keys);
		CreateMethodProperty(self.Uint32Array.prototype, fnName, keys);
		CreateMethodProperty(self.Float32Array.prototype, fnName, keys);
		CreateMethodProperty(self.Float64Array.prototype, fnName, keys);
	}
})();

}

if (!("Int8Array"in self&&"sort"in self.Int8Array.prototype
)) {

// TypedArray.prototype.sort
/* global CreateMethodProperty, IsCallable */
// 23.2.3.29 %TypedArray%.prototype.sort ( comparefn )
(function () {
	function sort(comparefn) {
		// 1. If comparefn is not undefined and IsCallable(comparefn) is false, throw a TypeError exception.
		if (comparefn !== undefined && IsCallable(comparefn) === false) {
			throw new TypeError(
				"The comparison function must be either a function or undefined"
			);
		}
		// 2. Let obj be the this value.
		var obj = this;
		// 3. Perform ? ValidateTypedArray(obj).
		// TODO: Add ValidateTypedArray
		// 4. Let len be obj.[[ArrayLength]].
		var len = obj.length;

		// Polyfill.io - This is based on https://github.com/inexorabletash/polyfill/blob/716a3f36ca10fad032083014faf1a47c638e2502/typedarray.js#L848-L858
		// 5. NOTE: The following closure performs a numeric comparison rather than the string comparison used in 23.1.3.30.
		// 6. Let SortCompare be a new Abstract Closure with parameters (x, y) that captures comparefn and performs the following steps when called:
		// a. Return ? CompareTypedArrayElements(x, y, comparefn).
		function sortCompare(x, y) {
			if (x !== x && y !== y) return +0;
			if (x !== x) return 1;
			if (y !== y) return -1;
			if (comparefn !== undefined) {
				return comparefn(x, y);
			}
			if (x < y) return -1;
			if (x > y) return 1;
			return +0;
		}

		// 7. Let sortedList be ? SortIndexedProperties(obj, len, SortCompare, read-through-holes).
		var sortedList = Array(len);
		for (var i = 0; i < len; i++) sortedList[i] = obj[i];
		sortedList.sort(sortCompare);

		// 8. Let j be 0.
		var j = 0;
		// 9. Repeat, while j < len,
		while (j < len) {
			// a. Perform ! Set(obj, ! ToString(𝔽(j)), sortedList[j], true).
			obj[j] = sortedList[j];
			// b. Set j to j + 1.
			j = j + 1;
		}

		// 10. Return obj.
		return obj;
	}

	// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		CreateMethodProperty(self.Int8Array.prototype.__proto__, 'sort', sort);
	} else {
		CreateMethodProperty(self.Int8Array.prototype, 'sort', sort);
		CreateMethodProperty(self.Uint8Array.prototype, 'sort', sort);
		CreateMethodProperty(self.Uint8ClampedArray.prototype, 'sort', sort);
		CreateMethodProperty(self.Int16Array.prototype, 'sort', sort);
		CreateMethodProperty(self.Uint16Array.prototype, 'sort', sort);
		CreateMethodProperty(self.Int32Array.prototype, 'sort', sort);
		CreateMethodProperty(self.Uint32Array.prototype, 'sort', sort);
		CreateMethodProperty(self.Float32Array.prototype, 'sort', sort);
		CreateMethodProperty(self.Float64Array.prototype, 'sort', sort);
	}
})();

}

if (!("Int8Array"in self&&"toReversed"in self.Int8Array.prototype
)) {

// TypedArray.prototype.toReversed
/* global CreateMethodProperty, Get, ToString, TypedArrayCreateSameType */
// 23.2.3.32 %TypedArray%.prototype.toReversed ( )
(function () {
	function toReversed() {
		// 1. Let O be the this value.
		var O = this;
		// 2. Perform ? ValidateTypedArray(O).
		// TODO: Add ValidateTypedArray
		// 3. Let length be O.[[ArrayLength]].
		var length = O.length;
		// 4. Let A be ? TypedArrayCreateSameType(O, « 𝔽(length) »).
		var A = TypedArrayCreateSameType(O, [ length ]);
		// 5. Let k be 0.
		var k = 0;
		// 6. Repeat, while k < length,
		while (k < length) {
			// a. Let from be ! ToString(𝔽(length - k - 1)).
			var from = ToString(length - k - 1);
			// b. Let Pk be ! ToString(𝔽(k)).
			var Pk = ToString(k);
			// c. Let fromValue be ! Get(O, from).
			var fromValue = Get(O, from);
			// d. Perform ! Set(A, Pk, fromValue, true).
			A[Pk] = fromValue;
			// e. Set k to k + 1.
			k = k + 1;
		}
		// 7. Return A.
		return A;
	}

	// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		CreateMethodProperty(self.Int8Array.prototype.__proto__, 'toReversed', toReversed);
	} else {
		CreateMethodProperty(self.Int8Array.prototype, 'toReversed', toReversed);
		CreateMethodProperty(self.Uint8Array.prototype, 'toReversed', toReversed);
		CreateMethodProperty(self.Uint8ClampedArray.prototype, 'toReversed', toReversed);
		CreateMethodProperty(self.Int16Array.prototype, 'toReversed', toReversed);
		CreateMethodProperty(self.Uint16Array.prototype, 'toReversed', toReversed);
		CreateMethodProperty(self.Int32Array.prototype, 'toReversed', toReversed);
		CreateMethodProperty(self.Uint32Array.prototype, 'toReversed', toReversed);
		CreateMethodProperty(self.Float32Array.prototype, 'toReversed', toReversed);
		CreateMethodProperty(self.Float64Array.prototype, 'toReversed', toReversed);
	}
})();

}

if (!("Int8Array"in self&&"toSorted"in self.Int8Array.prototype
)) {

// TypedArray.prototype.toSorted
/* global CreateMethodProperty, IsCallable, TypedArrayCreateSameType */
// 23.2.3.33 %TypedArray%.prototype.toSorted ( comparefn )
(function () {
	function toSorted(comparefn) {
		// 1. If comparefn is not undefined and IsCallable(comparefn) is false, throw a TypeError exception.
		if (comparefn !== undefined && IsCallable(comparefn) === false) {
			throw new TypeError(
				"The comparison function must be either a function or undefined"
			);
		}
		// 2. Let O be the this value.
		var O = this;
		// 3. Perform ? ValidateTypedArray(O).
		// TODO: Add ValidateTypedArray
		// 4. Let len be O.[[ArrayLength]].
		var len = O.length;
		// 5. Let A be ? TypedArrayCreateSameType(O, « 𝔽(len) »).
		var A = TypedArrayCreateSameType(O, [ len ]);

		// 9. Let j be 0.
		var j = 0;
		// 10. Repeat, while j < len,
		while (j < len) {
			// a. Perform ! Set(A, ! ToString(𝔽(j)), sortedList[j], true).
			A[j] = O[j];
			// b. Set j to j + 1.
			j = j + 1;
		}

		// Polyfill.io - These steps are handled by native `%TypedArray%.prototype.sort`, below
		// 6. NOTE: The following closure performs a numeric comparison rather than the string comparison used in 23.1.3.34.
		// 7. Let SortCompare be a new Abstract Closure with parameters (x, y) that captures comparefn and performs the following steps when called:
		// a. Return ? CompareTypedArrayElements(x, y, comparefn).
		// 8. Let sortedList be ? SortIndexedProperties(O, len, SortCompare, read-through-holes).
		comparefn !== undefined ? A.sort(comparefn) : A.sort();

		// 11. Return A.
		return A;
	}

	// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		CreateMethodProperty(self.Int8Array.prototype.__proto__, 'toSorted', toSorted);
	} else {
		CreateMethodProperty(self.Int8Array.prototype, 'toSorted', toSorted);
		CreateMethodProperty(self.Uint8Array.prototype, 'toSorted', toSorted);
		CreateMethodProperty(self.Uint8ClampedArray.prototype, 'toSorted', toSorted);
		CreateMethodProperty(self.Int16Array.prototype, 'toSorted', toSorted);
		CreateMethodProperty(self.Uint16Array.prototype, 'toSorted', toSorted);
		CreateMethodProperty(self.Int32Array.prototype, 'toSorted', toSorted);
		CreateMethodProperty(self.Uint32Array.prototype, 'toSorted', toSorted);
		CreateMethodProperty(self.Float32Array.prototype, 'toSorted', toSorted);
		CreateMethodProperty(self.Float64Array.prototype, 'toSorted', toSorted);
	}
})();

}

if (!("Int8Array"in self&&"toString"in self.Int8Array.prototype
)) {

// TypedArray.prototype.toString
/* global CreateMethodProperty */
// 23.2.3.32 %TypedArray%.prototype.toString ( )
// The initial value of the "toString" property is %Array.prototype.toString%

// use "Int8Array" as a proxy for all "TypedArray" subclasses

(function () {
	var fnName = 'toString'
	var fn = Array.prototype.toString

	// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		CreateMethodProperty(self.Int8Array.prototype.__proto__, fnName, fn);
	} else {
		CreateMethodProperty(self.Int8Array.prototype, fnName, fn);
		CreateMethodProperty(self.Uint8Array.prototype, fnName, fn);
		CreateMethodProperty(self.Uint8ClampedArray.prototype, fnName, fn);
		CreateMethodProperty(self.Int16Array.prototype, fnName, fn);
		CreateMethodProperty(self.Uint16Array.prototype, fnName, fn);
		CreateMethodProperty(self.Int32Array.prototype, fnName, fn);
		CreateMethodProperty(self.Uint32Array.prototype, fnName, fn);
		CreateMethodProperty(self.Float32Array.prototype, fnName, fn);
		CreateMethodProperty(self.Float64Array.prototype, fnName, fn);
	}
})();

}

if (!("Int8Array"in self&&"values"in self.Int8Array.prototype
)) {

// TypedArray.prototype.values
/* global CreateMethodProperty, Symbol, ArrayIterator */
// 23.2.3.33 %TypedArray%.prototype.values ( )
(function () {
	// use "Int8Array" as a proxy for support of "TypedArray" subclasses

	function createMethodProperties (fn) {
		var fnName = 'values'

		// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
		// in that case, don't define it on the parent; define it directly on the prototype
		if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
			// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
			CreateMethodProperty(self.Int8Array.prototype.__proto__, fnName, fn);
		} else {
			CreateMethodProperty(self.Int8Array.prototype, fnName, fn);
			CreateMethodProperty(self.Uint8Array.prototype, fnName, fn);
			CreateMethodProperty(self.Uint8ClampedArray.prototype, fnName, fn);
			CreateMethodProperty(self.Int16Array.prototype, fnName, fn);
			CreateMethodProperty(self.Uint16Array.prototype, fnName, fn);
			CreateMethodProperty(self.Int32Array.prototype, fnName, fn);
			CreateMethodProperty(self.Uint32Array.prototype, fnName, fn);
			CreateMethodProperty(self.Float32Array.prototype, fnName, fn);
			CreateMethodProperty(self.Float64Array.prototype, fnName, fn);
		}
	}

	// Polyfill.io - Firefox, Chrome and Opera have %TypedArray%.prototype[Symbol.iterator], which is the exact same function as %TypedArray%.prototype.values.
	if ('Symbol' in self && 'iterator' in Symbol && typeof self.Int8Array.prototype[Symbol.iterator] === 'function') {
		createMethodProperties(self.Int8Array.prototype[Symbol.iterator])
	} else {
		createMethodProperties(function values () {
			// 1. Let O be the this value.
			var O = this;
			// 2. Perform ? ValidateTypedArray(O).
			// TODO: Add ValidateTypedArray
			// 3. Return CreateArrayIterator(O, value).
			// TODO: Add CreateArrayIterator
			return new ArrayIterator(O, 'value');
		});
	}
})();

}

if (!("Symbol"in self&&"iterator"in self.Symbol&&"Int8Array"in self&&self.Symbol.iterator in self.Int8Array.prototype
)) {

// TypedArray.prototype.@@iterator
/* global Symbol, CreateMethodProperty */
// 23.2.3.34 %TypedArray%.prototype [ @@iterator ] ( )
// The initial value of the @@iterator property is %TypedArray.prototype.values%

// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
// in that case, don't define it on the parent; define it directly on the prototype
if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
	// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
	CreateMethodProperty(self.Int8Array.prototype.__proto__, Symbol.iterator, self.Int8Array.prototype.__proto__.values);
} else {
	CreateMethodProperty(self.Int8Array.prototype, Symbol.iterator, self.Int8Array.prototype.values);
	CreateMethodProperty(self.Uint8Array.prototype, Symbol.iterator, self.Uint8Array.prototype.values);
	CreateMethodProperty(self.Uint8ClampedArray.prototype, Symbol.iterator, self.Uint8ClampedArray.prototype.values);
	CreateMethodProperty(self.Int16Array.prototype, Symbol.iterator, self.Int16Array.prototype.values);
	CreateMethodProperty(self.Uint16Array.prototype, Symbol.iterator, self.Uint16Array.prototype.values);
	CreateMethodProperty(self.Int32Array.prototype, Symbol.iterator, self.Int32Array.prototype.values);
	CreateMethodProperty(self.Uint32Array.prototype, Symbol.iterator, self.Uint32Array.prototype.values);
	CreateMethodProperty(self.Float32Array.prototype, Symbol.iterator, self.Float32Array.prototype.values);
	CreateMethodProperty(self.Float64Array.prototype, Symbol.iterator, self.Float64Array.prototype.values);
}

}

if (!("Int8Array"in self&&"with"in self.Int8Array.prototype
)) {

// TypedArray.prototype.with
/* global CreateMethodProperty, Get, IsValidIntegerIndex, ToIntegerOrInfinity, ToNumber, ToString, TypedArrayCreateSameType */
// 23.2.3.36 %TypedArray%.prototype.with ( index, value )
(function () {
	function With(index, value) {
		// 1. Let O be the this value.
		var O = this;
		// 2. Perform ? ValidateTypedArray(O).
		// TODO: Add ValidateTypedArray
		// 3. Let len be O.[[ArrayLength]].
		var len = O.length;
		// 4. Let relativeIndex be ? ToIntegerOrInfinity(index).
		var relativeIndex = ToIntegerOrInfinity(index);
		// 5. If relativeIndex ≥ 0, let actualIndex be relativeIndex.
		// 6. Else, let actualIndex be len + relativeIndex.
		var actualIndex = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
		// 7. If O.[[ContentType]] is BigInt, let numericValue be ? ToBigInt(value).
		// TODO: Add BigInt support
		// 8. Else, let numericValue be ? ToNumber(value).
		var numericValue = ToNumber(value);
		// 9. If IsValidIntegerIndex(O, 𝔽(actualIndex)) is false, throw a RangeError exception.
		if (IsValidIntegerIndex(O, actualIndex) === false) {
			throw new RangeError('Invalid index');
		}
		// 10. Let A be ? TypedArrayCreateSameType(O, « 𝔽(len) »).
		var A = TypedArrayCreateSameType(O, [ len ]);
		// 11. Let k be 0.
		var k = 0;
		// 12. Repeat, while k < len,
		while (k < len) {
			// a. Let Pk be ! ToString(𝔽(k)).
			var Pk = ToString(k);
			// b. If k is actualIndex, let fromValue be numericValue.
			// c. Else, let fromValue be ! Get(O, Pk).
			var fromValue = k === actualIndex ? numericValue : Get(O, Pk);
			// d. Perform ! Set(A, Pk, fromValue, true).
			A[Pk] = fromValue;
			// e. Set k to k + 1.
			k = k + 1;
		}
		// 13. Return A.
		return A;
	}

	var supportsDefiningFunctionName = (function () {
		var fn = function () {};
		try {
			Object.defineProperty(fn, 'name', {
				value: 'test'
			});
			return true;
		} catch (ignore) {
			return false;
		}
	})();

	if (supportsDefiningFunctionName) {
		Object.defineProperty(With, 'name', {
			value: 'with',
			writable: false,
			enumerable: false,
			configurable: true
		})
	}

	// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		CreateMethodProperty(self.Int8Array.prototype.__proto__, 'with', With);
	} else {
		CreateMethodProperty(self.Int8Array.prototype, 'with', With);
		CreateMethodProperty(self.Uint8Array.prototype, 'with', With);
		CreateMethodProperty(self.Uint8ClampedArray.prototype, 'with', With);
		CreateMethodProperty(self.Int16Array.prototype, 'with', With);
		CreateMethodProperty(self.Uint16Array.prototype, 'with', With);
		CreateMethodProperty(self.Int32Array.prototype, 'with', With);
		CreateMethodProperty(self.Uint32Array.prototype, 'with', With);
		CreateMethodProperty(self.Float32Array.prototype, 'with', With);
		CreateMethodProperty(self.Float64Array.prototype, 'with', With);
	}
})();

}

if (!((function(r){"use strict"
try{var a=new r.URL("http://example.com")
if("href"in a&&"searchParams"in a){var e=new URL("http://example.com")
if(e.search="a=1&b=2","http://example.com/?a=1&b=2"===e.href&&(e.search="","http://example.com/"===e.href)){if(!("sort"in r.URLSearchParams.prototype))return!1
var t=new r.URLSearchParams("a=1"),n=new r.URLSearchParams(t)
if("a=1"!==String(n))return!1
var c=new r.URLSearchParams({a:"1"})
if("a=1"!==String(c))return!1
var h=new r.URLSearchParams([["a","1"]])
return"a=1"===String(h)}}return!1}catch(r){return!1}})(self)
)) {

// URL
/* global Symbol */
// URL Polyfill
// Draft specification: https://url.spec.whatwg.org

// Notes:
// - Primarily useful for parsing URLs and modifying query parameters
// - Should work in IE9+ and everything more modern, with es5.js polyfills

(function (global) {
	'use strict';

	function isSequence(o) {
		if (!o) return false;
		if ('Symbol' in global && 'iterator' in global.Symbol &&
				typeof o[Symbol.iterator] === 'function') return true;
		if (Array.isArray(o)) return true;
		return false;
	}

	;(function() { // eslint-disable-line no-extra-semi

		// Browsers may have:
		// * No global URL object
		// * URL with static methods only - may have a dummy constructor
		// * URL with members except searchParams
		// * Full URL API support
		var origURL = global.URL;
		var nativeURL;
		try {
			if (origURL) {
				nativeURL = new global.URL('http://example.com');
				if ('searchParams' in nativeURL) {
					var url = new URL('http://example.com');
					url.search = 'a=1&b=2';
					if (url.href === 'http://example.com/?a=1&b=2') {
						url.search = '';
						if (url.href === 'http://example.com/') {
							return;
						}
					}
				}
				if (!('href' in nativeURL)) {
					nativeURL = undefined;
				}
				nativeURL = undefined;
			}
		// eslint-disable-next-line no-empty
		} catch (_) {}

		// NOTE: Doesn't do the encoding/decoding dance
		function urlencoded_serialize(pairs) {
			var output = '', first = true;
			pairs.forEach(function (pair) {
				var name = encodeURIComponent(pair.name);
				var value = encodeURIComponent(pair.value);
				if (!first) output += '&';
				output += name + '=' + value;
				first = false;
			});
			return output.replace(/%20/g, '+');
		}

		// https://url.spec.whatwg.org/#percent-decode
		var cachedDecodePattern;
		function percent_decode(bytes) {
			// This can't simply use decodeURIComponent (part of ECMAScript) as that's limited to
			// decoding to valid UTF-8 only. It throws URIError for literals that look like percent
			// encoding (e.g. `x=%`, `x=%a`, and `x=a%2sf`) and for non-UTF8 binary data that was
			// percent encoded and cannot be turned back into binary within a JavaScript string.
			//
			// The spec deals with this as follows:
			// * Read input as UTF-8 encoded bytes. This needs low-level access or a modern
			//   Web API, like TextDecoder. Old browsers don't have that, and it'd a large
			//   dependency to add to this polyfill.
			// * For each percentage sign followed by two hex, blindly decode the byte in binary
			//   form. This would require TextEncoder to not corrupt multi-byte chars.
			// * Replace any bytes that would be invalid under UTF-8 with U+FFFD.
			//
			// Instead we:
			// * Use the fact that UTF-8 is designed to make validation easy in binary.
			//   You don't have to decode first. There are only a handful of valid prefixes and
			//   ranges, per RFC 3629. <https://datatracker.ietf.org/doc/html/rfc3629#section-3>
			// * Safely create multi-byte chars with decodeURIComponent, by only passing it
			//   valid and full characters (e.g. "%F0" separately from "%F0%9F%92%A9" throws).
			//   Anything else is kept as literal or replaced with U+FFFD, as per the URL spec.

			if (!cachedDecodePattern) {
				// In a UTF-8 multibyte sequence, non-initial bytes are always between %80 and %BF
				var uContinuation = '%[89AB][0-9A-F]';

				// The length of a UTF-8 sequence is specified by the first byte
				//
				// One-byte sequences: 0xxxxxxx
				// So the byte is between %00 and %7F
				var u1Bytes = '%[0-7][0-9A-F]';
				// Two-byte sequences: 110xxxxx 10xxxxxx
				// So the first byte is between %C0 and %DF
				var u2Bytes = '%[CD][0-9A-F]' + uContinuation;
				// Three-byte sequences: 1110xxxx 10xxxxxx 10xxxxxx
				// So the first byte is between %E0 and %EF
				var u3Bytes = '%E[0-9A-F]' + uContinuation + uContinuation;
				// Four-byte sequences: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
				// So the first byte is between %F0 and %F7
				var u4Bytes = '%F[0-7]' + uContinuation + uContinuation +uContinuation;

				var anyByte = '%[0-9A-F][0-9A-F]';

				// Match some consecutive percent-escaped bytes. More precisely, match
				// 1-4 bytes that validly encode one character in UTF-8, or 1 byte that
				// would be invalid in UTF-8 in this location.
				cachedDecodePattern = new RegExp(
					'(' + u4Bytes + ')|(' + u3Bytes + ')|(' + u2Bytes + ')|(' + u1Bytes + ')|(' + anyByte + ')',
					'gi'
				);
			}

			return bytes.replace(cachedDecodePattern, function (match, u4, u3, u2, u1, uBad) {
				return (uBad !== undefined) ? '\uFFFD' : decodeURIComponent(match);
			});
		}

		// NOTE: Doesn't do the encoding/decoding dance
		//
		// https://url.spec.whatwg.org/#concept-urlencoded-parser
		function urlencoded_parse(input, isindex) {
			var sequences = input.split('&');
			if (isindex && sequences[0].indexOf('=') === -1)
				sequences[0] = '=' + sequences[0];
			var pairs = [];
			sequences.forEach(function (bytes) {
				if (bytes.length === 0) return;
				var index = bytes.indexOf('=');
				if (index !== -1) {
					var name = bytes.substring(0, index);
					var value = bytes.substring(index + 1);
				} else {
					name = bytes;
					value = '';
				}
				name = name.replace(/\+/g, ' ');
				value = value.replace(/\+/g, ' ');
				pairs.push({ name: name, value: value });
			});
			var output = [];
			pairs.forEach(function (pair) {
				output.push({
					name: percent_decode(pair.name),
					value: percent_decode(pair.value)
				});
			});
			return output;
		}

		function URLUtils(url) {
			if (nativeURL)
				return new origURL(url);
			var anchor = document.createElement('a');
			anchor.href = url;
			return anchor;
		}

		function URLSearchParams(init) {
			var $this = this;
			this._list = [];

			if (init === undefined || init === null) {
				// no-op
			} else if (init instanceof URLSearchParams) {
				// In ES6 init would be a sequence, but special case for ES5.
				this._list = urlencoded_parse(String(init));
			} else if (typeof init === 'object' && isSequence(init)) {
				Array.from(init).forEach(function(e) {
					if (!isSequence(e)) throw TypeError();
					var nv = Array.from(e);
					if (nv.length !== 2) throw TypeError();
					$this._list.push({name: String(nv[0]), value: String(nv[1])});
				});
			} else if (typeof init === 'object' && init) {
				Object.keys(init).forEach(function(key) {
					$this._list.push({name: String(key), value: String(init[key])});
				});
			} else {
				init = String(init);
				if (init.substring(0, 1) === '?')
					init = init.substring(1);
				this._list = urlencoded_parse(init);
			}

			this._url_object = null;
			this._setList = function (list) { if (!updating) $this._list = list; };

			var updating = false;
			this._update_steps = function() {
				if (updating) return;
				updating = true;

				if (!$this._url_object) return;

				// Partial workaround for IE issue with 'about:'
				if ($this._url_object.protocol === 'about:' &&
						$this._url_object.pathname.indexOf('?') !== -1) {
					$this._url_object.pathname = $this._url_object.pathname.split('?')[0];
				}

				$this._url_object.search = urlencoded_serialize($this._list);

				updating = false;
			};
		}


		Object.defineProperties(URLSearchParams.prototype, {
			append: {
				value: function (name, value) {
					this._list.push({ name: name, value: value });
					this._update_steps();
				}, writable: true, enumerable: true, configurable: true
			},

			'delete': {
				value: function (name) {
					for (var i = 0; i < this._list.length;) {
						if (this._list[i].name === name)
							this._list.splice(i, 1);
						else
							++i;
					}
					this._update_steps();
				}, writable: true, enumerable: true, configurable: true
			},

			get: {
				value: function (name) {
					for (var i = 0; i < this._list.length; ++i) {
						if (this._list[i].name === name)
							return this._list[i].value;
					}
					return null;
				}, writable: true, enumerable: true, configurable: true
			},

			getAll: {
				value: function (name) {
					var result = [];
					for (var i = 0; i < this._list.length; ++i) {
						if (this._list[i].name === name)
							result.push(this._list[i].value);
					}
					return result;
				}, writable: true, enumerable: true, configurable: true
			},

			has: {
				value: function (name) {
					for (var i = 0; i < this._list.length; ++i) {
						if (this._list[i].name === name)
							return true;
					}
					return false;
				}, writable: true, enumerable: true, configurable: true
			},

			set: {
				value: function (name, value) {
					var found = false;
					for (var i = 0; i < this._list.length;) {
						if (this._list[i].name === name) {
							if (!found) {
								this._list[i].value = value;
								found = true;
								++i;
							} else {
								this._list.splice(i, 1);
							}
						} else {
							++i;
						}
					}

					if (!found)
						this._list.push({ name: name, value: value });

					this._update_steps();
				}, writable: true, enumerable: true, configurable: true
			},

			entries: {
				value: function() { return new Iterator(this._list, 'key+value'); },
				writable: true, enumerable: true, configurable: true
			},

			keys: {
				value: function() { return new Iterator(this._list, 'key'); },
				writable: true, enumerable: true, configurable: true
			},

			values: {
				value: function() { return new Iterator(this._list, 'value'); },
				writable: true, enumerable: true, configurable: true
			},

			forEach: {
				value: function(callback) {
					var thisArg = (arguments.length > 1) ? arguments[1] : undefined;
					this._list.forEach(function(pair) {
						callback.call(thisArg, pair.value, pair.name);
					});

				}, writable: true, enumerable: true, configurable: true
			},

			toString: {
				value: function () {
					return urlencoded_serialize(this._list);
				}, writable: true, enumerable: false, configurable: true
			},

			sort: {
				value: function sort() {
					var entries = this.entries();
					var entry = entries.next();
					var keys = [];
					var values = {};

					while (!entry.done) {
						var value = entry.value;
						var key = value[0];
						keys.push(key);
						if (!(Object.prototype.hasOwnProperty.call(values, key))) {
							values[key] = [];
						}
						values[key].push(value[1]);
						entry = entries.next();
					}

					keys.sort();
					for (var i = 0; i < keys.length; i++) {
						this.delete(keys[i]);
					}
					for (var j = 0; j < keys.length; j++) {
						key = keys[j];
						this.append(key, values[key].shift());
					}
				}
			}
		});

		function Iterator(source, kind) {
			var index = 0;
			this.next = function() {
				if (index >= source.length)
					return {done: true, value: undefined};
				var pair = source[index++];
				return {done: false, value:
								kind === 'key' ? pair.name :
								kind === 'value' ? pair.value :
								[pair.name, pair.value]};
			};
		}

		if ('Symbol' in global && 'iterator' in global.Symbol) {
			Object.defineProperty(URLSearchParams.prototype, global.Symbol.iterator, {
				value: URLSearchParams.prototype.entries,
				writable: true, enumerable: true, configurable: true});
			Object.defineProperty(Iterator.prototype, global.Symbol.iterator, {
				value: function() { return this; },
				writable: true, enumerable: true, configurable: true});
		}

		function URL(url, base) {
			if (!(this instanceof global.URL))
				throw new TypeError("Failed to construct 'URL': Please use the 'new' operator.");

			if (base) {
				url = (function () {
					if (nativeURL) return new origURL(url, base).href;
					var iframe;
					try {
						var doc;
						// Use another document/base tag/anchor for relative URL resolution, if possible
						if (Object.prototype.toString.call(window.operamini) === "[object OperaMini]") {
							iframe = document.createElement('iframe');
							iframe.style.display = 'none';
							document.documentElement.appendChild(iframe);
							doc = iframe.contentWindow.document;
						} else if (document.implementation && document.implementation.createHTMLDocument) {
							doc = document.implementation.createHTMLDocument('');
						} else if (document.implementation && document.implementation.createDocument) {
							doc = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null);
							doc.documentElement.appendChild(doc.createElement('head'));
							doc.documentElement.appendChild(doc.createElement('body'));
						} else if (window.ActiveXObject) {
							doc = new window.ActiveXObject('htmlfile');
							doc.write('<head></head><body></body>');
							doc.close();
						}

						if (!doc) throw Error('base not supported');

						var baseTag = doc.createElement('base');
						baseTag.href = base;
						doc.getElementsByTagName('head')[0].appendChild(baseTag);
						var anchor = doc.createElement('a');
						anchor.href = url;
						return anchor.href;
					} finally {
						if (iframe)
							iframe.parentNode.removeChild(iframe);
					}
				}());
			}

			// An inner object implementing URLUtils (either a native URL
			// object or an HTMLAnchorElement instance) is used to perform the
			// URL algorithms.

			var instance = URLUtils(url || '');

			var self = this;



			var query_object = new URLSearchParams(
				instance.search ? instance.search.substring(1) : null);
			query_object._url_object = self;

			Object.defineProperties(self, {
				href: {
					get: function () { return instance.href; },
					set: function (v) { instance.href = v; tidy_instance(); update_steps(); },
					enumerable: true, configurable: true
				},
				origin: {
					get: function () {
						if (this.protocol.toLowerCase() === "data:") {
							return null
						}

						if ('origin' in instance) return instance.origin;
						return this.protocol + '//' + this.host;
					},
					enumerable: true, configurable: true
				},
				protocol: {
					get: function () { return instance.protocol; },
					set: function (v) { instance.protocol = v; },
					enumerable: true, configurable: true
				},
				username: {
					get: function () { return instance.username; },
					set: function (v) { instance.username = v; },
					enumerable: true, configurable: true
				},
				password: {
					get: function () { return instance.password; },
					set: function (v) { instance.password = v; },
					enumerable: true, configurable: true
				},
				host: {
					get: function () {
						// IE returns default port in |host|
						var re = {'http:': /:80$/, 'https:': /:443$/, 'ftp:': /:21$/}[instance.protocol];
						return re ? instance.host.replace(re, '') : instance.host;
					},
					set: function (v) { instance.host = v; },
					enumerable: true, configurable: true
				},
				hostname: {
					get: function () { return instance.hostname; },
					set: function (v) { instance.hostname = v; },
					enumerable: true, configurable: true
				},
				port: {
					get: function () { return instance.port; },
					set: function (v) { instance.port = v; },
					enumerable: true, configurable: true
				},
				pathname: {
					get: function () {
						// IE does not include leading '/' in |pathname|
						if (instance.pathname.charAt(0) !== '/') return '/' + instance.pathname;
						return instance.pathname;
					},
					set: function (v) { instance.pathname = v; },
					enumerable: true, configurable: true
				},
				search: {
					get: function () { return instance.search; },
					set: function (v) {
						if (instance.search === v) return;
						instance.search = v; tidy_instance(); update_steps();
					},
					enumerable: true, configurable: true
				},
				searchParams: {
					get: function () { return query_object; },
					enumerable: true, configurable: true
				},
				hash: {
					get: function () { return instance.hash; },
					set: function (v) { instance.hash = v; tidy_instance(); },
					enumerable: true, configurable: true
				},
				toString: {
					value: function() { return instance.toString(); },
					enumerable: false, configurable: true
				},
				valueOf: {
					value: function() { return instance.valueOf(); },
					enumerable: false, configurable: true
				}
			});

			function tidy_instance() {
				var href = instance.href.replace(/#$|\?$|\?(?=#)/g, '');
				if (instance.href !== href)
					instance.href = href;
			}

			function update_steps() {
				query_object._setList(instance.search ? urlencoded_parse(instance.search.substring(1)) : []);
				query_object._update_steps();
			}

			return self;
		}

		if (origURL) {
			for (var i in origURL) {
				if (Object.prototype.hasOwnProperty.call(origURL, i) && typeof origURL[i] === 'function')
					URL[i] = origURL[i];
			}
		}

		global.URL = URL;
		global.URLSearchParams = URLSearchParams;
	})();

	// Patch native URLSearchParams constructor to handle sequences/records
	// if necessary.
	(function() {
		if (new global.URLSearchParams([['a', 1]]).get('a') === '1' &&
				new global.URLSearchParams({a: 1}).get('a') === '1')
			return;
		var orig = global.URLSearchParams;
		global.URLSearchParams = function(init) {
			if (init && typeof init === 'object' && isSequence(init)) {
				var o = new orig();
				Array.from(init).forEach(function (e) {
					if (!isSequence(e)) throw TypeError();
					var nv = Array.from(e);
					if (nv.length !== 2) throw TypeError();
					o.append(nv[0], nv[1]);
				});
				return o;
			} else if (init && typeof init === 'object') {
				o = new orig();
				Object.keys(init).forEach(function(key) {
					o.set(key, init[key]);
				});
				return o;
			} else {
				return new orig(init);
			}
		};
	})();

}(self));

}

if (!((function(){try{if("WeakMap"in self&&0===self.WeakMap.length){var e={},t=new self.WeakMap([[e,"test"]])
return"test"===t.get(e)&&!1===t.delete(0)&&"toStringTag"in self.Symbol&&void 0!==t[self.Symbol.toStringTag]}return!1}catch(e){return!1}})()
)) {

// WeakMap
/* globals Symbol, OrdinaryCreateFromConstructor, IsCallable, GetIterator, IteratorStep, IteratorValue, IteratorClose, Get, Call, CreateMethodProperty, Type, SameValue */
(function (global) {
	// Deleted map items mess with iterator pointers, so rather than removing them mark them as deleted. Can't use undefined or null since those both valid keys so use a private symbol.
	var undefMarker = Symbol('undef');
	// 23.3.1.1 WeakMap ( [ iterable ] )
	var WeakMap = function WeakMap(/* iterable */) {
		// 1. If NewTarget is undefined, throw a TypeError exception.
		if (!(this instanceof WeakMap)) {
			throw new TypeError('Constructor WeakMap requires "new"');
		}
		// 2. Let map be ? OrdinaryCreateFromConstructor(NewTarget, "%WeakMapPrototype%", « [[WeakMapData]] »).
		var map = OrdinaryCreateFromConstructor(this, WeakMap.prototype, {
			_keys: [],
			_values: [],
			_es6WeakMap: true
		});

		// 3. Set map.[[WeakMapData]] to a new empty List.
		// Polyfill.io - This step was done as part of step two.

		// 4. If iterable is not present, let iterable be undefined.
		var iterable = arguments.length > 0 ? arguments[0] : undefined;

		// 5. If iterable is either undefined or null, return map.
		if (iterable === null || iterable === undefined) {
			return map;
		}

		// 6. Let adder be ? Get(map, "set").
		var adder = Get(map, "set");

		// 7. If IsCallable(adder) is false, throw a TypeError exception.
		if (!IsCallable(adder)) {
			throw new TypeError("WeakMap.prototype.set is not a function");
		}

		// 8. Let iteratorRecord be ? GetIterator(iterable).
		try {
			var iteratorRecord = GetIterator(iterable);
			// 9. Repeat,
			// eslint-disable-next-line no-constant-condition
			while (true) {
				// a. Let next be ? IteratorStep(iteratorRecord).
				var next = IteratorStep(iteratorRecord);
				// b. If next is false, return map.
				if (next === false) {
					return map;
				}
				// c. Let nextItem be ? IteratorValue(next).
				var nextItem = IteratorValue(next);
				// d. If Type(nextItem) is not Object, then
				if (Type(nextItem) !== 'object') {
					// i. Let error be Completion{[[Type]]: throw, [[Value]]: a newly created TypeError object, [[Target]]: empty}.
					try {
						throw new TypeError('Iterator value ' + nextItem + ' is not an entry object');
					} catch (error) {
						// ii. Return ? IteratorClose(iteratorRecord, error).
						return IteratorClose(iteratorRecord, error);
					}
				}
				try {
					// Polyfill.io - The try catch accounts for steps: f, h, and j.

					// e. Let k be Get(nextItem, "0").
					var k = Get(nextItem, "0");
					// f. If k is an abrupt completion, return ? IteratorClose(iteratorRecord, k).
					// g. Let v be Get(nextItem, "1").
					var v = Get(nextItem, "1");
					// h. If v is an abrupt completion, return ? IteratorClose(iteratorRecord, v).
					// i. Let status be Call(adder, map, « k.[[Value]], v.[[Value]] »).
					Call(adder, map, [k, v]);
				} catch (e) {
					// j. If status is an abrupt completion, return ? IteratorClose(iteratorRecord, status).
					return IteratorClose(iteratorRecord, e);
				}
			}
		} catch (e) {
			// Polyfill.io - For user agents which do not have iteration methods on argument objects or arrays, we can special case those.
			if (Array.isArray(iterable) ||
				Object.prototype.toString.call(iterable) === '[object Arguments]') {
				var index;
				var length = iterable.length;
				for (index = 0; index < length; index++) {
					k = iterable[index][0];
					v = iterable[index][1];
					Call(adder, map, [k, v]);
				}
			}
		}
		return map;
	};

	// 23.3.2.1 WeakMap.prototype
	// The initial value of WeakMap.prototype is the intrinsic object %WeakMapPrototype%.
	// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
	Object.defineProperty(WeakMap, 'prototype', {
		configurable: false,
		enumerable: false,
		writable: false,
		value: {}
	});

	// 23.3.3.1 WeakMap.prototype.constructor
	CreateMethodProperty(WeakMap.prototype, 'constructor', WeakMap);

	// 23.3.3.2 WeakMap.prototype.delete ( key )
	CreateMethodProperty(WeakMap.prototype, 'delete', function (key) {
		// 1. Let M be the this value.
		var M = this;
		// 2. If Type(M) is not Object, throw a TypeError exception.
		if (Type(M) !== 'object') {
			throw new TypeError('Method WeakMap.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
		}
		// 3. If M does not have a [[WeakMapData]] internal slot, throw a TypeError exception.
		if (M._es6WeakMap !== true) {
			throw new TypeError('Method WeakMap.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
		}
		// 4. Let entries be the List that is M.[[WeakMapData]].
		var entries = M._keys;
		// 5. If Type(key) is not Object, return false.
		if (Type(key) !== 'object') {
			return false;
		}
		// 6. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
		for (var i = 0; i < entries.length; i++) {
			// a. If p.[[Key]] is not empty and SameValue(p.[[Key]], key) is true, then
			if (M._keys[i] !== undefMarker && SameValue(M._keys[i], key)) {
				// i. Set p.[[Key]] to empty.
				this._keys[i] = undefMarker;
				// ii. Set p.[[Value]] to empty.
				this._values[i] = undefMarker;
				this._size = --this._size;
				// iii. Return true.
				return true;
			}
		}
		// 7. Return false.
		return false;
	});

	// 23.3.3.3 WeakMap.prototype.get ( key )
	CreateMethodProperty(WeakMap.prototype, 'get', function get(key) {
		// 1. Let M be the this value.
		var M = this;
		// 2. If Type(M) is not Object, throw a TypeError exception.
		if (Type(M) !== 'object') {
			throw new TypeError('Method WeakMap.prototype.get called on incompatible receiver ' + Object.prototype.toString.call(M));
		}
		// 3. If M does not have a [[WeakMapData]] internal slot, throw a TypeError exception.
		if (M._es6WeakMap !== true) {
			throw new TypeError('Method WeakMap.prototype.get called on incompatible receiver ' + Object.prototype.toString.call(M));
		}
		// 4. Let entries be the List that is M.[[WeakMapData]].
		var entries = M._keys;
		// 5. If Type(key) is not Object, return undefined.
		if (Type(key) !== 'object') {
			return undefined;
		}
		// 6. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
		for (var i = 0; i < entries.length; i++) {
			// a. If p.[[Key]] is not empty and SameValue(p.[[Key]], key) is true, return p.[[Value]].
			if (M._keys[i] !== undefMarker && SameValue(M._keys[i], key)) {
				return M._values[i];
			}
		}
		// 7. Return undefined.
		return undefined;
	});

	// 23.3.3.4 WeakMap.prototype.has ( key )
	CreateMethodProperty(WeakMap.prototype, 'has', function has(key) {
		// 1. Let M be the this value.
		var M = this;
		// 2. If Type(M) is not Object, throw a TypeError exception.
		if (typeof M !== 'object') {
			throw new TypeError('Method WeakMap.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(M));
		}
		// 3. If M does not have a [[WeakMapData]] internal slot, throw a TypeError exception.
		if (M._es6WeakMap !== true) {
			throw new TypeError('Method WeakMap.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(M));
		}
		// 4. Let entries be the List that is M.[[WeakMapData]].
		var entries = M._keys;
		// 5. If Type(key) is not Object, return false.
		if (Type(key) !== 'object') {
			return false;
		}
		// 6. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
		for (var i = 0; i < entries.length; i++) {
			// a. If p.[[Key]] is not empty and SameValue(p.[[Key]], key) is true, return true.
			if (M._keys[i] !== undefMarker && SameValue(M._keys[i], key)) {
				return true;
			}
		}
		// 7. Return false.
		return false;
	});

	// 23.3.3.5 WeakMap.prototype.set ( key, value )
	CreateMethodProperty(WeakMap.prototype, 'set', function set(key, value) {
		// 1. Let M be the this value.
		var M = this;
		// 2. If Type(M) is not Object, throw a TypeError exception.
		if (Type(M) !== 'object') {
			throw new TypeError('Method WeakMap.prototype.set called on incompatible receiver ' + Object.prototype.toString.call(M));
		}
		// 3. If M does not have a [[WeakMapData]] internal slot, throw a TypeError exception.
		if (M._es6WeakMap !== true) {
			throw new TypeError('Method WeakMap.prototype.set called on incompatible receiver ' + Object.prototype.toString.call(M));
		}
		// 4. Let entries be the List that is M.[[WeakMapData]].
		var entries = M._keys;
		// 5. If Type(key) is not Object, throw a TypeError exception.
		if (Type(key) !== 'object') {
			throw new TypeError("Invalid value used as weak map key");
		}
		// 6. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
		for (var i = 0; i < entries.length; i++) {
			// a. If p.[[Key]] is not empty and SameValue(p.[[Key]], key) is true, then
			if (M._keys[i] !== undefMarker && SameValue(M._keys[i], key)) {
				// i. Set p.[[Value]] to value.
				M._values[i] = value;
				// ii. Return M.
				return M;
			}
		}
		// 7. Let p be the Record {[[Key]]: key, [[Value]]: value}.
		var p = {
			'[[Key]]': key,
			'[[Value]]': value
		};
		// 8. Append p as the last element of entries.
		M._keys.push(p['[[Key]]']);
		M._values.push(p['[[Value]]']);
		// 9. Return M.
		return M;
	});

	// 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
	// The initial value of the @@toStringTag property is the String value "WeakMap".
	// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
	Object.defineProperty(WeakMap.prototype, Symbol.toStringTag, {
		configurable: true,
		enumerable: false,
		writable: false,
		value: 'WeakMap'
	});

	// Polyfill.io - Safari 8 implements WeakMap.name but as a non-writable property, which means it would throw an error if we try and write to it here.
	if (!('name' in WeakMap)) {
		// 19.2.4.2 name
		Object.defineProperty(WeakMap, 'name', {
			configurable: true,
			enumerable: false,
			writable: false,
			value: 'WeakMap'
		});
	}

	// Export the object
	CreateMethodProperty(global, 'WeakMap', WeakMap);
}(self));

}

if (!("Intl"in self&&"Locale"in self.Intl
)) {

// Intl.Locale
(function() {
  var __create = Object.create;
  var __defProp = Object.defineProperty;
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  var __getOwnPropNames = Object.getOwnPropertyNames;
  var __getProtoOf = Object.getPrototypeOf;
  var __hasOwnProp = Object.prototype.hasOwnProperty;
  var __markAsModule = function(target) {
    return __defProp(target, "__esModule", {value: true});
  };
  var __commonJS = function(cb, mod) {
    return function __require() {
      return mod || (0, cb[Object.keys(cb)[0]])((mod = {exports: {}}).exports, mod), mod.exports;
    };
  };
  var __reExport = function(target, module, desc) {
    if (module && typeof module === "object" || typeof module === "function")
      for (var keys = __getOwnPropNames(module), i = 0, n = keys.length, key; i < n; i++) {
        key = keys[i];
        if (!__hasOwnProp.call(target, key) && key !== "default")
          __defProp(target, key, {get: function(k) {
            return module[k];
          }.bind(null, key), enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable});
      }
    return target;
  };
  var __toModule = function(module) {
    return __reExport(__markAsModule(__defProp(module != null ? __create(__getProtoOf(module)) : {}, "default", module && module.__esModule && "default" in module ? {get: function() {
      return module.default;
    }, enumerable: true} : {value: module, enumerable: true})), module);
  };

  // node_modules/tslib/tslib.js
  var require_tslib = __commonJS({
    "node_modules/tslib/tslib.js": function(exports, module) {
      var __extends2;
      var __assign5;
      var __rest;
      var __decorate;
      var __param;
      var __metadata;
      var __awaiter;
      var __generator;
      var __exportStar;
      var __values;
      var __read;
      var __spread;
      var __spreadArrays;
      var __spreadArray2;
      var __await;
      var __asyncGenerator;
      var __asyncDelegator;
      var __asyncValues;
      var __makeTemplateObject;
      var __importStar;
      var __importDefault;
      var __classPrivateFieldGet;
      var __classPrivateFieldSet;
      var __createBinding;
      (function(factory) {
        var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
        if (typeof define === "function" && define.amd) {
          define("tslib", ["exports"], function(exports2) {
            factory(createExporter(root, createExporter(exports2)));
          });
        } else if (typeof module === "object" && typeof module.exports === "object") {
          factory(createExporter(root, createExporter(module.exports)));
        } else {
          factory(createExporter(root));
        }
        function createExporter(exports2, previous) {
          if (exports2 !== root) {
            if (typeof Object.create === "function") {
              Object.defineProperty(exports2, "__esModule", {value: true});
            } else {
              exports2.__esModule = true;
            }
          }
          return function(id, v) {
            return exports2[id] = previous ? previous(id, v) : v;
          };
        }
      })(function(exporter) {
        var extendStatics = Object.setPrototypeOf || {__proto__: []} instanceof Array && function(d, b) {
          d.__proto__ = b;
        } || function(d, b) {
          for (var p in b)
            if (Object.prototype.hasOwnProperty.call(b, p))
              d[p] = b[p];
        };
        __extends2 = function(d, b) {
          if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
          extendStatics(d, b);
          function __() {
            this.constructor = d;
          }
          d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
        };
        __assign5 = Object.assign || function(t) {
          for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s)
              if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
          }
          return t;
        };
        __rest = function(s, e) {
          var t = {};
          for (var p in s)
            if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
              t[p] = s[p];
          if (s != null && typeof Object.getOwnPropertySymbols === "function")
            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
              if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
                t[p[i]] = s[p[i]];
            }
          return t;
        };
        __decorate = function(decorators, target, key, desc) {
          var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
          if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
            r = Reflect.decorate(decorators, target, key, desc);
          else
            for (var i = decorators.length - 1; i >= 0; i--)
              if (d = decorators[i])
                r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
          return c > 3 && r && Object.defineProperty(target, key, r), r;
        };
        __param = function(paramIndex, decorator) {
          return function(target, key) {
            decorator(target, key, paramIndex);
          };
        };
        __metadata = function(metadataKey, metadataValue) {
          if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
            return Reflect.metadata(metadataKey, metadataValue);
        };
        __awaiter = function(thisArg, _arguments, P, generator) {
          function adopt(value) {
            return value instanceof P ? value : new P(function(resolve) {
              resolve(value);
            });
          }
          return new (P || (P = Promise))(function(resolve, reject) {
            function fulfilled(value) {
              try {
                step(generator.next(value));
              } catch (e) {
                reject(e);
              }
            }
            function rejected(value) {
              try {
                step(generator["throw"](value));
              } catch (e) {
                reject(e);
              }
            }
            function step(result) {
              result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
            }
            step((generator = generator.apply(thisArg, _arguments || [])).next());
          });
        };
        __generator = function(thisArg, body) {
          var _ = {label: 0, sent: function() {
            if (t[0] & 1)
              throw t[1];
            return t[1];
          }, trys: [], ops: []}, f, y, t, g;
          return g = {next: verb(0), "throw": verb(1), "return": verb(2)}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
            return this;
          }), g;
          function verb(n) {
            return function(v) {
              return step([n, v]);
            };
          }
          function step(op) {
            if (f)
              throw new TypeError("Generator is already executing.");
            while (_)
              try {
                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
                  return t;
                if (y = 0, t)
                  op = [op[0] & 2, t.value];
                switch (op[0]) {
                  case 0:
                  case 1:
                    t = op;
                    break;
                  case 4:
                    _.label++;
                    return {value: op[1], done: false};
                  case 5:
                    _.label++;
                    y = op[1];
                    op = [0];
                    continue;
                  case 7:
                    op = _.ops.pop();
                    _.trys.pop();
                    continue;
                  default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
                      _ = 0;
                      continue;
                    }
                    if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
                      _.label = op[1];
                      break;
                    }
                    if (op[0] === 6 && _.label < t[1]) {
                      _.label = t[1];
                      t = op;
                      break;
                    }
                    if (t && _.label < t[2]) {
                      _.label = t[2];
                      _.ops.push(op);
                      break;
                    }
                    if (t[2])
                      _.ops.pop();
                    _.trys.pop();
                    continue;
                }
                op = body.call(thisArg, _);
              } catch (e) {
                op = [6, e];
                y = 0;
              } finally {
                f = t = 0;
              }
            if (op[0] & 5)
              throw op[1];
            return {value: op[0] ? op[1] : void 0, done: true};
          }
        };
        __exportStar = function(m, o) {
          for (var p in m)
            if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
              __createBinding(o, m, p);
        };
        __createBinding = Object.create ? function(o, m, k, k2) {
          if (k2 === void 0)
            k2 = k;
          Object.defineProperty(o, k2, {enumerable: true, get: function() {
            return m[k];
          }});
        } : function(o, m, k, k2) {
          if (k2 === void 0)
            k2 = k;
          o[k2] = m[k];
        };
        __values = function(o) {
          var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
          if (m)
            return m.call(o);
          if (o && typeof o.length === "number")
            return {
              next: function() {
                if (o && i >= o.length)
                  o = void 0;
                return {value: o && o[i++], done: !o};
              }
            };
          throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
        };
        __read = function(o, n) {
          var m = typeof Symbol === "function" && o[Symbol.iterator];
          if (!m)
            return o;
          var i = m.call(o), r, ar = [], e;
          try {
            while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
              ar.push(r.value);
          } catch (error) {
            e = {error: error};
          } finally {
            try {
              if (r && !r.done && (m = i["return"]))
                m.call(i);
            } finally {
              if (e)
                throw e.error;
            }
          }
          return ar;
        };
        __spread = function() {
          for (var ar = [], i = 0; i < arguments.length; i++)
            ar = ar.concat(__read(arguments[i]));
          return ar;
        };
        __spreadArrays = function() {
          for (var s = 0, i = 0, il = arguments.length; i < il; i++)
            s += arguments[i].length;
          for (var r = Array(s), k = 0, i = 0; i < il; i++)
            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
              r[k] = a[j];
          return r;
        };
        __spreadArray2 = function(to, from) {
          for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
            to[j] = from[i];
          return to;
        };
        __await = function(v) {
          return this instanceof __await ? (this.v = v, this) : new __await(v);
        };
        __asyncGenerator = function(thisArg, _arguments, generator) {
          if (!Symbol.asyncIterator)
            throw new TypeError("Symbol.asyncIterator is not defined.");
          var g = generator.apply(thisArg, _arguments || []), i, q = [];
          return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() {
            return this;
          }, i;
          function verb(n) {
            if (g[n])
              i[n] = function(v) {
                return new Promise(function(a, b) {
                  q.push([n, v, a, b]) > 1 || resume(n, v);
                });
              };
          }
          function resume(n, v) {
            try {
              step(g[n](v));
            } catch (e) {
              settle(q[0][3], e);
            }
          }
          function step(r) {
            r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
          }
          function fulfill(value) {
            resume("next", value);
          }
          function reject(value) {
            resume("throw", value);
          }
          function settle(f, v) {
            if (f(v), q.shift(), q.length)
              resume(q[0][0], q[0][1]);
          }
        };
        __asyncDelegator = function(o) {
          var i, p;
          return i = {}, verb("next"), verb("throw", function(e) {
            throw e;
          }), verb("return"), i[Symbol.iterator] = function() {
            return this;
          }, i;
          function verb(n, f) {
            i[n] = o[n] ? function(v) {
              return (p = !p) ? {value: __await(o[n](v)), done: n === "return"} : f ? f(v) : v;
            } : f;
          }
        };
        __asyncValues = function(o) {
          if (!Symbol.asyncIterator)
            throw new TypeError("Symbol.asyncIterator is not defined.");
          var m = o[Symbol.asyncIterator], i;
          return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() {
            return this;
          }, i);
          function verb(n) {
            i[n] = o[n] && function(v) {
              return new Promise(function(resolve, reject) {
                v = o[n](v), settle(resolve, reject, v.done, v.value);
              });
            };
          }
          function settle(resolve, reject, d, v) {
            Promise.resolve(v).then(function(v2) {
              resolve({value: v2, done: d});
            }, reject);
          }
        };
        __makeTemplateObject = function(cooked, raw) {
          if (Object.defineProperty) {
            Object.defineProperty(cooked, "raw", {value: raw});
          } else {
            cooked.raw = raw;
          }
          return cooked;
        };
        var __setModuleDefault = Object.create ? function(o, v) {
          Object.defineProperty(o, "default", {enumerable: true, value: v});
        } : function(o, v) {
          o["default"] = v;
        };
        __importStar = function(mod) {
          if (mod && mod.__esModule)
            return mod;
          var result = {};
          if (mod != null) {
            for (var k in mod)
              if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
                __createBinding(result, mod, k);
          }
          __setModuleDefault(result, mod);
          return result;
        };
        __importDefault = function(mod) {
          return mod && mod.__esModule ? mod : {"default": mod};
        };
        __classPrivateFieldGet = function(receiver, state, kind, f) {
          if (kind === "a" && !f)
            throw new TypeError("Private accessor was defined without a getter");
          if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
            throw new TypeError("Cannot read private member from an object whose class did not declare it");
          return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
        };
        __classPrivateFieldSet = function(receiver, state, value, kind, f) {
          if (kind === "m")
            throw new TypeError("Private method is not writable");
          if (kind === "a" && !f)
            throw new TypeError("Private accessor was defined without a setter");
          if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
            throw new TypeError("Cannot write private member to an object whose class did not declare it");
          return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
        };
        exporter("__extends", __extends2);
        exporter("__assign", __assign5);
        exporter("__rest", __rest);
        exporter("__decorate", __decorate);
        exporter("__param", __param);
        exporter("__metadata", __metadata);
        exporter("__awaiter", __awaiter);
        exporter("__generator", __generator);
        exporter("__exportStar", __exportStar);
        exporter("__createBinding", __createBinding);
        exporter("__values", __values);
        exporter("__read", __read);
        exporter("__spread", __spread);
        exporter("__spreadArrays", __spreadArrays);
        exporter("__spreadArray", __spreadArray2);
        exporter("__await", __await);
        exporter("__asyncGenerator", __asyncGenerator);
        exporter("__asyncDelegator", __asyncDelegator);
        exporter("__asyncValues", __asyncValues);
        exporter("__makeTemplateObject", __makeTemplateObject);
        exporter("__importStar", __importStar);
        exporter("__importDefault", __importDefault);
        exporter("__classPrivateFieldGet", __classPrivateFieldGet);
        exporter("__classPrivateFieldSet", __classPrivateFieldSet);
      });
    }
  });

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/src/parser.js
  var require_parser = __commonJS({
    "bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/src/parser.js": function(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {value: true});
      exports.parseUnicodeLocaleId = exports.parseUnicodeLanguageId = exports.isUnicodeVariantSubtag = exports.isUnicodeScriptSubtag = exports.isUnicodeRegionSubtag = exports.isStructurallyValidLanguageTag = exports.isUnicodeLanguageSubtag = exports.SEPARATOR = void 0;
      var tslib_1 = require_tslib();
      var ALPHANUM_1_8 = /^[a-z0-9]{1,8}$/i;
      var ALPHANUM_2_8 = /^[a-z0-9]{2,8}$/i;
      var ALPHANUM_3_8 = /^[a-z0-9]{3,8}$/i;
      var KEY_REGEX = /^[a-z0-9][a-z]$/i;
      var TYPE_REGEX = /^[a-z0-9]{3,8}$/i;
      var ALPHA_4 = /^[a-z]{4}$/i;
      var OTHER_EXTENSION_TYPE = /^[0-9a-svwyz]$/i;
      var UNICODE_REGION_SUBTAG_REGEX = /^([a-z]{2}|[0-9]{3})$/i;
      var UNICODE_VARIANT_SUBTAG_REGEX = /^([a-z0-9]{5,8}|[0-9][a-z0-9]{3})$/i;
      var UNICODE_LANGUAGE_SUBTAG_REGEX = /^([a-z]{2,3}|[a-z]{5,8})$/i;
      var TKEY_REGEX = /^[a-z][0-9]$/i;
      exports.SEPARATOR = "-";
      function isUnicodeLanguageSubtag2(lang) {
        return UNICODE_LANGUAGE_SUBTAG_REGEX.test(lang);
      }
      exports.isUnicodeLanguageSubtag = isUnicodeLanguageSubtag2;
      function isStructurallyValidLanguageTag2(tag) {
        try {
          parseUnicodeLanguageId2(tag.split(exports.SEPARATOR));
        } catch (e) {
          return false;
        }
        return true;
      }
      exports.isStructurallyValidLanguageTag = isStructurallyValidLanguageTag2;
      function isUnicodeRegionSubtag2(region) {
        return UNICODE_REGION_SUBTAG_REGEX.test(region);
      }
      exports.isUnicodeRegionSubtag = isUnicodeRegionSubtag2;
      function isUnicodeScriptSubtag2(script) {
        return ALPHA_4.test(script);
      }
      exports.isUnicodeScriptSubtag = isUnicodeScriptSubtag2;
      function isUnicodeVariantSubtag(variant) {
        return UNICODE_VARIANT_SUBTAG_REGEX.test(variant);
      }
      exports.isUnicodeVariantSubtag = isUnicodeVariantSubtag;
      function parseUnicodeLanguageId2(chunks) {
        if (typeof chunks === "string") {
          chunks = chunks.split(exports.SEPARATOR);
        }
        var lang = chunks.shift();
        if (!lang) {
          throw new RangeError("Missing unicode_language_subtag");
        }
        if (lang === "root") {
          return {lang: "root", variants: []};
        }
        if (!isUnicodeLanguageSubtag2(lang)) {
          throw new RangeError("Malformed unicode_language_subtag");
        }
        var script;
        if (chunks.length && isUnicodeScriptSubtag2(chunks[0])) {
          script = chunks.shift();
        }
        var region;
        if (chunks.length && isUnicodeRegionSubtag2(chunks[0])) {
          region = chunks.shift();
        }
        var variants = {};
        while (chunks.length && isUnicodeVariantSubtag(chunks[0])) {
          var variant = chunks.shift();
          if (variant in variants) {
            throw new RangeError('Duplicate variant "' + variant + '"');
          }
          variants[variant] = 1;
        }
        return {
          lang: lang,
          script: script,
          region: region,
          variants: Object.keys(variants)
        };
      }
      exports.parseUnicodeLanguageId = parseUnicodeLanguageId2;
      function parseUnicodeExtension(chunks) {
        var keywords = [];
        var keyword;
        while (chunks.length && (keyword = parseKeyword(chunks))) {
          keywords.push(keyword);
        }
        if (keywords.length) {
          return {
            type: "u",
            keywords: keywords,
            attributes: []
          };
        }
        var attributes = [];
        while (chunks.length && ALPHANUM_3_8.test(chunks[0])) {
          attributes.push(chunks.shift());
        }
        while (chunks.length && (keyword = parseKeyword(chunks))) {
          keywords.push(keyword);
        }
        if (keywords.length || attributes.length) {
          return {
            type: "u",
            attributes: attributes,
            keywords: keywords
          };
        }
        throw new RangeError("Malformed unicode_extension");
      }
      function parseKeyword(chunks) {
        var key;
        if (!KEY_REGEX.test(chunks[0])) {
          return;
        }
        key = chunks.shift();
        var type = [];
        while (chunks.length && TYPE_REGEX.test(chunks[0])) {
          type.push(chunks.shift());
        }
        var value = "";
        if (type.length) {
          value = type.join(exports.SEPARATOR);
        }
        return [key, value];
      }
      function parseTransformedExtension(chunks) {
        var lang;
        try {
          lang = parseUnicodeLanguageId2(chunks);
        } catch (e) {
        }
        var fields = [];
        while (chunks.length && TKEY_REGEX.test(chunks[0])) {
          var key = chunks.shift();
          var value = [];
          while (chunks.length && ALPHANUM_3_8.test(chunks[0])) {
            value.push(chunks.shift());
          }
          if (!value.length) {
            throw new RangeError('Missing tvalue for tkey "' + key + '"');
          }
          fields.push([key, value.join(exports.SEPARATOR)]);
        }
        if (fields.length) {
          return {
            type: "t",
            fields: fields,
            lang: lang
          };
        }
        throw new RangeError("Malformed transformed_extension");
      }
      function parsePuExtension(chunks) {
        var exts = [];
        while (chunks.length && ALPHANUM_1_8.test(chunks[0])) {
          exts.push(chunks.shift());
        }
        if (exts.length) {
          return {
            type: "x",
            value: exts.join(exports.SEPARATOR)
          };
        }
        throw new RangeError("Malformed private_use_extension");
      }
      function parseOtherExtensionValue(chunks) {
        var exts = [];
        while (chunks.length && ALPHANUM_2_8.test(chunks[0])) {
          exts.push(chunks.shift());
        }
        if (exts.length) {
          return exts.join(exports.SEPARATOR);
        }
        return "";
      }
      function parseExtensions(chunks) {
        if (!chunks.length) {
          return {extensions: []};
        }
        var extensions = [];
        var unicodeExtension;
        var transformedExtension;
        var puExtension;
        var otherExtensionMap = {};
        do {
          var type = chunks.shift();
          switch (type) {
            case "u":
            case "U":
              if (unicodeExtension) {
                throw new RangeError("There can only be 1 -u- extension");
              }
              unicodeExtension = parseUnicodeExtension(chunks);
              extensions.push(unicodeExtension);
              break;
            case "t":
            case "T":
              if (transformedExtension) {
                throw new RangeError("There can only be 1 -t- extension");
              }
              transformedExtension = parseTransformedExtension(chunks);
              extensions.push(transformedExtension);
              break;
            case "x":
            case "X":
              if (puExtension) {
                throw new RangeError("There can only be 1 -x- extension");
              }
              puExtension = parsePuExtension(chunks);
              extensions.push(puExtension);
              break;
            default:
              if (!OTHER_EXTENSION_TYPE.test(type)) {
                throw new RangeError("Malformed extension type");
              }
              if (type in otherExtensionMap) {
                throw new RangeError("There can only be 1 -" + type + "- extension");
              }
              var extension = {
                type: type,
                value: parseOtherExtensionValue(chunks)
              };
              otherExtensionMap[extension.type] = extension;
              extensions.push(extension);
              break;
          }
        } while (chunks.length);
        return {extensions: extensions};
      }
      function parseUnicodeLocaleId2(locale) {
        var chunks = locale.split(exports.SEPARATOR);
        var lang = parseUnicodeLanguageId2(chunks);
        return tslib_1.__assign({lang: lang}, parseExtensions(chunks));
      }
      exports.parseUnicodeLocaleId = parseUnicodeLocaleId2;
    }
  });

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/src/emitter.js
  var require_emitter = __commonJS({
    "bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/src/emitter.js": function(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {value: true});
      exports.emitUnicodeLocaleId = exports.emitUnicodeLanguageId = void 0;
      var tslib_1 = require_tslib();
      function emitUnicodeLanguageId2(lang) {
        if (!lang) {
          return "";
        }
        return tslib_1.__spreadArray([lang.lang, lang.script, lang.region], lang.variants || []).filter(Boolean).join("-");
      }
      exports.emitUnicodeLanguageId = emitUnicodeLanguageId2;
      function emitUnicodeLocaleId2(_a) {
        var lang = _a.lang, extensions = _a.extensions;
        var chunks = [emitUnicodeLanguageId2(lang)];
        for (var _i = 0, extensions_1 = extensions; _i < extensions_1.length; _i++) {
          var ext = extensions_1[_i];
          chunks.push(ext.type);
          switch (ext.type) {
            case "u":
              chunks.push.apply(chunks, tslib_1.__spreadArray(tslib_1.__spreadArray([], ext.attributes), ext.keywords.reduce(function(all, kv) {
                return all.concat(kv);
              }, [])));
              break;
            case "t":
              chunks.push.apply(chunks, tslib_1.__spreadArray([emitUnicodeLanguageId2(ext.lang)], ext.fields.reduce(function(all, kv) {
                return all.concat(kv);
              }, [])));
              break;
            default:
              chunks.push(ext.value);
              break;
          }
        }
        return chunks.filter(Boolean).join("-");
      }
      exports.emitUnicodeLocaleId = emitUnicodeLocaleId2;
    }
  });

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/src/data/aliases.js
  var require_aliases = __commonJS({
    "bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/src/data/aliases.js": function(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {value: true});
      exports.variantAlias = exports.scriptAlias = exports.territoryAlias = exports.languageAlias = void 0;
      exports.languageAlias = {
        "aa-saaho": "ssy",
        "aam": "aas",
        "aar": "aa",
        "abk": "ab",
        "adp": "dz",
        "afr": "af",
        "agp": "apf",
        "ais": "ami",
        "aju": "jrb",
        "aka": "ak",
        "alb": "sq",
        "als": "sq",
        "amh": "am",
        "ara": "ar",
        "arb": "ar",
        "arg": "an",
        "arm": "hy",
        "art-lojban": "jbo",
        "asd": "snz",
        "asm": "as",
        "aue": "ktz",
        "ava": "av",
        "ave": "ae",
        "aym": "ay",
        "ayr": "ay",
        "ayx": "nun",
        "aze": "az",
        "azj": "az",
        "bak": "ba",
        "bam": "bm",
        "baq": "eu",
        "baz": "nvo",
        "bcc": "bal",
        "bcl": "bik",
        "bel": "be",
        "ben": "bn",
        "bgm": "bcg",
        "bh": "bho",
        "bhk": "fbl",
        "bih": "bho",
        "bis": "bi",
        "bjd": "drl",
        "bjq": "bzc",
        "bkb": "ebk",
        "bod": "bo",
        "bos": "bs",
        "bre": "br",
        "btb": "beb",
        "bul": "bg",
        "bur": "my",
        "bxk": "luy",
        "bxr": "bua",
        "cat": "ca",
        "ccq": "rki",
        "cel-gaulish": "xtg",
        "ces": "cs",
        "cha": "ch",
        "che": "ce",
        "chi": "zh",
        "chu": "cu",
        "chv": "cv",
        "cjr": "mom",
        "cka": "cmr",
        "cld": "syr",
        "cmk": "xch",
        "cmn": "zh",
        "cnr": "sr-ME",
        "cor": "kw",
        "cos": "co",
        "coy": "pij",
        "cqu": "quh",
        "cre": "cr",
        "cwd": "cr",
        "cym": "cy",
        "cze": "cs",
        "daf": "dnj",
        "dan": "da",
        "dap": "njz",
        "deu": "de",
        "dgo": "doi",
        "dhd": "mwr",
        "dik": "din",
        "diq": "zza",
        "dit": "dif",
        "div": "dv",
        "djl": "dze",
        "dkl": "aqd",
        "drh": "mn",
        "drr": "kzk",
        "drw": "fa-AF",
        "dud": "uth",
        "duj": "dwu",
        "dut": "nl",
        "dwl": "dbt",
        "dzo": "dz",
        "ekk": "et",
        "ell": "el",
        "elp": "amq",
        "emk": "man",
        "en-GB-oed": "en-GB-oxendict",
        "eng": "en",
        "epo": "eo",
        "esk": "ik",
        "est": "et",
        "eus": "eu",
        "ewe": "ee",
        "fao": "fo",
        "fas": "fa",
        "fat": "ak",
        "fij": "fj",
        "fin": "fi",
        "fra": "fr",
        "fre": "fr",
        "fry": "fy",
        "fuc": "ff",
        "ful": "ff",
        "gav": "dev",
        "gaz": "om",
        "gbc": "wny",
        "gbo": "grb",
        "geo": "ka",
        "ger": "de",
        "gfx": "vaj",
        "ggn": "gvr",
        "ggo": "esg",
        "ggr": "gtu",
        "gio": "aou",
        "gla": "gd",
        "gle": "ga",
        "glg": "gl",
        "gli": "kzk",
        "glv": "gv",
        "gno": "gon",
        "gre": "el",
        "grn": "gn",
        "gti": "nyc",
        "gug": "gn",
        "guj": "gu",
        "guv": "duz",
        "gya": "gba",
        "hat": "ht",
        "hau": "ha",
        "hbs": "sr-Latn",
        "hdn": "hai",
        "hea": "hmn",
        "heb": "he",
        "her": "hz",
        "him": "srx",
        "hin": "hi",
        "hmo": "ho",
        "hrr": "jal",
        "hrv": "hr",
        "hun": "hu",
        "hy-arevmda": "hyw",
        "hye": "hy",
        "i-ami": "ami",
        "i-bnn": "bnn",
        "i-default": "en-x-i-default",
        "i-enochian": "und-x-i-enochian",
        "i-hak": "hak",
        "i-klingon": "tlh",
        "i-lux": "lb",
        "i-mingo": "see-x-i-mingo",
        "i-navajo": "nv",
        "i-pwn": "pwn",
        "i-tao": "tao",
        "i-tay": "tay",
        "i-tsu": "tsu",
        "ibi": "opa",
        "ibo": "ig",
        "ice": "is",
        "ido": "io",
        "iii": "ii",
        "ike": "iu",
        "iku": "iu",
        "ile": "ie",
        "ill": "ilm",
        "ilw": "gal",
        "in": "id",
        "ina": "ia",
        "ind": "id",
        "ipk": "ik",
        "isl": "is",
        "ita": "it",
        "iw": "he",
        "izi": "eza",
        "jar": "jgk",
        "jav": "jv",
        "jeg": "oyb",
        "ji": "yi",
        "jpn": "ja",
        "jw": "jv",
        "kal": "kl",
        "kan": "kn",
        "kas": "ks",
        "kat": "ka",
        "kau": "kr",
        "kaz": "kk",
        "kdv": "zkd",
        "kgc": "tdf",
        "kgd": "ncq",
        "kgh": "kml",
        "khk": "mn",
        "khm": "km",
        "kik": "ki",
        "kin": "rw",
        "kir": "ky",
        "kmr": "ku",
        "knc": "kr",
        "kng": "kg",
        "knn": "kok",
        "koj": "kwv",
        "kom": "kv",
        "kon": "kg",
        "kor": "ko",
        "kpp": "jkm",
        "kpv": "kv",
        "krm": "bmf",
        "ktr": "dtp",
        "kua": "kj",
        "kur": "ku",
        "kvs": "gdj",
        "kwq": "yam",
        "kxe": "tvd",
        "kxl": "kru",
        "kzh": "dgl",
        "kzj": "dtp",
        "kzt": "dtp",
        "lao": "lo",
        "lat": "la",
        "lav": "lv",
        "lbk": "bnc",
        "leg": "enl",
        "lii": "raq",
        "lim": "li",
        "lin": "ln",
        "lit": "lt",
        "llo": "ngt",
        "lmm": "rmx",
        "ltz": "lb",
        "lub": "lu",
        "lug": "lg",
        "lvs": "lv",
        "mac": "mk",
        "mah": "mh",
        "mal": "ml",
        "mao": "mi",
        "mar": "mr",
        "may": "ms",
        "meg": "cir",
        "mgx": "jbk",
        "mhr": "chm",
        "mkd": "mk",
        "mlg": "mg",
        "mlt": "mt",
        "mnk": "man",
        "mnt": "wnn",
        "mo": "ro",
        "mof": "xnt",
        "mol": "ro",
        "mon": "mn",
        "mri": "mi",
        "msa": "ms",
        "mst": "mry",
        "mup": "raj",
        "mwd": "dmw",
        "mwj": "vaj",
        "mya": "my",
        "myd": "aog",
        "myt": "mry",
        "nad": "xny",
        "nau": "na",
        "nav": "nv",
        "nbf": "nru",
        "nbl": "nr",
        "nbx": "ekc",
        "ncp": "kdz",
        "nde": "nd",
        "ndo": "ng",
        "nep": "ne",
        "nld": "nl",
        "nln": "azd",
        "nlr": "nrk",
        "nno": "nn",
        "nns": "nbr",
        "nnx": "ngv",
        "no-bok": "nb",
        "no-bokmal": "nb",
        "no-nyn": "nn",
        "no-nynorsk": "nn",
        "nob": "nb",
        "noo": "dtd",
        "nor": "no",
        "npi": "ne",
        "nts": "pij",
        "nxu": "bpp",
        "nya": "ny",
        "oci": "oc",
        "ojg": "oj",
        "oji": "oj",
        "ori": "or",
        "orm": "om",
        "ory": "or",
        "oss": "os",
        "oun": "vaj",
        "pan": "pa",
        "pbu": "ps",
        "pcr": "adx",
        "per": "fa",
        "pes": "fa",
        "pli": "pi",
        "plt": "mg",
        "pmc": "huw",
        "pmu": "phr",
        "pnb": "lah",
        "pol": "pl",
        "por": "pt",
        "ppa": "bfy",
        "ppr": "lcq",
        "prs": "fa-AF",
        "pry": "prt",
        "pus": "ps",
        "puz": "pub",
        "que": "qu",
        "quz": "qu",
        "rmr": "emx",
        "rmy": "rom",
        "roh": "rm",
        "ron": "ro",
        "rum": "ro",
        "run": "rn",
        "rus": "ru",
        "sag": "sg",
        "san": "sa",
        "sap": "aqt",
        "sca": "hle",
        "scc": "sr",
        "scr": "hr",
        "sgl": "isk",
        "sgn-BE-FR": "sfb",
        "sgn-BE-NL": "vgt",
        "sgn-BR": "bzs",
        "sgn-CH-DE": "sgg",
        "sgn-CO": "csn",
        "sgn-DE": "gsg",
        "sgn-DK": "dsl",
        "sgn-ES": "ssp",
        "sgn-FR": "fsl",
        "sgn-GB": "bfi",
        "sgn-GR": "gss",
        "sgn-IE": "isg",
        "sgn-IT": "ise",
        "sgn-JP": "jsl",
        "sgn-MX": "mfs",
        "sgn-NI": "ncs",
        "sgn-NL": "dse",
        "sgn-NO": "nsi",
        "sgn-PT": "psr",
        "sgn-SE": "swl",
        "sgn-US": "ase",
        "sgn-ZA": "sfs",
        "sh": "sr-Latn",
        "sin": "si",
        "skk": "oyb",
        "slk": "sk",
        "slo": "sk",
        "slv": "sl",
        "sme": "se",
        "smo": "sm",
        "sna": "sn",
        "snd": "sd",
        "som": "so",
        "sot": "st",
        "spa": "es",
        "spy": "kln",
        "sqi": "sq",
        "src": "sc",
        "srd": "sc",
        "srp": "sr",
        "ssw": "ss",
        "sul": "sgd",
        "sum": "ulw",
        "sun": "su",
        "swa": "sw",
        "swc": "sw-CD",
        "swe": "sv",
        "swh": "sw",
        "tah": "ty",
        "tam": "ta",
        "tat": "tt",
        "tdu": "dtp",
        "tel": "te",
        "tgg": "bjp",
        "tgk": "tg",
        "tgl": "fil",
        "tha": "th",
        "thc": "tpo",
        "thw": "ola",
        "thx": "oyb",
        "tib": "bo",
        "tid": "itd",
        "tie": "ras",
        "tir": "ti",
        "tkk": "twm",
        "tl": "fil",
        "tlw": "weo",
        "tmp": "tyj",
        "tne": "kak",
        "tnf": "fa-AF",
        "ton": "to",
        "tsf": "taj",
        "tsn": "tn",
        "tso": "ts",
        "ttq": "tmh",
        "tuk": "tk",
        "tur": "tr",
        "tw": "ak",
        "twi": "ak",
        "uig": "ug",
        "ukr": "uk",
        "umu": "del",
        "und-aaland": "und-AX",
        "und-arevela": "und",
        "und-arevmda": "und",
        "und-bokmal": "und",
        "und-hakka": "und",
        "und-hepburn-heploc": "und-alalc97",
        "und-lojban": "und",
        "und-nynorsk": "und",
        "und-saaho": "und",
        "und-xiang": "und",
        "unp": "wro",
        "uok": "ema",
        "urd": "ur",
        "uzb": "uz",
        "uzn": "uz",
        "ven": "ve",
        "vie": "vi",
        "vol": "vo",
        "wel": "cy",
        "wgw": "wgb",
        "wit": "nol",
        "wiw": "nwo",
        "wln": "wa",
        "wol": "wo",
        "xba": "cax",
        "xho": "xh",
        "xia": "acn",
        "xkh": "waw",
        "xpe": "kpe",
        "xrq": "dmw",
        "xsj": "suj",
        "xsl": "den",
        "ybd": "rki",
        "ydd": "yi",
        "yen": "ynq",
        "yid": "yi",
        "yiy": "yrm",
        "yma": "lrr",
        "ymt": "mtm",
        "yor": "yo",
        "yos": "zom",
        "yuu": "yug",
        "zai": "zap",
        "zh-cmn": "zh",
        "zh-cmn-Hans": "zh-Hans",
        "zh-cmn-Hant": "zh-Hant",
        "zh-gan": "gan",
        "zh-guoyu": "zh",
        "zh-hakka": "hak",
        "zh-min": "nan-x-zh-min",
        "zh-min-nan": "nan",
        "zh-wuu": "wuu",
        "zh-xiang": "hsn",
        "zh-yue": "yue",
        "zha": "za",
        "zho": "zh",
        "zir": "scv",
        "zsm": "ms",
        "zul": "zu",
        "zyb": "za"
      };
      exports.territoryAlias = {
        "100": "BG",
        "104": "MM",
        "108": "BI",
        "112": "BY",
        "116": "KH",
        "120": "CM",
        "124": "CA",
        "132": "CV",
        "136": "KY",
        "140": "CF",
        "144": "LK",
        "148": "TD",
        "152": "CL",
        "156": "CN",
        "158": "TW",
        "162": "CX",
        "166": "CC",
        "170": "CO",
        "172": "RU AM AZ BY GE KG KZ MD TJ TM UA UZ",
        "174": "KM",
        "175": "YT",
        "178": "CG",
        "180": "CD",
        "184": "CK",
        "188": "CR",
        "191": "HR",
        "192": "CU",
        "196": "CY",
        "200": "CZ SK",
        "203": "CZ",
        "204": "BJ",
        "208": "DK",
        "212": "DM",
        "214": "DO",
        "218": "EC",
        "222": "SV",
        "226": "GQ",
        "230": "ET",
        "231": "ET",
        "232": "ER",
        "233": "EE",
        "234": "FO",
        "238": "FK",
        "239": "GS",
        "242": "FJ",
        "246": "FI",
        "248": "AX",
        "249": "FR",
        "250": "FR",
        "254": "GF",
        "258": "PF",
        "260": "TF",
        "262": "DJ",
        "266": "GA",
        "268": "GE",
        "270": "GM",
        "275": "PS",
        "276": "DE",
        "278": "DE",
        "280": "DE",
        "288": "GH",
        "292": "GI",
        "296": "KI",
        "300": "GR",
        "304": "GL",
        "308": "GD",
        "312": "GP",
        "316": "GU",
        "320": "GT",
        "324": "GN",
        "328": "GY",
        "332": "HT",
        "334": "HM",
        "336": "VA",
        "340": "HN",
        "344": "HK",
        "348": "HU",
        "352": "IS",
        "356": "IN",
        "360": "ID",
        "364": "IR",
        "368": "IQ",
        "372": "IE",
        "376": "IL",
        "380": "IT",
        "384": "CI",
        "388": "JM",
        "392": "JP",
        "398": "KZ",
        "400": "JO",
        "404": "KE",
        "408": "KP",
        "410": "KR",
        "414": "KW",
        "417": "KG",
        "418": "LA",
        "422": "LB",
        "426": "LS",
        "428": "LV",
        "430": "LR",
        "434": "LY",
        "438": "LI",
        "440": "LT",
        "442": "LU",
        "446": "MO",
        "450": "MG",
        "454": "MW",
        "458": "MY",
        "462": "MV",
        "466": "ML",
        "470": "MT",
        "474": "MQ",
        "478": "MR",
        "480": "MU",
        "484": "MX",
        "492": "MC",
        "496": "MN",
        "498": "MD",
        "499": "ME",
        "500": "MS",
        "504": "MA",
        "508": "MZ",
        "512": "OM",
        "516": "NA",
        "520": "NR",
        "524": "NP",
        "528": "NL",
        "530": "CW SX BQ",
        "531": "CW",
        "532": "CW SX BQ",
        "533": "AW",
        "534": "SX",
        "535": "BQ",
        "536": "SA IQ",
        "540": "NC",
        "548": "VU",
        "554": "NZ",
        "558": "NI",
        "562": "NE",
        "566": "NG",
        "570": "NU",
        "574": "NF",
        "578": "NO",
        "580": "MP",
        "581": "UM",
        "582": "FM MH MP PW",
        "583": "FM",
        "584": "MH",
        "585": "PW",
        "586": "PK",
        "591": "PA",
        "598": "PG",
        "600": "PY",
        "604": "PE",
        "608": "PH",
        "612": "PN",
        "616": "PL",
        "620": "PT",
        "624": "GW",
        "626": "TL",
        "630": "PR",
        "634": "QA",
        "638": "RE",
        "642": "RO",
        "643": "RU",
        "646": "RW",
        "652": "BL",
        "654": "SH",
        "659": "KN",
        "660": "AI",
        "662": "LC",
        "663": "MF",
        "666": "PM",
        "670": "VC",
        "674": "SM",
        "678": "ST",
        "682": "SA",
        "686": "SN",
        "688": "RS",
        "690": "SC",
        "694": "SL",
        "702": "SG",
        "703": "SK",
        "704": "VN",
        "705": "SI",
        "706": "SO",
        "710": "ZA",
        "716": "ZW",
        "720": "YE",
        "724": "ES",
        "728": "SS",
        "729": "SD",
        "732": "EH",
        "736": "SD",
        "740": "SR",
        "744": "SJ",
        "748": "SZ",
        "752": "SE",
        "756": "CH",
        "760": "SY",
        "762": "TJ",
        "764": "TH",
        "768": "TG",
        "772": "TK",
        "776": "TO",
        "780": "TT",
        "784": "AE",
        "788": "TN",
        "792": "TR",
        "795": "TM",
        "796": "TC",
        "798": "TV",
        "800": "UG",
        "804": "UA",
        "807": "MK",
        "810": "RU AM AZ BY EE GE KZ KG LV LT MD TJ TM UA UZ",
        "818": "EG",
        "826": "GB",
        "830": "JE GG",
        "831": "GG",
        "832": "JE",
        "833": "IM",
        "834": "TZ",
        "840": "US",
        "850": "VI",
        "854": "BF",
        "858": "UY",
        "860": "UZ",
        "862": "VE",
        "876": "WF",
        "882": "WS",
        "886": "YE",
        "887": "YE",
        "890": "RS ME SI HR MK BA",
        "891": "RS ME",
        "894": "ZM",
        "958": "AA",
        "959": "QM",
        "960": "QN",
        "962": "QP",
        "963": "QQ",
        "964": "QR",
        "965": "QS",
        "966": "QT",
        "967": "EU",
        "968": "QV",
        "969": "QW",
        "970": "QX",
        "971": "QY",
        "972": "QZ",
        "973": "XA",
        "974": "XB",
        "975": "XC",
        "976": "XD",
        "977": "XE",
        "978": "XF",
        "979": "XG",
        "980": "XH",
        "981": "XI",
        "982": "XJ",
        "983": "XK",
        "984": "XL",
        "985": "XM",
        "986": "XN",
        "987": "XO",
        "988": "XP",
        "989": "XQ",
        "990": "XR",
        "991": "XS",
        "992": "XT",
        "993": "XU",
        "994": "XV",
        "995": "XW",
        "996": "XX",
        "997": "XY",
        "998": "XZ",
        "999": "ZZ",
        "004": "AF",
        "008": "AL",
        "010": "AQ",
        "012": "DZ",
        "016": "AS",
        "020": "AD",
        "024": "AO",
        "028": "AG",
        "031": "AZ",
        "032": "AR",
        "036": "AU",
        "040": "AT",
        "044": "BS",
        "048": "BH",
        "050": "BD",
        "051": "AM",
        "052": "BB",
        "056": "BE",
        "060": "BM",
        "062": "034 143",
        "064": "BT",
        "068": "BO",
        "070": "BA",
        "072": "BW",
        "074": "BV",
        "076": "BR",
        "084": "BZ",
        "086": "IO",
        "090": "SB",
        "092": "VG",
        "096": "BN",
        "AAA": "AA",
        "ABW": "AW",
        "AFG": "AF",
        "AGO": "AO",
        "AIA": "AI",
        "ALA": "AX",
        "ALB": "AL",
        "AN": "CW SX BQ",
        "AND": "AD",
        "ANT": "CW SX BQ",
        "ARE": "AE",
        "ARG": "AR",
        "ARM": "AM",
        "ASC": "AC",
        "ASM": "AS",
        "ATA": "AQ",
        "ATF": "TF",
        "ATG": "AG",
        "AUS": "AU",
        "AUT": "AT",
        "AZE": "AZ",
        "BDI": "BI",
        "BEL": "BE",
        "BEN": "BJ",
        "BES": "BQ",
        "BFA": "BF",
        "BGD": "BD",
        "BGR": "BG",
        "BHR": "BH",
        "BHS": "BS",
        "BIH": "BA",
        "BLM": "BL",
        "BLR": "BY",
        "BLZ": "BZ",
        "BMU": "BM",
        "BOL": "BO",
        "BRA": "BR",
        "BRB": "BB",
        "BRN": "BN",
        "BTN": "BT",
        "BU": "MM",
        "BUR": "MM",
        "BVT": "BV",
        "BWA": "BW",
        "CAF": "CF",
        "CAN": "CA",
        "CCK": "CC",
        "CHE": "CH",
        "CHL": "CL",
        "CHN": "CN",
        "CIV": "CI",
        "CMR": "CM",
        "COD": "CD",
        "COG": "CG",
        "COK": "CK",
        "COL": "CO",
        "COM": "KM",
        "CPT": "CP",
        "CPV": "CV",
        "CRI": "CR",
        "CS": "RS ME",
        "CT": "KI",
        "CUB": "CU",
        "CUW": "CW",
        "CXR": "CX",
        "CYM": "KY",
        "CYP": "CY",
        "CZE": "CZ",
        "DD": "DE",
        "DDR": "DE",
        "DEU": "DE",
        "DGA": "DG",
        "DJI": "DJ",
        "DMA": "DM",
        "DNK": "DK",
        "DOM": "DO",
        "DY": "BJ",
        "DZA": "DZ",
        "ECU": "EC",
        "EGY": "EG",
        "ERI": "ER",
        "ESH": "EH",
        "ESP": "ES",
        "EST": "EE",
        "ETH": "ET",
        "FIN": "FI",
        "FJI": "FJ",
        "FLK": "FK",
        "FQ": "AQ TF",
        "FRA": "FR",
        "FRO": "FO",
        "FSM": "FM",
        "FX": "FR",
        "FXX": "FR",
        "GAB": "GA",
        "GBR": "GB",
        "GEO": "GE",
        "GGY": "GG",
        "GHA": "GH",
        "GIB": "GI",
        "GIN": "GN",
        "GLP": "GP",
        "GMB": "GM",
        "GNB": "GW",
        "GNQ": "GQ",
        "GRC": "GR",
        "GRD": "GD",
        "GRL": "GL",
        "GTM": "GT",
        "GUF": "GF",
        "GUM": "GU",
        "GUY": "GY",
        "HKG": "HK",
        "HMD": "HM",
        "HND": "HN",
        "HRV": "HR",
        "HTI": "HT",
        "HUN": "HU",
        "HV": "BF",
        "IDN": "ID",
        "IMN": "IM",
        "IND": "IN",
        "IOT": "IO",
        "IRL": "IE",
        "IRN": "IR",
        "IRQ": "IQ",
        "ISL": "IS",
        "ISR": "IL",
        "ITA": "IT",
        "JAM": "JM",
        "JEY": "JE",
        "JOR": "JO",
        "JPN": "JP",
        "JT": "UM",
        "KAZ": "KZ",
        "KEN": "KE",
        "KGZ": "KG",
        "KHM": "KH",
        "KIR": "KI",
        "KNA": "KN",
        "KOR": "KR",
        "KWT": "KW",
        "LAO": "LA",
        "LBN": "LB",
        "LBR": "LR",
        "LBY": "LY",
        "LCA": "LC",
        "LIE": "LI",
        "LKA": "LK",
        "LSO": "LS",
        "LTU": "LT",
        "LUX": "LU",
        "LVA": "LV",
        "MAC": "MO",
        "MAF": "MF",
        "MAR": "MA",
        "MCO": "MC",
        "MDA": "MD",
        "MDG": "MG",
        "MDV": "MV",
        "MEX": "MX",
        "MHL": "MH",
        "MI": "UM",
        "MKD": "MK",
        "MLI": "ML",
        "MLT": "MT",
        "MMR": "MM",
        "MNE": "ME",
        "MNG": "MN",
        "MNP": "MP",
        "MOZ": "MZ",
        "MRT": "MR",
        "MSR": "MS",
        "MTQ": "MQ",
        "MUS": "MU",
        "MWI": "MW",
        "MYS": "MY",
        "MYT": "YT",
        "NAM": "NA",
        "NCL": "NC",
        "NER": "NE",
        "NFK": "NF",
        "NGA": "NG",
        "NH": "VU",
        "NIC": "NI",
        "NIU": "NU",
        "NLD": "NL",
        "NOR": "NO",
        "NPL": "NP",
        "NQ": "AQ",
        "NRU": "NR",
        "NT": "SA IQ",
        "NTZ": "SA IQ",
        "NZL": "NZ",
        "OMN": "OM",
        "PAK": "PK",
        "PAN": "PA",
        "PC": "FM MH MP PW",
        "PCN": "PN",
        "PER": "PE",
        "PHL": "PH",
        "PLW": "PW",
        "PNG": "PG",
        "POL": "PL",
        "PRI": "PR",
        "PRK": "KP",
        "PRT": "PT",
        "PRY": "PY",
        "PSE": "PS",
        "PU": "UM",
        "PYF": "PF",
        "PZ": "PA",
        "QAT": "QA",
        "QMM": "QM",
        "QNN": "QN",
        "QPP": "QP",
        "QQQ": "QQ",
        "QRR": "QR",
        "QSS": "QS",
        "QTT": "QT",
        "QU": "EU",
        "QUU": "EU",
        "QVV": "QV",
        "QWW": "QW",
        "QXX": "QX",
        "QYY": "QY",
        "QZZ": "QZ",
        "REU": "RE",
        "RH": "ZW",
        "ROU": "RO",
        "RUS": "RU",
        "RWA": "RW",
        "SAU": "SA",
        "SCG": "RS ME",
        "SDN": "SD",
        "SEN": "SN",
        "SGP": "SG",
        "SGS": "GS",
        "SHN": "SH",
        "SJM": "SJ",
        "SLB": "SB",
        "SLE": "SL",
        "SLV": "SV",
        "SMR": "SM",
        "SOM": "SO",
        "SPM": "PM",
        "SRB": "RS",
        "SSD": "SS",
        "STP": "ST",
        "SU": "RU AM AZ BY EE GE KZ KG LV LT MD TJ TM UA UZ",
        "SUN": "RU AM AZ BY EE GE KZ KG LV LT MD TJ TM UA UZ",
        "SUR": "SR",
        "SVK": "SK",
        "SVN": "SI",
        "SWE": "SE",
        "SWZ": "SZ",
        "SXM": "SX",
        "SYC": "SC",
        "SYR": "SY",
        "TAA": "TA",
        "TCA": "TC",
        "TCD": "TD",
        "TGO": "TG",
        "THA": "TH",
        "TJK": "TJ",
        "TKL": "TK",
        "TKM": "TM",
        "TLS": "TL",
        "TMP": "TL",
        "TON": "TO",
        "TP": "TL",
        "TTO": "TT",
        "TUN": "TN",
        "TUR": "TR",
        "TUV": "TV",
        "TWN": "TW",
        "TZA": "TZ",
        "UGA": "UG",
        "UK": "GB",
        "UKR": "UA",
        "UMI": "UM",
        "URY": "UY",
        "USA": "US",
        "UZB": "UZ",
        "VAT": "VA",
        "VCT": "VC",
        "VD": "VN",
        "VEN": "VE",
        "VGB": "VG",
        "VIR": "VI",
        "VNM": "VN",
        "VUT": "VU",
        "WK": "UM",
        "WLF": "WF",
        "WSM": "WS",
        "XAA": "XA",
        "XBB": "XB",
        "XCC": "XC",
        "XDD": "XD",
        "XEE": "XE",
        "XFF": "XF",
        "XGG": "XG",
        "XHH": "XH",
        "XII": "XI",
        "XJJ": "XJ",
        "XKK": "XK",
        "XLL": "XL",
        "XMM": "XM",
        "XNN": "XN",
        "XOO": "XO",
        "XPP": "XP",
        "XQQ": "XQ",
        "XRR": "XR",
        "XSS": "XS",
        "XTT": "XT",
        "XUU": "XU",
        "XVV": "XV",
        "XWW": "XW",
        "XXX": "XX",
        "XYY": "XY",
        "XZZ": "XZ",
        "YD": "YE",
        "YEM": "YE",
        "YMD": "YE",
        "YU": "RS ME",
        "YUG": "RS ME",
        "ZAF": "ZA",
        "ZAR": "CD",
        "ZMB": "ZM",
        "ZR": "CD",
        "ZWE": "ZW",
        "ZZZ": "ZZ"
      };
      exports.scriptAlias = {
        "Qaai": "Zinh"
      };
      exports.variantAlias = {
        "heploc": "alalc97",
        "polytoni": "polyton"
      };
    }
  });

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

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/src/canonicalizer.js
  var require_canonicalizer = __commonJS({
    "bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/src/canonicalizer.js": function(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {value: true});
      exports.canonicalizeUnicodeLocaleId = exports.canonicalizeUnicodeLanguageId = void 0;
      var tslib_1 = require_tslib();
      var aliases_1 = require_aliases();
      var parser_1 = require_parser();
      var likelySubtags2 = tslib_1.__importStar(require_likelySubtags());
      var emitter_1 = require_emitter();
      function canonicalizeAttrs(strs) {
        return Object.keys(strs.reduce(function(all, str) {
          all[str.toLowerCase()] = 1;
          return all;
        }, {})).sort();
      }
      function canonicalizeKVs(arr) {
        var all = {};
        var result = [];
        for (var _i = 0, arr_1 = arr; _i < arr_1.length; _i++) {
          var kv = arr_1[_i];
          if (kv[0] in all) {
            continue;
          }
          all[kv[0]] = 1;
          if (!kv[1] || kv[1] === "true") {
            result.push([kv[0].toLowerCase()]);
          } else {
            result.push([kv[0].toLowerCase(), kv[1].toLowerCase()]);
          }
        }
        return result.sort(compareKV);
      }
      function compareKV(t1, t2) {
        return t1[0] < t2[0] ? -1 : t1[0] > t2[0] ? 1 : 0;
      }
      function compareExtension(e1, e2) {
        return e1.type < e2.type ? -1 : e1.type > e2.type ? 1 : 0;
      }
      function mergeVariants(v1, v2) {
        var result = tslib_1.__spreadArray([], v1);
        for (var _i = 0, v2_1 = v2; _i < v2_1.length; _i++) {
          var v = v2_1[_i];
          if (v1.indexOf(v) < 0) {
            result.push(v);
          }
        }
        return result;
      }
      function canonicalizeUnicodeLanguageId(unicodeLanguageId) {
        var finalLangAst = unicodeLanguageId;
        if (unicodeLanguageId.variants.length) {
          var replacedLang_1 = "";
          for (var _i = 0, _a = unicodeLanguageId.variants; _i < _a.length; _i++) {
            var variant = _a[_i];
            if (replacedLang_1 = aliases_1.languageAlias[emitter_1.emitUnicodeLanguageId({
              lang: unicodeLanguageId.lang,
              variants: [variant]
            })]) {
              var replacedLangAst = parser_1.parseUnicodeLanguageId(replacedLang_1.split(parser_1.SEPARATOR));
              finalLangAst = {
                lang: replacedLangAst.lang,
                script: finalLangAst.script || replacedLangAst.script,
                region: finalLangAst.region || replacedLangAst.region,
                variants: mergeVariants(finalLangAst.variants, replacedLangAst.variants)
              };
              break;
            }
          }
        }
        if (finalLangAst.script && finalLangAst.region) {
          var replacedLang_2 = aliases_1.languageAlias[emitter_1.emitUnicodeLanguageId({
            lang: finalLangAst.lang,
            script: finalLangAst.script,
            region: finalLangAst.region,
            variants: []
          })];
          if (replacedLang_2) {
            var replacedLangAst = parser_1.parseUnicodeLanguageId(replacedLang_2.split(parser_1.SEPARATOR));
            finalLangAst = {
              lang: replacedLangAst.lang,
              script: replacedLangAst.script,
              region: replacedLangAst.region,
              variants: finalLangAst.variants
            };
          }
        }
        if (finalLangAst.region) {
          var replacedLang_3 = aliases_1.languageAlias[emitter_1.emitUnicodeLanguageId({
            lang: finalLangAst.lang,
            region: finalLangAst.region,
            variants: []
          })];
          if (replacedLang_3) {
            var replacedLangAst = parser_1.parseUnicodeLanguageId(replacedLang_3.split(parser_1.SEPARATOR));
            finalLangAst = {
              lang: replacedLangAst.lang,
              script: finalLangAst.script || replacedLangAst.script,
              region: replacedLangAst.region,
              variants: finalLangAst.variants
            };
          }
        }
        var replacedLang = aliases_1.languageAlias[emitter_1.emitUnicodeLanguageId({
          lang: finalLangAst.lang,
          variants: []
        })];
        if (replacedLang) {
          var replacedLangAst = parser_1.parseUnicodeLanguageId(replacedLang.split(parser_1.SEPARATOR));
          finalLangAst = {
            lang: replacedLangAst.lang,
            script: finalLangAst.script || replacedLangAst.script,
            region: finalLangAst.region || replacedLangAst.region,
            variants: finalLangAst.variants
          };
        }
        if (finalLangAst.region) {
          var region = finalLangAst.region.toUpperCase();
          var regionAlias = aliases_1.territoryAlias[region];
          var replacedRegion = void 0;
          if (regionAlias) {
            var regions = regionAlias.split(" ");
            replacedRegion = regions[0];
            var likelySubtag = likelySubtags2.supplemental.likelySubtags[emitter_1.emitUnicodeLanguageId({
              lang: finalLangAst.lang,
              script: finalLangAst.script,
              variants: []
            })];
            if (likelySubtag) {
              var likelyRegion = parser_1.parseUnicodeLanguageId(likelySubtag.split(parser_1.SEPARATOR)).region;
              if (likelyRegion && regions.indexOf(likelyRegion) > -1) {
                replacedRegion = likelyRegion;
              }
            }
          }
          if (replacedRegion) {
            finalLangAst.region = replacedRegion;
          }
          finalLangAst.region = finalLangAst.region.toUpperCase();
        }
        if (finalLangAst.script) {
          finalLangAst.script = finalLangAst.script[0].toUpperCase() + finalLangAst.script.slice(1).toLowerCase();
          if (aliases_1.scriptAlias[finalLangAst.script]) {
            finalLangAst.script = aliases_1.scriptAlias[finalLangAst.script];
          }
        }
        if (finalLangAst.variants.length) {
          for (var i = 0; i < finalLangAst.variants.length; i++) {
            var variant = finalLangAst.variants[i].toLowerCase();
            if (aliases_1.variantAlias[variant]) {
              var alias = aliases_1.variantAlias[variant];
              if (parser_1.isUnicodeVariantSubtag(alias)) {
                finalLangAst.variants[i] = alias;
              } else if (parser_1.isUnicodeLanguageSubtag(alias)) {
                finalLangAst.lang = alias;
              }
            }
          }
          finalLangAst.variants.sort();
        }
        return finalLangAst;
      }
      exports.canonicalizeUnicodeLanguageId = canonicalizeUnicodeLanguageId;
      function canonicalizeUnicodeLocaleId(locale) {
        locale.lang = canonicalizeUnicodeLanguageId(locale.lang);
        if (locale.extensions) {
          for (var _i = 0, _a = locale.extensions; _i < _a.length; _i++) {
            var extension = _a[_i];
            switch (extension.type) {
              case "u":
                extension.keywords = canonicalizeKVs(extension.keywords);
                if (extension.attributes) {
                  extension.attributes = canonicalizeAttrs(extension.attributes);
                }
                break;
              case "t":
                if (extension.lang) {
                  extension.lang = canonicalizeUnicodeLanguageId(extension.lang);
                }
                extension.fields = canonicalizeKVs(extension.fields);
                break;
              default:
                extension.value = extension.value.toLowerCase();
                break;
            }
          }
          locale.extensions.sort(compareExtension);
        }
        return locale;
      }
      exports.canonicalizeUnicodeLocaleId = canonicalizeUnicodeLocaleId;
    }
  });

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/src/types.js
  var require_types = __commonJS({
    "bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/src/types.js": function(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {value: true});
    }
  });

  // bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/index.js
  var require_intl_getcanonicallocales = __commonJS({
    "bazel-out/darwin-fastbuild/bin/packages/intl-getcanonicallocales/index.js": function(exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", {value: true});
      exports.isUnicodeLanguageSubtag = exports.isUnicodeScriptSubtag = exports.isUnicodeRegionSubtag = exports.isStructurallyValidLanguageTag = exports.parseUnicodeLanguageId = exports.parseUnicodeLocaleId = exports.getCanonicalLocales = void 0;
      var tslib_1 = require_tslib();
      var parser_1 = require_parser();
      var emitter_1 = require_emitter();
      var canonicalizer_1 = require_canonicalizer();
      function CanonicalizeLocaleList2(locales) {
        if (locales === void 0) {
          return [];
        }
        var seen = [];
        if (typeof locales === "string") {
          locales = [locales];
        }
        for (var _i = 0, locales_1 = locales; _i < locales_1.length; _i++) {
          var locale = locales_1[_i];
          var canonicalizedTag = emitter_1.emitUnicodeLocaleId(canonicalizer_1.canonicalizeUnicodeLocaleId(parser_1.parseUnicodeLocaleId(locale)));
          if (seen.indexOf(canonicalizedTag) < 0) {
            seen.push(canonicalizedTag);
          }
        }
        return seen;
      }
      function getCanonicalLocales(locales) {
        return CanonicalizeLocaleList2(locales);
      }
      exports.getCanonicalLocales = getCanonicalLocales;
      var parser_2 = require_parser();
      Object.defineProperty(exports, "parseUnicodeLocaleId", {enumerable: true, get: function() {
        return parser_2.parseUnicodeLocaleId;
      }});
      Object.defineProperty(exports, "parseUnicodeLanguageId", {enumerable: true, get: function() {
        return parser_2.parseUnicodeLanguageId;
      }});
      Object.defineProperty(exports, "isStructurallyValidLanguageTag", {enumerable: true, get: function() {
        return parser_2.isStructurallyValidLanguageTag;
      }});
      Object.defineProperty(exports, "isUnicodeRegionSubtag", {enumerable: true, get: function() {
        return parser_2.isUnicodeRegionSubtag;
      }});
      Object.defineProperty(exports, "isUnicodeScriptSubtag", {enumerable: true, get: function() {
        return parser_2.isUnicodeScriptSubtag;
      }});
      Object.defineProperty(exports, "isUnicodeLanguageSubtag", {enumerable: true, get: function() {
        return parser_2.isUnicodeLanguageSubtag;
      }});
      tslib_1.__exportStar(require_types(), exports);
      tslib_1.__exportStar(require_emitter(), exports);
    }
  });

  // bazel-out/darwin-fastbuild/bin/packages/intl-locale/lib/index.js
  var import_tslib5 = __toModule(require_tslib());

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/BestFitFormatMatcher.js
  var import_tslib2 = __toModule(require_tslib());

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/utils.js
  function invariant(condition, message, Err) {
    if (Err === void 0) {
      Err = Error;
    }
    if (!condition) {
      throw new Err(message);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/skeleton.js
  var import_tslib = __toModule(require_tslib());

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/types/date-time.js
  var RangePatternType;
  (function(RangePatternType2) {
    RangePatternType2["startRange"] = "startRange";
    RangePatternType2["shared"] = "shared";
    RangePatternType2["endRange"] = "endRange";
  })(RangePatternType || (RangePatternType = {}));

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/262.js
  function ToString(o) {
    if (typeof o === "symbol") {
      throw TypeError("Cannot convert a Symbol value to a string");
    }
    return String(o);
  }
  function ToObject(arg) {
    if (arg == null) {
      throw new TypeError("undefined/null cannot be converted to object");
    }
    return Object(arg);
  }
  function SameValue(x, y) {
    if (Object.is) {
      return Object.is(x, y);
    }
    if (x === y) {
      return x !== 0 || 1 / x === 1 / y;
    }
    return x !== x && y !== y;
  }
  var MINUTES_PER_HOUR = 60;
  var SECONDS_PER_MINUTE = 60;
  var MS_PER_SECOND = 1e3;
  var MS_PER_MINUTE = MS_PER_SECOND * SECONDS_PER_MINUTE;
  var MS_PER_HOUR = MS_PER_MINUTE * MINUTES_PER_HOUR;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/CoerceOptionsToObject.js
  function CoerceOptionsToObject(options) {
    if (typeof options === "undefined") {
      return Object.create(null);
    }
    return ToObject(options);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/BasicFormatMatcher.js
  var import_tslib3 = __toModule(require_tslib());

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetOption.js
  function GetOption(opts, prop, type, values, fallback) {
    if (typeof opts !== "object") {
      throw new TypeError("Options must be an object");
    }
    var value = opts[prop];
    if (value !== void 0) {
      if (type !== "boolean" && type !== "string") {
        throw new TypeError("invalid type");
      }
      if (type === "boolean") {
        value = Boolean(value);
      }
      if (type === "string") {
        value = ToString(value);
      }
      if (values !== void 0 && !values.filter(function(val) {
        return val == value;
      }).length) {
        throw new RangeError(value + " is not within " + values.join(", "));
      }
      return value;
    }
    return fallback;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/IsSanctionedSimpleUnitIdentifier.js
  var SANCTIONED_UNITS = [
    "angle-degree",
    "area-acre",
    "area-hectare",
    "concentr-percent",
    "digital-bit",
    "digital-byte",
    "digital-gigabit",
    "digital-gigabyte",
    "digital-kilobit",
    "digital-kilobyte",
    "digital-megabit",
    "digital-megabyte",
    "digital-petabyte",
    "digital-terabit",
    "digital-terabyte",
    "duration-day",
    "duration-hour",
    "duration-millisecond",
    "duration-minute",
    "duration-month",
    "duration-second",
    "duration-week",
    "duration-year",
    "length-centimeter",
    "length-foot",
    "length-inch",
    "length-kilometer",
    "length-meter",
    "length-mile-scandinavian",
    "length-mile",
    "length-millimeter",
    "length-yard",
    "mass-gram",
    "mass-kilogram",
    "mass-ounce",
    "mass-pound",
    "mass-stone",
    "temperature-celsius",
    "temperature-fahrenheit",
    "volume-fluid-ounce",
    "volume-gallon",
    "volume-liter",
    "volume-milliliter"
  ];
  function removeUnitNamespace(unit) {
    return unit.slice(unit.indexOf("-") + 1);
  }
  var SIMPLE_UNITS = SANCTIONED_UNITS.map(removeUnitNamespace);

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/regex.generated.js
  var S_UNICODE_REGEX = /[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]/;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/format_to_parts.js
  var CARET_S_UNICODE_REGEX = new RegExp("^" + S_UNICODE_REGEX.source);
  var S_DOLLAR_UNICODE_REGEX = new RegExp(S_UNICODE_REGEX.source + "$");

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/data.js
  var import_tslib4 = __toModule(require_tslib());
  var MissingLocaleDataError = function(_super) {
    (0, import_tslib4.__extends)(MissingLocaleDataError2, _super);
    function MissingLocaleDataError2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.type = "MISSING_LOCALE_DATA";
      return _this;
    }
    return MissingLocaleDataError2;
  }(Error);

  // bazel-out/darwin-fastbuild/bin/packages/intl-locale/lib/index.js
  var import_intl_getcanonicallocales = __toModule(require_intl_getcanonicallocales());
  var likelySubtagsData = __toModule(require_likelySubtags());

  // bazel-out/darwin-fastbuild/bin/packages/intl-locale/lib/get_internal_slots.js
  var internalSlotMap = new WeakMap();
  function getInternalSlots(x) {
    var internalSlots = internalSlotMap.get(x);
    if (!internalSlots) {
      internalSlots = Object.create(null);
      internalSlotMap.set(x, internalSlots);
    }
    return internalSlots;
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-locale/lib/index.js
  var likelySubtags = likelySubtagsData.supplemental.likelySubtags;
  var RELEVANT_EXTENSION_KEYS = ["ca", "co", "hc", "kf", "kn", "nu"];
  var UNICODE_TYPE_REGEX = /^[a-z0-9]{3,8}(-[a-z0-9]{3,8})*$/i;
  function applyOptionsToTag(tag, options) {
    invariant(typeof tag === "string", "language tag must be a string");
    invariant((0, import_intl_getcanonicallocales.isStructurallyValidLanguageTag)(tag), "malformed language tag", RangeError);
    var language = GetOption(options, "language", "string", void 0, void 0);
    if (language !== void 0) {
      invariant((0, import_intl_getcanonicallocales.isUnicodeLanguageSubtag)(language), "Malformed unicode_language_subtag", RangeError);
    }
    var script = GetOption(options, "script", "string", void 0, void 0);
    if (script !== void 0) {
      invariant((0, import_intl_getcanonicallocales.isUnicodeScriptSubtag)(script), "Malformed unicode_script_subtag", RangeError);
    }
    var region = GetOption(options, "region", "string", void 0, void 0);
    if (region !== void 0) {
      invariant((0, import_intl_getcanonicallocales.isUnicodeRegionSubtag)(region), "Malformed unicode_region_subtag", RangeError);
    }
    var languageId = (0, import_intl_getcanonicallocales.parseUnicodeLanguageId)(tag);
    if (language !== void 0) {
      languageId.lang = language;
    }
    if (script !== void 0) {
      languageId.script = script;
    }
    if (region !== void 0) {
      languageId.region = region;
    }
    return Intl.getCanonicalLocales((0, import_intl_getcanonicallocales.emitUnicodeLocaleId)((0, import_tslib5.__assign)((0, import_tslib5.__assign)({}, (0, import_intl_getcanonicallocales.parseUnicodeLocaleId)(tag)), {lang: languageId})))[0];
  }
  function applyUnicodeExtensionToTag(tag, options, relevantExtensionKeys) {
    var unicodeExtension;
    var keywords = [];
    var ast = (0, import_intl_getcanonicallocales.parseUnicodeLocaleId)(tag);
    for (var _i = 0, _a = ast.extensions; _i < _a.length; _i++) {
      var ext = _a[_i];
      if (ext.type === "u") {
        unicodeExtension = ext;
        if (Array.isArray(ext.keywords))
          keywords = ext.keywords;
      }
    }
    var result = Object.create(null);
    for (var _b = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _b < relevantExtensionKeys_1.length; _b++) {
      var key = relevantExtensionKeys_1[_b];
      var value = void 0, entry = void 0;
      for (var _c = 0, keywords_1 = keywords; _c < keywords_1.length; _c++) {
        var keyword = keywords_1[_c];
        if (keyword[0] === key) {
          entry = keyword;
          value = entry[1];
        }
      }
      invariant(key in options, key + " must be in options");
      var optionsValue = options[key];
      if (optionsValue !== void 0) {
        invariant(typeof optionsValue === "string", "Value for " + key + " must be a string");
        value = optionsValue;
        if (entry) {
          entry[1] = value;
        } else {
          keywords.push([key, value]);
        }
      }
      result[key] = value;
    }
    if (!unicodeExtension) {
      if (keywords.length) {
        ast.extensions.push({
          type: "u",
          keywords: keywords,
          attributes: []
        });
      }
    } else {
      unicodeExtension.keywords = keywords;
    }
    result.locale = Intl.getCanonicalLocales((0, import_intl_getcanonicallocales.emitUnicodeLocaleId)(ast))[0];
    return result;
  }
  function mergeUnicodeLanguageId(lang, script, region, variants, replacement) {
    if (variants === void 0) {
      variants = [];
    }
    if (!replacement) {
      return {
        lang: lang || "und",
        script: script,
        region: region,
        variants: variants
      };
    }
    return {
      lang: !lang || lang === "und" ? replacement.lang : lang,
      script: script || replacement.script,
      region: region || replacement.region,
      variants: (0, import_tslib5.__spreadArray)((0, import_tslib5.__spreadArray)([], variants), replacement.variants)
    };
  }
  function addLikelySubtags(tag) {
    var ast = (0, import_intl_getcanonicallocales.parseUnicodeLocaleId)(tag);
    var unicodeLangId = ast.lang;
    var lang = unicodeLangId.lang, script = unicodeLangId.script, region = unicodeLangId.region, variants = unicodeLangId.variants;
    if (script && region) {
      var match_1 = likelySubtags[(0, import_intl_getcanonicallocales.emitUnicodeLanguageId)({lang: lang, script: script, region: region, variants: []})];
      if (match_1) {
        var parts_1 = (0, import_intl_getcanonicallocales.parseUnicodeLanguageId)(match_1);
        ast.lang = mergeUnicodeLanguageId(void 0, void 0, void 0, variants, parts_1);
        return (0, import_intl_getcanonicallocales.emitUnicodeLocaleId)(ast);
      }
    }
    if (script) {
      var match_2 = likelySubtags[(0, import_intl_getcanonicallocales.emitUnicodeLanguageId)({lang: lang, script: script, variants: []})];
      if (match_2) {
        var parts_2 = (0, import_intl_getcanonicallocales.parseUnicodeLanguageId)(match_2);
        ast.lang = mergeUnicodeLanguageId(void 0, void 0, region, variants, parts_2);
        return (0, import_intl_getcanonicallocales.emitUnicodeLocaleId)(ast);
      }
    }
    if (region) {
      var match_3 = likelySubtags[(0, import_intl_getcanonicallocales.emitUnicodeLanguageId)({lang: lang, region: region, variants: []})];
      if (match_3) {
        var parts_3 = (0, import_intl_getcanonicallocales.parseUnicodeLanguageId)(match_3);
        ast.lang = mergeUnicodeLanguageId(void 0, script, void 0, variants, parts_3);
        return (0, import_intl_getcanonicallocales.emitUnicodeLocaleId)(ast);
      }
    }
    var match = likelySubtags[lang] || likelySubtags[(0, import_intl_getcanonicallocales.emitUnicodeLanguageId)({lang: "und", script: script, variants: []})];
    if (!match) {
      throw new Error("No match for addLikelySubtags");
    }
    var parts = (0, import_intl_getcanonicallocales.parseUnicodeLanguageId)(match);
    ast.lang = mergeUnicodeLanguageId(void 0, script, region, variants, parts);
    return (0, import_intl_getcanonicallocales.emitUnicodeLocaleId)(ast);
  }
  function removeLikelySubtags(tag) {
    var maxLocale = addLikelySubtags(tag);
    if (!maxLocale) {
      return tag;
    }
    maxLocale = (0, import_intl_getcanonicallocales.emitUnicodeLanguageId)((0, import_tslib5.__assign)((0, import_tslib5.__assign)({}, (0, import_intl_getcanonicallocales.parseUnicodeLanguageId)(maxLocale)), {variants: []}));
    var ast = (0, import_intl_getcanonicallocales.parseUnicodeLocaleId)(tag);
    var _a = ast.lang, lang = _a.lang, script = _a.script, region = _a.region, variants = _a.variants;
    var trial = addLikelySubtags((0, import_intl_getcanonicallocales.emitUnicodeLanguageId)({lang: lang, variants: []}));
    if (trial === maxLocale) {
      return (0, import_intl_getcanonicallocales.emitUnicodeLocaleId)((0, import_tslib5.__assign)((0, import_tslib5.__assign)({}, ast), {lang: mergeUnicodeLanguageId(lang, void 0, void 0, variants)}));
    }
    if (region) {
      var trial_1 = addLikelySubtags((0, import_intl_getcanonicallocales.emitUnicodeLanguageId)({lang: lang, region: region, variants: []}));
      if (trial_1 === maxLocale) {
        return (0, import_intl_getcanonicallocales.emitUnicodeLocaleId)((0, import_tslib5.__assign)((0, import_tslib5.__assign)({}, ast), {lang: mergeUnicodeLanguageId(lang, void 0, region, variants)}));
      }
    }
    if (script) {
      var trial_2 = addLikelySubtags((0, import_intl_getcanonicallocales.emitUnicodeLanguageId)({lang: lang, script: script, variants: []}));
      if (trial_2 === maxLocale) {
        return (0, import_intl_getcanonicallocales.emitUnicodeLocaleId)((0, import_tslib5.__assign)((0, import_tslib5.__assign)({}, ast), {lang: mergeUnicodeLanguageId(lang, script, void 0, variants)}));
      }
    }
    return tag;
  }
  var Locale = function() {
    function Locale2(tag, opts) {
      var newTarget = this && this instanceof Locale2 ? this.constructor : void 0;
      if (!newTarget) {
        throw new TypeError("Intl.Locale must be called with 'new'");
      }
      var relevantExtensionKeys = Locale2.relevantExtensionKeys;
      var internalSlotsList = [
        "initializedLocale",
        "locale",
        "calendar",
        "collation",
        "hourCycle",
        "numberingSystem"
      ];
      if (relevantExtensionKeys.indexOf("kf") > -1) {
        internalSlotsList.push("caseFirst");
      }
      if (relevantExtensionKeys.indexOf("kn") > -1) {
        internalSlotsList.push("numeric");
      }
      if (tag === void 0) {
        throw new TypeError("First argument to Intl.Locale constructor can't be empty or missing");
      }
      if (typeof tag !== "string" && typeof tag !== "object") {
        throw new TypeError("tag must be a string or object");
      }
      var internalSlots;
      if (typeof tag === "object" && (internalSlots = getInternalSlots(tag)) && internalSlots.initializedLocale) {
        tag = internalSlots.locale;
      } else {
        tag = tag.toString();
      }
      internalSlots = getInternalSlots(this);
      var options = CoerceOptionsToObject(opts);
      tag = applyOptionsToTag(tag, options);
      var opt = Object.create(null);
      var calendar = GetOption(options, "calendar", "string", void 0, void 0);
      if (calendar !== void 0) {
        if (!UNICODE_TYPE_REGEX.test(calendar)) {
          throw new RangeError("invalid calendar");
        }
      }
      opt.ca = calendar;
      var collation = GetOption(options, "collation", "string", void 0, void 0);
      if (collation !== void 0) {
        if (!UNICODE_TYPE_REGEX.test(collation)) {
          throw new RangeError("invalid collation");
        }
      }
      opt.co = collation;
      var hc = GetOption(options, "hourCycle", "string", ["h11", "h12", "h23", "h24"], void 0);
      opt.hc = hc;
      var kf = GetOption(options, "caseFirst", "string", ["upper", "lower", "false"], void 0);
      opt.kf = kf;
      var _kn = GetOption(options, "numeric", "boolean", void 0, void 0);
      var kn;
      if (_kn !== void 0) {
        kn = String(_kn);
      }
      opt.kn = kn;
      var numberingSystem = GetOption(options, "numberingSystem", "string", void 0, void 0);
      if (numberingSystem !== void 0) {
        if (!UNICODE_TYPE_REGEX.test(numberingSystem)) {
          throw new RangeError("Invalid numberingSystem");
        }
      }
      opt.nu = numberingSystem;
      var r = applyUnicodeExtensionToTag(tag, opt, relevantExtensionKeys);
      internalSlots.locale = r.locale;
      internalSlots.calendar = r.ca;
      internalSlots.collation = r.co;
      internalSlots.hourCycle = r.hc;
      if (relevantExtensionKeys.indexOf("kf") > -1) {
        internalSlots.caseFirst = r.kf;
      }
      if (relevantExtensionKeys.indexOf("kn") > -1) {
        internalSlots.numeric = SameValue(r.kn, "true");
      }
      internalSlots.numberingSystem = r.nu;
    }
    Locale2.prototype.maximize = function() {
      var locale = getInternalSlots(this).locale;
      try {
        var maximizedLocale = addLikelySubtags(locale);
        return new Locale2(maximizedLocale);
      } catch (e) {
        return new Locale2(locale);
      }
    };
    Locale2.prototype.minimize = function() {
      var locale = getInternalSlots(this).locale;
      try {
        var minimizedLocale = removeLikelySubtags(locale);
        return new Locale2(minimizedLocale);
      } catch (e) {
        return new Locale2(locale);
      }
    };
    Locale2.prototype.toString = function() {
      return getInternalSlots(this).locale;
    };
    Object.defineProperty(Locale2.prototype, "baseName", {
      get: function() {
        var locale = getInternalSlots(this).locale;
        return (0, import_intl_getcanonicallocales.emitUnicodeLanguageId)((0, import_intl_getcanonicallocales.parseUnicodeLanguageId)(locale));
      },
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(Locale2.prototype, "calendar", {
      get: function() {
        return getInternalSlots(this).calendar;
      },
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(Locale2.prototype, "collation", {
      get: function() {
        return getInternalSlots(this).collation;
      },
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(Locale2.prototype, "hourCycle", {
      get: function() {
        return getInternalSlots(this).hourCycle;
      },
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(Locale2.prototype, "caseFirst", {
      get: function() {
        return getInternalSlots(this).caseFirst;
      },
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(Locale2.prototype, "numeric", {
      get: function() {
        return getInternalSlots(this).numeric;
      },
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(Locale2.prototype, "numberingSystem", {
      get: function() {
        return getInternalSlots(this).numberingSystem;
      },
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(Locale2.prototype, "language", {
      get: function() {
        var locale = getInternalSlots(this).locale;
        return (0, import_intl_getcanonicallocales.parseUnicodeLanguageId)(locale).lang;
      },
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(Locale2.prototype, "script", {
      get: function() {
        var locale = getInternalSlots(this).locale;
        return (0, import_intl_getcanonicallocales.parseUnicodeLanguageId)(locale).script;
      },
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(Locale2.prototype, "region", {
      get: function() {
        var locale = getInternalSlots(this).locale;
        return (0, import_intl_getcanonicallocales.parseUnicodeLanguageId)(locale).region;
      },
      enumerable: false,
      configurable: true
    });
    Locale2.relevantExtensionKeys = RELEVANT_EXTENSION_KEYS;
    return Locale2;
  }();
  try {
    if (typeof Symbol !== "undefined") {
      Object.defineProperty(Locale.prototype, Symbol.toStringTag, {
        value: "Intl.Locale",
        writable: false,
        enumerable: false,
        configurable: true
      });
    }
    Object.defineProperty(Locale.prototype.constructor, "length", {
      value: 1,
      writable: false,
      enumerable: false,
      configurable: true
    });
  } catch (e) {
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-locale/lib/should-polyfill.js
  function hasIntlGetCanonicalLocalesBug() {
    try {
      return new Intl.Locale("und-x-private").toString() === "x-private";
    } catch (e) {
      return true;
    }
  }
  function shouldPolyfill() {
    return typeof Intl === "undefined" || !("Locale" in Intl) || hasIntlGetCanonicalLocalesBug();
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-locale/lib/polyfill.js
  if (shouldPolyfill()) {
    Object.defineProperty(Intl, "Locale", {
      value: Locale,
      writable: true,
      enumerable: false,
      configurable: true
    });
  }
})();
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */


}

if (!("Intl"in self&&"DisplayNames"in self.Intl
)) {

// Intl.DisplayNames
(function() {
  // node_modules/tslib/tslib.es6.js
  var extendStatics = function(d, b) {
    extendStatics = Object.setPrototypeOf || {__proto__: []} instanceof Array && function(d2, b2) {
      d2.__proto__ = b2;
    } || function(d2, b2) {
      for (var p in b2)
        if (Object.prototype.hasOwnProperty.call(b2, p))
          d2[p] = b2[p];
    };
    return extendStatics(d, b);
  };
  function __extends(d, b) {
    if (typeof b !== "function" && b !== null)
      throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
    extendStatics(d, b);
    function __() {
      this.constructor = d;
    }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  }
  var __assign = function() {
    __assign = Object.assign || function __assign2(t) {
      for (var s, i = 1, n = arguments.length; i < n; i++) {
        s = arguments[i];
        for (var p in s)
          if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
      }
      return t;
    };
    return __assign.apply(this, arguments);
  };

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/utils.js
  function setInternalSlot(map, pl, field, value) {
    if (!map.get(pl)) {
      map.set(pl, Object.create(null));
    }
    var slots = map.get(pl);
    slots[field] = value;
  }
  function getInternalSlot(map, pl, field) {
    return getMultiInternalSlots(map, pl, field)[field];
  }
  function getMultiInternalSlots(map, pl) {
    var fields = [];
    for (var _i = 2; _i < arguments.length; _i++) {
      fields[_i - 2] = arguments[_i];
    }
    var slots = map.get(pl);
    if (!slots) {
      throw new TypeError(pl + " InternalSlot has not been initialized");
    }
    return fields.reduce(function(all, f) {
      all[f] = slots[f];
      return all;
    }, Object.create(null));
  }
  var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;
  function invariant(condition, message, Err) {
    if (Err === void 0) {
      Err = Error;
    }
    if (!condition) {
      throw new Err(message);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/types/date-time.js
  var RangePatternType;
  (function(RangePatternType2) {
    RangePatternType2["startRange"] = "startRange";
    RangePatternType2["shared"] = "shared";
    RangePatternType2["endRange"] = "endRange";
  })(RangePatternType || (RangePatternType = {}));

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/CanonicalizeLocaleList.js
  function CanonicalizeLocaleList(locales) {
    return Intl.getCanonicalLocales(locales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/262.js
  function ToString(o) {
    if (typeof o === "symbol") {
      throw TypeError("Cannot convert a Symbol value to a string");
    }
    return String(o);
  }
  function ToObject(arg) {
    if (arg == null) {
      throw new TypeError("undefined/null cannot be converted to object");
    }
    return Object(arg);
  }
  var MINUTES_PER_HOUR = 60;
  var SECONDS_PER_MINUTE = 60;
  var MS_PER_SECOND = 1e3;
  var MS_PER_MINUTE = MS_PER_SECOND * SECONDS_PER_MINUTE;
  var MS_PER_HOUR = MS_PER_MINUTE * MINUTES_PER_HOUR;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetOption.js
  function GetOption(opts, prop, type, values, fallback) {
    if (typeof opts !== "object") {
      throw new TypeError("Options must be an object");
    }
    var value = opts[prop];
    if (value !== void 0) {
      if (type !== "boolean" && type !== "string") {
        throw new TypeError("invalid type");
      }
      if (type === "boolean") {
        value = Boolean(value);
      }
      if (type === "string") {
        value = ToString(value);
      }
      if (values !== void 0 && !values.filter(function(val) {
        return val == value;
      }).length) {
        throw new RangeError(value + " is not within " + values.join(", "));
      }
      return value;
    }
    return fallback;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestAvailableLocale.js
  function BestAvailableLocale(availableLocales, locale) {
    var candidate = locale;
    while (true) {
      if (availableLocales.has(candidate)) {
        return candidate;
      }
      var pos = candidate.lastIndexOf("-");
      if (!~pos) {
        return void 0;
      }
      if (pos >= 2 && candidate[pos - 2] === "-") {
        pos -= 2;
      }
      candidate = candidate.slice(0, pos);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupMatcher.js
  function LookupMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var result = {locale: ""};
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        result.locale = availableLocale;
        if (locale !== noExtensionLocale) {
          result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);
        }
        return result;
      }
    }
    result.locale = getDefaultLocale();
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestFitMatcher.js
  function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var minimizedAvailableLocaleMap = {};
    var minimizedAvailableLocales = new Set();
    availableLocales.forEach(function(locale2) {
      var minimizedLocale = new Intl.Locale(locale2).minimize().toString();
      minimizedAvailableLocaleMap[minimizedLocale] = locale2;
      minimizedAvailableLocales.add(minimizedLocale);
    });
    var foundLocale;
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var l = requestedLocales_1[_i];
      if (foundLocale) {
        break;
      }
      var noExtensionLocale = l.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      if (availableLocales.has(noExtensionLocale)) {
        foundLocale = noExtensionLocale;
        break;
      }
      if (minimizedAvailableLocales.has(noExtensionLocale)) {
        foundLocale = minimizedAvailableLocaleMap[noExtensionLocale];
        break;
      }
      var locale = new Intl.Locale(noExtensionLocale);
      var maximizedRequestedLocale = locale.maximize().toString();
      var minimizedRequestedLocale = locale.minimize().toString();
      if (minimizedAvailableLocales.has(minimizedRequestedLocale)) {
        foundLocale = minimizedAvailableLocaleMap[minimizedRequestedLocale];
        break;
      }
      foundLocale = BestAvailableLocale(minimizedAvailableLocales, maximizedRequestedLocale);
    }
    return {
      locale: foundLocale || getDefaultLocale()
    };
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/UnicodeExtensionValue.js
  function UnicodeExtensionValue(extension, key) {
    invariant(key.length === 2, "key must have 2 elements");
    var size = extension.length;
    var searchValue = "-" + key + "-";
    var pos = extension.indexOf(searchValue);
    if (pos !== -1) {
      var start = pos + 4;
      var end = start;
      var k = start;
      var done = false;
      while (!done) {
        var e = extension.indexOf("-", k);
        var len = void 0;
        if (e === -1) {
          len = size - k;
        } else {
          len = e - k;
        }
        if (len === 2) {
          done = true;
        } else if (e === -1) {
          end = size;
          done = true;
        } else {
          end = e;
          k = e + 1;
        }
      }
      return extension.slice(start, end);
    }
    searchValue = "-" + key;
    pos = extension.indexOf(searchValue);
    if (pos !== -1 && pos + 3 === size) {
      return "";
    }
    return void 0;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/ResolveLocale.js
  function ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData, getDefaultLocale) {
    var matcher = options.localeMatcher;
    var r;
    if (matcher === "lookup") {
      r = LookupMatcher(availableLocales, requestedLocales, getDefaultLocale);
    } else {
      r = BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale);
    }
    var foundLocale = r.locale;
    var result = {locale: "", dataLocale: foundLocale};
    var supportedExtension = "-u";
    for (var _i = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _i < relevantExtensionKeys_1.length; _i++) {
      var key = relevantExtensionKeys_1[_i];
      invariant(foundLocale in localeData, "Missing locale data for " + foundLocale);
      var foundLocaleData = localeData[foundLocale];
      invariant(typeof foundLocaleData === "object" && foundLocaleData !== null, "locale data " + key + " must be an object");
      var keyLocaleData = foundLocaleData[key];
      invariant(Array.isArray(keyLocaleData), "keyLocaleData for " + key + " must be an array");
      var value = keyLocaleData[0];
      invariant(typeof value === "string" || value === null, "value must be string or null but got " + typeof value + " in key " + key);
      var supportedExtensionAddition = "";
      if (r.extension) {
        var requestedValue = UnicodeExtensionValue(r.extension, key);
        if (requestedValue !== void 0) {
          if (requestedValue !== "") {
            if (~keyLocaleData.indexOf(requestedValue)) {
              value = requestedValue;
              supportedExtensionAddition = "-" + key + "-" + value;
            }
          } else if (~requestedValue.indexOf("true")) {
            value = "true";
            supportedExtensionAddition = "-" + key;
          }
        }
      }
      if (key in options) {
        var optionsValue = options[key];
        invariant(typeof optionsValue === "string" || typeof optionsValue === "undefined" || optionsValue === null, "optionsValue must be String, Undefined or Null");
        if (~keyLocaleData.indexOf(optionsValue)) {
          if (optionsValue !== value) {
            value = optionsValue;
            supportedExtensionAddition = "";
          }
        }
      }
      result[key] = value;
      supportedExtension += supportedExtensionAddition;
    }
    if (supportedExtension.length > 2) {
      var privateIndex = foundLocale.indexOf("-x-");
      if (privateIndex === -1) {
        foundLocale = foundLocale + supportedExtension;
      } else {
        var preExtension = foundLocale.slice(0, privateIndex);
        var postExtension = foundLocale.slice(privateIndex, foundLocale.length);
        foundLocale = preExtension + supportedExtension + postExtension;
      }
      foundLocale = Intl.getCanonicalLocales(foundLocale)[0];
    }
    result.locale = foundLocale;
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/IsWellFormedCurrencyCode.js
  function toUpperCase(str) {
    return str.replace(/([a-z])/g, function(_, c) {
      return c.toUpperCase();
    });
  }
  var NOT_A_Z_REGEX = /[^A-Z]/;
  function IsWellFormedCurrencyCode(currency) {
    currency = toUpperCase(currency);
    if (currency.length !== 3) {
      return false;
    }
    if (NOT_A_Z_REGEX.test(currency)) {
      return false;
    }
    return true;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DisplayNames/CanonicalCodeForDisplayNames.js
  var UNICODE_REGION_SUBTAG_REGEX = /^([a-z]{2}|[0-9]{3})$/i;
  var ALPHA_4 = /^[a-z]{4}$/i;
  function isUnicodeRegionSubtag(region) {
    return UNICODE_REGION_SUBTAG_REGEX.test(region);
  }
  function isUnicodeScriptSubtag(script) {
    return ALPHA_4.test(script);
  }
  function CanonicalCodeForDisplayNames(type, code) {
    if (type === "language") {
      return CanonicalizeLocaleList([code])[0];
    }
    if (type === "region") {
      if (!isUnicodeRegionSubtag(code)) {
        throw RangeError("invalid region");
      }
      return code.toUpperCase();
    }
    if (type === "script") {
      if (!isUnicodeScriptSubtag(code)) {
        throw RangeError("invalid script");
      }
      return "" + code[0].toUpperCase() + code.slice(1).toLowerCase();
    }
    invariant(type === "currency", "invalid type");
    if (!IsWellFormedCurrencyCode(code)) {
      throw RangeError("invalid currency");
    }
    return code.toUpperCase();
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetOptionsObject.js
  function GetOptionsObject(options) {
    if (typeof options === "undefined") {
      return Object.create(null);
    }
    if (typeof options === "object") {
      return options;
    }
    throw new TypeError("Options must be an object");
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/IsSanctionedSimpleUnitIdentifier.js
  var SANCTIONED_UNITS = [
    "angle-degree",
    "area-acre",
    "area-hectare",
    "concentr-percent",
    "digital-bit",
    "digital-byte",
    "digital-gigabit",
    "digital-gigabyte",
    "digital-kilobit",
    "digital-kilobyte",
    "digital-megabit",
    "digital-megabyte",
    "digital-petabyte",
    "digital-terabit",
    "digital-terabyte",
    "duration-day",
    "duration-hour",
    "duration-millisecond",
    "duration-minute",
    "duration-month",
    "duration-second",
    "duration-week",
    "duration-year",
    "length-centimeter",
    "length-foot",
    "length-inch",
    "length-kilometer",
    "length-meter",
    "length-mile-scandinavian",
    "length-mile",
    "length-millimeter",
    "length-yard",
    "mass-gram",
    "mass-kilogram",
    "mass-ounce",
    "mass-pound",
    "mass-stone",
    "temperature-celsius",
    "temperature-fahrenheit",
    "volume-fluid-ounce",
    "volume-gallon",
    "volume-liter",
    "volume-milliliter"
  ];
  function removeUnitNamespace(unit) {
    return unit.slice(unit.indexOf("-") + 1);
  }
  var SIMPLE_UNITS = SANCTIONED_UNITS.map(removeUnitNamespace);

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/regex.generated.js
  var S_UNICODE_REGEX = /[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]/;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/format_to_parts.js
  var CARET_S_UNICODE_REGEX = new RegExp("^" + S_UNICODE_REGEX.source);
  var S_DOLLAR_UNICODE_REGEX = new RegExp(S_UNICODE_REGEX.source + "$");

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupSupportedLocales.js
  function LookupSupportedLocales(availableLocales, requestedLocales) {
    var subset = [];
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        subset.push(availableLocale);
      }
    }
    return subset;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/SupportedLocales.js
  function SupportedLocales(availableLocales, requestedLocales, options) {
    var matcher = "best fit";
    if (options !== void 0) {
      options = ToObject(options);
      matcher = GetOption(options, "localeMatcher", "string", ["lookup", "best fit"], "best fit");
    }
    if (matcher === "best fit") {
      return LookupSupportedLocales(availableLocales, requestedLocales);
    }
    return LookupSupportedLocales(availableLocales, requestedLocales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/data.js
  var MissingLocaleDataError = function(_super) {
    __extends(MissingLocaleDataError2, _super);
    function MissingLocaleDataError2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.type = "MISSING_LOCALE_DATA";
      return _this;
    }
    return MissingLocaleDataError2;
  }(Error);

  // bazel-out/darwin-fastbuild/bin/packages/intl-displaynames/lib/index.js
  var DisplayNames = function() {
    function DisplayNames2(locales, options) {
      var _newTarget = this.constructor;
      if (_newTarget === void 0) {
        throw TypeError("Constructor Intl.DisplayNames requires 'new'");
      }
      var requestedLocales = CanonicalizeLocaleList(locales);
      options = GetOptionsObject(options);
      var opt = Object.create(null);
      var localeData = DisplayNames2.localeData;
      var matcher = GetOption(options, "localeMatcher", "string", ["lookup", "best fit"], "best fit");
      opt.localeMatcher = matcher;
      var r = ResolveLocale(DisplayNames2.availableLocales, requestedLocales, opt, [], DisplayNames2.localeData, DisplayNames2.getDefaultLocale);
      var style = GetOption(options, "style", "string", ["narrow", "short", "long"], "long");
      setSlot(this, "style", style);
      var type = GetOption(options, "type", "string", ["language", "currency", "region", "script"], void 0);
      if (type === void 0) {
        throw TypeError('Intl.DisplayNames constructor requires "type" option');
      }
      setSlot(this, "type", type);
      var fallback = GetOption(options, "fallback", "string", ["code", "none"], "code");
      setSlot(this, "fallback", fallback);
      setSlot(this, "locale", r.locale);
      var dataLocale = r.dataLocale;
      var dataLocaleData = localeData[dataLocale];
      invariant(!!dataLocaleData, "Missing locale data for " + dataLocale);
      setSlot(this, "localeData", dataLocaleData);
      invariant(dataLocaleData !== void 0, "locale data for " + r.locale + " does not exist.");
      var types = dataLocaleData.types;
      invariant(typeof types === "object" && types != null, "invalid types data");
      var typeFields = types[type];
      invariant(typeof typeFields === "object" && typeFields != null, "invalid typeFields data");
      var styleFields = typeFields[style];
      invariant(typeof styleFields === "object" && styleFields != null, "invalid styleFields data");
      setSlot(this, "fields", styleFields);
    }
    DisplayNames2.supportedLocalesOf = function(locales, options) {
      return SupportedLocales(DisplayNames2.availableLocales, CanonicalizeLocaleList(locales), options);
    };
    DisplayNames2.__addLocaleData = function() {
      var data = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        data[_i] = arguments[_i];
      }
      for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {
        var _b = data_1[_a], d = _b.data, locale = _b.locale;
        var minimizedLocale = new Intl.Locale(locale).minimize().toString();
        DisplayNames2.localeData[locale] = DisplayNames2.localeData[minimizedLocale] = d;
        DisplayNames2.availableLocales.add(minimizedLocale);
        DisplayNames2.availableLocales.add(locale);
        if (!DisplayNames2.__defaultLocale) {
          DisplayNames2.__defaultLocale = minimizedLocale;
        }
      }
    };
    DisplayNames2.prototype.of = function(code) {
      checkReceiver(this, "of");
      var type = getSlot(this, "type");
      var codeAsString = ToString(code);
      if (!isValidCodeForDisplayNames(type, codeAsString)) {
        throw RangeError("invalid code for Intl.DisplayNames.prototype.of");
      }
      var _a = getMultiInternalSlots(__INTERNAL_SLOT_MAP__, this, "localeData", "style", "fallback"), localeData = _a.localeData, style = _a.style, fallback = _a.fallback;
      var canonicalCode = CanonicalCodeForDisplayNames(type, codeAsString);
      var regionSubTag;
      if (type === "language") {
        var regionMatch = /-([a-z]{2}|\d{3})\b/i.exec(canonicalCode);
        if (regionMatch) {
          canonicalCode = canonicalCode.substring(0, regionMatch.index) + canonicalCode.substring(regionMatch.index + regionMatch[0].length);
          regionSubTag = regionMatch[1];
        }
      }
      var typesData = localeData.types[type];
      var name = typesData[style][canonicalCode] || typesData.long[canonicalCode];
      if (name !== void 0) {
        if (regionSubTag) {
          var regionsData = localeData.types.region;
          var regionDisplayName = regionsData[style][regionSubTag] || regionsData.long[regionSubTag];
          if (regionDisplayName || fallback === "code") {
            var pattern = localeData.patterns.locale;
            return pattern.replace("{0}", name).replace("{1}", regionDisplayName || regionSubTag);
          }
        } else {
          return name;
        }
      }
      if (fallback === "code") {
        return codeAsString;
      }
    };
    DisplayNames2.prototype.resolvedOptions = function() {
      checkReceiver(this, "resolvedOptions");
      return __assign({}, getMultiInternalSlots(__INTERNAL_SLOT_MAP__, this, "locale", "style", "type", "fallback"));
    };
    DisplayNames2.getDefaultLocale = function() {
      return DisplayNames2.__defaultLocale;
    };
    DisplayNames2.localeData = {};
    DisplayNames2.availableLocales = new Set();
    DisplayNames2.__defaultLocale = "";
    DisplayNames2.polyfilled = true;
    return DisplayNames2;
  }();
  function isValidCodeForDisplayNames(type, code) {
    switch (type) {
      case "language":
        return /^[a-z]{2,3}(-[a-z]{4})?(-([a-z]{2}|\d{3}))?(-([a-z\d]{5,8}|\d[a-z\d]{3}))*$/i.test(code);
      case "region":
        return /^([a-z]{2}|\d{3})$/i.test(code);
      case "script":
        return /^[a-z]{4}$/i.test(code);
      case "currency":
        return IsWellFormedCurrencyCode(code);
    }
  }
  try {
    if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
      Object.defineProperty(DisplayNames.prototype, Symbol.toStringTag, {
        value: "Intl.DisplayNames",
        configurable: true,
        enumerable: false,
        writable: false
      });
    }
    Object.defineProperty(DisplayNames, "length", {
      value: 2,
      writable: false,
      enumerable: false,
      configurable: true
    });
  } catch (e) {
  }
  var __INTERNAL_SLOT_MAP__ = new WeakMap();
  function getSlot(instance, key) {
    return getInternalSlot(__INTERNAL_SLOT_MAP__, instance, key);
  }
  function setSlot(instance, key, value) {
    setInternalSlot(__INTERNAL_SLOT_MAP__, instance, key, value);
  }
  function checkReceiver(receiver, methodName) {
    if (!(receiver instanceof DisplayNames)) {
      throw TypeError("Method Intl.DisplayNames.prototype." + methodName + " called on incompatible receiver");
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-displaynames/lib/should-polyfill.js
  function hasMissingICUBug() {
    var DisplayNames2 = Intl.DisplayNames;
    if (DisplayNames2 && !DisplayNames2.polyfilled) {
      return new DisplayNames2(["en"], {
        type: "region"
      }).of("CA") === "CA";
    }
    return false;
  }
  function hasScriptBug() {
    var DisplayNames2 = Intl.DisplayNames;
    if (DisplayNames2 && !DisplayNames2.polyfilled) {
      return new DisplayNames2(["en"], {
        type: "script"
      }).of("arab") !== "Arabic";
    }
    return false;
  }
  function shouldPolyfill() {
    return !Intl.DisplayNames || hasMissingICUBug() || hasScriptBug();
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-displaynames/lib/polyfill.js
  if (shouldPolyfill()) {
    Object.defineProperty(Intl, "DisplayNames", {
      value: DisplayNames,
      enumerable: false,
      writable: true,
      configurable: true
    });
  }
})();
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */


}

if (!("Intl"in self&&Intl.DisplayNames&&Intl.DisplayNames.supportedLocalesOf&&1===Intl.DisplayNames.supportedLocalesOf("en").length
)) {

// Intl.DisplayNames.~locale.en
/* @generated */
// prettier-ignore
if (Intl.DisplayNames && typeof Intl.DisplayNames.__addLocaleData === 'function') {
  Intl.DisplayNames.__addLocaleData({"data":{"types":{"language":{"long":{"aa":"Afar","ab":"Abkhazian","ace":"Achinese","ach":"Acoli","ada":"Adangme","ady":"Adyghe","ae":"Avestan","aeb":"Tunisian Arabic","af":"Afrikaans","afh":"Afrihili","agq":"Aghem","ain":"Ainu","ak":"Akan","akk":"Akkadian","akz":"Alabama","ale":"Aleut","aln":"Gheg Albanian","alt":"Southern Altai","am":"Amharic","an":"Aragonese","ang":"Old English","anp":"Angika","ar":"Arabic","ar-001":"Modern Standard Arabic","arc":"Aramaic","arn":"Mapuche","aro":"Araona","arp":"Arapaho","arq":"Algerian Arabic","ars":"Najdi Arabic","arw":"Arawak","ary":"Moroccan Arabic","arz":"Egyptian Arabic","as":"Assamese","asa":"Asu","ase":"American Sign Language","ast":"Asturian","av":"Avaric","avk":"Kotava","awa":"Awadhi","ay":"Aymara","az":"Azerbaijani","ba":"Bashkir","bal":"Baluchi","ban":"Balinese","bar":"Bavarian","bas":"Basaa","bax":"Bamun","bbc":"Batak Toba","bbj":"Ghomala","be":"Belarusian","bej":"Beja","bem":"Bemba","bew":"Betawi","bez":"Bena","bfd":"Bafut","bfq":"Badaga","bg":"Bulgarian","bgn":"Western Balochi","bho":"Bhojpuri","bi":"Bislama","bik":"Bikol","bin":"Bini","bjn":"Banjar","bkm":"Kom","bla":"Siksika","bm":"Bambara","bn":"Bangla","bo":"Tibetan","bpy":"Bishnupriya","bqi":"Bakhtiari","br":"Breton","bra":"Braj","brh":"Brahui","brx":"Bodo","bs":"Bosnian","bss":"Akoose","bua":"Buriat","bug":"Buginese","bum":"Bulu","byn":"Blin","byv":"Medumba","ca":"Catalan","cad":"Caddo","car":"Carib","cay":"Cayuga","cch":"Atsam","ccp":"Chakma","ce":"Chechen","ceb":"Cebuano","cgg":"Chiga","ch":"Chamorro","chb":"Chibcha","chg":"Chagatai","chk":"Chuukese","chm":"Mari","chn":"Chinook Jargon","cho":"Choctaw","chp":"Chipewyan","chr":"Cherokee","chy":"Cheyenne","cic":"Chickasaw","ckb":"Central Kurdish","co":"Corsican","cop":"Coptic","cps":"Capiznon","cr":"Cree","crh":"Crimean Turkish","crs":"Seselwa Creole French","cs":"Czech","csb":"Kashubian","cu":"Church Slavic","cv":"Chuvash","cy":"Welsh","da":"Danish","dak":"Dakota","dar":"Dargwa","dav":"Taita","de":"German","de-AT":"Austrian German","de-CH":"Swiss High German","del":"Delaware","den":"Slave","dgr":"Dogrib","din":"Dinka","dje":"Zarma","doi":"Dogri","dsb":"Lower Sorbian","dtp":"Central Dusun","dua":"Duala","dum":"Middle Dutch","dv":"Divehi","dyo":"Jola-Fonyi","dyu":"Dyula","dz":"Dzongkha","dzg":"Dazaga","ebu":"Embu","ee":"Ewe","efi":"Efik","egl":"Emilian","egy":"Ancient Egyptian","eka":"Ekajuk","el":"Greek","elx":"Elamite","en":"English","en-AU":"Australian English","en-CA":"Canadian English","en-GB":"British English","en-US":"American English","enm":"Middle English","eo":"Esperanto","es":"Spanish","es-419":"Latin American Spanish","es-ES":"European Spanish","es-MX":"Mexican Spanish","esu":"Central Yupik","et":"Estonian","eu":"Basque","ewo":"Ewondo","ext":"Extremaduran","fa":"Persian","fa-AF":"Dari","fan":"Fang","fat":"Fanti","ff":"Fulah","fi":"Finnish","fil":"Filipino","fit":"Tornedalen Finnish","fj":"Fijian","fo":"Faroese","fon":"Fon","fr":"French","fr-CA":"Canadian French","fr-CH":"Swiss French","frc":"Cajun French","frm":"Middle French","fro":"Old French","frp":"Arpitan","frr":"Northern Frisian","frs":"Eastern Frisian","fur":"Friulian","fy":"Western Frisian","ga":"Irish","gaa":"Ga","gag":"Gagauz","gan":"Gan Chinese","gay":"Gayo","gba":"Gbaya","gbz":"Zoroastrian Dari","gd":"Scottish Gaelic","gez":"Geez","gil":"Gilbertese","gl":"Galician","glk":"Gilaki","gmh":"Middle High German","gn":"Guarani","goh":"Old High German","gom":"Goan Konkani","gon":"Gondi","gor":"Gorontalo","got":"Gothic","grb":"Grebo","grc":"Ancient Greek","gsw":"Swiss German","gu":"Gujarati","guc":"Wayuu","gur":"Frafra","guz":"Gusii","gv":"Manx","gwi":"Gwichʼin","ha":"Hausa","hai":"Haida","hak":"Hakka Chinese","haw":"Hawaiian","he":"Hebrew","hi":"Hindi","hif":"Fiji Hindi","hil":"Hiligaynon","hit":"Hittite","hmn":"Hmong","ho":"Hiri Motu","hr":"Croatian","hsb":"Upper Sorbian","hsn":"Xiang Chinese","ht":"Haitian Creole","hu":"Hungarian","hup":"Hupa","hy":"Armenian","hz":"Herero","ia":"Interlingua","iba":"Iban","ibb":"Ibibio","id":"Indonesian","ie":"Interlingue","ig":"Igbo","ii":"Sichuan Yi","ik":"Inupiaq","ilo":"Iloko","inh":"Ingush","io":"Ido","is":"Icelandic","it":"Italian","iu":"Inuktitut","izh":"Ingrian","ja":"Japanese","jam":"Jamaican Creole English","jbo":"Lojban","jgo":"Ngomba","jmc":"Machame","jpr":"Judeo-Persian","jrb":"Judeo-Arabic","jut":"Jutish","jv":"Javanese","ka":"Georgian","kaa":"Kara-Kalpak","kab":"Kabyle","kac":"Kachin","kaj":"Jju","kam":"Kamba","kaw":"Kawi","kbd":"Kabardian","kbl":"Kanembu","kcg":"Tyap","kde":"Makonde","kea":"Kabuverdianu","ken":"Kenyang","kfo":"Koro","kg":"Kongo","kgp":"Kaingang","kha":"Khasi","kho":"Khotanese","khq":"Koyra Chiini","khw":"Khowar","ki":"Kikuyu","kiu":"Kirmanjki","kj":"Kuanyama","kk":"Kazakh","kkj":"Kako","kl":"Kalaallisut","kln":"Kalenjin","km":"Khmer","kmb":"Kimbundu","kn":"Kannada","ko":"Korean","koi":"Komi-Permyak","kok":"Konkani","kos":"Kosraean","kpe":"Kpelle","kr":"Kanuri","krc":"Karachay-Balkar","kri":"Krio","krj":"Kinaray-a","krl":"Karelian","kru":"Kurukh","ks":"Kashmiri","ksb":"Shambala","ksf":"Bafia","ksh":"Colognian","ku":"Kurdish","kum":"Kumyk","kut":"Kutenai","kv":"Komi","kw":"Cornish","ky":"Kyrgyz","la":"Latin","lad":"Ladino","lag":"Langi","lah":"Lahnda","lam":"Lamba","lb":"Luxembourgish","lez":"Lezghian","lfn":"Lingua Franca Nova","lg":"Ganda","li":"Limburgish","lij":"Ligurian","liv":"Livonian","lkt":"Lakota","lmo":"Lombard","ln":"Lingala","lo":"Lao","lol":"Mongo","lou":"Louisiana Creole","loz":"Lozi","lrc":"Northern Luri","lt":"Lithuanian","ltg":"Latgalian","lu":"Luba-Katanga","lua":"Luba-Lulua","lui":"Luiseno","lun":"Lunda","luo":"Luo","lus":"Mizo","luy":"Luyia","lv":"Latvian","lzh":"Literary Chinese","lzz":"Laz","mad":"Madurese","maf":"Mafa","mag":"Magahi","mai":"Maithili","mak":"Makasar","man":"Mandingo","mas":"Masai","mde":"Maba","mdf":"Moksha","mdr":"Mandar","men":"Mende","mer":"Meru","mfe":"Morisyen","mg":"Malagasy","mga":"Middle Irish","mgh":"Makhuwa-Meetto","mgo":"Metaʼ","mh":"Marshallese","mi":"Maori","mic":"Mi'kmaq","min":"Minangkabau","mk":"Macedonian","ml":"Malayalam","mn":"Mongolian","mnc":"Manchu","mni":"Manipuri","moh":"Mohawk","mos":"Mossi","mr":"Marathi","mrj":"Western Mari","ms":"Malay","mt":"Maltese","mua":"Mundang","mul":"Multiple languages","mus":"Muscogee","mwl":"Mirandese","mwr":"Marwari","mwv":"Mentawai","my":"Burmese","mye":"Myene","myv":"Erzya","mzn":"Mazanderani","na":"Nauru","nan":"Min Nan Chinese","nap":"Neapolitan","naq":"Nama","nb":"Norwegian Bokmål","nd":"North Ndebele","nds":"Low German","nds-NL":"Low Saxon","ne":"Nepali","new":"Newari","ng":"Ndonga","nia":"Nias","niu":"Niuean","njo":"Ao Naga","nl":"Dutch","nl-BE":"Flemish","nmg":"Kwasio","nn":"Norwegian Nynorsk","nnh":"Ngiemboon","no":"Norwegian","nog":"Nogai","non":"Old Norse","nov":"Novial","nqo":"N’Ko","nr":"South Ndebele","nso":"Northern Sotho","nus":"Nuer","nv":"Navajo","nwc":"Classical Newari","ny":"Nyanja","nym":"Nyamwezi","nyn":"Nyankole","nyo":"Nyoro","nzi":"Nzima","oc":"Occitan","oj":"Ojibwa","om":"Oromo","or":"Odia","os":"Ossetic","osa":"Osage","ota":"Ottoman Turkish","pa":"Punjabi","pag":"Pangasinan","pal":"Pahlavi","pam":"Pampanga","pap":"Papiamento","pau":"Palauan","pcd":"Picard","pcm":"Nigerian Pidgin","pdc":"Pennsylvania German","pdt":"Plautdietsch","peo":"Old Persian","pfl":"Palatine German","phn":"Phoenician","pi":"Pali","pl":"Polish","pms":"Piedmontese","pnt":"Pontic","pon":"Pohnpeian","prg":"Prussian","pro":"Old Provençal","ps":"Pashto","pt":"Portuguese","pt-BR":"Brazilian Portuguese","pt-PT":"European Portuguese","qu":"Quechua","quc":"Kʼicheʼ","qug":"Chimborazo Highland Quichua","raj":"Rajasthani","rap":"Rapanui","rar":"Rarotongan","rgn":"Romagnol","rif":"Riffian","rm":"Romansh","rn":"Rundi","ro":"Romanian","ro-MD":"Moldavian","rof":"Rombo","rom":"Romany","rtm":"Rotuman","ru":"Russian","rue":"Rusyn","rug":"Roviana","rup":"Aromanian","rw":"Kinyarwanda","rwk":"Rwa","sa":"Sanskrit","sad":"Sandawe","sah":"Sakha","sam":"Samaritan Aramaic","saq":"Samburu","sas":"Sasak","sat":"Santali","saz":"Saurashtra","sba":"Ngambay","sbp":"Sangu","sc":"Sardinian","scn":"Sicilian","sco":"Scots","sd":"Sindhi","sdc":"Sassarese Sardinian","sdh":"Southern Kurdish","se":"Northern Sami","see":"Seneca","seh":"Sena","sei":"Seri","sel":"Selkup","ses":"Koyraboro Senni","sg":"Sango","sga":"Old Irish","sgs":"Samogitian","sh":"Serbo-Croatian","shi":"Tachelhit","shn":"Shan","shu":"Chadian Arabic","si":"Sinhala","sid":"Sidamo","sk":"Slovak","sl":"Slovenian","sli":"Lower Silesian","sly":"Selayar","sm":"Samoan","sma":"Southern Sami","smj":"Lule Sami","smn":"Inari Sami","sms":"Skolt Sami","sn":"Shona","snk":"Soninke","so":"Somali","sog":"Sogdien","sq":"Albanian","sr":"Serbian","sr-ME":"Montenegrin","srn":"Sranan Tongo","srr":"Serer","ss":"Swati","ssy":"Saho","st":"Southern Sotho","stq":"Saterland Frisian","su":"Sundanese","suk":"Sukuma","sus":"Susu","sux":"Sumerian","sv":"Swedish","sw":"Swahili","sw-CD":"Congo Swahili","swb":"Comorian","syc":"Classical Syriac","syr":"Syriac","szl":"Silesian","ta":"Tamil","tcy":"Tulu","te":"Telugu","tem":"Timne","teo":"Teso","ter":"Tereno","tet":"Tetum","tg":"Tajik","th":"Thai","ti":"Tigrinya","tig":"Tigre","tiv":"Tiv","tk":"Turkmen","tkl":"Tokelau","tkr":"Tsakhur","tl":"Tagalog","tlh":"Klingon","tli":"Tlingit","tly":"Talysh","tmh":"Tamashek","tn":"Tswana","to":"Tongan","tog":"Nyasa Tonga","tpi":"Tok Pisin","tr":"Turkish","tru":"Turoyo","trv":"Taroko","ts":"Tsonga","tsd":"Tsakonian","tsi":"Tsimshian","tt":"Tatar","ttt":"Muslim Tat","tum":"Tumbuka","tvl":"Tuvalu","tw":"Twi","twq":"Tasawaq","ty":"Tahitian","tyv":"Tuvinian","tzm":"Central Atlas Tamazight","udm":"Udmurt","ug":"Uyghur","uga":"Ugaritic","uk":"Ukrainian","umb":"Umbundu","und":"Unknown language","ur":"Urdu","uz":"Uzbek","vai":"Vai","ve":"Venda","vec":"Venetian","vep":"Veps","vi":"Vietnamese","vls":"West Flemish","vmf":"Main-Franconian","vo":"Volapük","vot":"Votic","vro":"Võro","vun":"Vunjo","wa":"Walloon","wae":"Walser","wal":"Wolaytta","war":"Waray","was":"Washo","wbp":"Warlpiri","wo":"Wolof","wuu":"Wu Chinese","xal":"Kalmyk","xh":"Xhosa","xmf":"Mingrelian","xog":"Soga","yao":"Yao","yap":"Yapese","yav":"Yangben","ybb":"Yemba","yi":"Yiddish","yo":"Yoruba","yrl":"Nheengatu","yue":"Cantonese","za":"Zhuang","zap":"Zapotec","zbl":"Blissymbols","zea":"Zeelandic","zen":"Zenaga","zgh":"Standard Moroccan Tamazight","zh":"Chinese","zh-Hans":"Simplified Chinese","zh-Hant":"Traditional Chinese","zu":"Zulu","zun":"Zuni","zxx":"No linguistic content","zza":"Zaza"},"short":{"az":"Azeri","en-GB":"UK English","en-US":"US English"},"narrow":{}},"region":{"long":{"142":"Asia","143":"Central Asia","145":"Western Asia","150":"Europe","151":"Eastern Europe","154":"Northern Europe","155":"Western Europe","202":"Sub-Saharan Africa","419":"Latin America","001":"world","002":"Africa","003":"North America","005":"South America","009":"Oceania","011":"Western Africa","013":"Central America","014":"Eastern Africa","015":"Northern Africa","017":"Middle Africa","018":"Southern Africa","019":"Americas","021":"Northern America","029":"Caribbean","030":"Eastern Asia","034":"Southern Asia","035":"Southeast Asia","039":"Southern Europe","053":"Australasia","054":"Melanesia","057":"Micronesian Region","061":"Polynesia","AC":"Ascension Island","AD":"Andorra","AE":"United Arab Emirates","AF":"Afghanistan","AG":"Antigua & Barbuda","AI":"Anguilla","AL":"Albania","AM":"Armenia","AO":"Angola","AQ":"Antarctica","AR":"Argentina","AS":"American Samoa","AT":"Austria","AU":"Australia","AW":"Aruba","AX":"Åland Islands","AZ":"Azerbaijan","BA":"Bosnia & Herzegovina","BB":"Barbados","BD":"Bangladesh","BE":"Belgium","BF":"Burkina Faso","BG":"Bulgaria","BH":"Bahrain","BI":"Burundi","BJ":"Benin","BL":"St. Barthélemy","BM":"Bermuda","BN":"Brunei","BO":"Bolivia","BQ":"Caribbean Netherlands","BR":"Brazil","BS":"Bahamas","BT":"Bhutan","BV":"Bouvet Island","BW":"Botswana","BY":"Belarus","BZ":"Belize","CA":"Canada","CC":"Cocos (Keeling) Islands","CD":"Congo - Kinshasa","CF":"Central African Republic","CG":"Congo - Brazzaville","CH":"Switzerland","CI":"Côte d’Ivoire","CK":"Cook Islands","CL":"Chile","CM":"Cameroon","CN":"China","CO":"Colombia","CP":"Clipperton Island","CR":"Costa Rica","CU":"Cuba","CV":"Cape Verde","CW":"Curaçao","CX":"Christmas Island","CY":"Cyprus","CZ":"Czechia","DE":"Germany","DG":"Diego Garcia","DJ":"Djibouti","DK":"Denmark","DM":"Dominica","DO":"Dominican Republic","DZ":"Algeria","EA":"Ceuta & Melilla","EC":"Ecuador","EE":"Estonia","EG":"Egypt","EH":"Western Sahara","ER":"Eritrea","ES":"Spain","ET":"Ethiopia","EU":"European Union","EZ":"Eurozone","FI":"Finland","FJ":"Fiji","FK":"Falkland Islands","FM":"Micronesia","FO":"Faroe Islands","FR":"France","GA":"Gabon","GB":"United Kingdom","GD":"Grenada","GE":"Georgia","GF":"French Guiana","GG":"Guernsey","GH":"Ghana","GI":"Gibraltar","GL":"Greenland","GM":"Gambia","GN":"Guinea","GP":"Guadeloupe","GQ":"Equatorial Guinea","GR":"Greece","GS":"South Georgia & South Sandwich Islands","GT":"Guatemala","GU":"Guam","GW":"Guinea-Bissau","GY":"Guyana","HK":"Hong Kong SAR China","HM":"Heard & McDonald Islands","HN":"Honduras","HR":"Croatia","HT":"Haiti","HU":"Hungary","IC":"Canary Islands","ID":"Indonesia","IE":"Ireland","IL":"Israel","IM":"Isle of Man","IN":"India","IO":"British Indian Ocean Territory","IQ":"Iraq","IR":"Iran","IS":"Iceland","IT":"Italy","JE":"Jersey","JM":"Jamaica","JO":"Jordan","JP":"Japan","KE":"Kenya","KG":"Kyrgyzstan","KH":"Cambodia","KI":"Kiribati","KM":"Comoros","KN":"St. Kitts & Nevis","KP":"North Korea","KR":"South Korea","KW":"Kuwait","KY":"Cayman Islands","KZ":"Kazakhstan","LA":"Laos","LB":"Lebanon","LC":"St. Lucia","LI":"Liechtenstein","LK":"Sri Lanka","LR":"Liberia","LS":"Lesotho","LT":"Lithuania","LU":"Luxembourg","LV":"Latvia","LY":"Libya","MA":"Morocco","MC":"Monaco","MD":"Moldova","ME":"Montenegro","MF":"St. Martin","MG":"Madagascar","MH":"Marshall Islands","MK":"North Macedonia","ML":"Mali","MM":"Myanmar (Burma)","MN":"Mongolia","MO":"Macao SAR China","MP":"Northern Mariana Islands","MQ":"Martinique","MR":"Mauritania","MS":"Montserrat","MT":"Malta","MU":"Mauritius","MV":"Maldives","MW":"Malawi","MX":"Mexico","MY":"Malaysia","MZ":"Mozambique","NA":"Namibia","NC":"New Caledonia","NE":"Niger","NF":"Norfolk Island","NG":"Nigeria","NI":"Nicaragua","NL":"Netherlands","NO":"Norway","NP":"Nepal","NR":"Nauru","NU":"Niue","NZ":"New Zealand","OM":"Oman","PA":"Panama","PE":"Peru","PF":"French Polynesia","PG":"Papua New Guinea","PH":"Philippines","PK":"Pakistan","PL":"Poland","PM":"St. Pierre & Miquelon","PN":"Pitcairn Islands","PR":"Puerto Rico","PS":"Palestinian Territories","PT":"Portugal","PW":"Palau","PY":"Paraguay","QA":"Qatar","QO":"Outlying Oceania","RE":"Réunion","RO":"Romania","RS":"Serbia","RU":"Russia","RW":"Rwanda","SA":"Saudi Arabia","SB":"Solomon Islands","SC":"Seychelles","SD":"Sudan","SE":"Sweden","SG":"Singapore","SH":"St. Helena","SI":"Slovenia","SJ":"Svalbard & Jan Mayen","SK":"Slovakia","SL":"Sierra Leone","SM":"San Marino","SN":"Senegal","SO":"Somalia","SR":"Suriname","SS":"South Sudan","ST":"São Tomé & Príncipe","SV":"El Salvador","SX":"Sint Maarten","SY":"Syria","SZ":"Eswatini","TA":"Tristan da Cunha","TC":"Turks & Caicos Islands","TD":"Chad","TF":"French Southern Territories","TG":"Togo","TH":"Thailand","TJ":"Tajikistan","TK":"Tokelau","TL":"Timor-Leste","TM":"Turkmenistan","TN":"Tunisia","TO":"Tonga","TR":"Turkey","TT":"Trinidad & Tobago","TV":"Tuvalu","TW":"Taiwan","TZ":"Tanzania","UA":"Ukraine","UG":"Uganda","UM":"U.S. Outlying Islands","UN":"United Nations","US":"United States","UY":"Uruguay","UZ":"Uzbekistan","VA":"Vatican City","VC":"St. Vincent & Grenadines","VE":"Venezuela","VG":"British Virgin Islands","VI":"U.S. Virgin Islands","VN":"Vietnam","VU":"Vanuatu","WF":"Wallis & Futuna","WS":"Samoa","XA":"Pseudo-Accents","XB":"Pseudo-Bidi","XK":"Kosovo","YE":"Yemen","YT":"Mayotte","ZA":"South Africa","ZM":"Zambia","ZW":"Zimbabwe","ZZ":"Unknown Region"},"short":{"BA":"Bosnia","GB":"UK","HK":"Hong Kong","MM":"Myanmar","MO":"Macao","PS":"Palestine","UN":"UN","US":"US"},"narrow":{}},"script":{"long":{"Adlm":"Adlam","Afak":"Afaka","Aghb":"Caucasian Albanian","Ahom":"Ahom","Arab":"Arabic","Aran":"Nastaliq","Armi":"Imperial Aramaic","Armn":"Armenian","Avst":"Avestan","Bali":"Balinese","Bamu":"Bamum","Bass":"Bassa Vah","Batk":"Batak","Beng":"Bangla","Bhks":"Bhaiksuki","Blis":"Blissymbols","Bopo":"Bopomofo","Brah":"Brahmi","Brai":"Braille","Bugi":"Buginese","Buhd":"Buhid","Cakm":"Chakma","Cans":"Unified Canadian Aboriginal Syllabics","Cari":"Carian","Cham":"Cham","Cher":"Cherokee","Chrs":"Chorasmian","Cirt":"Cirth","Copt":"Coptic","Cprt":"Cypriot","Cyrl":"Cyrillic","Cyrs":"Old Church Slavonic Cyrillic","Deva":"Devanagari","Diak":"Dives Akuru","Dogr":"Dogra","Dsrt":"Deseret","Dupl":"Duployan shorthand","Egyd":"Egyptian demotic","Egyh":"Egyptian hieratic","Egyp":"Egyptian hieroglyphs","Elba":"Elbasan","Elym":"Elymaic","Ethi":"Ethiopic","Geok":"Georgian Khutsuri","Geor":"Georgian","Glag":"Glagolitic","Gong":"Gunjala Gondi","Gonm":"Masaram Gondi","Goth":"Gothic","Gran":"Grantha","Grek":"Greek","Gujr":"Gujarati","Guru":"Gurmukhi","Hanb":"Han with Bopomofo","Hang":"Hangul","Hani":"Han","Hano":"Hanunoo","Hans":"Simplified","Hant":"Traditional","Hatr":"Hatran","Hebr":"Hebrew","Hira":"Hiragana","Hluw":"Anatolian Hieroglyphs","Hmng":"Pahawh Hmong","Hmnp":"Nyiakeng Puachue Hmong","Hrkt":"Japanese syllabaries","Hung":"Old Hungarian","Inds":"Indus","Ital":"Old Italic","Jamo":"Jamo","Java":"Javanese","Jpan":"Japanese","Jurc":"Jurchen","Kali":"Kayah Li","Kana":"Katakana","Khar":"Kharoshthi","Khmr":"Khmer","Khoj":"Khojki","Kits":"Khitan small script","Knda":"Kannada","Kore":"Korean","Kpel":"Kpelle","Kthi":"Kaithi","Lana":"Lanna","Laoo":"Lao","Latf":"Fraktur Latin","Latg":"Gaelic Latin","Latn":"Latin","Lepc":"Lepcha","Limb":"Limbu","Lina":"Linear A","Linb":"Linear B","Lisu":"Fraser","Loma":"Loma","Lyci":"Lycian","Lydi":"Lydian","Mahj":"Mahajani","Maka":"Makasar","Mand":"Mandaean","Mani":"Manichaean","Marc":"Marchen","Maya":"Mayan hieroglyphs","Medf":"Medefaidrin","Mend":"Mende","Merc":"Meroitic Cursive","Mero":"Meroitic","Mlym":"Malayalam","Modi":"Modi","Mong":"Mongolian","Moon":"Moon","Mroo":"Mro","Mtei":"Meitei Mayek","Mult":"Multani","Mymr":"Myanmar","Nand":"Nandinagari","Narb":"Old North Arabian","Nbat":"Nabataean","Newa":"Newa","Nkgb":"Naxi Geba","Nkoo":"N’Ko","Nshu":"Nüshu","Ogam":"Ogham","Olck":"Ol Chiki","Orkh":"Orkhon","Orya":"Odia","Osge":"Osage","Osma":"Osmanya","Palm":"Palmyrene","Pauc":"Pau Cin Hau","Perm":"Old Permic","Phag":"Phags-pa","Phli":"Inscriptional Pahlavi","Phlp":"Psalter Pahlavi","Phlv":"Book Pahlavi","Phnx":"Phoenician","Plrd":"Pollard Phonetic","Prti":"Inscriptional Parthian","Qaag":"Zawgyi","Rjng":"Rejang","Rohg":"Hanifi Rohingya","Roro":"Rongorongo","Runr":"Runic","Samr":"Samaritan","Sara":"Sarati","Sarb":"Old South Arabian","Saur":"Saurashtra","Sgnw":"SignWriting","Shaw":"Shavian","Shrd":"Sharada","Sidd":"Siddham","Sind":"Khudawadi","Sinh":"Sinhala","Sogd":"Sogdian","Sogo":"Old Sogdian","Sora":"Sora Sompeng","Soyo":"Soyombo","Sund":"Sundanese","Sylo":"Syloti Nagri","Syrc":"Syriac","Syre":"Estrangelo Syriac","Syrj":"Western Syriac","Syrn":"Eastern Syriac","Tagb":"Tagbanwa","Takr":"Takri","Tale":"Tai Le","Talu":"New Tai Lue","Taml":"Tamil","Tang":"Tangut","Tavt":"Tai Viet","Telu":"Telugu","Teng":"Tengwar","Tfng":"Tifinagh","Tglg":"Tagalog","Thaa":"Thaana","Thai":"Thai","Tibt":"Tibetan","Tirh":"Tirhuta","Ugar":"Ugaritic","Vaii":"Vai","Visp":"Visible Speech","Wara":"Varang Kshiti","Wcho":"Wancho","Wole":"Woleai","Xpeo":"Old Persian","Xsux":"Sumero-Akkadian Cuneiform","Yezi":"Yezidi","Yiii":"Yi","Zanb":"Zanabazar Square","Zinh":"Inherited","Zmth":"Mathematical Notation","Zsye":"Emoji","Zsym":"Symbols","Zxxx":"Unwritten","Zyyy":"Common","Zzzz":"Unknown Script"},"short":{"Cans":"UCAS","Xsux":"S-A Cuneiform"},"narrow":{}},"currency":{"long":{"ADP":"Andorran Peseta","AED":"United Arab Emirates Dirham","AFA":"Afghan Afghani (1927–2002)","AFN":"Afghan Afghani","ALK":"Albanian Lek (1946–1965)","ALL":"Albanian Lek","AMD":"Armenian Dram","ANG":"Netherlands Antillean Guilder","AOA":"Angolan Kwanza","AOK":"Angolan Kwanza (1977–1991)","AON":"Angolan New Kwanza (1990–2000)","AOR":"Angolan Readjusted Kwanza (1995–1999)","ARA":"Argentine Austral","ARL":"Argentine Peso Ley (1970–1983)","ARM":"Argentine Peso (1881–1970)","ARP":"Argentine Peso (1983–1985)","ARS":"Argentine Peso","ATS":"Austrian Schilling","AUD":"Australian Dollar","AWG":"Aruban Florin","AZM":"Azerbaijani Manat (1993–2006)","AZN":"Azerbaijani Manat","BAD":"Bosnia-Herzegovina Dinar (1992–1994)","BAM":"Bosnia-Herzegovina Convertible Mark","BAN":"Bosnia-Herzegovina New Dinar (1994–1997)","BBD":"Barbadian Dollar","BDT":"Bangladeshi Taka","BEC":"Belgian Franc (convertible)","BEF":"Belgian Franc","BEL":"Belgian Franc (financial)","BGL":"Bulgarian Hard Lev","BGM":"Bulgarian Socialist Lev","BGN":"Bulgarian Lev","BGO":"Bulgarian Lev (1879–1952)","BHD":"Bahraini Dinar","BIF":"Burundian Franc","BMD":"Bermudan Dollar","BND":"Brunei Dollar","BOB":"Bolivian Boliviano","BOL":"Bolivian Boliviano (1863–1963)","BOP":"Bolivian Peso","BOV":"Bolivian Mvdol","BRB":"Brazilian New Cruzeiro (1967–1986)","BRC":"Brazilian Cruzado (1986–1989)","BRE":"Brazilian Cruzeiro (1990–1993)","BRL":"Brazilian Real","BRN":"Brazilian New Cruzado (1989–1990)","BRR":"Brazilian Cruzeiro (1993–1994)","BRZ":"Brazilian Cruzeiro (1942–1967)","BSD":"Bahamian Dollar","BTN":"Bhutanese Ngultrum","BUK":"Burmese Kyat","BWP":"Botswanan Pula","BYB":"Belarusian Ruble (1994–1999)","BYN":"Belarusian Ruble","BYR":"Belarusian Ruble (2000–2016)","BZD":"Belize Dollar","CAD":"Canadian Dollar","CDF":"Congolese Franc","CHE":"WIR Euro","CHF":"Swiss Franc","CHW":"WIR Franc","CLE":"Chilean Escudo","CLF":"Chilean Unit of Account (UF)","CLP":"Chilean Peso","CNH":"Chinese Yuan (offshore)","CNX":"Chinese People’s Bank Dollar","CNY":"Chinese Yuan","COP":"Colombian Peso","COU":"Colombian Real Value Unit","CRC":"Costa Rican Colón","CSD":"Serbian Dinar (2002–2006)","CSK":"Czechoslovak Hard Koruna","CUC":"Cuban Convertible Peso","CUP":"Cuban Peso","CVE":"Cape Verdean Escudo","CYP":"Cypriot Pound","CZK":"Czech Koruna","DDM":"East German Mark","DEM":"German Mark","DJF":"Djiboutian Franc","DKK":"Danish Krone","DOP":"Dominican Peso","DZD":"Algerian Dinar","ECS":"Ecuadorian Sucre","ECV":"Ecuadorian Unit of Constant Value","EEK":"Estonian Kroon","EGP":"Egyptian Pound","ERN":"Eritrean Nakfa","ESA":"Spanish Peseta (A account)","ESB":"Spanish Peseta (convertible account)","ESP":"Spanish Peseta","ETB":"Ethiopian Birr","EUR":"Euro","FIM":"Finnish Markka","FJD":"Fijian Dollar","FKP":"Falkland Islands Pound","FRF":"French Franc","GBP":"British Pound","GEK":"Georgian Kupon Larit","GEL":"Georgian Lari","GHC":"Ghanaian Cedi (1979–2007)","GHS":"Ghanaian Cedi","GIP":"Gibraltar Pound","GMD":"Gambian Dalasi","GNF":"Guinean Franc","GNS":"Guinean Syli","GQE":"Equatorial Guinean Ekwele","GRD":"Greek Drachma","GTQ":"Guatemalan Quetzal","GWE":"Portuguese Guinea Escudo","GWP":"Guinea-Bissau Peso","GYD":"Guyanaese Dollar","HKD":"Hong Kong Dollar","HNL":"Honduran Lempira","HRD":"Croatian Dinar","HRK":"Croatian Kuna","HTG":"Haitian Gourde","HUF":"Hungarian Forint","IDR":"Indonesian Rupiah","IEP":"Irish Pound","ILP":"Israeli Pound","ILR":"Israeli Shekel (1980–1985)","ILS":"Israeli New Shekel","INR":"Indian Rupee","IQD":"Iraqi Dinar","IRR":"Iranian Rial","ISJ":"Icelandic Króna (1918–1981)","ISK":"Icelandic Króna","ITL":"Italian Lira","JMD":"Jamaican Dollar","JOD":"Jordanian Dinar","JPY":"Japanese Yen","KES":"Kenyan Shilling","KGS":"Kyrgystani Som","KHR":"Cambodian Riel","KMF":"Comorian Franc","KPW":"North Korean Won","KRH":"South Korean Hwan (1953–1962)","KRO":"South Korean Won (1945–1953)","KRW":"South Korean Won","KWD":"Kuwaiti Dinar","KYD":"Cayman Islands Dollar","KZT":"Kazakhstani Tenge","LAK":"Laotian Kip","LBP":"Lebanese Pound","LKR":"Sri Lankan Rupee","LRD":"Liberian Dollar","LSL":"Lesotho Loti","LTL":"Lithuanian Litas","LTT":"Lithuanian Talonas","LUC":"Luxembourgian Convertible Franc","LUF":"Luxembourgian Franc","LUL":"Luxembourg Financial Franc","LVL":"Latvian Lats","LVR":"Latvian Ruble","LYD":"Libyan Dinar","MAD":"Moroccan Dirham","MAF":"Moroccan Franc","MCF":"Monegasque Franc","MDC":"Moldovan Cupon","MDL":"Moldovan Leu","MGA":"Malagasy Ariary","MGF":"Malagasy Franc","MKD":"Macedonian Denar","MKN":"Macedonian Denar (1992–1993)","MLF":"Malian Franc","MMK":"Myanmar Kyat","MNT":"Mongolian Tugrik","MOP":"Macanese Pataca","MRO":"Mauritanian Ouguiya (1973–2017)","MRU":"Mauritanian Ouguiya","MTL":"Maltese Lira","MTP":"Maltese Pound","MUR":"Mauritian Rupee","MVP":"Maldivian Rupee (1947–1981)","MVR":"Maldivian Rufiyaa","MWK":"Malawian Kwacha","MXN":"Mexican Peso","MXP":"Mexican Silver Peso (1861–1992)","MXV":"Mexican Investment Unit","MYR":"Malaysian Ringgit","MZE":"Mozambican Escudo","MZM":"Mozambican Metical (1980–2006)","MZN":"Mozambican Metical","NAD":"Namibian Dollar","NGN":"Nigerian Naira","NIC":"Nicaraguan Córdoba (1988–1991)","NIO":"Nicaraguan Córdoba","NLG":"Dutch Guilder","NOK":"Norwegian Krone","NPR":"Nepalese Rupee","NZD":"New Zealand Dollar","OMR":"Omani Rial","PAB":"Panamanian Balboa","PEI":"Peruvian Inti","PEN":"Peruvian Sol","PES":"Peruvian Sol (1863–1965)","PGK":"Papua New Guinean Kina","PHP":"Philippine Piso","PKR":"Pakistani Rupee","PLN":"Polish Zloty","PLZ":"Polish Zloty (1950–1995)","PTE":"Portuguese Escudo","PYG":"Paraguayan Guarani","QAR":"Qatari Rial","RHD":"Rhodesian Dollar","ROL":"Romanian Leu (1952–2006)","RON":"Romanian Leu","RSD":"Serbian Dinar","RUB":"Russian Ruble","RUR":"Russian Ruble (1991–1998)","RWF":"Rwandan Franc","SAR":"Saudi Riyal","SBD":"Solomon Islands Dollar","SCR":"Seychellois Rupee","SDD":"Sudanese Dinar (1992–2007)","SDG":"Sudanese Pound","SDP":"Sudanese Pound (1957–1998)","SEK":"Swedish Krona","SGD":"Singapore Dollar","SHP":"St. Helena Pound","SIT":"Slovenian Tolar","SKK":"Slovak Koruna","SLL":"Sierra Leonean Leone","SOS":"Somali Shilling","SRD":"Surinamese Dollar","SRG":"Surinamese Guilder","SSP":"South Sudanese Pound","STD":"São Tomé & Príncipe Dobra (1977–2017)","STN":"São Tomé & Príncipe Dobra","SUR":"Soviet Rouble","SVC":"Salvadoran Colón","SYP":"Syrian Pound","SZL":"Swazi Lilangeni","THB":"Thai Baht","TJR":"Tajikistani Ruble","TJS":"Tajikistani Somoni","TMM":"Turkmenistani Manat (1993–2009)","TMT":"Turkmenistani Manat","TND":"Tunisian Dinar","TOP":"Tongan Paʻanga","TPE":"Timorese Escudo","TRL":"Turkish Lira (1922–2005)","TRY":"Turkish Lira","TTD":"Trinidad & Tobago Dollar","TWD":"New Taiwan Dollar","TZS":"Tanzanian Shilling","UAH":"Ukrainian Hryvnia","UAK":"Ukrainian Karbovanets","UGS":"Ugandan Shilling (1966–1987)","UGX":"Ugandan Shilling","USD":"US Dollar","USN":"US Dollar (Next day)","USS":"US Dollar (Same day)","UYI":"Uruguayan Peso (Indexed Units)","UYP":"Uruguayan Peso (1975–1993)","UYU":"Uruguayan Peso","UYW":"Uruguayan Nominal Wage Index Unit","UZS":"Uzbekistani Som","VEB":"Venezuelan Bolívar (1871–2008)","VEF":"Venezuelan Bolívar (2008–2018)","VES":"Venezuelan Bolívar","VND":"Vietnamese Dong","VNN":"Vietnamese Dong (1978–1985)","VUV":"Vanuatu Vatu","WST":"Samoan Tala","XAF":"Central African CFA Franc","XAG":"Silver","XAU":"Gold","XBA":"European Composite Unit","XBB":"European Monetary Unit","XBC":"European Unit of Account (XBC)","XBD":"European Unit of Account (XBD)","XCD":"East Caribbean Dollar","XDR":"Special Drawing Rights","XEU":"European Currency Unit","XFO":"French Gold Franc","XFU":"French UIC-Franc","XOF":"West African CFA Franc","XPD":"Palladium","XPF":"CFP Franc","XPT":"Platinum","XRE":"RINET Funds","XSU":"Sucre","XTS":"Testing Currency Code","XUA":"ADB Unit of Account","XXX":"Unknown Currency","YDD":"Yemeni Dinar","YER":"Yemeni Rial","YUD":"Yugoslavian Hard Dinar (1966–1990)","YUM":"Yugoslavian New Dinar (1994–2002)","YUN":"Yugoslavian Convertible Dinar (1990–1992)","YUR":"Yugoslavian Reformed Dinar (1992–1993)","ZAL":"South African Rand (financial)","ZAR":"South African Rand","ZMK":"Zambian Kwacha (1968–2012)","ZMW":"Zambian Kwacha","ZRN":"Zairean New Zaire (1993–1998)","ZRZ":"Zairean Zaire (1971–1993)","ZWD":"Zimbabwean Dollar (1980–2008)","ZWL":"Zimbabwean Dollar (2009)","ZWR":"Zimbabwean Dollar (2008)"},"short":{},"narrow":{}}},"patterns":{"locale":"{0} ({1})"}},"locale":"en"}
)
}
}

if (!("Intl"in self&&"ListFormat"in self.Intl
)) {

// Intl.ListFormat
(function() {
  // node_modules/tslib/tslib.es6.js
  var extendStatics = function(d, b) {
    extendStatics = Object.setPrototypeOf || {__proto__: []} instanceof Array && function(d2, b2) {
      d2.__proto__ = b2;
    } || function(d2, b2) {
      for (var p in b2)
        if (Object.prototype.hasOwnProperty.call(b2, p))
          d2[p] = b2[p];
    };
    return extendStatics(d, b);
  };
  function __extends(d, b) {
    if (typeof b !== "function" && b !== null)
      throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
    extendStatics(d, b);
    function __() {
      this.constructor = d;
    }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  }
  var __assign = function() {
    __assign = Object.assign || function __assign2(t) {
      for (var s, i = 1, n = arguments.length; i < n; i++) {
        s = arguments[i];
        for (var p in s)
          if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
      }
      return t;
    };
    return __assign.apply(this, arguments);
  };

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/utils.js
  function setInternalSlot(map, pl, field, value) {
    if (!map.get(pl)) {
      map.set(pl, Object.create(null));
    }
    var slots = map.get(pl);
    slots[field] = value;
  }
  function getInternalSlot(map, pl, field) {
    return getMultiInternalSlots(map, pl, field)[field];
  }
  function getMultiInternalSlots(map, pl) {
    var fields = [];
    for (var _i = 2; _i < arguments.length; _i++) {
      fields[_i - 2] = arguments[_i];
    }
    var slots = map.get(pl);
    if (!slots) {
      throw new TypeError(pl + " InternalSlot has not been initialized");
    }
    return fields.reduce(function(all, f) {
      all[f] = slots[f];
      return all;
    }, Object.create(null));
  }
  function isLiteralPart(patternPart) {
    return patternPart.type === "literal";
  }
  var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;
  function invariant(condition, message, Err) {
    if (Err === void 0) {
      Err = Error;
    }
    if (!condition) {
      throw new Err(message);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/types/date-time.js
  var RangePatternType;
  (function(RangePatternType2) {
    RangePatternType2["startRange"] = "startRange";
    RangePatternType2["shared"] = "shared";
    RangePatternType2["endRange"] = "endRange";
  })(RangePatternType || (RangePatternType = {}));

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/CanonicalizeLocaleList.js
  function CanonicalizeLocaleList(locales) {
    return Intl.getCanonicalLocales(locales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/262.js
  function ToString(o) {
    if (typeof o === "symbol") {
      throw TypeError("Cannot convert a Symbol value to a string");
    }
    return String(o);
  }
  function ToObject(arg) {
    if (arg == null) {
      throw new TypeError("undefined/null cannot be converted to object");
    }
    return Object(arg);
  }
  var MINUTES_PER_HOUR = 60;
  var SECONDS_PER_MINUTE = 60;
  var MS_PER_SECOND = 1e3;
  var MS_PER_MINUTE = MS_PER_SECOND * SECONDS_PER_MINUTE;
  var MS_PER_HOUR = MS_PER_MINUTE * MINUTES_PER_HOUR;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/PartitionPattern.js
  function PartitionPattern(pattern) {
    var result = [];
    var beginIndex = pattern.indexOf("{");
    var endIndex = 0;
    var nextIndex = 0;
    var length = pattern.length;
    while (beginIndex < pattern.length && beginIndex > -1) {
      endIndex = pattern.indexOf("}", beginIndex);
      invariant(endIndex > beginIndex, "Invalid pattern " + pattern);
      if (beginIndex > nextIndex) {
        result.push({
          type: "literal",
          value: pattern.substring(nextIndex, beginIndex)
        });
      }
      result.push({
        type: pattern.substring(beginIndex + 1, endIndex),
        value: void 0
      });
      nextIndex = endIndex + 1;
      beginIndex = pattern.indexOf("{", nextIndex);
    }
    if (nextIndex < length) {
      result.push({
        type: "literal",
        value: pattern.substring(nextIndex, length)
      });
    }
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetOption.js
  function GetOption(opts, prop, type, values, fallback) {
    if (typeof opts !== "object") {
      throw new TypeError("Options must be an object");
    }
    var value = opts[prop];
    if (value !== void 0) {
      if (type !== "boolean" && type !== "string") {
        throw new TypeError("invalid type");
      }
      if (type === "boolean") {
        value = Boolean(value);
      }
      if (type === "string") {
        value = ToString(value);
      }
      if (values !== void 0 && !values.filter(function(val) {
        return val == value;
      }).length) {
        throw new RangeError(value + " is not within " + values.join(", "));
      }
      return value;
    }
    return fallback;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestAvailableLocale.js
  function BestAvailableLocale(availableLocales, locale) {
    var candidate = locale;
    while (true) {
      if (availableLocales.has(candidate)) {
        return candidate;
      }
      var pos = candidate.lastIndexOf("-");
      if (!~pos) {
        return void 0;
      }
      if (pos >= 2 && candidate[pos - 2] === "-") {
        pos -= 2;
      }
      candidate = candidate.slice(0, pos);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupMatcher.js
  function LookupMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var result = {locale: ""};
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        result.locale = availableLocale;
        if (locale !== noExtensionLocale) {
          result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);
        }
        return result;
      }
    }
    result.locale = getDefaultLocale();
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestFitMatcher.js
  function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var minimizedAvailableLocaleMap = {};
    var minimizedAvailableLocales = new Set();
    availableLocales.forEach(function(locale2) {
      var minimizedLocale = new Intl.Locale(locale2).minimize().toString();
      minimizedAvailableLocaleMap[minimizedLocale] = locale2;
      minimizedAvailableLocales.add(minimizedLocale);
    });
    var foundLocale;
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var l = requestedLocales_1[_i];
      if (foundLocale) {
        break;
      }
      var noExtensionLocale = l.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      if (availableLocales.has(noExtensionLocale)) {
        foundLocale = noExtensionLocale;
        break;
      }
      if (minimizedAvailableLocales.has(noExtensionLocale)) {
        foundLocale = minimizedAvailableLocaleMap[noExtensionLocale];
        break;
      }
      var locale = new Intl.Locale(noExtensionLocale);
      var maximizedRequestedLocale = locale.maximize().toString();
      var minimizedRequestedLocale = locale.minimize().toString();
      if (minimizedAvailableLocales.has(minimizedRequestedLocale)) {
        foundLocale = minimizedAvailableLocaleMap[minimizedRequestedLocale];
        break;
      }
      foundLocale = BestAvailableLocale(minimizedAvailableLocales, maximizedRequestedLocale);
    }
    return {
      locale: foundLocale || getDefaultLocale()
    };
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/UnicodeExtensionValue.js
  function UnicodeExtensionValue(extension, key) {
    invariant(key.length === 2, "key must have 2 elements");
    var size = extension.length;
    var searchValue = "-" + key + "-";
    var pos = extension.indexOf(searchValue);
    if (pos !== -1) {
      var start = pos + 4;
      var end = start;
      var k = start;
      var done = false;
      while (!done) {
        var e = extension.indexOf("-", k);
        var len = void 0;
        if (e === -1) {
          len = size - k;
        } else {
          len = e - k;
        }
        if (len === 2) {
          done = true;
        } else if (e === -1) {
          end = size;
          done = true;
        } else {
          end = e;
          k = e + 1;
        }
      }
      return extension.slice(start, end);
    }
    searchValue = "-" + key;
    pos = extension.indexOf(searchValue);
    if (pos !== -1 && pos + 3 === size) {
      return "";
    }
    return void 0;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/ResolveLocale.js
  function ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData, getDefaultLocale) {
    var matcher = options.localeMatcher;
    var r;
    if (matcher === "lookup") {
      r = LookupMatcher(availableLocales, requestedLocales, getDefaultLocale);
    } else {
      r = BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale);
    }
    var foundLocale = r.locale;
    var result = {locale: "", dataLocale: foundLocale};
    var supportedExtension = "-u";
    for (var _i = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _i < relevantExtensionKeys_1.length; _i++) {
      var key = relevantExtensionKeys_1[_i];
      invariant(foundLocale in localeData, "Missing locale data for " + foundLocale);
      var foundLocaleData = localeData[foundLocale];
      invariant(typeof foundLocaleData === "object" && foundLocaleData !== null, "locale data " + key + " must be an object");
      var keyLocaleData = foundLocaleData[key];
      invariant(Array.isArray(keyLocaleData), "keyLocaleData for " + key + " must be an array");
      var value = keyLocaleData[0];
      invariant(typeof value === "string" || value === null, "value must be string or null but got " + typeof value + " in key " + key);
      var supportedExtensionAddition = "";
      if (r.extension) {
        var requestedValue = UnicodeExtensionValue(r.extension, key);
        if (requestedValue !== void 0) {
          if (requestedValue !== "") {
            if (~keyLocaleData.indexOf(requestedValue)) {
              value = requestedValue;
              supportedExtensionAddition = "-" + key + "-" + value;
            }
          } else if (~requestedValue.indexOf("true")) {
            value = "true";
            supportedExtensionAddition = "-" + key;
          }
        }
      }
      if (key in options) {
        var optionsValue = options[key];
        invariant(typeof optionsValue === "string" || typeof optionsValue === "undefined" || optionsValue === null, "optionsValue must be String, Undefined or Null");
        if (~keyLocaleData.indexOf(optionsValue)) {
          if (optionsValue !== value) {
            value = optionsValue;
            supportedExtensionAddition = "";
          }
        }
      }
      result[key] = value;
      supportedExtension += supportedExtensionAddition;
    }
    if (supportedExtension.length > 2) {
      var privateIndex = foundLocale.indexOf("-x-");
      if (privateIndex === -1) {
        foundLocale = foundLocale + supportedExtension;
      } else {
        var preExtension = foundLocale.slice(0, privateIndex);
        var postExtension = foundLocale.slice(privateIndex, foundLocale.length);
        foundLocale = preExtension + supportedExtension + postExtension;
      }
      foundLocale = Intl.getCanonicalLocales(foundLocale)[0];
    }
    result.locale = foundLocale;
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetOptionsObject.js
  function GetOptionsObject(options) {
    if (typeof options === "undefined") {
      return Object.create(null);
    }
    if (typeof options === "object") {
      return options;
    }
    throw new TypeError("Options must be an object");
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/IsSanctionedSimpleUnitIdentifier.js
  var SANCTIONED_UNITS = [
    "angle-degree",
    "area-acre",
    "area-hectare",
    "concentr-percent",
    "digital-bit",
    "digital-byte",
    "digital-gigabit",
    "digital-gigabyte",
    "digital-kilobit",
    "digital-kilobyte",
    "digital-megabit",
    "digital-megabyte",
    "digital-petabyte",
    "digital-terabit",
    "digital-terabyte",
    "duration-day",
    "duration-hour",
    "duration-millisecond",
    "duration-minute",
    "duration-month",
    "duration-second",
    "duration-week",
    "duration-year",
    "length-centimeter",
    "length-foot",
    "length-inch",
    "length-kilometer",
    "length-meter",
    "length-mile-scandinavian",
    "length-mile",
    "length-millimeter",
    "length-yard",
    "mass-gram",
    "mass-kilogram",
    "mass-ounce",
    "mass-pound",
    "mass-stone",
    "temperature-celsius",
    "temperature-fahrenheit",
    "volume-fluid-ounce",
    "volume-gallon",
    "volume-liter",
    "volume-milliliter"
  ];
  function removeUnitNamespace(unit) {
    return unit.slice(unit.indexOf("-") + 1);
  }
  var SIMPLE_UNITS = SANCTIONED_UNITS.map(removeUnitNamespace);

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/regex.generated.js
  var S_UNICODE_REGEX = /[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]/;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/format_to_parts.js
  var CARET_S_UNICODE_REGEX = new RegExp("^" + S_UNICODE_REGEX.source);
  var S_DOLLAR_UNICODE_REGEX = new RegExp(S_UNICODE_REGEX.source + "$");

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupSupportedLocales.js
  function LookupSupportedLocales(availableLocales, requestedLocales) {
    var subset = [];
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        subset.push(availableLocale);
      }
    }
    return subset;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/SupportedLocales.js
  function SupportedLocales(availableLocales, requestedLocales, options) {
    var matcher = "best fit";
    if (options !== void 0) {
      options = ToObject(options);
      matcher = GetOption(options, "localeMatcher", "string", ["lookup", "best fit"], "best fit");
    }
    if (matcher === "best fit") {
      return LookupSupportedLocales(availableLocales, requestedLocales);
    }
    return LookupSupportedLocales(availableLocales, requestedLocales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/data.js
  var MissingLocaleDataError = function(_super) {
    __extends(MissingLocaleDataError2, _super);
    function MissingLocaleDataError2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.type = "MISSING_LOCALE_DATA";
      return _this;
    }
    return MissingLocaleDataError2;
  }(Error);

  // bazel-out/darwin-fastbuild/bin/packages/intl-listformat/lib/index.js
  function validateInstance(instance, method) {
    if (!(instance instanceof ListFormat)) {
      throw new TypeError("Method Intl.ListFormat.prototype." + method + " called on incompatible receiver " + String(instance));
    }
  }
  function stringListFromIterable(list) {
    if (list === void 0) {
      return [];
    }
    var result = [];
    for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {
      var el = list_1[_i];
      if (typeof el !== "string") {
        throw new TypeError("array list[" + list.indexOf(el) + "] is not type String");
      }
      result.push(el);
    }
    return result;
  }
  function createPartsFromList(internalSlotMap, lf, list) {
    var size = list.length;
    if (size === 0) {
      return [];
    }
    if (size === 2) {
      var pattern = getInternalSlot(internalSlotMap, lf, "templatePair");
      var first = {type: "element", value: list[0]};
      var second = {type: "element", value: list[1]};
      return deconstructPattern(pattern, {"0": first, "1": second});
    }
    var last = {
      type: "element",
      value: list[size - 1]
    };
    var parts = last;
    var i = size - 2;
    while (i >= 0) {
      var pattern = void 0;
      if (i === 0) {
        pattern = getInternalSlot(internalSlotMap, lf, "templateStart");
      } else if (i < size - 2) {
        pattern = getInternalSlot(internalSlotMap, lf, "templateMiddle");
      } else {
        pattern = getInternalSlot(internalSlotMap, lf, "templateEnd");
      }
      var head = {type: "element", value: list[i]};
      parts = deconstructPattern(pattern, {"0": head, "1": parts});
      i--;
    }
    return parts;
  }
  function deconstructPattern(pattern, placeables) {
    var patternParts = PartitionPattern(pattern);
    var result = [];
    for (var _i = 0, patternParts_1 = patternParts; _i < patternParts_1.length; _i++) {
      var patternPart = patternParts_1[_i];
      var part = patternPart.type;
      if (isLiteralPart(patternPart)) {
        result.push({
          type: "literal",
          value: patternPart.value
        });
      } else {
        invariant(part in placeables, part + " is missing from placables");
        var subst = placeables[part];
        if (Array.isArray(subst)) {
          result.push.apply(result, subst);
        } else {
          result.push(subst);
        }
      }
    }
    return result;
  }
  var ListFormat = function() {
    function ListFormat2(locales, options) {
      var newTarget = this && this instanceof ListFormat2 ? this.constructor : void 0;
      if (!newTarget) {
        throw new TypeError("Intl.ListFormat must be called with 'new'");
      }
      setInternalSlot(ListFormat2.__INTERNAL_SLOT_MAP__, this, "initializedListFormat", true);
      var requestedLocales = CanonicalizeLocaleList(locales);
      var opt = Object.create(null);
      var opts = GetOptionsObject(options);
      var matcher = GetOption(opts, "localeMatcher", "string", ["best fit", "lookup"], "best fit");
      opt.localeMatcher = matcher;
      var localeData = ListFormat2.localeData;
      var r = ResolveLocale(ListFormat2.availableLocales, requestedLocales, opt, ListFormat2.relevantExtensionKeys, localeData, ListFormat2.getDefaultLocale);
      setInternalSlot(ListFormat2.__INTERNAL_SLOT_MAP__, this, "locale", r.locale);
      var type = GetOption(opts, "type", "string", ["conjunction", "disjunction", "unit"], "conjunction");
      setInternalSlot(ListFormat2.__INTERNAL_SLOT_MAP__, this, "type", type);
      var style = GetOption(opts, "style", "string", ["long", "short", "narrow"], "long");
      setInternalSlot(ListFormat2.__INTERNAL_SLOT_MAP__, this, "style", style);
      var dataLocale = r.dataLocale;
      var dataLocaleData = localeData[dataLocale];
      invariant(!!dataLocaleData, "Missing locale data for " + dataLocale);
      var dataLocaleTypes = dataLocaleData[type];
      var templates = dataLocaleTypes[style];
      setInternalSlot(ListFormat2.__INTERNAL_SLOT_MAP__, this, "templatePair", templates.pair);
      setInternalSlot(ListFormat2.__INTERNAL_SLOT_MAP__, this, "templateStart", templates.start);
      setInternalSlot(ListFormat2.__INTERNAL_SLOT_MAP__, this, "templateMiddle", templates.middle);
      setInternalSlot(ListFormat2.__INTERNAL_SLOT_MAP__, this, "templateEnd", templates.end);
    }
    ListFormat2.prototype.format = function(elements) {
      validateInstance(this, "format");
      var result = "";
      var parts = createPartsFromList(ListFormat2.__INTERNAL_SLOT_MAP__, this, stringListFromIterable(elements));
      if (!Array.isArray(parts)) {
        return parts.value;
      }
      for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {
        var p = parts_1[_i];
        result += p.value;
      }
      return result;
    };
    ListFormat2.prototype.formatToParts = function(elements) {
      validateInstance(this, "format");
      var parts = createPartsFromList(ListFormat2.__INTERNAL_SLOT_MAP__, this, stringListFromIterable(elements));
      if (!Array.isArray(parts)) {
        return [parts];
      }
      var result = [];
      for (var _i = 0, parts_2 = parts; _i < parts_2.length; _i++) {
        var part = parts_2[_i];
        result.push(__assign({}, part));
      }
      return result;
    };
    ListFormat2.prototype.resolvedOptions = function() {
      validateInstance(this, "resolvedOptions");
      return {
        locale: getInternalSlot(ListFormat2.__INTERNAL_SLOT_MAP__, this, "locale"),
        type: getInternalSlot(ListFormat2.__INTERNAL_SLOT_MAP__, this, "type"),
        style: getInternalSlot(ListFormat2.__INTERNAL_SLOT_MAP__, this, "style")
      };
    };
    ListFormat2.supportedLocalesOf = function(locales, options) {
      return SupportedLocales(ListFormat2.availableLocales, CanonicalizeLocaleList(locales), options);
    };
    ListFormat2.__addLocaleData = function() {
      var data = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        data[_i] = arguments[_i];
      }
      for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {
        var _b = data_1[_a], d = _b.data, locale = _b.locale;
        var minimizedLocale = new Intl.Locale(locale).minimize().toString();
        ListFormat2.localeData[locale] = ListFormat2.localeData[minimizedLocale] = d;
        ListFormat2.availableLocales.add(minimizedLocale);
        ListFormat2.availableLocales.add(locale);
        if (!ListFormat2.__defaultLocale) {
          ListFormat2.__defaultLocale = minimizedLocale;
        }
      }
    };
    ListFormat2.getDefaultLocale = function() {
      return ListFormat2.__defaultLocale;
    };
    ListFormat2.localeData = {};
    ListFormat2.availableLocales = new Set();
    ListFormat2.__defaultLocale = "";
    ListFormat2.relevantExtensionKeys = [];
    ListFormat2.polyfilled = true;
    ListFormat2.__INTERNAL_SLOT_MAP__ = new WeakMap();
    return ListFormat2;
  }();
  var lib_default = ListFormat;
  try {
    if (typeof Symbol !== "undefined") {
      Object.defineProperty(ListFormat.prototype, Symbol.toStringTag, {
        value: "Intl.ListFormat",
        writable: false,
        enumerable: false,
        configurable: true
      });
    }
    Object.defineProperty(ListFormat.prototype.constructor, "length", {
      value: 0,
      writable: false,
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(ListFormat.supportedLocalesOf, "length", {
      value: 1,
      writable: false,
      enumerable: false,
      configurable: true
    });
  } catch (e) {
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-listformat/lib/should-polyfill.js
  function shouldPolyfill() {
    return typeof Intl === "undefined" || !("ListFormat" in Intl);
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-listformat/lib/polyfill.js
  if (shouldPolyfill()) {
    Object.defineProperty(Intl, "ListFormat", {
      value: lib_default,
      writable: true,
      enumerable: false,
      configurable: true
    });
  }
})();
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */


}

if (!("Intl"in self&&Intl.ListFormat&&Intl.ListFormat.supportedLocalesOf&&1===Intl.ListFormat.supportedLocalesOf("en").length
)) {

// Intl.ListFormat.~locale.en
/* @generated */	
// prettier-ignore
if (Intl.ListFormat && typeof Intl.ListFormat.__addLocaleData === 'function') {
  Intl.ListFormat.__addLocaleData({"data":{"conjunction":{"long":{"start":"{0}, {1}","middle":"{0}, {1}","end":"{0}, and {1}","pair":"{0} and {1}"},"short":{"start":"{0}, {1}","middle":"{0}, {1}","end":"{0}, & {1}","pair":"{0} & {1}"},"narrow":{"start":"{0}, {1}","middle":"{0}, {1}","end":"{0}, {1}","pair":"{0}, {1}"}},"disjunction":{"long":{"start":"{0}, {1}","middle":"{0}, {1}","end":"{0}, or {1}","pair":"{0} or {1}"},"short":{"start":"{0}, {1}","middle":"{0}, {1}","end":"{0}, or {1}","pair":"{0} or {1}"},"narrow":{"start":"{0}, {1}","middle":"{0}, {1}","end":"{0}, or {1}","pair":"{0} or {1}"}},"unit":{"long":{"start":"{0}, {1}","middle":"{0}, {1}","end":"{0}, {1}","pair":"{0}, {1}"},"short":{"start":"{0}, {1}","middle":"{0}, {1}","end":"{0}, {1}","pair":"{0}, {1}"},"narrow":{"start":"{0} {1}","middle":"{0} {1}","end":"{0} {1}","pair":"{0} {1}"}}},"locale":"en"}
)
}
}

if (!("Intl"in self&&"PluralRules"in self.Intl
)) {

// Intl.PluralRules
(function() {
  // node_modules/tslib/tslib.es6.js
  var extendStatics = function(d, b) {
    extendStatics = Object.setPrototypeOf || {__proto__: []} instanceof Array && function(d2, b2) {
      d2.__proto__ = b2;
    } || function(d2, b2) {
      for (var p in b2)
        if (Object.prototype.hasOwnProperty.call(b2, p))
          d2[p] = b2[p];
    };
    return extendStatics(d, b);
  };
  function __extends(d, b) {
    if (typeof b !== "function" && b !== null)
      throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
    extendStatics(d, b);
    function __() {
      this.constructor = d;
    }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  }
  function __spreadArray(to, from) {
    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
      to[j] = from[i];
    return to;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/utils.js
  function getMagnitude(x) {
    return Math.floor(Math.log(x) * Math.LOG10E);
  }
  function repeat(s, times) {
    if (typeof s.repeat === "function") {
      return s.repeat(times);
    }
    var arr = new Array(times);
    for (var i = 0; i < arr.length; i++) {
      arr[i] = s;
    }
    return arr.join("");
  }
  var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;
  function invariant(condition, message, Err) {
    if (Err === void 0) {
      Err = Error;
    }
    if (!condition) {
      throw new Err(message);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/types/date-time.js
  var RangePatternType;
  (function(RangePatternType2) {
    RangePatternType2["startRange"] = "startRange";
    RangePatternType2["shared"] = "shared";
    RangePatternType2["endRange"] = "endRange";
  })(RangePatternType || (RangePatternType = {}));

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/CanonicalizeLocaleList.js
  function CanonicalizeLocaleList(locales) {
    return Intl.getCanonicalLocales(locales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/262.js
  function ToString(o) {
    if (typeof o === "symbol") {
      throw TypeError("Cannot convert a Symbol value to a string");
    }
    return String(o);
  }
  function ToNumber(val) {
    if (val === void 0) {
      return NaN;
    }
    if (val === null) {
      return 0;
    }
    if (typeof val === "boolean") {
      return val ? 1 : 0;
    }
    if (typeof val === "number") {
      return val;
    }
    if (typeof val === "symbol" || typeof val === "bigint") {
      throw new TypeError("Cannot convert symbol/bigint to number");
    }
    return Number(val);
  }
  function ToObject(arg) {
    if (arg == null) {
      throw new TypeError("undefined/null cannot be converted to object");
    }
    return Object(arg);
  }
  function SameValue(x, y) {
    if (Object.is) {
      return Object.is(x, y);
    }
    if (x === y) {
      return x !== 0 || 1 / x === 1 / y;
    }
    return x !== x && y !== y;
  }
  function Type(x) {
    if (x === null) {
      return "Null";
    }
    if (typeof x === "undefined") {
      return "Undefined";
    }
    if (typeof x === "function" || typeof x === "object") {
      return "Object";
    }
    if (typeof x === "number") {
      return "Number";
    }
    if (typeof x === "boolean") {
      return "Boolean";
    }
    if (typeof x === "string") {
      return "String";
    }
    if (typeof x === "symbol") {
      return "Symbol";
    }
    if (typeof x === "bigint") {
      return "BigInt";
    }
  }
  var MINUTES_PER_HOUR = 60;
  var SECONDS_PER_MINUTE = 60;
  var MS_PER_SECOND = 1e3;
  var MS_PER_MINUTE = MS_PER_SECOND * SECONDS_PER_MINUTE;
  var MS_PER_HOUR = MS_PER_MINUTE * MINUTES_PER_HOUR;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/CoerceOptionsToObject.js
  function CoerceOptionsToObject(options) {
    if (typeof options === "undefined") {
      return Object.create(null);
    }
    return ToObject(options);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetOption.js
  function GetOption(opts, prop, type, values, fallback) {
    if (typeof opts !== "object") {
      throw new TypeError("Options must be an object");
    }
    var value = opts[prop];
    if (value !== void 0) {
      if (type !== "boolean" && type !== "string") {
        throw new TypeError("invalid type");
      }
      if (type === "boolean") {
        value = Boolean(value);
      }
      if (type === "string") {
        value = ToString(value);
      }
      if (values !== void 0 && !values.filter(function(val) {
        return val == value;
      }).length) {
        throw new RangeError(value + " is not within " + values.join(", "));
      }
      return value;
    }
    return fallback;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestAvailableLocale.js
  function BestAvailableLocale(availableLocales, locale) {
    var candidate = locale;
    while (true) {
      if (availableLocales.has(candidate)) {
        return candidate;
      }
      var pos = candidate.lastIndexOf("-");
      if (!~pos) {
        return void 0;
      }
      if (pos >= 2 && candidate[pos - 2] === "-") {
        pos -= 2;
      }
      candidate = candidate.slice(0, pos);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupMatcher.js
  function LookupMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var result = {locale: ""};
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        result.locale = availableLocale;
        if (locale !== noExtensionLocale) {
          result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);
        }
        return result;
      }
    }
    result.locale = getDefaultLocale();
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestFitMatcher.js
  function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var minimizedAvailableLocaleMap = {};
    var minimizedAvailableLocales = new Set();
    availableLocales.forEach(function(locale2) {
      var minimizedLocale = new Intl.Locale(locale2).minimize().toString();
      minimizedAvailableLocaleMap[minimizedLocale] = locale2;
      minimizedAvailableLocales.add(minimizedLocale);
    });
    var foundLocale;
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var l = requestedLocales_1[_i];
      if (foundLocale) {
        break;
      }
      var noExtensionLocale = l.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      if (availableLocales.has(noExtensionLocale)) {
        foundLocale = noExtensionLocale;
        break;
      }
      if (minimizedAvailableLocales.has(noExtensionLocale)) {
        foundLocale = minimizedAvailableLocaleMap[noExtensionLocale];
        break;
      }
      var locale = new Intl.Locale(noExtensionLocale);
      var maximizedRequestedLocale = locale.maximize().toString();
      var minimizedRequestedLocale = locale.minimize().toString();
      if (minimizedAvailableLocales.has(minimizedRequestedLocale)) {
        foundLocale = minimizedAvailableLocaleMap[minimizedRequestedLocale];
        break;
      }
      foundLocale = BestAvailableLocale(minimizedAvailableLocales, maximizedRequestedLocale);
    }
    return {
      locale: foundLocale || getDefaultLocale()
    };
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/UnicodeExtensionValue.js
  function UnicodeExtensionValue(extension, key) {
    invariant(key.length === 2, "key must have 2 elements");
    var size = extension.length;
    var searchValue = "-" + key + "-";
    var pos = extension.indexOf(searchValue);
    if (pos !== -1) {
      var start = pos + 4;
      var end = start;
      var k = start;
      var done = false;
      while (!done) {
        var e = extension.indexOf("-", k);
        var len = void 0;
        if (e === -1) {
          len = size - k;
        } else {
          len = e - k;
        }
        if (len === 2) {
          done = true;
        } else if (e === -1) {
          end = size;
          done = true;
        } else {
          end = e;
          k = e + 1;
        }
      }
      return extension.slice(start, end);
    }
    searchValue = "-" + key;
    pos = extension.indexOf(searchValue);
    if (pos !== -1 && pos + 3 === size) {
      return "";
    }
    return void 0;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/ResolveLocale.js
  function ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData, getDefaultLocale) {
    var matcher = options.localeMatcher;
    var r;
    if (matcher === "lookup") {
      r = LookupMatcher(availableLocales, requestedLocales, getDefaultLocale);
    } else {
      r = BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale);
    }
    var foundLocale = r.locale;
    var result = {locale: "", dataLocale: foundLocale};
    var supportedExtension = "-u";
    for (var _i = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _i < relevantExtensionKeys_1.length; _i++) {
      var key = relevantExtensionKeys_1[_i];
      invariant(foundLocale in localeData, "Missing locale data for " + foundLocale);
      var foundLocaleData = localeData[foundLocale];
      invariant(typeof foundLocaleData === "object" && foundLocaleData !== null, "locale data " + key + " must be an object");
      var keyLocaleData = foundLocaleData[key];
      invariant(Array.isArray(keyLocaleData), "keyLocaleData for " + key + " must be an array");
      var value = keyLocaleData[0];
      invariant(typeof value === "string" || value === null, "value must be string or null but got " + typeof value + " in key " + key);
      var supportedExtensionAddition = "";
      if (r.extension) {
        var requestedValue = UnicodeExtensionValue(r.extension, key);
        if (requestedValue !== void 0) {
          if (requestedValue !== "") {
            if (~keyLocaleData.indexOf(requestedValue)) {
              value = requestedValue;
              supportedExtensionAddition = "-" + key + "-" + value;
            }
          } else if (~requestedValue.indexOf("true")) {
            value = "true";
            supportedExtensionAddition = "-" + key;
          }
        }
      }
      if (key in options) {
        var optionsValue = options[key];
        invariant(typeof optionsValue === "string" || typeof optionsValue === "undefined" || optionsValue === null, "optionsValue must be String, Undefined or Null");
        if (~keyLocaleData.indexOf(optionsValue)) {
          if (optionsValue !== value) {
            value = optionsValue;
            supportedExtensionAddition = "";
          }
        }
      }
      result[key] = value;
      supportedExtension += supportedExtensionAddition;
    }
    if (supportedExtension.length > 2) {
      var privateIndex = foundLocale.indexOf("-x-");
      if (privateIndex === -1) {
        foundLocale = foundLocale + supportedExtension;
      } else {
        var preExtension = foundLocale.slice(0, privateIndex);
        var postExtension = foundLocale.slice(privateIndex, foundLocale.length);
        foundLocale = preExtension + supportedExtension + postExtension;
      }
      foundLocale = Intl.getCanonicalLocales(foundLocale)[0];
    }
    result.locale = foundLocale;
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DefaultNumberOption.js
  function DefaultNumberOption(val, min, max, fallback) {
    if (val !== void 0) {
      val = Number(val);
      if (isNaN(val) || val < min || val > max) {
        throw new RangeError(val + " is outside of range [" + min + ", " + max + "]");
      }
      return Math.floor(val);
    }
    return fallback;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetNumberOption.js
  function GetNumberOption(options, property, minimum, maximum, fallback) {
    var val = options[property];
    return DefaultNumberOption(val, minimum, maximum, fallback);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/IsSanctionedSimpleUnitIdentifier.js
  var SANCTIONED_UNITS = [
    "angle-degree",
    "area-acre",
    "area-hectare",
    "concentr-percent",
    "digital-bit",
    "digital-byte",
    "digital-gigabit",
    "digital-gigabyte",
    "digital-kilobit",
    "digital-kilobyte",
    "digital-megabit",
    "digital-megabyte",
    "digital-petabyte",
    "digital-terabit",
    "digital-terabyte",
    "duration-day",
    "duration-hour",
    "duration-millisecond",
    "duration-minute",
    "duration-month",
    "duration-second",
    "duration-week",
    "duration-year",
    "length-centimeter",
    "length-foot",
    "length-inch",
    "length-kilometer",
    "length-meter",
    "length-mile-scandinavian",
    "length-mile",
    "length-millimeter",
    "length-yard",
    "mass-gram",
    "mass-kilogram",
    "mass-ounce",
    "mass-pound",
    "mass-stone",
    "temperature-celsius",
    "temperature-fahrenheit",
    "volume-fluid-ounce",
    "volume-gallon",
    "volume-liter",
    "volume-milliliter"
  ];
  function removeUnitNamespace(unit) {
    return unit.slice(unit.indexOf("-") + 1);
  }
  var SIMPLE_UNITS = SANCTIONED_UNITS.map(removeUnitNamespace);

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/ToRawPrecision.js
  function ToRawPrecision(x, minPrecision, maxPrecision) {
    var p = maxPrecision;
    var m;
    var e;
    var xFinal;
    if (x === 0) {
      m = repeat("0", p);
      e = 0;
      xFinal = 0;
    } else {
      var xToString = x.toString();
      var xToStringExponentIndex = xToString.indexOf("e");
      var _a = xToString.split("e"), xToStringMantissa = _a[0], xToStringExponent = _a[1];
      var xToStringMantissaWithoutDecimalPoint = xToStringMantissa.replace(".", "");
      if (xToStringExponentIndex >= 0 && xToStringMantissaWithoutDecimalPoint.length <= p) {
        e = +xToStringExponent;
        m = xToStringMantissaWithoutDecimalPoint + repeat("0", p - xToStringMantissaWithoutDecimalPoint.length);
        xFinal = x;
      } else {
        e = getMagnitude(x);
        var decimalPlaceOffset = e - p + 1;
        var n = Math.round(adjustDecimalPlace(x, decimalPlaceOffset));
        if (adjustDecimalPlace(n, p - 1) >= 10) {
          e = e + 1;
          n = Math.floor(n / 10);
        }
        m = n.toString();
        xFinal = adjustDecimalPlace(n, p - 1 - e);
      }
    }
    var int;
    if (e >= p - 1) {
      m = m + repeat("0", e - p + 1);
      int = e + 1;
    } else if (e >= 0) {
      m = m.slice(0, e + 1) + "." + m.slice(e + 1);
      int = e + 1;
    } else {
      m = "0." + repeat("0", -e - 1) + m;
      int = 1;
    }
    if (m.indexOf(".") >= 0 && maxPrecision > minPrecision) {
      var cut = maxPrecision - minPrecision;
      while (cut > 0 && m[m.length - 1] === "0") {
        m = m.slice(0, -1);
        cut--;
      }
      if (m[m.length - 1] === ".") {
        m = m.slice(0, -1);
      }
    }
    return {formattedString: m, roundedNumber: xFinal, integerDigitsCount: int};
    function adjustDecimalPlace(x2, magnitude) {
      return magnitude < 0 ? x2 * Math.pow(10, -magnitude) : x2 / Math.pow(10, magnitude);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/ToRawFixed.js
  function ToRawFixed(x, minFraction, maxFraction) {
    var f = maxFraction;
    var n = Math.round(x * Math.pow(10, f));
    var xFinal = n / Math.pow(10, f);
    var m;
    if (n < 1e21) {
      m = n.toString();
    } else {
      m = n.toString();
      var _a = m.split("e"), mantissa = _a[0], exponent = _a[1];
      m = mantissa.replace(".", "");
      m = m + repeat("0", Math.max(+exponent - m.length + 1, 0));
    }
    var int;
    if (f !== 0) {
      var k = m.length;
      if (k <= f) {
        var z = repeat("0", f + 1 - k);
        m = z + m;
        k = f + 1;
      }
      var a = m.slice(0, k - f);
      var b = m.slice(k - f);
      m = a + "." + b;
      int = a.length;
    } else {
      int = m.length;
    }
    var cut = maxFraction - minFraction;
    while (cut > 0 && m[m.length - 1] === "0") {
      m = m.slice(0, -1);
      cut--;
    }
    if (m[m.length - 1] === ".") {
      m = m.slice(0, -1);
    }
    return {formattedString: m, roundedNumber: xFinal, integerDigitsCount: int};
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/FormatNumericToString.js
  function FormatNumericToString(intlObject, x) {
    var isNegative = x < 0 || SameValue(x, -0);
    if (isNegative) {
      x = -x;
    }
    var result;
    var rourndingType = intlObject.roundingType;
    switch (rourndingType) {
      case "significantDigits":
        result = ToRawPrecision(x, intlObject.minimumSignificantDigits, intlObject.maximumSignificantDigits);
        break;
      case "fractionDigits":
        result = ToRawFixed(x, intlObject.minimumFractionDigits, intlObject.maximumFractionDigits);
        break;
      default:
        result = ToRawPrecision(x, 1, 2);
        if (result.integerDigitsCount > 1) {
          result = ToRawFixed(x, 0, 0);
        }
        break;
    }
    x = result.roundedNumber;
    var string = result.formattedString;
    var int = result.integerDigitsCount;
    var minInteger = intlObject.minimumIntegerDigits;
    if (int < minInteger) {
      var forwardZeros = repeat("0", minInteger - int);
      string = forwardZeros + string;
    }
    if (isNegative) {
      x = -x;
    }
    return {roundedNumber: x, formattedString: string};
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/regex.generated.js
  var S_UNICODE_REGEX = /[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]/;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/format_to_parts.js
  var CARET_S_UNICODE_REGEX = new RegExp("^" + S_UNICODE_REGEX.source);
  var S_DOLLAR_UNICODE_REGEX = new RegExp(S_UNICODE_REGEX.source + "$");

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/SetNumberFormatDigitOptions.js
  function SetNumberFormatDigitOptions(internalSlots, opts, mnfdDefault, mxfdDefault, notation) {
    var mnid = GetNumberOption(opts, "minimumIntegerDigits", 1, 21, 1);
    var mnfd = opts.minimumFractionDigits;
    var mxfd = opts.maximumFractionDigits;
    var mnsd = opts.minimumSignificantDigits;
    var mxsd = opts.maximumSignificantDigits;
    internalSlots.minimumIntegerDigits = mnid;
    if (mnsd !== void 0 || mxsd !== void 0) {
      internalSlots.roundingType = "significantDigits";
      mnsd = DefaultNumberOption(mnsd, 1, 21, 1);
      mxsd = DefaultNumberOption(mxsd, mnsd, 21, 21);
      internalSlots.minimumSignificantDigits = mnsd;
      internalSlots.maximumSignificantDigits = mxsd;
    } else if (mnfd !== void 0 || mxfd !== void 0) {
      internalSlots.roundingType = "fractionDigits";
      mnfd = DefaultNumberOption(mnfd, 0, 20, mnfdDefault);
      var mxfdActualDefault = Math.max(mnfd, mxfdDefault);
      mxfd = DefaultNumberOption(mxfd, mnfd, 20, mxfdActualDefault);
      internalSlots.minimumFractionDigits = mnfd;
      internalSlots.maximumFractionDigits = mxfd;
    } else if (notation === "compact") {
      internalSlots.roundingType = "compactRounding";
    } else {
      internalSlots.roundingType = "fractionDigits";
      internalSlots.minimumFractionDigits = mnfdDefault;
      internalSlots.maximumFractionDigits = mxfdDefault;
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/PluralRules/GetOperands.js
  function GetOperands(s) {
    invariant(typeof s === "string", "GetOperands should have been called with a string");
    var n = ToNumber(s);
    invariant(isFinite(n), "n should be finite");
    var dp = s.indexOf(".");
    var iv;
    var f;
    var v;
    var fv = "";
    if (dp === -1) {
      iv = n;
      f = 0;
      v = 0;
    } else {
      iv = s.slice(0, dp);
      fv = s.slice(dp, s.length);
      f = ToNumber(fv);
      v = fv.length;
    }
    var i = Math.abs(ToNumber(iv));
    var w;
    var t;
    if (f !== 0) {
      var ft = fv.replace(/0+$/, "");
      w = ft.length;
      t = ToNumber(ft);
    } else {
      w = 0;
      t = 0;
    }
    return {
      Number: n,
      IntegerDigits: i,
      NumberOfFractionDigits: v,
      NumberOfFractionDigitsWithoutTrailing: w,
      FractionDigits: f,
      FractionDigitsWithoutTrailing: t
    };
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/PluralRules/InitializePluralRules.js
  function InitializePluralRules(pl, locales, options, _a) {
    var availableLocales = _a.availableLocales, relevantExtensionKeys = _a.relevantExtensionKeys, localeData = _a.localeData, getDefaultLocale = _a.getDefaultLocale, getInternalSlots2 = _a.getInternalSlots;
    var requestedLocales = CanonicalizeLocaleList(locales);
    var opt = Object.create(null);
    var opts = CoerceOptionsToObject(options);
    var internalSlots = getInternalSlots2(pl);
    internalSlots.initializedPluralRules = true;
    var matcher = GetOption(opts, "localeMatcher", "string", ["best fit", "lookup"], "best fit");
    opt.localeMatcher = matcher;
    internalSlots.type = GetOption(opts, "type", "string", ["cardinal", "ordinal"], "cardinal");
    SetNumberFormatDigitOptions(internalSlots, opts, 0, 3, "standard");
    var r = ResolveLocale(availableLocales, requestedLocales, opt, relevantExtensionKeys, localeData, getDefaultLocale);
    internalSlots.locale = r.locale;
    return pl;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/PluralRules/ResolvePlural.js
  function ResolvePlural(pl, n, _a) {
    var getInternalSlots2 = _a.getInternalSlots, PluralRuleSelect2 = _a.PluralRuleSelect;
    var internalSlots = getInternalSlots2(pl);
    invariant(Type(internalSlots) === "Object", "pl has to be an object");
    invariant("initializedPluralRules" in internalSlots, "pluralrules must be initialized");
    invariant(Type(n) === "Number", "n must be a number");
    if (!isFinite(n)) {
      return "other";
    }
    var locale = internalSlots.locale, type = internalSlots.type;
    var res = FormatNumericToString(internalSlots, n);
    var s = res.formattedString;
    var operands = GetOperands(s);
    return PluralRuleSelect2(locale, type, n, operands);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupSupportedLocales.js
  function LookupSupportedLocales(availableLocales, requestedLocales) {
    var subset = [];
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        subset.push(availableLocale);
      }
    }
    return subset;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/SupportedLocales.js
  function SupportedLocales(availableLocales, requestedLocales, options) {
    var matcher = "best fit";
    if (options !== void 0) {
      options = ToObject(options);
      matcher = GetOption(options, "localeMatcher", "string", ["lookup", "best fit"], "best fit");
    }
    if (matcher === "best fit") {
      return LookupSupportedLocales(availableLocales, requestedLocales);
    }
    return LookupSupportedLocales(availableLocales, requestedLocales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/data.js
  var MissingLocaleDataError = function(_super) {
    __extends(MissingLocaleDataError2, _super);
    function MissingLocaleDataError2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.type = "MISSING_LOCALE_DATA";
      return _this;
    }
    return MissingLocaleDataError2;
  }(Error);

  // bazel-out/darwin-fastbuild/bin/packages/intl-pluralrules/lib/get_internal_slots.js
  var internalSlotMap = new WeakMap();
  function getInternalSlots(x) {
    var internalSlots = internalSlotMap.get(x);
    if (!internalSlots) {
      internalSlots = Object.create(null);
      internalSlotMap.set(x, internalSlots);
    }
    return internalSlots;
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-pluralrules/lib/index.js
  function validateInstance(instance, method) {
    if (!(instance instanceof PluralRules)) {
      throw new TypeError("Method Intl.PluralRules.prototype." + method + " called on incompatible receiver " + String(instance));
    }
  }
  function PluralRuleSelect(locale, type, _n, _a) {
    var IntegerDigits = _a.IntegerDigits, NumberOfFractionDigits = _a.NumberOfFractionDigits, FractionDigits = _a.FractionDigits;
    return PluralRules.localeData[locale].fn(NumberOfFractionDigits ? IntegerDigits + "." + FractionDigits : IntegerDigits, type === "ordinal");
  }
  var PluralRules = function() {
    function PluralRules2(locales, options) {
      var newTarget = this && this instanceof PluralRules2 ? this.constructor : void 0;
      if (!newTarget) {
        throw new TypeError("Intl.PluralRules must be called with 'new'");
      }
      return InitializePluralRules(this, locales, options, {
        availableLocales: PluralRules2.availableLocales,
        relevantExtensionKeys: PluralRules2.relevantExtensionKeys,
        localeData: PluralRules2.localeData,
        getDefaultLocale: PluralRules2.getDefaultLocale,
        getInternalSlots: getInternalSlots
      });
    }
    PluralRules2.prototype.resolvedOptions = function() {
      validateInstance(this, "resolvedOptions");
      var opts = Object.create(null);
      var internalSlots = getInternalSlots(this);
      opts.locale = internalSlots.locale;
      opts.type = internalSlots.type;
      [
        "minimumIntegerDigits",
        "minimumFractionDigits",
        "maximumFractionDigits",
        "minimumSignificantDigits",
        "maximumSignificantDigits"
      ].forEach(function(field) {
        var val = internalSlots[field];
        if (val !== void 0) {
          opts[field] = val;
        }
      });
      opts.pluralCategories = __spreadArray([], PluralRules2.localeData[opts.locale].categories[opts.type]);
      return opts;
    };
    PluralRules2.prototype.select = function(val) {
      var pr = this;
      validateInstance(pr, "select");
      var n = ToNumber(val);
      return ResolvePlural(pr, n, {getInternalSlots: getInternalSlots, PluralRuleSelect: PluralRuleSelect});
    };
    PluralRules2.prototype.toString = function() {
      return "[object Intl.PluralRules]";
    };
    PluralRules2.supportedLocalesOf = function(locales, options) {
      return SupportedLocales(PluralRules2.availableLocales, CanonicalizeLocaleList(locales), options);
    };
    PluralRules2.__addLocaleData = function() {
      var data = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        data[_i] = arguments[_i];
      }
      for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {
        var _b = data_1[_a], d = _b.data, locale = _b.locale;
        PluralRules2.localeData[locale] = d;
        PluralRules2.availableLocales.add(locale);
        if (!PluralRules2.__defaultLocale) {
          PluralRules2.__defaultLocale = locale;
        }
      }
    };
    PluralRules2.getDefaultLocale = function() {
      return PluralRules2.__defaultLocale;
    };
    PluralRules2.localeData = {};
    PluralRules2.availableLocales = new Set();
    PluralRules2.__defaultLocale = "";
    PluralRules2.relevantExtensionKeys = [];
    PluralRules2.polyfilled = true;
    return PluralRules2;
  }();
  try {
    if (typeof Symbol !== "undefined") {
      Object.defineProperty(PluralRules.prototype, Symbol.toStringTag, {
        value: "Intl.PluralRules",
        writable: false,
        enumerable: false,
        configurable: true
      });
    }
    try {
      Object.defineProperty(PluralRules, "length", {
        value: 0,
        writable: false,
        enumerable: false,
        configurable: true
      });
    } catch (error) {
    }
    Object.defineProperty(PluralRules.prototype.constructor, "length", {
      value: 0,
      writable: false,
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(PluralRules.supportedLocalesOf, "length", {
      value: 1,
      writable: false,
      enumerable: false,
      configurable: true
    });
  } catch (ex) {
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-pluralrules/lib/should-polyfill.js
  function shouldPolyfill() {
    return typeof Intl === "undefined" || !("PluralRules" in Intl) || new Intl.PluralRules("en", {minimumFractionDigits: 2}).select(1) === "one";
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-pluralrules/lib/polyfill.js
  if (shouldPolyfill()) {
    Object.defineProperty(Intl, "PluralRules", {
      value: PluralRules,
      writable: true,
      enumerable: false,
      configurable: true
    });
  }
})();
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */


}

if (!("Intl"in self&&"NumberFormat"in self.Intl&&function(){try{new Intl.NumberFormat(void 0,{style:"unit",unit:"byte"})}catch(t){return!1}return!0}()
)) {

// Intl.NumberFormat
(function() {
  var __defProp = Object.defineProperty;
  var __export = function(target, all) {
    for (var name in all)
      __defProp(target, name, {get: all[name], enumerable: true});
  };

  // node_modules/tslib/tslib.es6.js
  var extendStatics = function(d, b) {
    extendStatics = Object.setPrototypeOf || {__proto__: []} instanceof Array && function(d2, b2) {
      d2.__proto__ = b2;
    } || function(d2, b2) {
      for (var p in b2)
        if (Object.prototype.hasOwnProperty.call(b2, p))
          d2[p] = b2[p];
    };
    return extendStatics(d, b);
  };
  function __extends(d, b) {
    if (typeof b !== "function" && b !== null)
      throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
    extendStatics(d, b);
    function __() {
      this.constructor = d;
    }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/utils.js
  function getMagnitude(x) {
    return Math.floor(Math.log(x) * Math.LOG10E);
  }
  function repeat(s, times) {
    if (typeof s.repeat === "function") {
      return s.repeat(times);
    }
    var arr = new Array(times);
    for (var i = 0; i < arr.length; i++) {
      arr[i] = s;
    }
    return arr.join("");
  }
  function defineProperty(target, name, _a) {
    var value = _a.value;
    Object.defineProperty(target, name, {
      configurable: true,
      enumerable: false,
      writable: true,
      value: value
    });
  }
  var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;
  function invariant(condition, message, Err) {
    if (Err === void 0) {
      Err = Error;
    }
    if (!condition) {
      throw new Err(message);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/types/date-time.js
  var RangePatternType;
  (function(RangePatternType2) {
    RangePatternType2["startRange"] = "startRange";
    RangePatternType2["shared"] = "shared";
    RangePatternType2["endRange"] = "endRange";
  })(RangePatternType || (RangePatternType = {}));

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/CanonicalizeLocaleList.js
  function CanonicalizeLocaleList(locales) {
    return Intl.getCanonicalLocales(locales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/262.js
  function ToString(o) {
    if (typeof o === "symbol") {
      throw TypeError("Cannot convert a Symbol value to a string");
    }
    return String(o);
  }
  function ToNumber(val) {
    if (val === void 0) {
      return NaN;
    }
    if (val === null) {
      return 0;
    }
    if (typeof val === "boolean") {
      return val ? 1 : 0;
    }
    if (typeof val === "number") {
      return val;
    }
    if (typeof val === "symbol" || typeof val === "bigint") {
      throw new TypeError("Cannot convert symbol/bigint to number");
    }
    return Number(val);
  }
  function ToObject(arg) {
    if (arg == null) {
      throw new TypeError("undefined/null cannot be converted to object");
    }
    return Object(arg);
  }
  function SameValue(x, y) {
    if (Object.is) {
      return Object.is(x, y);
    }
    if (x === y) {
      return x !== 0 || 1 / x === 1 / y;
    }
    return x !== x && y !== y;
  }
  function ArrayCreate(len) {
    return new Array(len);
  }
  function HasOwnProperty(o, prop) {
    return Object.prototype.hasOwnProperty.call(o, prop);
  }
  var MINUTES_PER_HOUR = 60;
  var SECONDS_PER_MINUTE = 60;
  var MS_PER_SECOND = 1e3;
  var MS_PER_MINUTE = MS_PER_SECOND * SECONDS_PER_MINUTE;
  var MS_PER_HOUR = MS_PER_MINUTE * MINUTES_PER_HOUR;
  function IsCallable(fn) {
    return typeof fn === "function";
  }
  function OrdinaryHasInstance(C, O, internalSlots) {
    if (!IsCallable(C)) {
      return false;
    }
    if (internalSlots === null || internalSlots === void 0 ? void 0 : internalSlots.boundTargetFunction) {
      var BC = internalSlots === null || internalSlots === void 0 ? void 0 : internalSlots.boundTargetFunction;
      return O instanceof BC;
    }
    if (typeof O !== "object") {
      return false;
    }
    var P = C.prototype;
    if (typeof P !== "object") {
      throw new TypeError("OrdinaryHasInstance called on an object with an invalid prototype property.");
    }
    return Object.prototype.isPrototypeOf.call(P, O);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/CoerceOptionsToObject.js
  function CoerceOptionsToObject(options) {
    if (typeof options === "undefined") {
      return Object.create(null);
    }
    return ToObject(options);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetOption.js
  function GetOption(opts, prop, type, values, fallback) {
    if (typeof opts !== "object") {
      throw new TypeError("Options must be an object");
    }
    var value = opts[prop];
    if (value !== void 0) {
      if (type !== "boolean" && type !== "string") {
        throw new TypeError("invalid type");
      }
      if (type === "boolean") {
        value = Boolean(value);
      }
      if (type === "string") {
        value = ToString(value);
      }
      if (values !== void 0 && !values.filter(function(val) {
        return val == value;
      }).length) {
        throw new RangeError(value + " is not within " + values.join(", "));
      }
      return value;
    }
    return fallback;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestAvailableLocale.js
  function BestAvailableLocale(availableLocales, locale) {
    var candidate = locale;
    while (true) {
      if (availableLocales.has(candidate)) {
        return candidate;
      }
      var pos = candidate.lastIndexOf("-");
      if (!~pos) {
        return void 0;
      }
      if (pos >= 2 && candidate[pos - 2] === "-") {
        pos -= 2;
      }
      candidate = candidate.slice(0, pos);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupMatcher.js
  function LookupMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var result = {locale: ""};
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        result.locale = availableLocale;
        if (locale !== noExtensionLocale) {
          result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);
        }
        return result;
      }
    }
    result.locale = getDefaultLocale();
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestFitMatcher.js
  function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var minimizedAvailableLocaleMap = {};
    var minimizedAvailableLocales = new Set();
    availableLocales.forEach(function(locale2) {
      var minimizedLocale = new Intl.Locale(locale2).minimize().toString();
      minimizedAvailableLocaleMap[minimizedLocale] = locale2;
      minimizedAvailableLocales.add(minimizedLocale);
    });
    var foundLocale;
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var l = requestedLocales_1[_i];
      if (foundLocale) {
        break;
      }
      var noExtensionLocale = l.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      if (availableLocales.has(noExtensionLocale)) {
        foundLocale = noExtensionLocale;
        break;
      }
      if (minimizedAvailableLocales.has(noExtensionLocale)) {
        foundLocale = minimizedAvailableLocaleMap[noExtensionLocale];
        break;
      }
      var locale = new Intl.Locale(noExtensionLocale);
      var maximizedRequestedLocale = locale.maximize().toString();
      var minimizedRequestedLocale = locale.minimize().toString();
      if (minimizedAvailableLocales.has(minimizedRequestedLocale)) {
        foundLocale = minimizedAvailableLocaleMap[minimizedRequestedLocale];
        break;
      }
      foundLocale = BestAvailableLocale(minimizedAvailableLocales, maximizedRequestedLocale);
    }
    return {
      locale: foundLocale || getDefaultLocale()
    };
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/UnicodeExtensionValue.js
  function UnicodeExtensionValue(extension, key) {
    invariant(key.length === 2, "key must have 2 elements");
    var size = extension.length;
    var searchValue = "-" + key + "-";
    var pos = extension.indexOf(searchValue);
    if (pos !== -1) {
      var start = pos + 4;
      var end = start;
      var k = start;
      var done = false;
      while (!done) {
        var e = extension.indexOf("-", k);
        var len = void 0;
        if (e === -1) {
          len = size - k;
        } else {
          len = e - k;
        }
        if (len === 2) {
          done = true;
        } else if (e === -1) {
          end = size;
          done = true;
        } else {
          end = e;
          k = e + 1;
        }
      }
      return extension.slice(start, end);
    }
    searchValue = "-" + key;
    pos = extension.indexOf(searchValue);
    if (pos !== -1 && pos + 3 === size) {
      return "";
    }
    return void 0;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/ResolveLocale.js
  function ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData, getDefaultLocale) {
    var matcher = options.localeMatcher;
    var r;
    if (matcher === "lookup") {
      r = LookupMatcher(availableLocales, requestedLocales, getDefaultLocale);
    } else {
      r = BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale);
    }
    var foundLocale = r.locale;
    var result = {locale: "", dataLocale: foundLocale};
    var supportedExtension = "-u";
    for (var _i = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _i < relevantExtensionKeys_1.length; _i++) {
      var key = relevantExtensionKeys_1[_i];
      invariant(foundLocale in localeData, "Missing locale data for " + foundLocale);
      var foundLocaleData = localeData[foundLocale];
      invariant(typeof foundLocaleData === "object" && foundLocaleData !== null, "locale data " + key + " must be an object");
      var keyLocaleData = foundLocaleData[key];
      invariant(Array.isArray(keyLocaleData), "keyLocaleData for " + key + " must be an array");
      var value = keyLocaleData[0];
      invariant(typeof value === "string" || value === null, "value must be string or null but got " + typeof value + " in key " + key);
      var supportedExtensionAddition = "";
      if (r.extension) {
        var requestedValue = UnicodeExtensionValue(r.extension, key);
        if (requestedValue !== void 0) {
          if (requestedValue !== "") {
            if (~keyLocaleData.indexOf(requestedValue)) {
              value = requestedValue;
              supportedExtensionAddition = "-" + key + "-" + value;
            }
          } else if (~requestedValue.indexOf("true")) {
            value = "true";
            supportedExtensionAddition = "-" + key;
          }
        }
      }
      if (key in options) {
        var optionsValue = options[key];
        invariant(typeof optionsValue === "string" || typeof optionsValue === "undefined" || optionsValue === null, "optionsValue must be String, Undefined or Null");
        if (~keyLocaleData.indexOf(optionsValue)) {
          if (optionsValue !== value) {
            value = optionsValue;
            supportedExtensionAddition = "";
          }
        }
      }
      result[key] = value;
      supportedExtension += supportedExtensionAddition;
    }
    if (supportedExtension.length > 2) {
      var privateIndex = foundLocale.indexOf("-x-");
      if (privateIndex === -1) {
        foundLocale = foundLocale + supportedExtension;
      } else {
        var preExtension = foundLocale.slice(0, privateIndex);
        var postExtension = foundLocale.slice(privateIndex, foundLocale.length);
        foundLocale = preExtension + supportedExtension + postExtension;
      }
      foundLocale = Intl.getCanonicalLocales(foundLocale)[0];
    }
    result.locale = foundLocale;
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DefaultNumberOption.js
  function DefaultNumberOption(val, min, max, fallback) {
    if (val !== void 0) {
      val = Number(val);
      if (isNaN(val) || val < min || val > max) {
        throw new RangeError(val + " is outside of range [" + min + ", " + max + "]");
      }
      return Math.floor(val);
    }
    return fallback;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetNumberOption.js
  function GetNumberOption(options, property, minimum, maximum, fallback) {
    var val = options[property];
    return DefaultNumberOption(val, minimum, maximum, fallback);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/IsWellFormedCurrencyCode.js
  function toUpperCase(str) {
    return str.replace(/([a-z])/g, function(_, c) {
      return c.toUpperCase();
    });
  }
  var NOT_A_Z_REGEX = /[^A-Z]/;
  function IsWellFormedCurrencyCode(currency) {
    currency = toUpperCase(currency);
    if (currency.length !== 3) {
      return false;
    }
    if (NOT_A_Z_REGEX.test(currency)) {
      return false;
    }
    return true;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/IsSanctionedSimpleUnitIdentifier.js
  var SANCTIONED_UNITS = [
    "angle-degree",
    "area-acre",
    "area-hectare",
    "concentr-percent",
    "digital-bit",
    "digital-byte",
    "digital-gigabit",
    "digital-gigabyte",
    "digital-kilobit",
    "digital-kilobyte",
    "digital-megabit",
    "digital-megabyte",
    "digital-petabyte",
    "digital-terabit",
    "digital-terabyte",
    "duration-day",
    "duration-hour",
    "duration-millisecond",
    "duration-minute",
    "duration-month",
    "duration-second",
    "duration-week",
    "duration-year",
    "length-centimeter",
    "length-foot",
    "length-inch",
    "length-kilometer",
    "length-meter",
    "length-mile-scandinavian",
    "length-mile",
    "length-millimeter",
    "length-yard",
    "mass-gram",
    "mass-kilogram",
    "mass-ounce",
    "mass-pound",
    "mass-stone",
    "temperature-celsius",
    "temperature-fahrenheit",
    "volume-fluid-ounce",
    "volume-gallon",
    "volume-liter",
    "volume-milliliter"
  ];
  function removeUnitNamespace(unit) {
    return unit.slice(unit.indexOf("-") + 1);
  }
  var SIMPLE_UNITS = SANCTIONED_UNITS.map(removeUnitNamespace);
  function IsSanctionedSimpleUnitIdentifier(unitIdentifier) {
    return SIMPLE_UNITS.indexOf(unitIdentifier) > -1;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/IsWellFormedUnitIdentifier.js
  function toLowerCase(str) {
    return str.replace(/([A-Z])/g, function(_, c) {
      return c.toLowerCase();
    });
  }
  function IsWellFormedUnitIdentifier(unit) {
    unit = toLowerCase(unit);
    if (IsSanctionedSimpleUnitIdentifier(unit)) {
      return true;
    }
    var units = unit.split("-per-");
    if (units.length !== 2) {
      return false;
    }
    var numerator = units[0], denominator = units[1];
    if (!IsSanctionedSimpleUnitIdentifier(numerator) || !IsSanctionedSimpleUnitIdentifier(denominator)) {
      return false;
    }
    return true;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/ComputeExponentForMagnitude.js
  function ComputeExponentForMagnitude(numberFormat, magnitude, _a) {
    var getInternalSlots2 = _a.getInternalSlots;
    var internalSlots = getInternalSlots2(numberFormat);
    var notation = internalSlots.notation, dataLocaleData = internalSlots.dataLocaleData, numberingSystem = internalSlots.numberingSystem;
    switch (notation) {
      case "standard":
        return 0;
      case "scientific":
        return magnitude;
      case "engineering":
        return Math.floor(magnitude / 3) * 3;
      default: {
        var compactDisplay = internalSlots.compactDisplay, style = internalSlots.style, currencyDisplay = internalSlots.currencyDisplay;
        var thresholdMap = void 0;
        if (style === "currency" && currencyDisplay !== "name") {
          var currency = dataLocaleData.numbers.currency[numberingSystem] || dataLocaleData.numbers.currency[dataLocaleData.numbers.nu[0]];
          thresholdMap = currency.short;
        } else {
          var decimal = dataLocaleData.numbers.decimal[numberingSystem] || dataLocaleData.numbers.decimal[dataLocaleData.numbers.nu[0]];
          thresholdMap = compactDisplay === "long" ? decimal.long : decimal.short;
        }
        if (!thresholdMap) {
          return 0;
        }
        var num = String(Math.pow(10, magnitude));
        var thresholds = Object.keys(thresholdMap);
        if (num < thresholds[0]) {
          return 0;
        }
        if (num > thresholds[thresholds.length - 1]) {
          return thresholds[thresholds.length - 1].length - 1;
        }
        var i = thresholds.indexOf(num);
        if (i === -1) {
          return 0;
        }
        var magnitudeKey = thresholds[i];
        var compactPattern = thresholdMap[magnitudeKey].other;
        if (compactPattern === "0") {
          return 0;
        }
        return magnitudeKey.length - thresholdMap[magnitudeKey].other.match(/0+/)[0].length;
      }
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/ToRawPrecision.js
  function ToRawPrecision(x, minPrecision, maxPrecision) {
    var p = maxPrecision;
    var m;
    var e;
    var xFinal;
    if (x === 0) {
      m = repeat("0", p);
      e = 0;
      xFinal = 0;
    } else {
      var xToString = x.toString();
      var xToStringExponentIndex = xToString.indexOf("e");
      var _a = xToString.split("e"), xToStringMantissa = _a[0], xToStringExponent = _a[1];
      var xToStringMantissaWithoutDecimalPoint = xToStringMantissa.replace(".", "");
      if (xToStringExponentIndex >= 0 && xToStringMantissaWithoutDecimalPoint.length <= p) {
        e = +xToStringExponent;
        m = xToStringMantissaWithoutDecimalPoint + repeat("0", p - xToStringMantissaWithoutDecimalPoint.length);
        xFinal = x;
      } else {
        e = getMagnitude(x);
        var decimalPlaceOffset = e - p + 1;
        var n = Math.round(adjustDecimalPlace(x, decimalPlaceOffset));
        if (adjustDecimalPlace(n, p - 1) >= 10) {
          e = e + 1;
          n = Math.floor(n / 10);
        }
        m = n.toString();
        xFinal = adjustDecimalPlace(n, p - 1 - e);
      }
    }
    var int;
    if (e >= p - 1) {
      m = m + repeat("0", e - p + 1);
      int = e + 1;
    } else if (e >= 0) {
      m = m.slice(0, e + 1) + "." + m.slice(e + 1);
      int = e + 1;
    } else {
      m = "0." + repeat("0", -e - 1) + m;
      int = 1;
    }
    if (m.indexOf(".") >= 0 && maxPrecision > minPrecision) {
      var cut = maxPrecision - minPrecision;
      while (cut > 0 && m[m.length - 1] === "0") {
        m = m.slice(0, -1);
        cut--;
      }
      if (m[m.length - 1] === ".") {
        m = m.slice(0, -1);
      }
    }
    return {formattedString: m, roundedNumber: xFinal, integerDigitsCount: int};
    function adjustDecimalPlace(x2, magnitude) {
      return magnitude < 0 ? x2 * Math.pow(10, -magnitude) : x2 / Math.pow(10, magnitude);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/ToRawFixed.js
  function ToRawFixed(x, minFraction, maxFraction) {
    var f = maxFraction;
    var n = Math.round(x * Math.pow(10, f));
    var xFinal = n / Math.pow(10, f);
    var m;
    if (n < 1e21) {
      m = n.toString();
    } else {
      m = n.toString();
      var _a = m.split("e"), mantissa = _a[0], exponent = _a[1];
      m = mantissa.replace(".", "");
      m = m + repeat("0", Math.max(+exponent - m.length + 1, 0));
    }
    var int;
    if (f !== 0) {
      var k = m.length;
      if (k <= f) {
        var z = repeat("0", f + 1 - k);
        m = z + m;
        k = f + 1;
      }
      var a = m.slice(0, k - f);
      var b = m.slice(k - f);
      m = a + "." + b;
      int = a.length;
    } else {
      int = m.length;
    }
    var cut = maxFraction - minFraction;
    while (cut > 0 && m[m.length - 1] === "0") {
      m = m.slice(0, -1);
      cut--;
    }
    if (m[m.length - 1] === ".") {
      m = m.slice(0, -1);
    }
    return {formattedString: m, roundedNumber: xFinal, integerDigitsCount: int};
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/FormatNumericToString.js
  function FormatNumericToString(intlObject, x) {
    var isNegative = x < 0 || SameValue(x, -0);
    if (isNegative) {
      x = -x;
    }
    var result;
    var rourndingType = intlObject.roundingType;
    switch (rourndingType) {
      case "significantDigits":
        result = ToRawPrecision(x, intlObject.minimumSignificantDigits, intlObject.maximumSignificantDigits);
        break;
      case "fractionDigits":
        result = ToRawFixed(x, intlObject.minimumFractionDigits, intlObject.maximumFractionDigits);
        break;
      default:
        result = ToRawPrecision(x, 1, 2);
        if (result.integerDigitsCount > 1) {
          result = ToRawFixed(x, 0, 0);
        }
        break;
    }
    x = result.roundedNumber;
    var string = result.formattedString;
    var int = result.integerDigitsCount;
    var minInteger = intlObject.minimumIntegerDigits;
    if (int < minInteger) {
      var forwardZeros = repeat("0", minInteger - int);
      string = forwardZeros + string;
    }
    if (isNegative) {
      x = -x;
    }
    return {roundedNumber: x, formattedString: string};
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/ComputeExponent.js
  function ComputeExponent(numberFormat, x, _a) {
    var getInternalSlots2 = _a.getInternalSlots;
    if (x === 0) {
      return [0, 0];
    }
    if (x < 0) {
      x = -x;
    }
    var magnitude = getMagnitude(x);
    var exponent = ComputeExponentForMagnitude(numberFormat, magnitude, {
      getInternalSlots: getInternalSlots2
    });
    x = exponent < 0 ? x * Math.pow(10, -exponent) : x / Math.pow(10, exponent);
    var formatNumberResult = FormatNumericToString(getInternalSlots2(numberFormat), x);
    if (formatNumberResult.roundedNumber === 0) {
      return [exponent, magnitude];
    }
    var newMagnitude = getMagnitude(formatNumberResult.roundedNumber);
    if (newMagnitude === magnitude - exponent) {
      return [exponent, magnitude];
    }
    return [
      ComputeExponentForMagnitude(numberFormat, magnitude + 1, {
        getInternalSlots: getInternalSlots2
      }),
      magnitude + 1
    ];
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/CurrencyDigits.js
  function CurrencyDigits(c, _a) {
    var currencyDigitsData = _a.currencyDigitsData;
    return HasOwnProperty(currencyDigitsData, c) ? currencyDigitsData[c] : 2;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/digit-mapping.json
  var digit_mapping_exports = {};
  __export(digit_mapping_exports, {
    adlm: function() {
      return adlm;
    },
    ahom: function() {
      return ahom;
    },
    arab: function() {
      return arab;
    },
    arabext: function() {
      return arabext;
    },
    bali: function() {
      return bali;
    },
    beng: function() {
      return beng;
    },
    bhks: function() {
      return bhks;
    },
    brah: function() {
      return brah;
    },
    cakm: function() {
      return cakm;
    },
    cham: function() {
      return cham;
    },
    default: function() {
      return digit_mapping_default;
    },
    deva: function() {
      return deva;
    },
    diak: function() {
      return diak;
    },
    fullwide: function() {
      return fullwide;
    },
    gong: function() {
      return gong;
    },
    gonm: function() {
      return gonm;
    },
    gujr: function() {
      return gujr;
    },
    guru: function() {
      return guru;
    },
    hanidec: function() {
      return hanidec;
    },
    hmng: function() {
      return hmng;
    },
    hmnp: function() {
      return hmnp;
    },
    java: function() {
      return java;
    },
    kali: function() {
      return kali;
    },
    khmr: function() {
      return khmr;
    },
    knda: function() {
      return knda;
    },
    lana: function() {
      return lana;
    },
    lanatham: function() {
      return lanatham;
    },
    laoo: function() {
      return laoo;
    },
    lepc: function() {
      return lepc;
    },
    limb: function() {
      return limb;
    },
    mathbold: function() {
      return mathbold;
    },
    mathdbl: function() {
      return mathdbl;
    },
    mathmono: function() {
      return mathmono;
    },
    mathsanb: function() {
      return mathsanb;
    },
    mathsans: function() {
      return mathsans;
    },
    mlym: function() {
      return mlym;
    },
    modi: function() {
      return modi;
    },
    mong: function() {
      return mong;
    },
    mroo: function() {
      return mroo;
    },
    mtei: function() {
      return mtei;
    },
    mymr: function() {
      return mymr;
    },
    mymrshan: function() {
      return mymrshan;
    },
    mymrtlng: function() {
      return mymrtlng;
    },
    newa: function() {
      return newa;
    },
    nkoo: function() {
      return nkoo;
    },
    olck: function() {
      return olck;
    },
    orya: function() {
      return orya;
    },
    osma: function() {
      return osma;
    },
    rohg: function() {
      return rohg;
    },
    saur: function() {
      return saur;
    },
    segment: function() {
      return segment;
    },
    shrd: function() {
      return shrd;
    },
    sind: function() {
      return sind;
    },
    sinh: function() {
      return sinh;
    },
    sora: function() {
      return sora;
    },
    sund: function() {
      return sund;
    },
    takr: function() {
      return takr;
    },
    talu: function() {
      return talu;
    },
    tamldec: function() {
      return tamldec;
    },
    telu: function() {
      return telu;
    },
    thai: function() {
      return thai;
    },
    tibt: function() {
      return tibt;
    },
    tirh: function() {
      return tirh;
    },
    vaii: function() {
      return vaii;
    },
    wara: function() {
      return wara;
    },
    wcho: function() {
      return wcho;
    }
  });
  var adlm = ["\uD83A\uDD50", "\uD83A\uDD51", "\uD83A\uDD52", "\uD83A\uDD53", "\uD83A\uDD54", "\uD83A\uDD55", "\uD83A\uDD56", "\uD83A\uDD57", "\uD83A\uDD58", "\uD83A\uDD59"];
  var ahom = ["\uD805\uDF30", "\uD805\uDF31", "\uD805\uDF32", "\uD805\uDF33", "\uD805\uDF34", "\uD805\uDF35", "\uD805\uDF36", "\uD805\uDF37", "\uD805\uDF38", "\uD805\uDF39"];
  var arab = ["\u0660", "\u0661", "\u0662", "\u0663", "\u0664", "\u0665", "\u0666", "\u0667", "\u0668", "\u0669"];
  var arabext = ["\u06F0", "\u06F1", "\u06F2", "\u06F3", "\u06F4", "\u06F5", "\u06F6", "\u06F7", "\u06F8", "\u06F9"];
  var bali = ["\u1B50", "\u1B51", "\u1B52", "\u1B53", "\u1B54", "\u1B55", "\u1B56", "\u1B57", "\u1B58", "\u1B59"];
  var beng = ["\u09E6", "\u09E7", "\u09E8", "\u09E9", "\u09EA", "\u09EB", "\u09EC", "\u09ED", "\u09EE", "\u09EF"];
  var bhks = ["\uD807\uDC50", "\uD807\uDC51", "\uD807\uDC52", "\uD807\uDC53", "\uD807\uDC54", "\uD807\uDC55", "\uD807\uDC56", "\uD807\uDC57", "\uD807\uDC58", "\uD807\uDC59"];
  var brah = ["\uD804\uDC66", "\uD804\uDC67", "\uD804\uDC68", "\uD804\uDC69", "\uD804\uDC6A", "\uD804\uDC6B", "\uD804\uDC6C", "\uD804\uDC6D", "\uD804\uDC6E", "\uD804\uDC6F"];
  var cakm = ["\uD804\uDD36", "\uD804\uDD37", "\uD804\uDD38", "\uD804\uDD39", "\uD804\uDD3A", "\uD804\uDD3B", "\uD804\uDD3C", "\uD804\uDD3D", "\uD804\uDD3E", "\uD804\uDD3F"];
  var cham = ["\uAA50", "\uAA51", "\uAA52", "\uAA53", "\uAA54", "\uAA55", "\uAA56", "\uAA57", "\uAA58", "\uAA59"];
  var deva = ["\u0966", "\u0967", "\u0968", "\u0969", "\u096A", "\u096B", "\u096C", "\u096D", "\u096E", "\u096F"];
  var diak = ["\uD806\uDD50", "\uD806\uDD51", "\uD806\uDD52", "\uD806\uDD53", "\uD806\uDD54", "\uD806\uDD55", "\uD806\uDD56", "\uD806\uDD57", "\uD806\uDD58", "\uD806\uDD59"];
  var fullwide = ["\uFF10", "\uFF11", "\uFF12", "\uFF13", "\uFF14", "\uFF15", "\uFF16", "\uFF17", "\uFF18", "\uFF19"];
  var gong = ["\uD807\uDDA0", "\uD807\uDDA1", "\uD807\uDDA2", "\uD807\uDDA3", "\uD807\uDDA4", "\uD807\uDDA5", "\uD807\uDDA6", "\uD807\uDDA7", "\uD807\uDDA8", "\uD807\uDDA9"];
  var gonm = ["\uD807\uDD50", "\uD807\uDD51", "\uD807\uDD52", "\uD807\uDD53", "\uD807\uDD54", "\uD807\uDD55", "\uD807\uDD56", "\uD807\uDD57", "\uD807\uDD58", "\uD807\uDD59"];
  var gujr = ["\u0AE6", "\u0AE7", "\u0AE8", "\u0AE9", "\u0AEA", "\u0AEB", "\u0AEC", "\u0AED", "\u0AEE", "\u0AEF"];
  var guru = ["\u0A66", "\u0A67", "\u0A68", "\u0A69", "\u0A6A", "\u0A6B", "\u0A6C", "\u0A6D", "\u0A6E", "\u0A6F"];
  var hanidec = ["\u3007", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D", "\u4E03", "\u516B", "\u4E5D"];
  var hmng = ["\uD81A\uDF50", "\uD81A\uDF51", "\uD81A\uDF52", "\uD81A\uDF53", "\uD81A\uDF54", "\uD81A\uDF55", "\uD81A\uDF56", "\uD81A\uDF57", "\uD81A\uDF58", "\uD81A\uDF59"];
  var hmnp = ["\uD838\uDD40", "\uD838\uDD41", "\uD838\uDD42", "\uD838\uDD43", "\uD838\uDD44", "\uD838\uDD45", "\uD838\uDD46", "\uD838\uDD47", "\uD838\uDD48", "\uD838\uDD49"];
  var java = ["\uA9D0", "\uA9D1", "\uA9D2", "\uA9D3", "\uA9D4", "\uA9D5", "\uA9D6", "\uA9D7", "\uA9D8", "\uA9D9"];
  var kali = ["\uA900", "\uA901", "\uA902", "\uA903", "\uA904", "\uA905", "\uA906", "\uA907", "\uA908", "\uA909"];
  var khmr = ["\u17E0", "\u17E1", "\u17E2", "\u17E3", "\u17E4", "\u17E5", "\u17E6", "\u17E7", "\u17E8", "\u17E9"];
  var knda = ["\u0CE6", "\u0CE7", "\u0CE8", "\u0CE9", "\u0CEA", "\u0CEB", "\u0CEC", "\u0CED", "\u0CEE", "\u0CEF"];
  var lana = ["\u1A80", "\u1A81", "\u1A82", "\u1A83", "\u1A84", "\u1A85", "\u1A86", "\u1A87", "\u1A88", "\u1A89"];
  var lanatham = ["\u1A90", "\u1A91", "\u1A92", "\u1A93", "\u1A94", "\u1A95", "\u1A96", "\u1A97", "\u1A98", "\u1A99"];
  var laoo = ["\u0ED0", "\u0ED1", "\u0ED2", "\u0ED3", "\u0ED4", "\u0ED5", "\u0ED6", "\u0ED7", "\u0ED8", "\u0ED9"];
  var lepc = ["\u1A90", "\u1A91", "\u1A92", "\u1A93", "\u1A94", "\u1A95", "\u1A96", "\u1A97", "\u1A98", "\u1A99"];
  var limb = ["\u1946", "\u1947", "\u1948", "\u1949", "\u194A", "\u194B", "\u194C", "\u194D", "\u194E", "\u194F"];
  var mathbold = ["\uD835\uDFCE", "\uD835\uDFCF", "\uD835\uDFD0", "\uD835\uDFD1", "\uD835\uDFD2", "\uD835\uDFD3", "\uD835\uDFD4", "\uD835\uDFD5", "\uD835\uDFD6", "\uD835\uDFD7"];
  var mathdbl = ["\uD835\uDFD8", "\uD835\uDFD9", "\uD835\uDFDA", "\uD835\uDFDB", "\uD835\uDFDC", "\uD835\uDFDD", "\uD835\uDFDE", "\uD835\uDFDF", "\uD835\uDFE0", "\uD835\uDFE1"];
  var mathmono = ["\uD835\uDFF6", "\uD835\uDFF7", "\uD835\uDFF8", "\uD835\uDFF9", "\uD835\uDFFA", "\uD835\uDFFB", "\uD835\uDFFC", "\uD835\uDFFD", "\uD835\uDFFE", "\uD835\uDFFF"];
  var mathsanb = ["\uD835\uDFEC", "\uD835\uDFED", "\uD835\uDFEE", "\uD835\uDFEF", "\uD835\uDFF0", "\uD835\uDFF1", "\uD835\uDFF2", "\uD835\uDFF3", "\uD835\uDFF4", "\uD835\uDFF5"];
  var mathsans = ["\uD835\uDFE2", "\uD835\uDFE3", "\uD835\uDFE4", "\uD835\uDFE5", "\uD835\uDFE6", "\uD835\uDFE7", "\uD835\uDFE8", "\uD835\uDFE9", "\uD835\uDFEA", "\uD835\uDFEB"];
  var mlym = ["\u0D66", "\u0D67", "\u0D68", "\u0D69", "\u0D6A", "\u0D6B", "\u0D6C", "\u0D6D", "\u0D6E", "\u0D6F"];
  var modi = ["\uD805\uDE50", "\uD805\uDE51", "\uD805\uDE52", "\uD805\uDE53", "\uD805\uDE54", "\uD805\uDE55", "\uD805\uDE56", "\uD805\uDE57", "\uD805\uDE58", "\uD805\uDE59"];
  var mong = ["\u1810", "\u1811", "\u1812", "\u1813", "\u1814", "\u1815", "\u1816", "\u1817", "\u1818", "\u1819"];
  var mroo = ["\uD81A\uDE60", "\uD81A\uDE61", "\uD81A\uDE62", "\uD81A\uDE63", "\uD81A\uDE64", "\uD81A\uDE65", "\uD81A\uDE66", "\uD81A\uDE67", "\uD81A\uDE68", "\uD81A\uDE69"];
  var mtei = ["\uABF0", "\uABF1", "\uABF2", "\uABF3", "\uABF4", "\uABF5", "\uABF6", "\uABF7", "\uABF8", "\uABF9"];
  var mymr = ["\u1040", "\u1041", "\u1042", "\u1043", "\u1044", "\u1045", "\u1046", "\u1047", "\u1048", "\u1049"];
  var mymrshan = ["\u1090", "\u1091", "\u1092", "\u1093", "\u1094", "\u1095", "\u1096", "\u1097", "\u1098", "\u1099"];
  var mymrtlng = ["\uA9F0", "\uA9F1", "\uA9F2", "\uA9F3", "\uA9F4", "\uA9F5", "\uA9F6", "\uA9F7", "\uA9F8", "\uA9F9"];
  var newa = ["\uD805\uDC50", "\uD805\uDC51", "\uD805\uDC52", "\uD805\uDC53", "\uD805\uDC54", "\uD805\uDC55", "\uD805\uDC56", "\uD805\uDC57", "\uD805\uDC58", "\uD805\uDC59"];
  var nkoo = ["\u07C0", "\u07C1", "\u07C2", "\u07C3", "\u07C4", "\u07C5", "\u07C6", "\u07C7", "\u07C8", "\u07C9"];
  var olck = ["\u1C50", "\u1C51", "\u1C52", "\u1C53", "\u1C54", "\u1C55", "\u1C56", "\u1C57", "\u1C58", "\u1C59"];
  var orya = ["\u0B66", "\u0B67", "\u0B68", "\u0B69", "\u0B6A", "\u0B6B", "\u0B6C", "\u0B6D", "\u0B6E", "\u0B6F"];
  var osma = ["\uD801\uDCA0", "\uD801\uDCA1", "\uD801\uDCA2", "\uD801\uDCA3", "\uD801\uDCA4", "\uD801\uDCA5", "\uD801\uDCA6", "\uD801\uDCA7", "\uD801\uDCA8", "\uD801\uDCA9"];
  var rohg = ["\uD803\uDD30", "\uD803\uDD31", "\uD803\uDD32", "\uD803\uDD33", "\uD803\uDD34", "\uD803\uDD35", "\uD803\uDD36", "\uD803\uDD37", "\uD803\uDD38", "\uD803\uDD39"];
  var saur = ["\uA8D0", "\uA8D1", "\uA8D2", "\uA8D3", "\uA8D4", "\uA8D5", "\uA8D6", "\uA8D7", "\uA8D8", "\uA8D9"];
  var segment = ["\uD83E\uDFF0", "\uD83E\uDFF1", "\uD83E\uDFF2", "\uD83E\uDFF3", "\uD83E\uDFF4", "\uD83E\uDFF5", "\uD83E\uDFF6", "\uD83E\uDFF7", "\uD83E\uDFF8", "\uD83E\uDFF9"];
  var shrd = ["\uD804\uDDD0", "\uD804\uDDD1", "\uD804\uDDD2", "\uD804\uDDD3", "\uD804\uDDD4", "\uD804\uDDD5", "\uD804\uDDD6", "\uD804\uDDD7", "\uD804\uDDD8", "\uD804\uDDD9"];
  var sind = ["\uD804\uDEF0", "\uD804\uDEF1", "\uD804\uDEF2", "\uD804\uDEF3", "\uD804\uDEF4", "\uD804\uDEF5", "\uD804\uDEF6", "\uD804\uDEF7", "\uD804\uDEF8", "\uD804\uDEF9"];
  var sinh = ["\u0DE6", "\u0DE7", "\u0DE8", "\u0DE9", "\u0DEA", "\u0DEB", "\u0DEC", "\u0DED", "\u0DEE", "\u0DEF"];
  var sora = ["\uD804\uDCF0", "\uD804\uDCF1", "\uD804\uDCF2", "\uD804\uDCF3", "\uD804\uDCF4", "\uD804\uDCF5", "\uD804\uDCF6", "\uD804\uDCF7", "\uD804\uDCF8", "\uD804\uDCF9"];
  var sund = ["\u1BB0", "\u1BB1", "\u1BB2", "\u1BB3", "\u1BB4", "\u1BB5", "\u1BB6", "\u1BB7", "\u1BB8", "\u1BB9"];
  var takr = ["\uD805\uDEC0", "\uD805\uDEC1", "\uD805\uDEC2", "\uD805\uDEC3", "\uD805\uDEC4", "\uD805\uDEC5", "\uD805\uDEC6", "\uD805\uDEC7", "\uD805\uDEC8", "\uD805\uDEC9"];
  var talu = ["\u19D0", "\u19D1", "\u19D2", "\u19D3", "\u19D4", "\u19D5", "\u19D6", "\u19D7", "\u19D8", "\u19D9"];
  var tamldec = ["\u0BE6", "\u0BE7", "\u0BE8", "\u0BE9", "\u0BEA", "\u0BEB", "\u0BEC", "\u0BED", "\u0BEE", "\u0BEF"];
  var telu = ["\u0C66", "\u0C67", "\u0C68", "\u0C69", "\u0C6A", "\u0C6B", "\u0C6C", "\u0C6D", "\u0C6E", "\u0C6F"];
  var thai = ["\u0E50", "\u0E51", "\u0E52", "\u0E53", "\u0E54", "\u0E55", "\u0E56", "\u0E57", "\u0E58", "\u0E59"];
  var tibt = ["\u0F20", "\u0F21", "\u0F22", "\u0F23", "\u0F24", "\u0F25", "\u0F26", "\u0F27", "\u0F28", "\u0F29"];
  var tirh = ["\uD805\uDCD0", "\uD805\uDCD1", "\uD805\uDCD2", "\uD805\uDCD3", "\uD805\uDCD4", "\uD805\uDCD5", "\uD805\uDCD6", "\uD805\uDCD7", "\uD805\uDCD8", "\uD805\uDCD9"];
  var vaii = ["\u1620", "\u1621", "\u1622", "\u1623", "\u1624", "\u1625", "\u1626", "\u1627", "\u1628", "\u1629"];
  var wara = ["\uD806\uDCE0", "\uD806\uDCE1", "\uD806\uDCE2", "\uD806\uDCE3", "\uD806\uDCE4", "\uD806\uDCE5", "\uD806\uDCE6", "\uD806\uDCE7", "\uD806\uDCE8", "\uD806\uDCE9"];
  var wcho = ["\uD838\uDEF0", "\uD838\uDEF1", "\uD838\uDEF2", "\uD838\uDEF3", "\uD838\uDEF4", "\uD838\uDEF5", "\uD838\uDEF6", "\uD838\uDEF7", "\uD838\uDEF8", "\uD838\uDEF9"];
  var digit_mapping_default = {adlm: adlm, ahom: ahom, arab: arab, arabext: arabext, bali: bali, beng: beng, bhks: bhks, brah: brah, cakm: cakm, cham: cham, deva: deva, diak: diak, fullwide: fullwide, gong: gong, gonm: gonm, gujr: gujr, guru: guru, hanidec: hanidec, hmng: hmng, hmnp: hmnp, java: java, kali: kali, khmr: khmr, knda: knda, lana: lana, lanatham: lanatham, laoo: laoo, lepc: lepc, limb: limb, mathbold: mathbold, mathdbl: mathdbl, mathmono: mathmono, mathsanb: mathsanb, mathsans: mathsans, mlym: mlym, modi: modi, mong: mong, mroo: mroo, mtei: mtei, mymr: mymr, mymrshan: mymrshan, mymrtlng: mymrtlng, newa: newa, nkoo: nkoo, olck: olck, orya: orya, osma: osma, rohg: rohg, saur: saur, segment: segment, shrd: shrd, sind: sind, sinh: sinh, sora: sora, sund: sund, takr: takr, talu: talu, tamldec: tamldec, telu: telu, thai: thai, tibt: tibt, tirh: tirh, vaii: vaii, wara: wara, wcho: wcho};

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/regex.generated.js
  var S_UNICODE_REGEX = /[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]/;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/format_to_parts.js
  var CARET_S_UNICODE_REGEX = new RegExp("^" + S_UNICODE_REGEX.source);
  var S_DOLLAR_UNICODE_REGEX = new RegExp(S_UNICODE_REGEX.source + "$");
  var CLDR_NUMBER_PATTERN = /[#0](?:[\.,][#0]+)*/g;
  function formatToParts(numberResult, data, pl, options) {
    var sign = numberResult.sign, exponent = numberResult.exponent, magnitude = numberResult.magnitude;
    var notation = options.notation, style = options.style, numberingSystem = options.numberingSystem;
    var defaultNumberingSystem = data.numbers.nu[0];
    var compactNumberPattern = null;
    if (notation === "compact" && magnitude) {
      compactNumberPattern = getCompactDisplayPattern(numberResult, pl, data, style, options.compactDisplay, options.currencyDisplay, numberingSystem);
    }
    var nonNameCurrencyPart;
    if (style === "currency" && options.currencyDisplay !== "name") {
      var byCurrencyDisplay = data.currencies[options.currency];
      if (byCurrencyDisplay) {
        switch (options.currencyDisplay) {
          case "code":
            nonNameCurrencyPart = options.currency;
            break;
          case "symbol":
            nonNameCurrencyPart = byCurrencyDisplay.symbol;
            break;
          default:
            nonNameCurrencyPart = byCurrencyDisplay.narrow;
            break;
        }
      } else {
        nonNameCurrencyPart = options.currency;
      }
    }
    var numberPattern;
    if (!compactNumberPattern) {
      if (style === "decimal" || style === "unit" || style === "currency" && options.currencyDisplay === "name") {
        var decimalData = data.numbers.decimal[numberingSystem] || data.numbers.decimal[defaultNumberingSystem];
        numberPattern = getPatternForSign(decimalData.standard, sign);
      } else if (style === "currency") {
        var currencyData = data.numbers.currency[numberingSystem] || data.numbers.currency[defaultNumberingSystem];
        numberPattern = getPatternForSign(currencyData[options.currencySign], sign);
      } else {
        var percentPattern = data.numbers.percent[numberingSystem] || data.numbers.percent[defaultNumberingSystem];
        numberPattern = getPatternForSign(percentPattern, sign);
      }
    } else {
      numberPattern = compactNumberPattern;
    }
    var decimalNumberPattern = CLDR_NUMBER_PATTERN.exec(numberPattern)[0];
    numberPattern = numberPattern.replace(CLDR_NUMBER_PATTERN, "{0}").replace(/'(.)'/g, "$1");
    if (style === "currency" && options.currencyDisplay !== "name") {
      var currencyData = data.numbers.currency[numberingSystem] || data.numbers.currency[defaultNumberingSystem];
      var afterCurrency = currencyData.currencySpacing.afterInsertBetween;
      if (afterCurrency && !S_DOLLAR_UNICODE_REGEX.test(nonNameCurrencyPart)) {
        numberPattern = numberPattern.replace("\xA4{0}", "\xA4" + afterCurrency + "{0}");
      }
      var beforeCurrency = currencyData.currencySpacing.beforeInsertBetween;
      if (beforeCurrency && !CARET_S_UNICODE_REGEX.test(nonNameCurrencyPart)) {
        numberPattern = numberPattern.replace("{0}\xA4", "{0}" + beforeCurrency + "\xA4");
      }
    }
    var numberPatternParts = numberPattern.split(/({c:[^}]+}|\{0\}|[¤%\-\+])/g);
    var numberParts = [];
    var symbols = data.numbers.symbols[numberingSystem] || data.numbers.symbols[defaultNumberingSystem];
    for (var _i = 0, numberPatternParts_1 = numberPatternParts; _i < numberPatternParts_1.length; _i++) {
      var part = numberPatternParts_1[_i];
      if (!part) {
        continue;
      }
      switch (part) {
        case "{0}": {
          numberParts.push.apply(numberParts, paritionNumberIntoParts(symbols, numberResult, notation, exponent, numberingSystem, !compactNumberPattern && options.useGrouping, decimalNumberPattern));
          break;
        }
        case "-":
          numberParts.push({type: "minusSign", value: symbols.minusSign});
          break;
        case "+":
          numberParts.push({type: "plusSign", value: symbols.plusSign});
          break;
        case "%":
          numberParts.push({type: "percentSign", value: symbols.percentSign});
          break;
        case "\xA4":
          numberParts.push({type: "currency", value: nonNameCurrencyPart});
          break;
        default:
          if (/^\{c:/.test(part)) {
            numberParts.push({
              type: "compact",
              value: part.substring(3, part.length - 1)
            });
          } else {
            numberParts.push({type: "literal", value: part});
          }
          break;
      }
    }
    switch (style) {
      case "currency": {
        if (options.currencyDisplay === "name") {
          var unitPattern = (data.numbers.currency[numberingSystem] || data.numbers.currency[defaultNumberingSystem]).unitPattern;
          var unitName = void 0;
          var currencyNameData = data.currencies[options.currency];
          if (currencyNameData) {
            unitName = selectPlural(pl, numberResult.roundedNumber * Math.pow(10, exponent), currencyNameData.displayName);
          } else {
            unitName = options.currency;
          }
          var unitPatternParts = unitPattern.split(/(\{[01]\})/g);
          var result = [];
          for (var _a = 0, unitPatternParts_1 = unitPatternParts; _a < unitPatternParts_1.length; _a++) {
            var part = unitPatternParts_1[_a];
            switch (part) {
              case "{0}":
                result.push.apply(result, numberParts);
                break;
              case "{1}":
                result.push({type: "currency", value: unitName});
                break;
              default:
                if (part) {
                  result.push({type: "literal", value: part});
                }
                break;
            }
          }
          return result;
        } else {
          return numberParts;
        }
      }
      case "unit": {
        var unit = options.unit, unitDisplay = options.unitDisplay;
        var unitData = data.units.simple[unit];
        var unitPattern = void 0;
        if (unitData) {
          unitPattern = selectPlural(pl, numberResult.roundedNumber * Math.pow(10, exponent), data.units.simple[unit][unitDisplay]);
        } else {
          var _b = unit.split("-per-"), numeratorUnit = _b[0], denominatorUnit = _b[1];
          unitData = data.units.simple[numeratorUnit];
          var numeratorUnitPattern = selectPlural(pl, numberResult.roundedNumber * Math.pow(10, exponent), data.units.simple[numeratorUnit][unitDisplay]);
          var perUnitPattern = data.units.simple[denominatorUnit].perUnit[unitDisplay];
          if (perUnitPattern) {
            unitPattern = perUnitPattern.replace("{0}", numeratorUnitPattern);
          } else {
            var perPattern = data.units.compound.per[unitDisplay];
            var denominatorPattern = selectPlural(pl, 1, data.units.simple[denominatorUnit][unitDisplay]);
            unitPattern = unitPattern = perPattern.replace("{0}", numeratorUnitPattern).replace("{1}", denominatorPattern.replace("{0}", ""));
          }
        }
        var result = [];
        for (var _c = 0, _d = unitPattern.split(/(\s*\{0\}\s*)/); _c < _d.length; _c++) {
          var part = _d[_c];
          var interpolateMatch = /^(\s*)\{0\}(\s*)$/.exec(part);
          if (interpolateMatch) {
            if (interpolateMatch[1]) {
              result.push({type: "literal", value: interpolateMatch[1]});
            }
            result.push.apply(result, numberParts);
            if (interpolateMatch[2]) {
              result.push({type: "literal", value: interpolateMatch[2]});
            }
          } else if (part) {
            result.push({type: "unit", value: part});
          }
        }
        return result;
      }
      default:
        return numberParts;
    }
  }
  function paritionNumberIntoParts(symbols, numberResult, notation, exponent, numberingSystem, useGrouping, decimalNumberPattern) {
    var result = [];
    var n = numberResult.formattedString, x = numberResult.roundedNumber;
    if (isNaN(x)) {
      return [{type: "nan", value: n}];
    } else if (!isFinite(x)) {
      return [{type: "infinity", value: n}];
    }
    var digitReplacementTable = digit_mapping_exports[numberingSystem];
    if (digitReplacementTable) {
      n = n.replace(/\d/g, function(digit) {
        return digitReplacementTable[+digit] || digit;
      });
    }
    var decimalSepIndex = n.indexOf(".");
    var integer;
    var fraction;
    if (decimalSepIndex > 0) {
      integer = n.slice(0, decimalSepIndex);
      fraction = n.slice(decimalSepIndex + 1);
    } else {
      integer = n;
    }
    if (useGrouping && (notation !== "compact" || x >= 1e4)) {
      var groupSepSymbol = symbols.group;
      var groups = [];
      var integerNumberPattern = decimalNumberPattern.split(".")[0];
      var patternGroups = integerNumberPattern.split(",");
      var primaryGroupingSize = 3;
      var secondaryGroupingSize = 3;
      if (patternGroups.length > 1) {
        primaryGroupingSize = patternGroups[patternGroups.length - 1].length;
      }
      if (patternGroups.length > 2) {
        secondaryGroupingSize = patternGroups[patternGroups.length - 2].length;
      }
      var i = integer.length - primaryGroupingSize;
      if (i > 0) {
        groups.push(integer.slice(i, i + primaryGroupingSize));
        for (i -= secondaryGroupingSize; i > 0; i -= secondaryGroupingSize) {
          groups.push(integer.slice(i, i + secondaryGroupingSize));
        }
        groups.push(integer.slice(0, i + secondaryGroupingSize));
      } else {
        groups.push(integer);
      }
      while (groups.length > 0) {
        var integerGroup = groups.pop();
        result.push({type: "integer", value: integerGroup});
        if (groups.length > 0) {
          result.push({type: "group", value: groupSepSymbol});
        }
      }
    } else {
      result.push({type: "integer", value: integer});
    }
    if (fraction !== void 0) {
      result.push({type: "decimal", value: symbols.decimal}, {type: "fraction", value: fraction});
    }
    if ((notation === "scientific" || notation === "engineering") && isFinite(x)) {
      result.push({type: "exponentSeparator", value: symbols.exponential});
      if (exponent < 0) {
        result.push({type: "exponentMinusSign", value: symbols.minusSign});
        exponent = -exponent;
      }
      var exponentResult = ToRawFixed(exponent, 0, 0);
      result.push({
        type: "exponentInteger",
        value: exponentResult.formattedString
      });
    }
    return result;
  }
  function getPatternForSign(pattern, sign) {
    if (pattern.indexOf(";") < 0) {
      pattern = pattern + ";-" + pattern;
    }
    var _a = pattern.split(";"), zeroPattern = _a[0], negativePattern = _a[1];
    switch (sign) {
      case 0:
        return zeroPattern;
      case -1:
        return negativePattern;
      default:
        return negativePattern.indexOf("-") >= 0 ? negativePattern.replace(/-/g, "+") : "+" + zeroPattern;
    }
  }
  function getCompactDisplayPattern(numberResult, pl, data, style, compactDisplay, currencyDisplay, numberingSystem) {
    var _a;
    var roundedNumber = numberResult.roundedNumber, sign = numberResult.sign, magnitude = numberResult.magnitude;
    var magnitudeKey = String(Math.pow(10, magnitude));
    var defaultNumberingSystem = data.numbers.nu[0];
    var pattern;
    if (style === "currency" && currencyDisplay !== "name") {
      var byNumberingSystem = data.numbers.currency;
      var currencyData = byNumberingSystem[numberingSystem] || byNumberingSystem[defaultNumberingSystem];
      var compactPluralRules = (_a = currencyData.short) === null || _a === void 0 ? void 0 : _a[magnitudeKey];
      if (!compactPluralRules) {
        return null;
      }
      pattern = selectPlural(pl, roundedNumber, compactPluralRules);
    } else {
      var byNumberingSystem = data.numbers.decimal;
      var byCompactDisplay = byNumberingSystem[numberingSystem] || byNumberingSystem[defaultNumberingSystem];
      var compactPlaralRule = byCompactDisplay[compactDisplay][magnitudeKey];
      if (!compactPlaralRule) {
        return null;
      }
      pattern = selectPlural(pl, roundedNumber, compactPlaralRule);
    }
    if (pattern === "0") {
      return null;
    }
    pattern = getPatternForSign(pattern, sign).replace(/([^\s;\-\+\d¤]+)/g, "{c:$1}").replace(/0+/, "0");
    return pattern;
  }
  function selectPlural(pl, x, rules) {
    return rules[pl.select(x)] || rules.other;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/PartitionNumberPattern.js
  function PartitionNumberPattern(numberFormat, x, _a) {
    var _b;
    var getInternalSlots2 = _a.getInternalSlots;
    var internalSlots = getInternalSlots2(numberFormat);
    var pl = internalSlots.pl, dataLocaleData = internalSlots.dataLocaleData, numberingSystem = internalSlots.numberingSystem;
    var symbols = dataLocaleData.numbers.symbols[numberingSystem] || dataLocaleData.numbers.symbols[dataLocaleData.numbers.nu[0]];
    var magnitude = 0;
    var exponent = 0;
    var n;
    if (isNaN(x)) {
      n = symbols.nan;
    } else if (!isFinite(x)) {
      n = symbols.infinity;
    } else {
      if (internalSlots.style === "percent") {
        x *= 100;
      }
      ;
      _b = ComputeExponent(numberFormat, x, {
        getInternalSlots: getInternalSlots2
      }), exponent = _b[0], magnitude = _b[1];
      x = exponent < 0 ? x * Math.pow(10, -exponent) : x / Math.pow(10, exponent);
      var formatNumberResult = FormatNumericToString(internalSlots, x);
      n = formatNumberResult.formattedString;
      x = formatNumberResult.roundedNumber;
    }
    var sign;
    var signDisplay = internalSlots.signDisplay;
    switch (signDisplay) {
      case "never":
        sign = 0;
        break;
      case "auto":
        if (SameValue(x, 0) || x > 0 || isNaN(x)) {
          sign = 0;
        } else {
          sign = -1;
        }
        break;
      case "always":
        if (SameValue(x, 0) || x > 0 || isNaN(x)) {
          sign = 1;
        } else {
          sign = -1;
        }
        break;
      default:
        if (x === 0 || isNaN(x)) {
          sign = 0;
        } else if (x > 0) {
          sign = 1;
        } else {
          sign = -1;
        }
    }
    return formatToParts({roundedNumber: x, formattedString: n, exponent: exponent, magnitude: magnitude, sign: sign}, internalSlots.dataLocaleData, pl, internalSlots);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/FormatNumericToParts.js
  function FormatNumericToParts(nf, x, implDetails) {
    var parts = PartitionNumberPattern(nf, x, implDetails);
    var result = ArrayCreate(0);
    for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {
      var part = parts_1[_i];
      result.push({
        type: part.type,
        value: part.value
      });
    }
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/SetNumberFormatUnitOptions.js
  function SetNumberFormatUnitOptions(nf, options, _a) {
    if (options === void 0) {
      options = Object.create(null);
    }
    var getInternalSlots2 = _a.getInternalSlots;
    var internalSlots = getInternalSlots2(nf);
    var style = GetOption(options, "style", "string", ["decimal", "percent", "currency", "unit"], "decimal");
    internalSlots.style = style;
    var currency = GetOption(options, "currency", "string", void 0, void 0);
    if (currency !== void 0 && !IsWellFormedCurrencyCode(currency)) {
      throw RangeError("Malformed currency code");
    }
    if (style === "currency" && currency === void 0) {
      throw TypeError("currency cannot be undefined");
    }
    var currencyDisplay = GetOption(options, "currencyDisplay", "string", ["code", "symbol", "narrowSymbol", "name"], "symbol");
    var currencySign = GetOption(options, "currencySign", "string", ["standard", "accounting"], "standard");
    var unit = GetOption(options, "unit", "string", void 0, void 0);
    if (unit !== void 0 && !IsWellFormedUnitIdentifier(unit)) {
      throw RangeError("Invalid unit argument for Intl.NumberFormat()");
    }
    if (style === "unit" && unit === void 0) {
      throw TypeError("unit cannot be undefined");
    }
    var unitDisplay = GetOption(options, "unitDisplay", "string", ["short", "narrow", "long"], "short");
    if (style === "currency") {
      internalSlots.currency = currency.toUpperCase();
      internalSlots.currencyDisplay = currencyDisplay;
      internalSlots.currencySign = currencySign;
    }
    if (style === "unit") {
      internalSlots.unit = unit;
      internalSlots.unitDisplay = unitDisplay;
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/SetNumberFormatDigitOptions.js
  function SetNumberFormatDigitOptions(internalSlots, opts, mnfdDefault, mxfdDefault, notation) {
    var mnid = GetNumberOption(opts, "minimumIntegerDigits", 1, 21, 1);
    var mnfd = opts.minimumFractionDigits;
    var mxfd = opts.maximumFractionDigits;
    var mnsd = opts.minimumSignificantDigits;
    var mxsd = opts.maximumSignificantDigits;
    internalSlots.minimumIntegerDigits = mnid;
    if (mnsd !== void 0 || mxsd !== void 0) {
      internalSlots.roundingType = "significantDigits";
      mnsd = DefaultNumberOption(mnsd, 1, 21, 1);
      mxsd = DefaultNumberOption(mxsd, mnsd, 21, 21);
      internalSlots.minimumSignificantDigits = mnsd;
      internalSlots.maximumSignificantDigits = mxsd;
    } else if (mnfd !== void 0 || mxfd !== void 0) {
      internalSlots.roundingType = "fractionDigits";
      mnfd = DefaultNumberOption(mnfd, 0, 20, mnfdDefault);
      var mxfdActualDefault = Math.max(mnfd, mxfdDefault);
      mxfd = DefaultNumberOption(mxfd, mnfd, 20, mxfdActualDefault);
      internalSlots.minimumFractionDigits = mnfd;
      internalSlots.maximumFractionDigits = mxfd;
    } else if (notation === "compact") {
      internalSlots.roundingType = "compactRounding";
    } else {
      internalSlots.roundingType = "fractionDigits";
      internalSlots.minimumFractionDigits = mnfdDefault;
      internalSlots.maximumFractionDigits = mxfdDefault;
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/InitializeNumberFormat.js
  function InitializeNumberFormat(nf, locales, opts, _a) {
    var getInternalSlots2 = _a.getInternalSlots, localeData = _a.localeData, availableLocales = _a.availableLocales, numberingSystemNames2 = _a.numberingSystemNames, getDefaultLocale = _a.getDefaultLocale, currencyDigitsData = _a.currencyDigitsData;
    var requestedLocales = CanonicalizeLocaleList(locales);
    var options = CoerceOptionsToObject(opts);
    var opt = Object.create(null);
    var matcher = GetOption(options, "localeMatcher", "string", ["lookup", "best fit"], "best fit");
    opt.localeMatcher = matcher;
    var numberingSystem = GetOption(options, "numberingSystem", "string", void 0, void 0);
    if (numberingSystem !== void 0 && numberingSystemNames2.indexOf(numberingSystem) < 0) {
      throw RangeError("Invalid numberingSystems: " + numberingSystem);
    }
    opt.nu = numberingSystem;
    var r = ResolveLocale(availableLocales, requestedLocales, opt, ["nu"], localeData, getDefaultLocale);
    var dataLocaleData = localeData[r.dataLocale];
    invariant(!!dataLocaleData, "Missing locale data for " + r.dataLocale);
    var internalSlots = getInternalSlots2(nf);
    internalSlots.locale = r.locale;
    internalSlots.dataLocale = r.dataLocale;
    internalSlots.numberingSystem = r.nu;
    internalSlots.dataLocaleData = dataLocaleData;
    SetNumberFormatUnitOptions(nf, options, {getInternalSlots: getInternalSlots2});
    var style = internalSlots.style;
    var mnfdDefault;
    var mxfdDefault;
    if (style === "currency") {
      var currency = internalSlots.currency;
      var cDigits = CurrencyDigits(currency, {currencyDigitsData: currencyDigitsData});
      mnfdDefault = cDigits;
      mxfdDefault = cDigits;
    } else {
      mnfdDefault = 0;
      mxfdDefault = style === "percent" ? 0 : 3;
    }
    var notation = GetOption(options, "notation", "string", ["standard", "scientific", "engineering", "compact"], "standard");
    internalSlots.notation = notation;
    SetNumberFormatDigitOptions(internalSlots, options, mnfdDefault, mxfdDefault, notation);
    var compactDisplay = GetOption(options, "compactDisplay", "string", ["short", "long"], "short");
    if (notation === "compact") {
      internalSlots.compactDisplay = compactDisplay;
    }
    var useGrouping = GetOption(options, "useGrouping", "boolean", void 0, true);
    internalSlots.useGrouping = useGrouping;
    var signDisplay = GetOption(options, "signDisplay", "string", ["auto", "never", "always", "exceptZero"], "auto");
    internalSlots.signDisplay = signDisplay;
    return nf;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupSupportedLocales.js
  function LookupSupportedLocales(availableLocales, requestedLocales) {
    var subset = [];
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        subset.push(availableLocale);
      }
    }
    return subset;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/SupportedLocales.js
  function SupportedLocales(availableLocales, requestedLocales, options) {
    var matcher = "best fit";
    if (options !== void 0) {
      options = ToObject(options);
      matcher = GetOption(options, "localeMatcher", "string", ["lookup", "best fit"], "best fit");
    }
    if (matcher === "best fit") {
      return LookupSupportedLocales(availableLocales, requestedLocales);
    }
    return LookupSupportedLocales(availableLocales, requestedLocales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/data.js
  var MissingLocaleDataError = function(_super) {
    __extends(MissingLocaleDataError2, _super);
    function MissingLocaleDataError2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.type = "MISSING_LOCALE_DATA";
      return _this;
    }
    return MissingLocaleDataError2;
  }(Error);

  // bazel-out/darwin-fastbuild/bin/packages/intl-numberformat/lib/src/data/currency-digits.json
  var currency_digits_exports = {};
  __export(currency_digits_exports, {
    ADP: function() {
      return ADP;
    },
    AFN: function() {
      return AFN;
    },
    ALL: function() {
      return ALL;
    },
    AMD: function() {
      return AMD;
    },
    BHD: function() {
      return BHD;
    },
    BIF: function() {
      return BIF;
    },
    BYN: function() {
      return BYN;
    },
    BYR: function() {
      return BYR;
    },
    CAD: function() {
      return CAD;
    },
    CHF: function() {
      return CHF;
    },
    CLF: function() {
      return CLF;
    },
    CLP: function() {
      return CLP;
    },
    COP: function() {
      return COP;
    },
    CRC: function() {
      return CRC;
    },
    CZK: function() {
      return CZK;
    },
    DEFAULT: function() {
      return DEFAULT;
    },
    DJF: function() {
      return DJF;
    },
    DKK: function() {
      return DKK;
    },
    ESP: function() {
      return ESP;
    },
    GNF: function() {
      return GNF;
    },
    GYD: function() {
      return GYD;
    },
    HUF: function() {
      return HUF;
    },
    IDR: function() {
      return IDR;
    },
    IQD: function() {
      return IQD;
    },
    IRR: function() {
      return IRR;
    },
    ISK: function() {
      return ISK;
    },
    ITL: function() {
      return ITL;
    },
    JOD: function() {
      return JOD;
    },
    JPY: function() {
      return JPY;
    },
    KMF: function() {
      return KMF;
    },
    KPW: function() {
      return KPW;
    },
    KRW: function() {
      return KRW;
    },
    KWD: function() {
      return KWD;
    },
    LAK: function() {
      return LAK;
    },
    LBP: function() {
      return LBP;
    },
    LUF: function() {
      return LUF;
    },
    LYD: function() {
      return LYD;
    },
    MGA: function() {
      return MGA;
    },
    MGF: function() {
      return MGF;
    },
    MMK: function() {
      return MMK;
    },
    MNT: function() {
      return MNT;
    },
    MRO: function() {
      return MRO;
    },
    MUR: function() {
      return MUR;
    },
    NOK: function() {
      return NOK;
    },
    OMR: function() {
      return OMR;
    },
    PKR: function() {
      return PKR;
    },
    PYG: function() {
      return PYG;
    },
    RSD: function() {
      return RSD;
    },
    RWF: function() {
      return RWF;
    },
    SEK: function() {
      return SEK;
    },
    SLL: function() {
      return SLL;
    },
    SOS: function() {
      return SOS;
    },
    STD: function() {
      return STD;
    },
    SYP: function() {
      return SYP;
    },
    TMM: function() {
      return TMM;
    },
    TND: function() {
      return TND;
    },
    TRL: function() {
      return TRL;
    },
    TWD: function() {
      return TWD;
    },
    TZS: function() {
      return TZS;
    },
    UGX: function() {
      return UGX;
    },
    UYI: function() {
      return UYI;
    },
    UYW: function() {
      return UYW;
    },
    UZS: function() {
      return UZS;
    },
    VEF: function() {
      return VEF;
    },
    VND: function() {
      return VND;
    },
    VUV: function() {
      return VUV;
    },
    XAF: function() {
      return XAF;
    },
    XOF: function() {
      return XOF;
    },
    XPF: function() {
      return XPF;
    },
    YER: function() {
      return YER;
    },
    ZMK: function() {
      return ZMK;
    },
    ZWD: function() {
      return ZWD;
    },
    default: function() {
      return currency_digits_default;
    }
  });
  var ADP = 0;
  var AFN = 0;
  var ALL = 0;
  var AMD = 2;
  var BHD = 3;
  var BIF = 0;
  var BYN = 2;
  var BYR = 0;
  var CAD = 2;
  var CHF = 2;
  var CLF = 4;
  var CLP = 0;
  var COP = 2;
  var CRC = 2;
  var CZK = 2;
  var DEFAULT = 2;
  var DJF = 0;
  var DKK = 2;
  var ESP = 0;
  var GNF = 0;
  var GYD = 2;
  var HUF = 2;
  var IDR = 2;
  var IQD = 0;
  var IRR = 0;
  var ISK = 0;
  var ITL = 0;
  var JOD = 3;
  var JPY = 0;
  var KMF = 0;
  var KPW = 0;
  var KRW = 0;
  var KWD = 3;
  var LAK = 0;
  var LBP = 0;
  var LUF = 0;
  var LYD = 3;
  var MGA = 0;
  var MGF = 0;
  var MMK = 0;
  var MNT = 2;
  var MRO = 0;
  var MUR = 2;
  var NOK = 2;
  var OMR = 3;
  var PKR = 2;
  var PYG = 0;
  var RSD = 0;
  var RWF = 0;
  var SEK = 2;
  var SLL = 0;
  var SOS = 0;
  var STD = 0;
  var SYP = 0;
  var TMM = 0;
  var TND = 3;
  var TRL = 0;
  var TWD = 2;
  var TZS = 2;
  var UGX = 0;
  var UYI = 0;
  var UYW = 4;
  var UZS = 2;
  var VEF = 2;
  var VND = 0;
  var VUV = 0;
  var XAF = 0;
  var XOF = 0;
  var XPF = 0;
  var YER = 0;
  var ZMK = 0;
  var ZWD = 0;
  var currency_digits_default = {ADP: ADP, AFN: AFN, ALL: ALL, AMD: AMD, BHD: BHD, BIF: BIF, BYN: BYN, BYR: BYR, CAD: CAD, CHF: CHF, CLF: CLF, CLP: CLP, COP: COP, CRC: CRC, CZK: CZK, DEFAULT: DEFAULT, DJF: DJF, DKK: DKK, ESP: ESP, GNF: GNF, GYD: GYD, HUF: HUF, IDR: IDR, IQD: IQD, IRR: IRR, ISK: ISK, ITL: ITL, JOD: JOD, JPY: JPY, KMF: KMF, KPW: KPW, KRW: KRW, KWD: KWD, LAK: LAK, LBP: LBP, LUF: LUF, LYD: LYD, MGA: MGA, MGF: MGF, MMK: MMK, MNT: MNT, MRO: MRO, MUR: MUR, NOK: NOK, OMR: OMR, PKR: PKR, PYG: PYG, RSD: RSD, RWF: RWF, SEK: SEK, SLL: SLL, SOS: SOS, STD: STD, SYP: SYP, TMM: TMM, TND: TND, TRL: TRL, TWD: TWD, TZS: TZS, UGX: UGX, UYI: UYI, UYW: UYW, UZS: UZS, VEF: VEF, VND: VND, VUV: VUV, XAF: XAF, XOF: XOF, XPF: XPF, YER: YER, ZMK: ZMK, ZWD: ZWD};

  // bazel-out/darwin-fastbuild/bin/packages/intl-numberformat/lib/src/data/numbering-systems.json
  var names = ["adlm", "ahom", "arab", "arabext", "armn", "armnlow", "bali", "beng", "bhks", "brah", "cakm", "cham", "cyrl", "deva", "diak", "ethi", "fullwide", "geor", "gong", "gonm", "grek", "greklow", "gujr", "guru", "hanidays", "hanidec", "hans", "hansfin", "hant", "hantfin", "hebr", "hmng", "hmnp", "java", "jpan", "jpanfin", "jpanyear", "kali", "khmr", "knda", "lana", "lanatham", "laoo", "latn", "lepc", "limb", "mathbold", "mathdbl", "mathmono", "mathsanb", "mathsans", "mlym", "modi", "mong", "mroo", "mtei", "mymr", "mymrshan", "mymrtlng", "newa", "nkoo", "olck", "orya", "osma", "rohg", "roman", "romanlow", "saur", "segment", "shrd", "sind", "sinh", "sora", "sund", "takr", "talu", "taml", "tamldec", "telu", "thai", "tibt", "tirh", "vaii", "wara", "wcho"];

  // bazel-out/darwin-fastbuild/bin/packages/intl-numberformat/lib/src/get_internal_slots.js
  var internalSlotMap = new WeakMap();
  function getInternalSlots(x) {
    var internalSlots = internalSlotMap.get(x);
    if (!internalSlots) {
      internalSlots = Object.create(null);
      internalSlotMap.set(x, internalSlots);
    }
    return internalSlots;
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-numberformat/lib/src/core.js
  var numberingSystemNames = names;
  var RESOLVED_OPTIONS_KEYS = [
    "locale",
    "numberingSystem",
    "style",
    "currency",
    "currencyDisplay",
    "currencySign",
    "unit",
    "unitDisplay",
    "minimumIntegerDigits",
    "minimumFractionDigits",
    "maximumFractionDigits",
    "minimumSignificantDigits",
    "maximumSignificantDigits",
    "useGrouping",
    "notation",
    "compactDisplay",
    "signDisplay"
  ];
  var NumberFormat = function(locales, options) {
    if (!this || !OrdinaryHasInstance(NumberFormat, this)) {
      return new NumberFormat(locales, options);
    }
    InitializeNumberFormat(this, locales, options, {
      getInternalSlots: getInternalSlots,
      localeData: NumberFormat.localeData,
      availableLocales: NumberFormat.availableLocales,
      getDefaultLocale: NumberFormat.getDefaultLocale,
      currencyDigitsData: currency_digits_exports,
      numberingSystemNames: numberingSystemNames
    });
    var internalSlots = getInternalSlots(this);
    var dataLocale = internalSlots.dataLocale;
    var dataLocaleData = NumberFormat.localeData[dataLocale];
    invariant(dataLocaleData !== void 0, "Cannot load locale-dependent data for " + dataLocale + ".");
    internalSlots.pl = new Intl.PluralRules(dataLocale, {
      minimumFractionDigits: internalSlots.minimumFractionDigits,
      maximumFractionDigits: internalSlots.maximumFractionDigits,
      minimumIntegerDigits: internalSlots.minimumIntegerDigits,
      minimumSignificantDigits: internalSlots.minimumSignificantDigits,
      maximumSignificantDigits: internalSlots.maximumSignificantDigits
    });
    return this;
  };
  function formatToParts2(x) {
    return FormatNumericToParts(this, toNumeric(x), {
      getInternalSlots: getInternalSlots
    });
  }
  try {
    Object.defineProperty(formatToParts2, "name", {
      value: "formatToParts",
      enumerable: false,
      writable: false,
      configurable: true
    });
  } catch (e) {
  }
  defineProperty(NumberFormat.prototype, "formatToParts", {
    value: formatToParts2
  });
  defineProperty(NumberFormat.prototype, "resolvedOptions", {
    value: function resolvedOptions() {
      if (typeof this !== "object" || !OrdinaryHasInstance(NumberFormat, this)) {
        throw TypeError("Method Intl.NumberFormat.prototype.resolvedOptions called on incompatible receiver");
      }
      var internalSlots = getInternalSlots(this);
      var ro = {};
      for (var _i = 0, RESOLVED_OPTIONS_KEYS_1 = RESOLVED_OPTIONS_KEYS; _i < RESOLVED_OPTIONS_KEYS_1.length; _i++) {
        var key = RESOLVED_OPTIONS_KEYS_1[_i];
        var value = internalSlots[key];
        if (value !== void 0) {
          ro[key] = value;
        }
      }
      return ro;
    }
  });
  var formatDescriptor = {
    enumerable: false,
    configurable: true,
    get: function() {
      if (typeof this !== "object" || !OrdinaryHasInstance(NumberFormat, this)) {
        throw TypeError("Intl.NumberFormat format property accessor called on incompatible receiver");
      }
      var internalSlots = getInternalSlots(this);
      var numberFormat = this;
      var boundFormat = internalSlots.boundFormat;
      if (boundFormat === void 0) {
        boundFormat = function(value) {
          var x = toNumeric(value);
          return numberFormat.formatToParts(x).map(function(x2) {
            return x2.value;
          }).join("");
        };
        try {
          Object.defineProperty(boundFormat, "name", {
            configurable: true,
            enumerable: false,
            writable: false,
            value: ""
          });
        } catch (e) {
        }
        internalSlots.boundFormat = boundFormat;
      }
      return boundFormat;
    }
  };
  try {
    Object.defineProperty(formatDescriptor.get, "name", {
      configurable: true,
      enumerable: false,
      writable: false,
      value: "get format"
    });
  } catch (e) {
  }
  Object.defineProperty(NumberFormat.prototype, "format", formatDescriptor);
  defineProperty(NumberFormat, "supportedLocalesOf", {
    value: function supportedLocalesOf(locales, options) {
      return SupportedLocales(NumberFormat.availableLocales, CanonicalizeLocaleList(locales), options);
    }
  });
  NumberFormat.__addLocaleData = function __addLocaleData() {
    var data = [];
    for (var _i = 0; _i < arguments.length; _i++) {
      data[_i] = arguments[_i];
    }
    for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {
      var _b = data_1[_a], d = _b.data, locale = _b.locale;
      var minimizedLocale = new Intl.Locale(locale).minimize().toString();
      NumberFormat.localeData[locale] = NumberFormat.localeData[minimizedLocale] = d;
      NumberFormat.availableLocales.add(minimizedLocale);
      NumberFormat.availableLocales.add(locale);
      if (!NumberFormat.__defaultLocale) {
        NumberFormat.__defaultLocale = minimizedLocale;
      }
    }
  };
  NumberFormat.__addUnitData = function __addUnitData(locale, unitsData) {
    var _a = NumberFormat.localeData, _b = locale, existingData = _a[_b];
    if (!existingData) {
      throw new Error('Locale data for "' + locale + '" has not been loaded in NumberFormat. \nPlease __addLocaleData before adding additional unit data');
    }
    for (var unit in unitsData.simple) {
      existingData.units.simple[unit] = unitsData.simple[unit];
    }
    for (var unit in unitsData.compound) {
      existingData.units.compound[unit] = unitsData.compound[unit];
    }
  };
  NumberFormat.__defaultLocale = "";
  NumberFormat.localeData = {};
  NumberFormat.availableLocales = new Set();
  NumberFormat.getDefaultLocale = function() {
    return NumberFormat.__defaultLocale;
  };
  NumberFormat.polyfilled = true;
  function toNumeric(val) {
    if (typeof val === "bigint") {
      return val;
    }
    return ToNumber(val);
  }
  try {
    if (typeof Symbol !== "undefined") {
      Object.defineProperty(NumberFormat.prototype, Symbol.toStringTag, {
        configurable: true,
        enumerable: false,
        writable: false,
        value: "Intl.NumberFormat"
      });
    }
    Object.defineProperty(NumberFormat.prototype.constructor, "length", {
      configurable: true,
      enumerable: false,
      writable: false,
      value: 0
    });
    Object.defineProperty(NumberFormat.supportedLocalesOf, "length", {
      configurable: true,
      enumerable: false,
      writable: false,
      value: 1
    });
    Object.defineProperty(NumberFormat, "prototype", {
      configurable: false,
      enumerable: false,
      writable: false,
      value: NumberFormat.prototype
    });
  } catch (e) {
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-numberformat/lib/src/to_locale_string.js
  function toLocaleString(x, locales, options) {
    var numberFormat = new NumberFormat(locales, options);
    return numberFormat.format(x);
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-numberformat/lib/should-polyfill.js
  function onlySupportsEn() {
    return !Intl.NumberFormat.polyfilled && !Intl.NumberFormat.supportedLocalesOf(["es"]).length;
  }
  function supportsES2020() {
    try {
      var s = new Intl.NumberFormat("en", {
        style: "unit",
        unit: "bit",
        unitDisplay: "long",
        notation: "scientific"
      }).format(1e4);
      if (s !== "1E4 bits") {
        return false;
      }
    } catch (e) {
      return false;
    }
    return true;
  }
  function shouldPolyfill() {
    return typeof Intl === "undefined" || !("NumberFormat" in Intl) || !supportsES2020() || onlySupportsEn();
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-numberformat/lib/polyfill.js
  if (shouldPolyfill()) {
    defineProperty(Intl, "NumberFormat", {value: NumberFormat});
    defineProperty(Number.prototype, "toLocaleString", {
      value: function toLocaleString2(locales, options) {
        return toLocaleString(this, locales, options);
      }
    });
  }
})();
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */


}

if (!("Intl"in self&&"DateTimeFormat"in self.Intl&&"formatToParts"in self.Intl.DateTimeFormat.prototype&&"dayPeriod"===new self.Intl.DateTimeFormat("en",{hourCycle:"h11",hour:"numeric"}).formatToParts(0)[2].type&&"formatRangeToParts"in self.Intl.DateTimeFormat.prototype&&"dayPeriod"===new self.Intl.DateTimeFormat("en",{hourCycle:"h11",hour:"numeric"}).formatRangeToParts(0,1)[2].type
)) {

// Intl.DateTimeFormat
(function() {
  // node_modules/tslib/tslib.es6.js
  var extendStatics = function(d, b) {
    extendStatics = Object.setPrototypeOf || {__proto__: []} instanceof Array && function(d2, b2) {
      d2.__proto__ = b2;
    } || function(d2, b2) {
      for (var p in b2)
        if (Object.prototype.hasOwnProperty.call(b2, p))
          d2[p] = b2[p];
    };
    return extendStatics(d, b);
  };
  function __extends(d, b) {
    if (typeof b !== "function" && b !== null)
      throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
    extendStatics(d, b);
    function __() {
      this.constructor = d;
    }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  }
  var __assign = function() {
    __assign = Object.assign || function __assign2(t) {
      for (var s, i = 1, n = arguments.length; i < n; i++) {
        s = arguments[i];
        for (var p in s)
          if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
      }
      return t;
    };
    return __assign.apply(this, arguments);
  };
  function __rest(s, e) {
    var t = {};
    for (var p in s)
      if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
        t[p] = s[p];
    if (s != null && typeof Object.getOwnPropertySymbols === "function")
      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
        if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
          t[p[i]] = s[p[i]];
      }
    return t;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/utils.js
  function defineProperty(target, name, _a) {
    var value = _a.value;
    Object.defineProperty(target, name, {
      configurable: true,
      enumerable: false,
      writable: true,
      value: value
    });
  }
  var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;
  function invariant(condition, message, Err) {
    if (Err === void 0) {
      Err = Error;
    }
    if (!condition) {
      throw new Err(message);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/utils.js
  var DATE_TIME_PROPS = [
    "weekday",
    "era",
    "year",
    "month",
    "day",
    "hour",
    "minute",
    "second",
    "timeZoneName"
  ];
  var removalPenalty = 120;
  var additionPenalty = 20;
  var differentNumericTypePenalty = 15;
  var longLessPenalty = 8;
  var longMorePenalty = 6;
  var shortLessPenalty = 6;
  var shortMorePenalty = 3;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/types/date-time.js
  var RangePatternType;
  (function(RangePatternType2) {
    RangePatternType2["startRange"] = "startRange";
    RangePatternType2["shared"] = "shared";
    RangePatternType2["endRange"] = "endRange";
  })(RangePatternType || (RangePatternType = {}));

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/skeleton.js
  var DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;
  var expPatternTrimmer = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
  function matchSkeletonPattern(match, result) {
    var len = match.length;
    switch (match[0]) {
      case "G":
        result.era = len === 4 ? "long" : len === 5 ? "narrow" : "short";
        return "{era}";
      case "y":
      case "Y":
      case "u":
      case "U":
      case "r":
        result.year = len === 2 ? "2-digit" : "numeric";
        return "{year}";
      case "q":
      case "Q":
        throw new RangeError("`w/Q` (quarter) patterns are not supported");
      case "M":
      case "L":
        result.month = ["numeric", "2-digit", "short", "long", "narrow"][len - 1];
        return "{month}";
      case "w":
      case "W":
        throw new RangeError("`w/W` (week of year) patterns are not supported");
      case "d":
        result.day = ["numeric", "2-digit"][len - 1];
        return "{day}";
      case "D":
      case "F":
      case "g":
        result.day = "numeric";
        return "{day}";
      case "E":
        result.weekday = len === 4 ? "long" : len === 5 ? "narrow" : "short";
        return "{weekday}";
      case "e":
        result.weekday = [
          void 0,
          void 0,
          "short",
          "long",
          "narrow",
          "short"
        ][len - 1];
        return "{weekday}";
      case "c":
        result.weekday = [
          void 0,
          void 0,
          "short",
          "long",
          "narrow",
          "short"
        ][len - 1];
        return "{weekday}";
      case "a":
      case "b":
      case "B":
        result.hour12 = true;
        return "{ampm}";
      case "h":
        result.hour = ["numeric", "2-digit"][len - 1];
        result.hour12 = true;
        return "{hour}";
      case "H":
        result.hour = ["numeric", "2-digit"][len - 1];
        return "{hour}";
      case "K":
        result.hour = ["numeric", "2-digit"][len - 1];
        result.hour12 = true;
        return "{hour}";
      case "k":
        result.hour = ["numeric", "2-digit"][len - 1];
        return "{hour}";
      case "j":
      case "J":
      case "C":
        throw new RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead");
      case "m":
        result.minute = ["numeric", "2-digit"][len - 1];
        return "{minute}";
      case "s":
        result.second = ["numeric", "2-digit"][len - 1];
        return "{second}";
      case "S":
      case "A":
        result.second = "numeric";
        return "{second}";
      case "z":
      case "Z":
      case "O":
      case "v":
      case "V":
      case "X":
      case "x":
        result.timeZoneName = len < 4 ? "short" : "long";
        return "{timeZoneName}";
    }
    return "";
  }
  function skeletonTokenToTable2(c) {
    switch (c) {
      case "G":
        return "era";
      case "y":
      case "Y":
      case "u":
      case "U":
      case "r":
        return "year";
      case "M":
      case "L":
        return "month";
      case "d":
      case "D":
      case "F":
      case "g":
        return "day";
      case "a":
      case "b":
      case "B":
        return "ampm";
      case "h":
      case "H":
      case "K":
      case "k":
        return "hour";
      case "m":
        return "minute";
      case "s":
      case "S":
      case "A":
        return "second";
      default:
        throw new RangeError("Invalid range pattern token");
    }
  }
  function processDateTimePattern(pattern, result) {
    var literals = [];
    var pattern12 = pattern.replace(/'{2}/g, "{apostrophe}").replace(/'(.*?)'/g, function(_, literal) {
      literals.push(literal);
      return "$$" + (literals.length - 1) + "$$";
    }).replace(DATE_TIME_REGEX, function(m) {
      return matchSkeletonPattern(m, result || {});
    });
    if (literals.length) {
      pattern12 = pattern12.replace(/\$\$(\d+)\$\$/g, function(_, i) {
        return literals[+i];
      }).replace(/\{apostrophe\}/g, "'");
    }
    return [
      pattern12.replace(/([\s\uFEFF\xA0])\{ampm\}([\s\uFEFF\xA0])/, "$1").replace("{ampm}", "").replace(expPatternTrimmer, ""),
      pattern12
    ];
  }
  function parseDateTimeSkeleton(skeleton, rawPattern, rangePatterns, intervalFormatFallback) {
    if (rawPattern === void 0) {
      rawPattern = skeleton;
    }
    var result = {
      pattern: "",
      pattern12: "",
      skeleton: skeleton,
      rawPattern: rawPattern,
      rangePatterns: {},
      rangePatterns12: {}
    };
    if (rangePatterns) {
      for (var k in rangePatterns) {
        var key = skeletonTokenToTable2(k);
        var rawPattern_1 = rangePatterns[k];
        var intervalResult = {
          patternParts: []
        };
        var _a = processDateTimePattern(rawPattern_1, intervalResult), pattern_1 = _a[0], pattern12_1 = _a[1];
        result.rangePatterns[key] = __assign(__assign({}, intervalResult), {patternParts: splitRangePattern(pattern_1)});
        result.rangePatterns12[key] = __assign(__assign({}, intervalResult), {patternParts: splitRangePattern(pattern12_1)});
      }
    } else if (intervalFormatFallback) {
      var patternParts = splitFallbackRangePattern(intervalFormatFallback);
      result.rangePatterns.default = {
        patternParts: patternParts
      };
      result.rangePatterns12.default = {
        patternParts: patternParts
      };
    }
    skeleton.replace(DATE_TIME_REGEX, function(m) {
      return matchSkeletonPattern(m, result);
    });
    var _b = processDateTimePattern(rawPattern), pattern = _b[0], pattern12 = _b[1];
    result.pattern = pattern;
    result.pattern12 = pattern12;
    return result;
  }
  function splitFallbackRangePattern(pattern) {
    var parts = pattern.split(/(\{[0|1]\})/g).filter(Boolean);
    return parts.map(function(pattern2) {
      switch (pattern2) {
        case "{0}":
          return {
            source: RangePatternType.startRange,
            pattern: pattern2
          };
        case "{1}":
          return {
            source: RangePatternType.endRange,
            pattern: pattern2
          };
        default:
          return {
            source: RangePatternType.shared,
            pattern: pattern2
          };
      }
    });
  }
  function splitRangePattern(pattern) {
    var PART_REGEX = /\{(.*?)\}/g;
    var parts = {};
    var match;
    var splitIndex = 0;
    while (match = PART_REGEX.exec(pattern)) {
      if (!(match[0] in parts)) {
        parts[match[0]] = match.index;
      } else {
        splitIndex = match.index;
        break;
      }
    }
    if (!splitIndex) {
      return [
        {
          source: RangePatternType.startRange,
          pattern: pattern
        }
      ];
    }
    return [
      {
        source: RangePatternType.startRange,
        pattern: pattern.slice(0, splitIndex)
      },
      {
        source: RangePatternType.endRange,
        pattern: pattern.slice(splitIndex)
      }
    ];
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/BestFitFormatMatcher.js
  function isNumericType(t) {
    return t === "numeric" || t === "2-digit";
  }
  function bestFitFormatMatcherScore(options, format) {
    var score = 0;
    if (options.hour12 && !format.hour12) {
      score -= removalPenalty;
    } else if (!options.hour12 && format.hour12) {
      score -= additionPenalty;
    }
    for (var _i = 0, DATE_TIME_PROPS_1 = DATE_TIME_PROPS; _i < DATE_TIME_PROPS_1.length; _i++) {
      var prop = DATE_TIME_PROPS_1[_i];
      var optionsProp = options[prop];
      var formatProp = format[prop];
      if (optionsProp === void 0 && formatProp !== void 0) {
        score -= additionPenalty;
      } else if (optionsProp !== void 0 && formatProp === void 0) {
        score -= removalPenalty;
      } else if (optionsProp !== formatProp) {
        if (isNumericType(optionsProp) !== isNumericType(formatProp)) {
          score -= differentNumericTypePenalty;
        } else {
          var values = ["2-digit", "numeric", "narrow", "short", "long"];
          var optionsPropIndex = values.indexOf(optionsProp);
          var formatPropIndex = values.indexOf(formatProp);
          var delta = Math.max(-2, Math.min(formatPropIndex - optionsPropIndex, 2));
          if (delta === 2) {
            score -= longMorePenalty;
          } else if (delta === 1) {
            score -= shortMorePenalty;
          } else if (delta === -1) {
            score -= shortLessPenalty;
          } else if (delta === -2) {
            score -= longLessPenalty;
          }
        }
      }
    }
    return score;
  }
  function BestFitFormatMatcher(options, formats) {
    var bestScore = -Infinity;
    var bestFormat = formats[0];
    invariant(Array.isArray(formats), "formats should be a list of things");
    for (var _i = 0, formats_1 = formats; _i < formats_1.length; _i++) {
      var format = formats_1[_i];
      var score = bestFitFormatMatcherScore(options, format);
      if (score > bestScore) {
        bestScore = score;
        bestFormat = format;
      }
    }
    var skeletonFormat = __assign({}, bestFormat);
    var patternFormat = {rawPattern: bestFormat.rawPattern};
    processDateTimePattern(bestFormat.rawPattern, patternFormat);
    for (var prop in skeletonFormat) {
      var skeletonValue = skeletonFormat[prop];
      var patternValue = patternFormat[prop];
      var requestedValue = options[prop];
      if (prop === "minute" || prop === "second") {
        continue;
      }
      if (!requestedValue) {
        continue;
      }
      if (isNumericType(patternValue) && !isNumericType(requestedValue)) {
        continue;
      }
      if (skeletonValue === requestedValue) {
        continue;
      }
      patternFormat[prop] = requestedValue;
    }
    patternFormat.pattern = skeletonFormat.pattern;
    patternFormat.pattern12 = skeletonFormat.pattern12;
    patternFormat.skeleton = skeletonFormat.skeleton;
    patternFormat.rangePatterns = skeletonFormat.rangePatterns;
    patternFormat.rangePatterns12 = skeletonFormat.rangePatterns12;
    return patternFormat;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/CanonicalizeLocaleList.js
  function CanonicalizeLocaleList(locales) {
    return Intl.getCanonicalLocales(locales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/CanonicalizeTimeZoneName.js
  function CanonicalizeTimeZoneName(tz, _a) {
    var tzData = _a.tzData, uppercaseLinks = _a.uppercaseLinks;
    var uppercasedTz = tz.toUpperCase();
    var uppercasedZones = Object.keys(tzData).reduce(function(all, z) {
      all[z.toUpperCase()] = z;
      return all;
    }, {});
    var ianaTimeZone = uppercaseLinks[uppercasedTz] || uppercasedZones[uppercasedTz];
    if (ianaTimeZone === "Etc/UTC" || ianaTimeZone === "Etc/GMT") {
      return "UTC";
    }
    return ianaTimeZone;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/262.js
  function ToString(o) {
    if (typeof o === "symbol") {
      throw TypeError("Cannot convert a Symbol value to a string");
    }
    return String(o);
  }
  function ToNumber(val) {
    if (val === void 0) {
      return NaN;
    }
    if (val === null) {
      return 0;
    }
    if (typeof val === "boolean") {
      return val ? 1 : 0;
    }
    if (typeof val === "number") {
      return val;
    }
    if (typeof val === "symbol" || typeof val === "bigint") {
      throw new TypeError("Cannot convert symbol/bigint to number");
    }
    return Number(val);
  }
  function ToInteger(n) {
    var number = ToNumber(n);
    if (isNaN(number) || SameValue(number, -0)) {
      return 0;
    }
    if (isFinite(number)) {
      return number;
    }
    var integer = Math.floor(Math.abs(number));
    if (number < 0) {
      integer = -integer;
    }
    if (SameValue(integer, -0)) {
      return 0;
    }
    return integer;
  }
  function TimeClip(time) {
    if (!isFinite(time)) {
      return NaN;
    }
    if (Math.abs(time) > 8.64 * 1e15) {
      return NaN;
    }
    return ToInteger(time);
  }
  function ToObject(arg) {
    if (arg == null) {
      throw new TypeError("undefined/null cannot be converted to object");
    }
    return Object(arg);
  }
  function SameValue(x, y) {
    if (Object.is) {
      return Object.is(x, y);
    }
    if (x === y) {
      return x !== 0 || 1 / x === 1 / y;
    }
    return x !== x && y !== y;
  }
  function ArrayCreate(len) {
    return new Array(len);
  }
  function Type(x) {
    if (x === null) {
      return "Null";
    }
    if (typeof x === "undefined") {
      return "Undefined";
    }
    if (typeof x === "function" || typeof x === "object") {
      return "Object";
    }
    if (typeof x === "number") {
      return "Number";
    }
    if (typeof x === "boolean") {
      return "Boolean";
    }
    if (typeof x === "string") {
      return "String";
    }
    if (typeof x === "symbol") {
      return "Symbol";
    }
    if (typeof x === "bigint") {
      return "BigInt";
    }
  }
  var MS_PER_DAY = 864e5;
  function mod(x, y) {
    return x - Math.floor(x / y) * y;
  }
  function Day(t) {
    return Math.floor(t / MS_PER_DAY);
  }
  function WeekDay(t) {
    return mod(Day(t) + 4, 7);
  }
  function DayFromYear(y) {
    return Date.UTC(y, 0) / MS_PER_DAY;
  }
  function YearFromTime(t) {
    return new Date(t).getUTCFullYear();
  }
  function DaysInYear(y) {
    if (y % 4 !== 0) {
      return 365;
    }
    if (y % 100 !== 0) {
      return 366;
    }
    if (y % 400 !== 0) {
      return 365;
    }
    return 366;
  }
  function DayWithinYear(t) {
    return Day(t) - DayFromYear(YearFromTime(t));
  }
  function InLeapYear(t) {
    return DaysInYear(YearFromTime(t)) === 365 ? 0 : 1;
  }
  function MonthFromTime(t) {
    var dwy = DayWithinYear(t);
    var leap = InLeapYear(t);
    if (dwy >= 0 && dwy < 31) {
      return 0;
    }
    if (dwy < 59 + leap) {
      return 1;
    }
    if (dwy < 90 + leap) {
      return 2;
    }
    if (dwy < 120 + leap) {
      return 3;
    }
    if (dwy < 151 + leap) {
      return 4;
    }
    if (dwy < 181 + leap) {
      return 5;
    }
    if (dwy < 212 + leap) {
      return 6;
    }
    if (dwy < 243 + leap) {
      return 7;
    }
    if (dwy < 273 + leap) {
      return 8;
    }
    if (dwy < 304 + leap) {
      return 9;
    }
    if (dwy < 334 + leap) {
      return 10;
    }
    if (dwy < 365 + leap) {
      return 11;
    }
    throw new Error("Invalid time");
  }
  function DateFromTime(t) {
    var dwy = DayWithinYear(t);
    var mft = MonthFromTime(t);
    var leap = InLeapYear(t);
    if (mft === 0) {
      return dwy + 1;
    }
    if (mft === 1) {
      return dwy - 30;
    }
    if (mft === 2) {
      return dwy - 58 - leap;
    }
    if (mft === 3) {
      return dwy - 89 - leap;
    }
    if (mft === 4) {
      return dwy - 119 - leap;
    }
    if (mft === 5) {
      return dwy - 150 - leap;
    }
    if (mft === 6) {
      return dwy - 180 - leap;
    }
    if (mft === 7) {
      return dwy - 211 - leap;
    }
    if (mft === 8) {
      return dwy - 242 - leap;
    }
    if (mft === 9) {
      return dwy - 272 - leap;
    }
    if (mft === 10) {
      return dwy - 303 - leap;
    }
    if (mft === 11) {
      return dwy - 333 - leap;
    }
    throw new Error("Invalid time");
  }
  var HOURS_PER_DAY = 24;
  var MINUTES_PER_HOUR = 60;
  var SECONDS_PER_MINUTE = 60;
  var MS_PER_SECOND = 1e3;
  var MS_PER_MINUTE = MS_PER_SECOND * SECONDS_PER_MINUTE;
  var MS_PER_HOUR = MS_PER_MINUTE * MINUTES_PER_HOUR;
  function HourFromTime(t) {
    return mod(Math.floor(t / MS_PER_HOUR), HOURS_PER_DAY);
  }
  function MinFromTime(t) {
    return mod(Math.floor(t / MS_PER_MINUTE), MINUTES_PER_HOUR);
  }
  function SecFromTime(t) {
    return mod(Math.floor(t / MS_PER_SECOND), SECONDS_PER_MINUTE);
  }
  function IsCallable(fn) {
    return typeof fn === "function";
  }
  function OrdinaryHasInstance(C, O, internalSlots) {
    if (!IsCallable(C)) {
      return false;
    }
    if (internalSlots === null || internalSlots === void 0 ? void 0 : internalSlots.boundTargetFunction) {
      var BC = internalSlots === null || internalSlots === void 0 ? void 0 : internalSlots.boundTargetFunction;
      return O instanceof BC;
    }
    if (typeof O !== "object") {
      return false;
    }
    var P = C.prototype;
    if (typeof P !== "object") {
      throw new TypeError("OrdinaryHasInstance called on an object with an invalid prototype property.");
    }
    return Object.prototype.isPrototypeOf.call(P, O);
  }
  function msFromTime(t) {
    return mod(t, MS_PER_SECOND);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/BasicFormatMatcher.js
  function BasicFormatMatcher(options, formats) {
    var bestScore = -Infinity;
    var bestFormat = formats[0];
    invariant(Array.isArray(formats), "formats should be a list of things");
    for (var _i = 0, formats_1 = formats; _i < formats_1.length; _i++) {
      var format = formats_1[_i];
      var score = 0;
      for (var _a = 0, DATE_TIME_PROPS_1 = DATE_TIME_PROPS; _a < DATE_TIME_PROPS_1.length; _a++) {
        var prop = DATE_TIME_PROPS_1[_a];
        var optionsProp = options[prop];
        var formatProp = format[prop];
        if (optionsProp === void 0 && formatProp !== void 0) {
          score -= additionPenalty;
        } else if (optionsProp !== void 0 && formatProp === void 0) {
          score -= removalPenalty;
        } else if (optionsProp !== formatProp) {
          var values = void 0;
          if (prop === "fractionalSecondDigits") {
            values = [1, 2, 3];
          } else {
            values = ["2-digit", "numeric", "narrow", "short", "long"];
          }
          var optionsPropIndex = values.indexOf(optionsProp);
          var formatPropIndex = values.indexOf(formatProp);
          var delta = Math.max(-2, Math.min(formatPropIndex - optionsPropIndex, 2));
          if (delta === 2) {
            score -= longMorePenalty;
          } else if (delta === 1) {
            score -= shortMorePenalty;
          } else if (delta === -1) {
            score -= shortLessPenalty;
          } else if (delta === -2) {
            score -= longLessPenalty;
          }
        }
      }
      if (score > bestScore) {
        bestScore = score;
        bestFormat = format;
      }
    }
    return __assign({}, bestFormat);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/DateTimeStyleFormat.js
  function DateTimeStyleFormat(dateStyle, timeStyle, dataLocaleData) {
    var dateFormat, timeFormat;
    if (timeStyle !== void 0) {
      invariant(timeStyle === "full" || timeStyle === "long" || timeStyle === "medium" || timeStyle === "short", "invalid timeStyle");
      timeFormat = dataLocaleData.timeFormat[timeStyle];
    }
    if (dateStyle !== void 0) {
      invariant(dateStyle === "full" || dateStyle === "long" || dateStyle === "medium" || dateStyle === "short", "invalid dateStyle");
      dateFormat = dataLocaleData.dateFormat[dateStyle];
    }
    if (dateStyle !== void 0 && timeStyle !== void 0) {
      var format = {};
      for (var field in dateFormat) {
        if (field !== "pattern") {
          format[field] = dateFormat[field];
        }
      }
      for (var field in timeFormat) {
        if (field !== "pattern" && field !== "pattern12") {
          format[field] = timeFormat[field];
        }
      }
      var connector = dataLocaleData.dateTimeFormat[dateStyle];
      var pattern = connector.replace("{0}", timeFormat.pattern).replace("{1}", dateFormat.pattern);
      format.pattern = pattern;
      if ("pattern12" in timeFormat) {
        var pattern12 = connector.replace("{0}", timeFormat.pattern12).replace("{1}", dateFormat.pattern);
        format.pattern12 = pattern12;
      }
      return format;
    }
    if (timeStyle !== void 0) {
      return timeFormat;
    }
    invariant(dateStyle !== void 0, "dateStyle should not be undefined");
    return dateFormat;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/ToLocalTime.js
  function getApplicableZoneData(t, timeZone, tzData) {
    var _a;
    var zoneData = tzData[timeZone];
    if (!zoneData) {
      return [0, false];
    }
    var i = 0;
    var offset = 0;
    var dst = false;
    for (; i <= zoneData.length; i++) {
      if (i === zoneData.length || zoneData[i][0] * 1e3 > t) {
        ;
        _a = zoneData[i - 1], offset = _a[2], dst = _a[3];
        break;
      }
    }
    return [offset * 1e3, dst];
  }
  function ToLocalTime(t, calendar, timeZone, _a) {
    var tzData = _a.tzData;
    invariant(Type(t) === "Number", "invalid time");
    invariant(calendar === "gregory", "We only support Gregory calendar right now");
    var _b = getApplicableZoneData(t, timeZone, tzData), timeZoneOffset = _b[0], inDST = _b[1];
    var tz = t + timeZoneOffset;
    var year = YearFromTime(tz);
    return {
      weekday: WeekDay(tz),
      era: year < 0 ? "BC" : "AD",
      year: year,
      relatedYear: void 0,
      yearName: void 0,
      month: MonthFromTime(tz),
      day: DateFromTime(tz),
      hour: HourFromTime(tz),
      minute: MinFromTime(tz),
      second: SecFromTime(tz),
      millisecond: msFromTime(tz),
      inDST: inDST,
      timeZoneOffset: timeZoneOffset
    };
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/FormatDateTimePattern.js
  function pad(n) {
    if (n < 10) {
      return "0" + n;
    }
    return String(n);
  }
  function offsetToGmtString(gmtFormat, hourFormat, offsetInMs, style) {
    var offsetInMinutes = Math.floor(offsetInMs / 6e4);
    var mins = Math.abs(offsetInMinutes) % 60;
    var hours = Math.floor(Math.abs(offsetInMinutes) / 60);
    var _a = hourFormat.split(";"), positivePattern = _a[0], negativePattern = _a[1];
    var offsetStr = "";
    var pattern = offsetInMs < 0 ? negativePattern : positivePattern;
    if (style === "long") {
      offsetStr = pattern.replace("HH", pad(hours)).replace("H", String(hours)).replace("mm", pad(mins)).replace("m", String(mins));
    } else if (mins || hours) {
      if (!mins) {
        pattern = pattern.replace(/:?m+/, "");
      }
      offsetStr = pattern.replace(/H+/, String(hours)).replace(/m+/, String(mins));
    }
    return gmtFormat.replace("{0}", offsetStr);
  }
  function FormatDateTimePattern(dtf, patternParts, x, _a) {
    var getInternalSlots2 = _a.getInternalSlots, localeData = _a.localeData, getDefaultTimeZone = _a.getDefaultTimeZone, tzData = _a.tzData;
    x = TimeClip(x);
    var internalSlots = getInternalSlots2(dtf);
    var dataLocale = internalSlots.dataLocale;
    var dataLocaleData = localeData[dataLocale];
    var locale = internalSlots.locale;
    var nfOptions = Object.create(null);
    nfOptions.useGrouping = false;
    var nf = new Intl.NumberFormat(locale, nfOptions);
    var nf2Options = Object.create(null);
    nf2Options.minimumIntegerDigits = 2;
    nf2Options.useGrouping = false;
    var nf2 = new Intl.NumberFormat(locale, nf2Options);
    var fractionalSecondDigits = internalSlots.fractionalSecondDigits;
    var nf3;
    if (fractionalSecondDigits !== void 0) {
      var nf3Options = Object.create(null);
      nf3Options.minimumIntegerDigits = fractionalSecondDigits;
      nf3Options.useGrouping = false;
      nf3 = new Intl.NumberFormat(locale, nf3Options);
    }
    var tm = ToLocalTime(x, internalSlots.calendar, internalSlots.timeZone, {tzData: tzData});
    var result = [];
    for (var _i = 0, patternParts_1 = patternParts; _i < patternParts_1.length; _i++) {
      var patternPart = patternParts_1[_i];
      var p = patternPart.type;
      if (p === "literal") {
        result.push({
          type: "literal",
          value: patternPart.value
        });
      } else if (p === "fractionalSecondDigits") {
        var v = Math.floor(tm.millisecond * Math.pow(10, (fractionalSecondDigits || 0) - 3));
        result.push({
          type: "fractionalSecond",
          value: nf3.format(v)
        });
      } else if (DATE_TIME_PROPS.indexOf(p) > -1) {
        var fv = "";
        var f = internalSlots[p];
        var v = tm[p];
        if (p === "year" && v <= 0) {
          v = 1 - v;
        }
        if (p === "month") {
          v++;
        }
        var hourCycle = internalSlots.hourCycle;
        if (p === "hour" && (hourCycle === "h11" || hourCycle === "h12")) {
          v = v % 12;
          if (v === 0 && hourCycle === "h12") {
            v = 12;
          }
        }
        if (p === "hour" && hourCycle === "h24") {
          if (v === 0) {
            v = 24;
          }
        }
        if (f === "numeric") {
          fv = nf.format(v);
        } else if (f === "2-digit") {
          fv = nf2.format(v);
          if (fv.length > 2) {
            fv = fv.slice(fv.length - 2, fv.length);
          }
        } else if (f === "narrow" || f === "short" || f === "long") {
          if (p === "era") {
            fv = dataLocaleData[p][f][v];
          } else if (p === "timeZoneName") {
            var timeZoneName = dataLocaleData.timeZoneName, gmtFormat = dataLocaleData.gmtFormat, hourFormat = dataLocaleData.hourFormat;
            var timeZone = internalSlots.timeZone || getDefaultTimeZone();
            var timeZoneData = timeZoneName[timeZone];
            if (timeZoneData && timeZoneData[f]) {
              fv = timeZoneData[f][+tm.inDST];
            } else {
              fv = offsetToGmtString(gmtFormat, hourFormat, tm.timeZoneOffset, f);
            }
          } else if (p === "month") {
            fv = dataLocaleData.month[f][v - 1];
          } else {
            fv = dataLocaleData[p][f][v];
          }
        }
        result.push({
          type: p,
          value: fv
        });
      } else if (p === "ampm") {
        var v = tm.hour;
        var fv = void 0;
        if (v > 11) {
          fv = dataLocaleData.pm;
        } else {
          fv = dataLocaleData.am;
        }
        result.push({
          type: "dayPeriod",
          value: fv
        });
      } else if (p === "relatedYear") {
        var v = tm.relatedYear;
        var fv = nf.format(v);
        result.push({
          type: "relatedYear",
          value: fv
        });
      } else if (p === "yearName") {
        var v = tm.yearName;
        var fv = nf.format(v);
        result.push({
          type: "yearName",
          value: fv
        });
      }
    }
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/PartitionPattern.js
  function PartitionPattern(pattern) {
    var result = [];
    var beginIndex = pattern.indexOf("{");
    var endIndex = 0;
    var nextIndex = 0;
    var length = pattern.length;
    while (beginIndex < pattern.length && beginIndex > -1) {
      endIndex = pattern.indexOf("}", beginIndex);
      invariant(endIndex > beginIndex, "Invalid pattern " + pattern);
      if (beginIndex > nextIndex) {
        result.push({
          type: "literal",
          value: pattern.substring(nextIndex, beginIndex)
        });
      }
      result.push({
        type: pattern.substring(beginIndex + 1, endIndex),
        value: void 0
      });
      nextIndex = endIndex + 1;
      beginIndex = pattern.indexOf("{", nextIndex);
    }
    if (nextIndex < length) {
      result.push({
        type: "literal",
        value: pattern.substring(nextIndex, length)
      });
    }
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/PartitionDateTimePattern.js
  function PartitionDateTimePattern(dtf, x, implDetails) {
    x = TimeClip(x);
    if (isNaN(x)) {
      throw new RangeError("invalid time");
    }
    var getInternalSlots2 = implDetails.getInternalSlots;
    var internalSlots = getInternalSlots2(dtf);
    var pattern = internalSlots.pattern;
    return FormatDateTimePattern(dtf, PartitionPattern(pattern), x, implDetails);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/FormatDateTime.js
  function FormatDateTime(dtf, x, implDetails) {
    var parts = PartitionDateTimePattern(dtf, x, implDetails);
    var result = "";
    for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {
      var part = parts_1[_i];
      result += part.value;
    }
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/PartitionDateTimeRangePattern.js
  var TABLE_2_FIELDS = [
    "era",
    "year",
    "month",
    "day",
    "ampm",
    "hour",
    "minute",
    "second",
    "fractionalSecondDigits"
  ];
  function PartitionDateTimeRangePattern(dtf, x, y, implDetails) {
    x = TimeClip(x);
    if (isNaN(x)) {
      throw new RangeError("Invalid start time");
    }
    y = TimeClip(y);
    if (isNaN(y)) {
      throw new RangeError("Invalid end time");
    }
    var getInternalSlots2 = implDetails.getInternalSlots, tzData = implDetails.tzData;
    var internalSlots = getInternalSlots2(dtf);
    var tm1 = ToLocalTime(x, internalSlots.calendar, internalSlots.timeZone, {tzData: tzData});
    var tm2 = ToLocalTime(y, internalSlots.calendar, internalSlots.timeZone, {tzData: tzData});
    var pattern = internalSlots.pattern, rangePatterns = internalSlots.rangePatterns;
    var rangePattern;
    var dateFieldsPracticallyEqual = true;
    var patternContainsLargerDateField = false;
    for (var _i = 0, TABLE_2_FIELDS_1 = TABLE_2_FIELDS; _i < TABLE_2_FIELDS_1.length; _i++) {
      var fieldName = TABLE_2_FIELDS_1[_i];
      if (dateFieldsPracticallyEqual && !patternContainsLargerDateField) {
        if (fieldName === "ampm") {
          var rp = rangePatterns.ampm;
          if (rangePattern !== void 0 && rp === void 0) {
            patternContainsLargerDateField = true;
          } else {
            var v1 = tm1.hour;
            var v2 = tm2.hour;
            if (v1 > 11 && v2 < 11 || v1 < 11 && v2 > 11) {
              dateFieldsPracticallyEqual = false;
            }
            rangePattern = rp;
          }
        } else if (fieldName === "fractionalSecondDigits") {
          var fractionalSecondDigits = internalSlots.fractionalSecondDigits;
          if (fractionalSecondDigits === void 0) {
            fractionalSecondDigits = 3;
          }
          var v1 = Math.floor(tm1.millisecond * Math.pow(10, fractionalSecondDigits - 3));
          var v2 = Math.floor(tm2.millisecond * Math.pow(10, fractionalSecondDigits - 3));
          if (v1 !== v2) {
            dateFieldsPracticallyEqual = false;
          }
        } else {
          var rp = rangePatterns[fieldName];
          if (rangePattern !== void 0 && rp === void 0) {
            patternContainsLargerDateField = true;
          } else {
            var v1 = tm1[fieldName];
            var v2 = tm2[fieldName];
            if (!SameValue(v1, v2)) {
              dateFieldsPracticallyEqual = false;
            }
            rangePattern = rp;
          }
        }
      }
    }
    if (dateFieldsPracticallyEqual) {
      var result_2 = FormatDateTimePattern(dtf, PartitionPattern(pattern), x, implDetails);
      for (var _a = 0, result_1 = result_2; _a < result_1.length; _a++) {
        var r = result_1[_a];
        r.source = RangePatternType.shared;
      }
      return result_2;
    }
    var result = [];
    if (rangePattern === void 0) {
      rangePattern = rangePatterns.default;
      for (var _b = 0, _c = rangePattern.patternParts; _b < _c.length; _b++) {
        var patternPart = _c[_b];
        if (patternPart.pattern === "{0}" || patternPart.pattern === "{1}") {
          patternPart.pattern = pattern;
        }
      }
    }
    for (var _d = 0, _e = rangePattern.patternParts; _d < _e.length; _d++) {
      var rangePatternPart = _e[_d];
      var source = rangePatternPart.source, pattern_1 = rangePatternPart.pattern;
      var z = void 0;
      if (source === RangePatternType.startRange || source === RangePatternType.shared) {
        z = x;
      } else {
        z = y;
      }
      var patternParts = PartitionPattern(pattern_1);
      var partResult = FormatDateTimePattern(dtf, patternParts, z, implDetails);
      for (var _f = 0, partResult_1 = partResult; _f < partResult_1.length; _f++) {
        var r = partResult_1[_f];
        r.source = source;
      }
      result = result.concat(partResult);
    }
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/FormatDateTimeRange.js
  function FormatDateTimeRange(dtf, x, y, implDetails) {
    var parts = PartitionDateTimeRangePattern(dtf, x, y, implDetails);
    var result = "";
    for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {
      var part = parts_1[_i];
      result += part.value;
    }
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/FormatDateTimeRangeToParts.js
  function FormatDateTimeRangeToParts(dtf, x, y, implDetails) {
    var parts = PartitionDateTimeRangePattern(dtf, x, y, implDetails);
    var result = new Array(0);
    for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {
      var part = parts_1[_i];
      result.push({
        type: part.type,
        value: part.value,
        source: part.source
      });
    }
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/FormatDateTimeToParts.js
  function FormatDateTimeToParts(dtf, x, implDetails) {
    var parts = PartitionDateTimePattern(dtf, x, implDetails);
    var result = ArrayCreate(0);
    for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {
      var part = parts_1[_i];
      result.push({
        type: part.type,
        value: part.value
      });
    }
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/ToDateTimeOptions.js
  function ToDateTimeOptions(options, required, defaults) {
    if (options === void 0) {
      options = null;
    } else {
      options = ToObject(options);
    }
    options = Object.create(options);
    var needDefaults = true;
    if (required === "date" || required === "any") {
      for (var _i = 0, _a = ["weekday", "year", "month", "day"]; _i < _a.length; _i++) {
        var prop = _a[_i];
        var value = options[prop];
        if (value !== void 0) {
          needDefaults = false;
        }
      }
    }
    if (required === "time" || required === "any") {
      for (var _b = 0, _c = [
        "dayPeriod",
        "hour",
        "minute",
        "second",
        "fractionalSecondDigits"
      ]; _b < _c.length; _b++) {
        var prop = _c[_b];
        var value = options[prop];
        if (value !== void 0) {
          needDefaults = false;
        }
      }
    }
    if (options.dateStyle !== void 0 || options.timeStyle !== void 0) {
      needDefaults = false;
    }
    if (required === "date" && options.timeStyle) {
      throw new TypeError("Intl.DateTimeFormat date was required but timeStyle was included");
    }
    if (required === "time" && options.dateStyle) {
      throw new TypeError("Intl.DateTimeFormat time was required but dateStyle was included");
    }
    if (needDefaults && (defaults === "date" || defaults === "all")) {
      for (var _d = 0, _e = ["year", "month", "day"]; _d < _e.length; _d++) {
        var prop = _e[_d];
        options[prop] = "numeric";
      }
    }
    if (needDefaults && (defaults === "time" || defaults === "all")) {
      for (var _f = 0, _g = ["hour", "minute", "second"]; _f < _g.length; _f++) {
        var prop = _g[_f];
        options[prop] = "numeric";
      }
    }
    return options;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetOption.js
  function GetOption(opts, prop, type, values, fallback) {
    if (typeof opts !== "object") {
      throw new TypeError("Options must be an object");
    }
    var value = opts[prop];
    if (value !== void 0) {
      if (type !== "boolean" && type !== "string") {
        throw new TypeError("invalid type");
      }
      if (type === "boolean") {
        value = Boolean(value);
      }
      if (type === "string") {
        value = ToString(value);
      }
      if (values !== void 0 && !values.filter(function(val) {
        return val == value;
      }).length) {
        throw new RangeError(value + " is not within " + values.join(", "));
      }
      return value;
    }
    return fallback;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestAvailableLocale.js
  function BestAvailableLocale(availableLocales, locale) {
    var candidate = locale;
    while (true) {
      if (availableLocales.has(candidate)) {
        return candidate;
      }
      var pos = candidate.lastIndexOf("-");
      if (!~pos) {
        return void 0;
      }
      if (pos >= 2 && candidate[pos - 2] === "-") {
        pos -= 2;
      }
      candidate = candidate.slice(0, pos);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupMatcher.js
  function LookupMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var result = {locale: ""};
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        result.locale = availableLocale;
        if (locale !== noExtensionLocale) {
          result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);
        }
        return result;
      }
    }
    result.locale = getDefaultLocale();
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestFitMatcher.js
  function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var minimizedAvailableLocaleMap = {};
    var minimizedAvailableLocales = new Set();
    availableLocales.forEach(function(locale2) {
      var minimizedLocale = new Intl.Locale(locale2).minimize().toString();
      minimizedAvailableLocaleMap[minimizedLocale] = locale2;
      minimizedAvailableLocales.add(minimizedLocale);
    });
    var foundLocale;
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var l = requestedLocales_1[_i];
      if (foundLocale) {
        break;
      }
      var noExtensionLocale = l.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      if (availableLocales.has(noExtensionLocale)) {
        foundLocale = noExtensionLocale;
        break;
      }
      if (minimizedAvailableLocales.has(noExtensionLocale)) {
        foundLocale = minimizedAvailableLocaleMap[noExtensionLocale];
        break;
      }
      var locale = new Intl.Locale(noExtensionLocale);
      var maximizedRequestedLocale = locale.maximize().toString();
      var minimizedRequestedLocale = locale.minimize().toString();
      if (minimizedAvailableLocales.has(minimizedRequestedLocale)) {
        foundLocale = minimizedAvailableLocaleMap[minimizedRequestedLocale];
        break;
      }
      foundLocale = BestAvailableLocale(minimizedAvailableLocales, maximizedRequestedLocale);
    }
    return {
      locale: foundLocale || getDefaultLocale()
    };
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/UnicodeExtensionValue.js
  function UnicodeExtensionValue(extension, key) {
    invariant(key.length === 2, "key must have 2 elements");
    var size = extension.length;
    var searchValue = "-" + key + "-";
    var pos = extension.indexOf(searchValue);
    if (pos !== -1) {
      var start = pos + 4;
      var end = start;
      var k = start;
      var done = false;
      while (!done) {
        var e = extension.indexOf("-", k);
        var len = void 0;
        if (e === -1) {
          len = size - k;
        } else {
          len = e - k;
        }
        if (len === 2) {
          done = true;
        } else if (e === -1) {
          end = size;
          done = true;
        } else {
          end = e;
          k = e + 1;
        }
      }
      return extension.slice(start, end);
    }
    searchValue = "-" + key;
    pos = extension.indexOf(searchValue);
    if (pos !== -1 && pos + 3 === size) {
      return "";
    }
    return void 0;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/ResolveLocale.js
  function ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData, getDefaultLocale) {
    var matcher = options.localeMatcher;
    var r;
    if (matcher === "lookup") {
      r = LookupMatcher(availableLocales, requestedLocales, getDefaultLocale);
    } else {
      r = BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale);
    }
    var foundLocale = r.locale;
    var result = {locale: "", dataLocale: foundLocale};
    var supportedExtension = "-u";
    for (var _i = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _i < relevantExtensionKeys_1.length; _i++) {
      var key = relevantExtensionKeys_1[_i];
      invariant(foundLocale in localeData, "Missing locale data for " + foundLocale);
      var foundLocaleData = localeData[foundLocale];
      invariant(typeof foundLocaleData === "object" && foundLocaleData !== null, "locale data " + key + " must be an object");
      var keyLocaleData = foundLocaleData[key];
      invariant(Array.isArray(keyLocaleData), "keyLocaleData for " + key + " must be an array");
      var value = keyLocaleData[0];
      invariant(typeof value === "string" || value === null, "value must be string or null but got " + typeof value + " in key " + key);
      var supportedExtensionAddition = "";
      if (r.extension) {
        var requestedValue = UnicodeExtensionValue(r.extension, key);
        if (requestedValue !== void 0) {
          if (requestedValue !== "") {
            if (~keyLocaleData.indexOf(requestedValue)) {
              value = requestedValue;
              supportedExtensionAddition = "-" + key + "-" + value;
            }
          } else if (~requestedValue.indexOf("true")) {
            value = "true";
            supportedExtensionAddition = "-" + key;
          }
        }
      }
      if (key in options) {
        var optionsValue = options[key];
        invariant(typeof optionsValue === "string" || typeof optionsValue === "undefined" || optionsValue === null, "optionsValue must be String, Undefined or Null");
        if (~keyLocaleData.indexOf(optionsValue)) {
          if (optionsValue !== value) {
            value = optionsValue;
            supportedExtensionAddition = "";
          }
        }
      }
      result[key] = value;
      supportedExtension += supportedExtensionAddition;
    }
    if (supportedExtension.length > 2) {
      var privateIndex = foundLocale.indexOf("-x-");
      if (privateIndex === -1) {
        foundLocale = foundLocale + supportedExtension;
      } else {
        var preExtension = foundLocale.slice(0, privateIndex);
        var postExtension = foundLocale.slice(privateIndex, foundLocale.length);
        foundLocale = preExtension + supportedExtension + postExtension;
      }
      foundLocale = Intl.getCanonicalLocales(foundLocale)[0];
    }
    result.locale = foundLocale;
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/IsValidTimeZoneName.js
  function IsValidTimeZoneName(tz, _a) {
    var tzData = _a.tzData, uppercaseLinks = _a.uppercaseLinks;
    var uppercasedTz = tz.toUpperCase();
    var zoneNames = new Set();
    Object.keys(tzData).map(function(z) {
      return z.toUpperCase();
    }).forEach(function(z) {
      return zoneNames.add(z);
    });
    return zoneNames.has(uppercasedTz) || uppercasedTz in uppercaseLinks;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DefaultNumberOption.js
  function DefaultNumberOption(val, min, max, fallback) {
    if (val !== void 0) {
      val = Number(val);
      if (isNaN(val) || val < min || val > max) {
        throw new RangeError(val + " is outside of range [" + min + ", " + max + "]");
      }
      return Math.floor(val);
    }
    return fallback;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetNumberOption.js
  function GetNumberOption(options, property, minimum, maximum, fallback) {
    var val = options[property];
    return DefaultNumberOption(val, minimum, maximum, fallback);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/DateTimeFormat/InitializeDateTimeFormat.js
  function isTimeRelated(opt) {
    for (var _i = 0, _a = ["hour", "minute", "second"]; _i < _a.length; _i++) {
      var prop = _a[_i];
      var value = opt[prop];
      if (value !== void 0) {
        return true;
      }
    }
    return false;
  }
  function resolveHourCycle(hc, hcDefault, hour12) {
    if (hc == null) {
      hc = hcDefault;
    }
    if (hour12 !== void 0) {
      if (hour12) {
        if (hcDefault === "h11" || hcDefault === "h23") {
          hc = "h11";
        } else {
          hc = "h12";
        }
      } else {
        invariant(!hour12, "hour12 must not be set");
        if (hcDefault === "h11" || hcDefault === "h23") {
          hc = "h23";
        } else {
          hc = "h24";
        }
      }
    }
    return hc;
  }
  var TYPE_REGEX = /^[a-z0-9]{3,8}$/i;
  function InitializeDateTimeFormat(dtf, locales, opts, _a) {
    var getInternalSlots2 = _a.getInternalSlots, availableLocales = _a.availableLocales, localeData = _a.localeData, getDefaultLocale = _a.getDefaultLocale, getDefaultTimeZone = _a.getDefaultTimeZone, relevantExtensionKeys = _a.relevantExtensionKeys, tzData = _a.tzData, uppercaseLinks = _a.uppercaseLinks;
    var requestedLocales = CanonicalizeLocaleList(locales);
    var options = ToDateTimeOptions(opts, "any", "date");
    var opt = Object.create(null);
    var matcher = GetOption(options, "localeMatcher", "string", ["lookup", "best fit"], "best fit");
    opt.localeMatcher = matcher;
    var calendar = GetOption(options, "calendar", "string", void 0, void 0);
    if (calendar !== void 0 && !TYPE_REGEX.test(calendar)) {
      throw new RangeError("Malformed calendar");
    }
    var internalSlots = getInternalSlots2(dtf);
    opt.ca = calendar;
    var numberingSystem = GetOption(options, "numberingSystem", "string", void 0, void 0);
    if (numberingSystem !== void 0 && !TYPE_REGEX.test(numberingSystem)) {
      throw new RangeError("Malformed numbering system");
    }
    opt.nu = numberingSystem;
    var hour12 = GetOption(options, "hour12", "boolean", void 0, void 0);
    var hourCycle = GetOption(options, "hourCycle", "string", ["h11", "h12", "h23", "h24"], void 0);
    if (hour12 !== void 0) {
      hourCycle = null;
    }
    opt.hc = hourCycle;
    var r = ResolveLocale(availableLocales, requestedLocales, opt, relevantExtensionKeys, localeData, getDefaultLocale);
    internalSlots.locale = r.locale;
    calendar = r.ca;
    internalSlots.calendar = calendar;
    internalSlots.hourCycle = r.hc;
    internalSlots.numberingSystem = r.nu;
    var dataLocale = r.dataLocale;
    internalSlots.dataLocale = dataLocale;
    var timeZone = options.timeZone;
    if (timeZone !== void 0) {
      timeZone = String(timeZone);
      if (!IsValidTimeZoneName(timeZone, {tzData: tzData, uppercaseLinks: uppercaseLinks})) {
        throw new RangeError("Invalid timeZoneName");
      }
      timeZone = CanonicalizeTimeZoneName(timeZone, {tzData: tzData, uppercaseLinks: uppercaseLinks});
    } else {
      timeZone = getDefaultTimeZone();
    }
    internalSlots.timeZone = timeZone;
    opt = Object.create(null);
    opt.weekday = GetOption(options, "weekday", "string", ["narrow", "short", "long"], void 0);
    opt.era = GetOption(options, "era", "string", ["narrow", "short", "long"], void 0);
    opt.year = GetOption(options, "year", "string", ["2-digit", "numeric"], void 0);
    opt.month = GetOption(options, "month", "string", ["2-digit", "numeric", "narrow", "short", "long"], void 0);
    opt.day = GetOption(options, "day", "string", ["2-digit", "numeric"], void 0);
    opt.hour = GetOption(options, "hour", "string", ["2-digit", "numeric"], void 0);
    opt.minute = GetOption(options, "minute", "string", ["2-digit", "numeric"], void 0);
    opt.second = GetOption(options, "second", "string", ["2-digit", "numeric"], void 0);
    opt.timeZoneName = GetOption(options, "timeZoneName", "string", ["short", "long"], void 0);
    opt.fractionalSecondDigits = GetNumberOption(options, "fractionalSecondDigits", 1, 3, void 0);
    var dataLocaleData = localeData[dataLocale];
    invariant(!!dataLocaleData, "Missing locale data for " + dataLocale);
    var formats = dataLocaleData.formats[calendar];
    if (!formats) {
      throw new RangeError('Calendar "' + calendar + '" is not supported. Try setting "calendar" to 1 of the following: ' + Object.keys(dataLocaleData.formats).join(", "));
    }
    var formatMatcher = GetOption(options, "formatMatcher", "string", ["basic", "best fit"], "best fit");
    var dateStyle = GetOption(options, "dateStyle", "string", ["full", "long", "medium", "short"], void 0);
    internalSlots.dateStyle = dateStyle;
    var timeStyle = GetOption(options, "timeStyle", "string", ["full", "long", "medium", "short"], void 0);
    internalSlots.timeStyle = timeStyle;
    var bestFormat;
    if (dateStyle === void 0 && timeStyle === void 0) {
      if (formatMatcher === "basic") {
        bestFormat = BasicFormatMatcher(opt, formats);
      } else {
        if (isTimeRelated(opt)) {
          var hc = resolveHourCycle(internalSlots.hourCycle, dataLocaleData.hourCycle, hour12);
          opt.hour12 = hc === "h11" || hc === "h12";
        }
        bestFormat = BestFitFormatMatcher(opt, formats);
      }
    } else {
      for (var _i = 0, DATE_TIME_PROPS_1 = DATE_TIME_PROPS; _i < DATE_TIME_PROPS_1.length; _i++) {
        var prop = DATE_TIME_PROPS_1[_i];
        var p = opt[prop];
        if (p !== void 0) {
          throw new TypeError("Intl.DateTimeFormat can't set option " + prop + " when " + (dateStyle ? "dateStyle" : "timeStyle") + " is used");
        }
      }
      bestFormat = DateTimeStyleFormat(dateStyle, timeStyle, dataLocaleData);
    }
    internalSlots.format = bestFormat;
    for (var prop in opt) {
      var p = bestFormat[prop];
      if (p !== void 0) {
        internalSlots[prop] = p;
      }
    }
    var pattern;
    var rangePatterns;
    if (internalSlots.hour !== void 0) {
      var hc = resolveHourCycle(internalSlots.hourCycle, dataLocaleData.hourCycle, hour12);
      internalSlots.hourCycle = hc;
      if (hc === "h11" || hc === "h12") {
        pattern = bestFormat.pattern12;
        rangePatterns = bestFormat.rangePatterns12;
      } else {
        pattern = bestFormat.pattern;
        rangePatterns = bestFormat.rangePatterns;
      }
    } else {
      internalSlots.hourCycle = void 0;
      pattern = bestFormat.pattern;
      rangePatterns = bestFormat.rangePatterns;
    }
    internalSlots.pattern = pattern;
    internalSlots.rangePatterns = rangePatterns;
    return dtf;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/IsSanctionedSimpleUnitIdentifier.js
  var SANCTIONED_UNITS = [
    "angle-degree",
    "area-acre",
    "area-hectare",
    "concentr-percent",
    "digital-bit",
    "digital-byte",
    "digital-gigabit",
    "digital-gigabyte",
    "digital-kilobit",
    "digital-kilobyte",
    "digital-megabit",
    "digital-megabyte",
    "digital-petabyte",
    "digital-terabit",
    "digital-terabyte",
    "duration-day",
    "duration-hour",
    "duration-millisecond",
    "duration-minute",
    "duration-month",
    "duration-second",
    "duration-week",
    "duration-year",
    "length-centimeter",
    "length-foot",
    "length-inch",
    "length-kilometer",
    "length-meter",
    "length-mile-scandinavian",
    "length-mile",
    "length-millimeter",
    "length-yard",
    "mass-gram",
    "mass-kilogram",
    "mass-ounce",
    "mass-pound",
    "mass-stone",
    "temperature-celsius",
    "temperature-fahrenheit",
    "volume-fluid-ounce",
    "volume-gallon",
    "volume-liter",
    "volume-milliliter"
  ];
  function removeUnitNamespace(unit) {
    return unit.slice(unit.indexOf("-") + 1);
  }
  var SIMPLE_UNITS = SANCTIONED_UNITS.map(removeUnitNamespace);

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/regex.generated.js
  var S_UNICODE_REGEX = /[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]/;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/format_to_parts.js
  var CARET_S_UNICODE_REGEX = new RegExp("^" + S_UNICODE_REGEX.source);
  var S_DOLLAR_UNICODE_REGEX = new RegExp(S_UNICODE_REGEX.source + "$");

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupSupportedLocales.js
  function LookupSupportedLocales(availableLocales, requestedLocales) {
    var subset = [];
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        subset.push(availableLocale);
      }
    }
    return subset;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/SupportedLocales.js
  function SupportedLocales(availableLocales, requestedLocales, options) {
    var matcher = "best fit";
    if (options !== void 0) {
      options = ToObject(options);
      matcher = GetOption(options, "localeMatcher", "string", ["lookup", "best fit"], "best fit");
    }
    if (matcher === "best fit") {
      return LookupSupportedLocales(availableLocales, requestedLocales);
    }
    return LookupSupportedLocales(availableLocales, requestedLocales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/data.js
  var MissingLocaleDataError = function(_super) {
    __extends(MissingLocaleDataError2, _super);
    function MissingLocaleDataError2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.type = "MISSING_LOCALE_DATA";
      return _this;
    }
    return MissingLocaleDataError2;
  }(Error);

  // bazel-out/darwin-fastbuild/bin/packages/intl-datetimeformat/lib/src/get_internal_slots.js
  var internalSlotMap = new WeakMap();
  function getInternalSlots(x) {
    var internalSlots = internalSlotMap.get(x);
    if (!internalSlots) {
      internalSlots = Object.create(null);
      internalSlotMap.set(x, internalSlots);
    }
    return internalSlots;
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-datetimeformat/lib/src/data/links.js
  var links_default = {
    "Africa/Asmera": "Africa/Nairobi",
    "Africa/Timbuktu": "Africa/Abidjan",
    "America/Argentina/ComodRivadavia": "America/Argentina/Catamarca",
    "America/Atka": "America/Adak",
    "America/Buenos_Aires": "America/Argentina/Buenos_Aires",
    "America/Catamarca": "America/Argentina/Catamarca",
    "America/Coral_Harbour": "America/Atikokan",
    "America/Cordoba": "America/Argentina/Cordoba",
    "America/Ensenada": "America/Tijuana",
    "America/Fort_Wayne": "America/Indiana/Indianapolis",
    "America/Godthab": "America/Nuuk",
    "America/Indianapolis": "America/Indiana/Indianapolis",
    "America/Jujuy": "America/Argentina/Jujuy",
    "America/Knox_IN": "America/Indiana/Knox",
    "America/Louisville": "America/Kentucky/Louisville",
    "America/Mendoza": "America/Argentina/Mendoza",
    "America/Montreal": "America/Toronto",
    "America/Porto_Acre": "America/Rio_Branco",
    "America/Rosario": "America/Argentina/Cordoba",
    "America/Santa_Isabel": "America/Tijuana",
    "America/Shiprock": "America/Denver",
    "America/Virgin": "America/Port_of_Spain",
    "Antarctica/South_Pole": "Pacific/Auckland",
    "Asia/Ashkhabad": "Asia/Ashgabat",
    "Asia/Calcutta": "Asia/Kolkata",
    "Asia/Chongqing": "Asia/Shanghai",
    "Asia/Chungking": "Asia/Shanghai",
    "Asia/Dacca": "Asia/Dhaka",
    "Asia/Harbin": "Asia/Shanghai",
    "Asia/Kashgar": "Asia/Urumqi",
    "Asia/Katmandu": "Asia/Kathmandu",
    "Asia/Macao": "Asia/Macau",
    "Asia/Rangoon": "Asia/Yangon",
    "Asia/Saigon": "Asia/Ho_Chi_Minh",
    "Asia/Tel_Aviv": "Asia/Jerusalem",
    "Asia/Thimbu": "Asia/Thimphu",
    "Asia/Ujung_Pandang": "Asia/Makassar",
    "Asia/Ulan_Bator": "Asia/Ulaanbaatar",
    "Atlantic/Faeroe": "Atlantic/Faroe",
    "Atlantic/Jan_Mayen": "Europe/Oslo",
    "Australia/ACT": "Australia/Sydney",
    "Australia/Canberra": "Australia/Sydney",
    "Australia/Currie": "Australia/Hobart",
    "Australia/LHI": "Australia/Lord_Howe",
    "Australia/NSW": "Australia/Sydney",
    "Australia/North": "Australia/Darwin",
    "Australia/Queensland": "Australia/Brisbane",
    "Australia/South": "Australia/Adelaide",
    "Australia/Tasmania": "Australia/Hobart",
    "Australia/Victoria": "Australia/Melbourne",
    "Australia/West": "Australia/Perth",
    "Australia/Yancowinna": "Australia/Broken_Hill",
    "Brazil/Acre": "America/Rio_Branco",
    "Brazil/DeNoronha": "America/Noronha",
    "Brazil/East": "America/Sao_Paulo",
    "Brazil/West": "America/Manaus",
    "Canada/Atlantic": "America/Halifax",
    "Canada/Central": "America/Winnipeg",
    "Canada/Eastern": "America/Toronto",
    "Canada/Mountain": "America/Edmonton",
    "Canada/Newfoundland": "America/St_Johns",
    "Canada/Pacific": "America/Vancouver",
    "Canada/Saskatchewan": "America/Regina",
    "Canada/Yukon": "America/Whitehorse",
    "Chile/Continental": "America/Santiago",
    "Chile/EasterIsland": "Pacific/Easter",
    "Cuba": "America/Havana",
    "Egypt": "Africa/Cairo",
    "Eire": "Europe/Dublin",
    "Etc/UCT": "Etc/UTC",
    "Europe/Belfast": "Europe/London",
    "Europe/Tiraspol": "Europe/Chisinau",
    "GB": "Europe/London",
    "GB-Eire": "Europe/London",
    "GMT+0": "Etc/GMT",
    "GMT-0": "Etc/GMT",
    "GMT0": "Etc/GMT",
    "Greenwich": "Etc/GMT",
    "Hongkong": "Asia/Hong_Kong",
    "Iceland": "Atlantic/Reykjavik",
    "Iran": "Asia/Tehran",
    "Israel": "Asia/Jerusalem",
    "Jamaica": "America/Jamaica",
    "Japan": "Asia/Tokyo",
    "Kwajalein": "Pacific/Kwajalein",
    "Libya": "Africa/Tripoli",
    "Mexico/BajaNorte": "America/Tijuana",
    "Mexico/BajaSur": "America/Mazatlan",
    "Mexico/General": "America/Mexico_City",
    "NZ": "Pacific/Auckland",
    "NZ-CHAT": "Pacific/Chatham",
    "Navajo": "America/Denver",
    "PRC": "Asia/Shanghai",
    "Pacific/Johnston": "Pacific/Honolulu",
    "Pacific/Ponape": "Pacific/Pohnpei",
    "Pacific/Samoa": "Pacific/Pago_Pago",
    "Pacific/Truk": "Pacific/Chuuk",
    "Pacific/Yap": "Pacific/Chuuk",
    "Poland": "Europe/Warsaw",
    "Portugal": "Europe/Lisbon",
    "ROC": "Asia/Taipei",
    "ROK": "Asia/Seoul",
    "Singapore": "Asia/Singapore",
    "Turkey": "Europe/Istanbul",
    "UCT": "Etc/UTC",
    "US/Alaska": "America/Anchorage",
    "US/Aleutian": "America/Adak",
    "US/Arizona": "America/Phoenix",
    "US/Central": "America/Chicago",
    "US/East-Indiana": "America/Indiana/Indianapolis",
    "US/Eastern": "America/New_York",
    "US/Hawaii": "Pacific/Honolulu",
    "US/Indiana-Starke": "America/Indiana/Knox",
    "US/Michigan": "America/Detroit",
    "US/Mountain": "America/Denver",
    "US/Pacific": "America/Los_Angeles",
    "US/Samoa": "Pacific/Pago_Pago",
    "UTC": "Etc/UTC",
    "Universal": "Etc/UTC",
    "W-SU": "Europe/Moscow",
    "Zulu": "Etc/UTC"
  };

  // bazel-out/darwin-fastbuild/bin/packages/intl-datetimeformat/lib/src/packer.js
  function unpack(data) {
    var abbrvs = data.abbrvs.split("|");
    var offsets = data.offsets.split("|").map(function(n) {
      return parseInt(n, 36);
    });
    var packedZones = data.zones;
    var zones = {};
    for (var _i = 0, packedZones_1 = packedZones; _i < packedZones_1.length; _i++) {
      var d = packedZones_1[_i];
      var _a = d.split("|"), zone = _a[0], zoneData = _a.slice(1);
      zones[zone] = zoneData.map(function(z) {
        return z.split(",");
      }).map(function(_a2) {
        var ts = _a2[0], abbrvIndex = _a2[1], offsetIndex = _a2[2], dst = _a2[3];
        return [
          ts === "" ? -Infinity : parseInt(ts, 36),
          abbrvs[+abbrvIndex],
          offsets[+offsetIndex],
          dst === "1"
        ];
      });
    }
    return zones;
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-datetimeformat/lib/src/core.js
  var UPPERCASED_LINKS = Object.keys(links_default).reduce(function(all, l) {
    all[l.toUpperCase()] = links_default[l];
    return all;
  }, {});
  var RESOLVED_OPTIONS_KEYS = [
    "locale",
    "calendar",
    "numberingSystem",
    "dateStyle",
    "timeStyle",
    "timeZone",
    "hourCycle",
    "weekday",
    "era",
    "year",
    "month",
    "day",
    "hour",
    "minute",
    "second",
    "timeZoneName"
  ];
  var formatDescriptor = {
    enumerable: false,
    configurable: true,
    get: function() {
      if (typeof this !== "object" || !OrdinaryHasInstance(DateTimeFormat, this)) {
        throw TypeError("Intl.DateTimeFormat format property accessor called on incompatible receiver");
      }
      var internalSlots = getInternalSlots(this);
      var dtf = this;
      var boundFormat = internalSlots.boundFormat;
      if (boundFormat === void 0) {
        boundFormat = function(date) {
          var x;
          if (date === void 0) {
            x = Date.now();
          } else {
            x = Number(date);
          }
          return FormatDateTime(dtf, x, {
            getInternalSlots: getInternalSlots,
            localeData: DateTimeFormat.localeData,
            tzData: DateTimeFormat.tzData,
            getDefaultTimeZone: DateTimeFormat.getDefaultTimeZone
          });
        };
        try {
          Object.defineProperty(boundFormat, "name", {
            configurable: true,
            enumerable: false,
            writable: false,
            value: ""
          });
        } catch (e) {
        }
        internalSlots.boundFormat = boundFormat;
      }
      return boundFormat;
    }
  };
  try {
    Object.defineProperty(formatDescriptor.get, "name", {
      configurable: true,
      enumerable: false,
      writable: false,
      value: "get format"
    });
  } catch (e) {
  }
  var DateTimeFormat = function(locales, options) {
    if (!this || !OrdinaryHasInstance(DateTimeFormat, this)) {
      return new DateTimeFormat(locales, options);
    }
    InitializeDateTimeFormat(this, locales, options, {
      tzData: DateTimeFormat.tzData,
      uppercaseLinks: UPPERCASED_LINKS,
      availableLocales: DateTimeFormat.availableLocales,
      relevantExtensionKeys: DateTimeFormat.relevantExtensionKeys,
      getDefaultLocale: DateTimeFormat.getDefaultLocale,
      getDefaultTimeZone: DateTimeFormat.getDefaultTimeZone,
      getInternalSlots: getInternalSlots,
      localeData: DateTimeFormat.localeData
    });
    var internalSlots = getInternalSlots(this);
    var dataLocale = internalSlots.dataLocale;
    var dataLocaleData = DateTimeFormat.localeData[dataLocale];
    invariant(dataLocaleData !== void 0, "Cannot load locale-dependent data for " + dataLocale + ".");
  };
  defineProperty(DateTimeFormat, "supportedLocalesOf", {
    value: function supportedLocalesOf(locales, options) {
      return SupportedLocales(DateTimeFormat.availableLocales, CanonicalizeLocaleList(locales), options);
    }
  });
  defineProperty(DateTimeFormat.prototype, "resolvedOptions", {
    value: function resolvedOptions() {
      if (typeof this !== "object" || !OrdinaryHasInstance(DateTimeFormat, this)) {
        throw TypeError("Method Intl.DateTimeFormat.prototype.resolvedOptions called on incompatible receiver");
      }
      var internalSlots = getInternalSlots(this);
      var ro = {};
      for (var _i = 0, RESOLVED_OPTIONS_KEYS_1 = RESOLVED_OPTIONS_KEYS; _i < RESOLVED_OPTIONS_KEYS_1.length; _i++) {
        var key = RESOLVED_OPTIONS_KEYS_1[_i];
        var value = internalSlots[key];
        if (key === "hourCycle") {
          var hour12 = value === "h11" || value === "h12" ? true : value === "h23" || value === "h24" ? false : void 0;
          if (hour12 !== void 0) {
            ro.hour12 = hour12;
          }
        }
        if (DATE_TIME_PROPS.indexOf(key) > -1) {
          if (internalSlots.dateStyle !== void 0 || internalSlots.timeStyle !== void 0) {
            value = void 0;
          }
        }
        if (value !== void 0) {
          ro[key] = value;
        }
      }
      return ro;
    }
  });
  defineProperty(DateTimeFormat.prototype, "formatToParts", {
    value: function formatToParts2(date) {
      if (date === void 0) {
        date = Date.now();
      } else {
        date = ToNumber(date);
      }
      return FormatDateTimeToParts(this, date, {
        getInternalSlots: getInternalSlots,
        localeData: DateTimeFormat.localeData,
        tzData: DateTimeFormat.tzData,
        getDefaultTimeZone: DateTimeFormat.getDefaultTimeZone
      });
    }
  });
  defineProperty(DateTimeFormat.prototype, "formatRangeToParts", {
    value: function formatRangeToParts(startDate, endDate) {
      var dtf = this;
      if (typeof dtf !== "object") {
        throw new TypeError();
      }
      if (startDate === void 0 || endDate === void 0) {
        throw new TypeError("startDate/endDate cannot be undefined");
      }
      var x = ToNumber(startDate);
      var y = ToNumber(endDate);
      return FormatDateTimeRangeToParts(dtf, x, y, {
        getInternalSlots: getInternalSlots,
        localeData: DateTimeFormat.localeData,
        tzData: DateTimeFormat.tzData,
        getDefaultTimeZone: DateTimeFormat.getDefaultTimeZone
      });
    }
  });
  defineProperty(DateTimeFormat.prototype, "formatRange", {
    value: function formatRange(startDate, endDate) {
      var dtf = this;
      if (typeof dtf !== "object") {
        throw new TypeError();
      }
      if (startDate === void 0 || endDate === void 0) {
        throw new TypeError("startDate/endDate cannot be undefined");
      }
      var x = ToNumber(startDate);
      var y = ToNumber(endDate);
      return FormatDateTimeRange(dtf, x, y, {
        getInternalSlots: getInternalSlots,
        localeData: DateTimeFormat.localeData,
        tzData: DateTimeFormat.tzData,
        getDefaultTimeZone: DateTimeFormat.getDefaultTimeZone
      });
    }
  });
  var DEFAULT_TIMEZONE = "UTC";
  DateTimeFormat.__setDefaultTimeZone = function(timeZone) {
    if (timeZone !== void 0) {
      timeZone = String(timeZone);
      if (!IsValidTimeZoneName(timeZone, {
        tzData: DateTimeFormat.tzData,
        uppercaseLinks: UPPERCASED_LINKS
      })) {
        throw new RangeError("Invalid timeZoneName");
      }
      timeZone = CanonicalizeTimeZoneName(timeZone, {
        tzData: DateTimeFormat.tzData,
        uppercaseLinks: UPPERCASED_LINKS
      });
    } else {
      timeZone = DEFAULT_TIMEZONE;
    }
    DateTimeFormat.__defaultTimeZone = timeZone;
  };
  DateTimeFormat.relevantExtensionKeys = ["nu", "ca", "hc"];
  DateTimeFormat.__defaultTimeZone = DEFAULT_TIMEZONE;
  DateTimeFormat.getDefaultTimeZone = function() {
    return DateTimeFormat.__defaultTimeZone;
  };
  DateTimeFormat.__addLocaleData = function __addLocaleData() {
    var data = [];
    for (var _i = 0; _i < arguments.length; _i++) {
      data[_i] = arguments[_i];
    }
    var _loop_1 = function(d2, locale2) {
      var dateFormat = d2.dateFormat, timeFormat = d2.timeFormat, dateTimeFormat = d2.dateTimeFormat, formats = d2.formats, intervalFormats = d2.intervalFormats, rawData = __rest(d2, ["dateFormat", "timeFormat", "dateTimeFormat", "formats", "intervalFormats"]);
      var processedData = __assign(__assign({}, rawData), {dateFormat: {
        full: parseDateTimeSkeleton(dateFormat.full),
        long: parseDateTimeSkeleton(dateFormat.long),
        medium: parseDateTimeSkeleton(dateFormat.medium),
        short: parseDateTimeSkeleton(dateFormat.short)
      }, timeFormat: {
        full: parseDateTimeSkeleton(timeFormat.full),
        long: parseDateTimeSkeleton(timeFormat.long),
        medium: parseDateTimeSkeleton(timeFormat.medium),
        short: parseDateTimeSkeleton(timeFormat.short)
      }, dateTimeFormat: {
        full: parseDateTimeSkeleton(dateTimeFormat.full).pattern,
        long: parseDateTimeSkeleton(dateTimeFormat.long).pattern,
        medium: parseDateTimeSkeleton(dateTimeFormat.medium).pattern,
        short: parseDateTimeSkeleton(dateTimeFormat.short).pattern
      }, formats: {}});
      var _loop_2 = function(calendar2) {
        processedData.formats[calendar2] = Object.keys(formats[calendar2]).map(function(skeleton) {
          return parseDateTimeSkeleton(skeleton, formats[calendar2][skeleton], intervalFormats[skeleton], intervalFormats.intervalFormatFallback);
        });
      };
      for (var calendar in formats) {
        _loop_2(calendar);
      }
      var minimizedLocale = new Intl.Locale(locale2).minimize().toString();
      DateTimeFormat.localeData[locale2] = DateTimeFormat.localeData[minimizedLocale] = processedData;
      DateTimeFormat.availableLocales.add(locale2);
      DateTimeFormat.availableLocales.add(minimizedLocale);
      if (!DateTimeFormat.__defaultLocale) {
        DateTimeFormat.__defaultLocale = minimizedLocale;
      }
    };
    for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {
      var _b = data_1[_a], d = _b.data, locale = _b.locale;
      _loop_1(d, locale);
    }
  };
  Object.defineProperty(DateTimeFormat.prototype, "format", formatDescriptor);
  DateTimeFormat.__defaultLocale = "";
  DateTimeFormat.localeData = {};
  DateTimeFormat.availableLocales = new Set();
  DateTimeFormat.getDefaultLocale = function() {
    return DateTimeFormat.__defaultLocale;
  };
  DateTimeFormat.polyfilled = true;
  DateTimeFormat.tzData = {};
  DateTimeFormat.__addTZData = function(d) {
    DateTimeFormat.tzData = unpack(d);
  };
  try {
    if (typeof Symbol !== "undefined") {
      Object.defineProperty(DateTimeFormat.prototype, Symbol.toStringTag, {
        value: "Intl.DateTimeFormat",
        writable: false,
        enumerable: false,
        configurable: true
      });
    }
    Object.defineProperty(DateTimeFormat.prototype.constructor, "length", {
      value: 1,
      writable: false,
      enumerable: false,
      configurable: true
    });
  } catch (e) {
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-datetimeformat/lib/should-polyfill.js
  function supportsDateStyle() {
    try {
      return !!new Intl.DateTimeFormat(void 0, {
        dateStyle: "short"
      }).resolvedOptions().dateStyle;
    } catch (e) {
      return false;
    }
  }
  function hasChromeLt71Bug() {
    try {
      return new Intl.DateTimeFormat("en", {
        hourCycle: "h11",
        hour: "numeric"
      }).formatToParts(0)[2].type !== "dayPeriod";
    } catch (e) {
      return false;
    }
  }
  function hasUnthrownDateTimeStyleBug() {
    try {
      return !!new Intl.DateTimeFormat("en", {
        dateStyle: "short",
        hour: "numeric"
      }).format(new Date(0));
    } catch (e) {
      return false;
    }
  }
  function shouldPolyfill() {
    return !("DateTimeFormat" in Intl) || !("formatToParts" in Intl.DateTimeFormat.prototype) || !("formatRange" in Intl.DateTimeFormat.prototype) || hasChromeLt71Bug() || hasUnthrownDateTimeStyleBug() || !supportsDateStyle();
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-datetimeformat/lib/src/to_locale_string.js
  function toLocaleString(x, locales, options) {
    var dtf = new DateTimeFormat(locales, options);
    return dtf.format(x);
  }
  function toLocaleDateString(x, locales, options) {
    var dtf = new DateTimeFormat(locales, ToDateTimeOptions(options, "date", "date"));
    return dtf.format(x);
  }
  function toLocaleTimeString(x, locales, options) {
    var dtf = new DateTimeFormat(locales, ToDateTimeOptions(options, "time", "time"));
    return dtf.format(x);
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-datetimeformat/lib/polyfill.js
  if (shouldPolyfill()) {
    defineProperty(Intl, "DateTimeFormat", {value: DateTimeFormat});
    defineProperty(Date.prototype, "toLocaleString", {
      value: function toLocaleString2(locales, options) {
        return toLocaleString(this, locales, options);
      }
    });
    defineProperty(Date.prototype, "toLocaleDateString", {
      value: function toLocaleDateString2(locales, options) {
        return toLocaleDateString(this, locales, options);
      }
    });
    defineProperty(Date.prototype, "toLocaleTimeString", {
      value: function toLocaleTimeString2(locales, options) {
        return toLocaleTimeString(this, locales, options);
      }
    });
  }
})();
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */


}

if (!("Intl"in self&&Intl.PluralRules&&Intl.PluralRules.supportedLocalesOf&&function(){try{return 1===Intl.PluralRules.supportedLocalesOf("en").length}catch(l){return!1}}()
)) {

// Intl.PluralRules.~locale.en
/* @generated */
// prettier-ignore
if (Intl.PluralRules && typeof Intl.PluralRules.__addLocaleData === 'function') {
  Intl.PluralRules.__addLocaleData({"data":{"categories":{"cardinal":["one","other"],"ordinal":["one","two","few","other"]},"fn":function(n, ord) {
  var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);
  if (ord) return n10 == 1 && n100 != 11 ? 'one'
    : n10 == 2 && n100 != 12 ? 'two'
    : n10 == 3 && n100 != 13 ? 'few'
    : 'other';
  return n == 1 && v0 ? 'one' : 'other';
}},"locale":"en"})
}

}

if (!("Intl"in self&&Intl.NumberFormat&&function(){try{new Intl.NumberFormat("en",{style:"unit",unit:"byte"})}catch(t){return!1}return!0}()&&Intl.NumberFormat.supportedLocalesOf("en").length
)) {

// Intl.NumberFormat.~locale.en
/* @generated */
// prettier-ignore
if (Intl.NumberFormat && typeof Intl.NumberFormat.__addLocaleData === 'function') {
  Intl.NumberFormat.__addLocaleData({"data":{"units":{"simple":{"degree":{"long":{"other":"{0} degrees","one":"{0} degree"},"short":{"other":"{0} deg"},"narrow":{"other":"{0}°"},"perUnit":{}},"hectare":{"long":{"other":"{0} hectares","one":"{0} hectare"},"short":{"other":"{0} ha"},"narrow":{"other":"{0}ha"},"perUnit":{}},"acre":{"long":{"other":"{0} acres","one":"{0} acre"},"short":{"other":"{0} ac"},"narrow":{"other":"{0}ac"},"perUnit":{}},"percent":{"long":{"other":"{0} percent"},"short":{"other":"{0}%"},"narrow":{"other":"{0}%"},"perUnit":{}},"liter-per-kilometer":{"long":{"other":"{0} liters per kilometer","one":"{0} liter per kilometer"},"short":{"other":"{0} L/km"},"narrow":{"other":"{0}L/km"},"perUnit":{}},"mile-per-gallon":{"long":{"other":"{0} miles per gallon","one":"{0} mile per gallon"},"short":{"other":"{0} mpg"},"narrow":{"other":"{0}mpg"},"perUnit":{}},"petabyte":{"long":{"other":"{0} petabytes","one":"{0} petabyte"},"short":{"other":"{0} PB"},"narrow":{"other":"{0}PB"},"perUnit":{}},"terabyte":{"long":{"other":"{0} terabytes","one":"{0} terabyte"},"short":{"other":"{0} TB"},"narrow":{"other":"{0}TB"},"perUnit":{}},"terabit":{"long":{"other":"{0} terabits","one":"{0} terabit"},"short":{"other":"{0} Tb"},"narrow":{"other":"{0}Tb"},"perUnit":{}},"gigabyte":{"long":{"other":"{0} gigabytes","one":"{0} gigabyte"},"short":{"other":"{0} GB"},"narrow":{"other":"{0}GB"},"perUnit":{}},"gigabit":{"long":{"other":"{0} gigabits","one":"{0} gigabit"},"short":{"other":"{0} Gb"},"narrow":{"other":"{0}Gb"},"perUnit":{}},"megabyte":{"long":{"other":"{0} megabytes","one":"{0} megabyte"},"short":{"other":"{0} MB"},"narrow":{"other":"{0}MB"},"perUnit":{}},"megabit":{"long":{"other":"{0} megabits","one":"{0} megabit"},"short":{"other":"{0} Mb"},"narrow":{"other":"{0}Mb"},"perUnit":{}},"kilobyte":{"long":{"other":"{0} kilobytes","one":"{0} kilobyte"},"short":{"other":"{0} kB"},"narrow":{"other":"{0}kB"},"perUnit":{}},"kilobit":{"long":{"other":"{0} kilobits","one":"{0} kilobit"},"short":{"other":"{0} kb"},"narrow":{"other":"{0}kb"},"perUnit":{}},"byte":{"long":{"other":"{0} bytes","one":"{0} byte"},"short":{"other":"{0} byte"},"narrow":{"other":"{0}B"},"perUnit":{}},"bit":{"long":{"other":"{0} bits","one":"{0} bit"},"short":{"other":"{0} bit"},"narrow":{"other":"{0}bit"},"perUnit":{}},"year":{"long":{"other":"{0} years","one":"{0} year"},"short":{"other":"{0} yrs","one":"{0} yr"},"narrow":{"other":"{0}y"},"perUnit":{"long":"{0} per year","short":"{0}/y","narrow":"{0}/y"}},"month":{"long":{"other":"{0} months","one":"{0} month"},"short":{"other":"{0} mths","one":"{0} mth"},"narrow":{"other":"{0}m"},"perUnit":{"long":"{0} per month","short":"{0}/m","narrow":"{0}/m"}},"week":{"long":{"other":"{0} weeks","one":"{0} week"},"short":{"other":"{0} wks","one":"{0} wk"},"narrow":{"other":"{0}w"},"perUnit":{"long":"{0} per week","short":"{0}/w","narrow":"{0}/w"}},"day":{"long":{"other":"{0} days","one":"{0} day"},"short":{"other":"{0} days","one":"{0} day"},"narrow":{"other":"{0}d"},"perUnit":{"long":"{0} per day","short":"{0}/d","narrow":"{0}/d"}},"hour":{"long":{"other":"{0} hours","one":"{0} hour"},"short":{"other":"{0} hr"},"narrow":{"other":"{0}h"},"perUnit":{"long":"{0} per hour","short":"{0}/h","narrow":"{0}/h"}},"minute":{"long":{"other":"{0} minutes","one":"{0} minute"},"short":{"other":"{0} min"},"narrow":{"other":"{0}m"},"perUnit":{"long":"{0} per minute","short":"{0}/min","narrow":"{0}/min"}},"second":{"long":{"other":"{0} seconds","one":"{0} second"},"short":{"other":"{0} sec"},"narrow":{"other":"{0}s"},"perUnit":{"long":"{0} per second","short":"{0}/s","narrow":"{0}/s"}},"millisecond":{"long":{"other":"{0} milliseconds","one":"{0} millisecond"},"short":{"other":"{0} ms"},"narrow":{"other":"{0}ms"},"perUnit":{}},"kilometer":{"long":{"other":"{0} kilometers","one":"{0} kilometer"},"short":{"other":"{0} km"},"narrow":{"other":"{0}km"},"perUnit":{"long":"{0} per kilometer","short":"{0}/km","narrow":"{0}/km"}},"meter":{"long":{"other":"{0} meters","one":"{0} meter"},"short":{"other":"{0} m"},"narrow":{"other":"{0}m"},"perUnit":{"long":"{0} per meter","short":"{0}/m","narrow":"{0}/m"}},"centimeter":{"long":{"other":"{0} centimeters","one":"{0} centimeter"},"short":{"other":"{0} cm"},"narrow":{"other":"{0}cm"},"perUnit":{"long":"{0} per centimeter","short":"{0}/cm","narrow":"{0}/cm"}},"millimeter":{"long":{"other":"{0} millimeters","one":"{0} millimeter"},"short":{"other":"{0} mm"},"narrow":{"other":"{0}mm"},"perUnit":{}},"mile":{"long":{"other":"{0} miles","one":"{0} mile"},"short":{"other":"{0} mi"},"narrow":{"other":"{0}mi"},"perUnit":{}},"yard":{"long":{"other":"{0} yards","one":"{0} yard"},"short":{"other":"{0} yd"},"narrow":{"other":"{0}yd"},"perUnit":{}},"foot":{"long":{"other":"{0} feet","one":"{0} foot"},"short":{"other":"{0} ft"},"narrow":{"other":"{0}′"},"perUnit":{"long":"{0} per foot","short":"{0}/ft","narrow":"{0}/ft"}},"inch":{"long":{"other":"{0} inches","one":"{0} inch"},"short":{"other":"{0} in"},"narrow":{"other":"{0}″"},"perUnit":{"long":"{0} per inch","short":"{0}/in","narrow":"{0}/in"}},"mile-scandinavian":{"long":{"other":"{0} miles-scandinavian","one":"{0} mile-scandinavian"},"short":{"other":"{0} smi"},"narrow":{"other":"{0}smi"},"perUnit":{}},"kilogram":{"long":{"other":"{0} kilograms","one":"{0} kilogram"},"short":{"other":"{0} kg"},"narrow":{"other":"{0}kg"},"perUnit":{"long":"{0} per kilogram","short":"{0}/kg","narrow":"{0}/kg"}},"gram":{"long":{"other":"{0} grams","one":"{0} gram"},"short":{"other":"{0} g"},"narrow":{"other":"{0}g"},"perUnit":{"long":"{0} per gram","short":"{0}/g","narrow":"{0}/g"}},"stone":{"long":{"other":"{0} stones","one":"{0} stone"},"short":{"other":"{0} st"},"narrow":{"other":"{0}st"},"perUnit":{}},"pound":{"long":{"other":"{0} pounds","one":"{0} pound"},"short":{"other":"{0} lb"},"narrow":{"other":"{0}#"},"perUnit":{"long":"{0} per pound","short":"{0}/lb","narrow":"{0}/lb"}},"ounce":{"long":{"other":"{0} ounces","one":"{0} ounce"},"short":{"other":"{0} oz"},"narrow":{"other":"{0}oz"},"perUnit":{"long":"{0} per ounce","short":"{0}/oz","narrow":"{0}/oz"}},"kilometer-per-hour":{"long":{"other":"{0} kilometers per hour","one":"{0} kilometer per hour"},"short":{"other":"{0} km/h"},"narrow":{"other":"{0}km/h"},"perUnit":{}},"meter-per-second":{"long":{"other":"{0} meters per second","one":"{0} meter per second"},"short":{"other":"{0} m/s"},"narrow":{"other":"{0}m/s"},"perUnit":{}},"mile-per-hour":{"long":{"other":"{0} miles per hour","one":"{0} mile per hour"},"short":{"other":"{0} mph"},"narrow":{"other":"{0}mph"},"perUnit":{}},"celsius":{"long":{"other":"{0} degrees Celsius","one":"{0} degree Celsius"},"short":{"other":"{0}°C"},"narrow":{"other":"{0}°C"},"perUnit":{}},"fahrenheit":{"long":{"other":"{0} degrees Fahrenheit","one":"{0} degree Fahrenheit"},"short":{"other":"{0}°F"},"narrow":{"other":"{0}°"},"perUnit":{}},"liter":{"long":{"other":"{0} liters","one":"{0} liter"},"short":{"other":"{0} L"},"narrow":{"other":"{0}L"},"perUnit":{"long":"{0} per liter","short":"{0}/L","narrow":"{0}/L"}},"milliliter":{"long":{"other":"{0} milliliters","one":"{0} milliliter"},"short":{"other":"{0} mL"},"narrow":{"other":"{0}mL"},"perUnit":{}},"gallon":{"long":{"other":"{0} gallons","one":"{0} gallon"},"short":{"other":"{0} gal"},"narrow":{"other":"{0}gal"},"perUnit":{"long":"{0} per gallon","short":"{0}/gal US","narrow":"{0}/gal"}},"fluid-ounce":{"long":{"other":"{0} fluid ounces","one":"{0} fluid ounce"},"short":{"other":"{0} fl oz"},"narrow":{"other":"{0}fl oz"},"perUnit":{}}},"compound":{"per":{"long":"{0} per {1}","short":"{0}/{1}","narrow":"{0}/{1}"}}},"currencies":{"ADP":{"displayName":{"other":"Andorran pesetas","one":"Andorran peseta"},"symbol":"ADP","narrow":"ADP"},"AED":{"displayName":{"other":"UAE dirhams","one":"UAE dirham"},"symbol":"AED","narrow":"AED"},"AFA":{"displayName":{"other":"Afghan afghanis (1927–2002)","one":"Afghan afghani (1927–2002)"},"symbol":"AFA","narrow":"AFA"},"AFN":{"displayName":{"other":"Afghan Afghanis","one":"Afghan Afghani"},"symbol":"AFN","narrow":"؋"},"ALK":{"displayName":{"other":"Albanian lekë (1946–1965)","one":"Albanian lek (1946–1965)"},"symbol":"ALK","narrow":"ALK"},"ALL":{"displayName":{"other":"Albanian lekë","one":"Albanian lek"},"symbol":"ALL","narrow":"ALL"},"AMD":{"displayName":{"other":"Armenian drams","one":"Armenian dram"},"symbol":"AMD","narrow":"֏"},"ANG":{"displayName":{"other":"Netherlands Antillean guilders","one":"Netherlands Antillean guilder"},"symbol":"ANG","narrow":"ANG"},"AOA":{"displayName":{"other":"Angolan kwanzas","one":"Angolan kwanza"},"symbol":"AOA","narrow":"Kz"},"AOK":{"displayName":{"other":"Angolan kwanzas (1977–1991)","one":"Angolan kwanza (1977–1991)"},"symbol":"AOK","narrow":"AOK"},"AON":{"displayName":{"other":"Angolan new kwanzas (1990–2000)","one":"Angolan new kwanza (1990–2000)"},"symbol":"AON","narrow":"AON"},"AOR":{"displayName":{"other":"Angolan readjusted kwanzas (1995–1999)","one":"Angolan readjusted kwanza (1995–1999)"},"symbol":"AOR","narrow":"AOR"},"ARA":{"displayName":{"other":"Argentine australs","one":"Argentine austral"},"symbol":"ARA","narrow":"ARA"},"ARL":{"displayName":{"other":"Argentine pesos ley (1970–1983)","one":"Argentine peso ley (1970–1983)"},"symbol":"ARL","narrow":"ARL"},"ARM":{"displayName":{"other":"Argentine pesos (1881–1970)","one":"Argentine peso (1881–1970)"},"symbol":"ARM","narrow":"ARM"},"ARP":{"displayName":{"other":"Argentine pesos (1983–1985)","one":"Argentine peso (1983–1985)"},"symbol":"ARP","narrow":"ARP"},"ARS":{"displayName":{"other":"Argentine pesos","one":"Argentine peso"},"symbol":"ARS","narrow":"$"},"ATS":{"displayName":{"other":"Austrian schillings","one":"Austrian schilling"},"symbol":"ATS","narrow":"ATS"},"AUD":{"displayName":{"other":"Australian dollars","one":"Australian dollar"},"symbol":"A$","narrow":"$"},"AWG":{"displayName":{"other":"Aruban florin"},"symbol":"AWG","narrow":"AWG"},"AZM":{"displayName":{"other":"Azerbaijani manats (1993–2006)","one":"Azerbaijani manat (1993–2006)"},"symbol":"AZM","narrow":"AZM"},"AZN":{"displayName":{"other":"Azerbaijani manats","one":"Azerbaijani manat"},"symbol":"AZN","narrow":"₼"},"BAD":{"displayName":{"other":"Bosnia-Herzegovina dinars (1992–1994)","one":"Bosnia-Herzegovina dinar (1992–1994)"},"symbol":"BAD","narrow":"BAD"},"BAM":{"displayName":{"other":"Bosnia-Herzegovina convertible marks","one":"Bosnia-Herzegovina convertible mark"},"symbol":"BAM","narrow":"KM"},"BAN":{"displayName":{"other":"Bosnia-Herzegovina new dinars (1994–1997)","one":"Bosnia-Herzegovina new dinar (1994–1997)"},"symbol":"BAN","narrow":"BAN"},"BBD":{"displayName":{"other":"Barbadian dollars","one":"Barbadian dollar"},"symbol":"BBD","narrow":"$"},"BDT":{"displayName":{"other":"Bangladeshi takas","one":"Bangladeshi taka"},"symbol":"BDT","narrow":"৳"},"BEC":{"displayName":{"other":"Belgian francs (convertible)","one":"Belgian franc (convertible)"},"symbol":"BEC","narrow":"BEC"},"BEF":{"displayName":{"other":"Belgian francs","one":"Belgian franc"},"symbol":"BEF","narrow":"BEF"},"BEL":{"displayName":{"other":"Belgian francs (financial)","one":"Belgian franc (financial)"},"symbol":"BEL","narrow":"BEL"},"BGL":{"displayName":{"other":"Bulgarian hard leva","one":"Bulgarian hard lev"},"symbol":"BGL","narrow":"BGL"},"BGM":{"displayName":{"other":"Bulgarian socialist leva","one":"Bulgarian socialist lev"},"symbol":"BGM","narrow":"BGM"},"BGN":{"displayName":{"other":"Bulgarian leva","one":"Bulgarian lev"},"symbol":"BGN","narrow":"BGN"},"BGO":{"displayName":{"other":"Bulgarian leva (1879–1952)","one":"Bulgarian lev (1879–1952)"},"symbol":"BGO","narrow":"BGO"},"BHD":{"displayName":{"other":"Bahraini dinars","one":"Bahraini dinar"},"symbol":"BHD","narrow":"BHD"},"BIF":{"displayName":{"other":"Burundian francs","one":"Burundian franc"},"symbol":"BIF","narrow":"BIF"},"BMD":{"displayName":{"other":"Bermudan dollars","one":"Bermudan dollar"},"symbol":"BMD","narrow":"$"},"BND":{"displayName":{"other":"Brunei dollars","one":"Brunei dollar"},"symbol":"BND","narrow":"$"},"BOB":{"displayName":{"other":"Bolivian bolivianos","one":"Bolivian boliviano"},"symbol":"BOB","narrow":"Bs"},"BOL":{"displayName":{"other":"Bolivian bolivianos (1863–1963)","one":"Bolivian boliviano (1863–1963)"},"symbol":"BOL","narrow":"BOL"},"BOP":{"displayName":{"other":"Bolivian pesos","one":"Bolivian peso"},"symbol":"BOP","narrow":"BOP"},"BOV":{"displayName":{"other":"Bolivian mvdols","one":"Bolivian mvdol"},"symbol":"BOV","narrow":"BOV"},"BRB":{"displayName":{"other":"Brazilian new cruzeiros (1967–1986)","one":"Brazilian new cruzeiro (1967–1986)"},"symbol":"BRB","narrow":"BRB"},"BRC":{"displayName":{"other":"Brazilian cruzados (1986–1989)","one":"Brazilian cruzado (1986–1989)"},"symbol":"BRC","narrow":"BRC"},"BRE":{"displayName":{"other":"Brazilian cruzeiros (1990–1993)","one":"Brazilian cruzeiro (1990–1993)"},"symbol":"BRE","narrow":"BRE"},"BRL":{"displayName":{"other":"Brazilian reals","one":"Brazilian real"},"symbol":"R$","narrow":"R$"},"BRN":{"displayName":{"other":"Brazilian new cruzados (1989–1990)","one":"Brazilian new cruzado (1989–1990)"},"symbol":"BRN","narrow":"BRN"},"BRR":{"displayName":{"other":"Brazilian cruzeiros (1993–1994)","one":"Brazilian cruzeiro (1993–1994)"},"symbol":"BRR","narrow":"BRR"},"BRZ":{"displayName":{"other":"Brazilian cruzeiros (1942–1967)","one":"Brazilian cruzeiro (1942–1967)"},"symbol":"BRZ","narrow":"BRZ"},"BSD":{"displayName":{"other":"Bahamian dollars","one":"Bahamian dollar"},"symbol":"BSD","narrow":"$"},"BTN":{"displayName":{"other":"Bhutanese ngultrums","one":"Bhutanese ngultrum"},"symbol":"BTN","narrow":"BTN"},"BUK":{"displayName":{"other":"Burmese kyats","one":"Burmese kyat"},"symbol":"BUK","narrow":"BUK"},"BWP":{"displayName":{"other":"Botswanan pulas","one":"Botswanan pula"},"symbol":"BWP","narrow":"P"},"BYB":{"displayName":{"other":"Belarusian rubles (1994–1999)","one":"Belarusian ruble (1994–1999)"},"symbol":"BYB","narrow":"BYB"},"BYN":{"displayName":{"other":"Belarusian rubles","one":"Belarusian ruble"},"symbol":"BYN","narrow":"р."},"BYR":{"displayName":{"other":"Belarusian rubles (2000–2016)","one":"Belarusian ruble (2000–2016)"},"symbol":"BYR","narrow":"BYR"},"BZD":{"displayName":{"other":"Belize dollars","one":"Belize dollar"},"symbol":"BZD","narrow":"$"},"CAD":{"displayName":{"other":"Canadian dollars","one":"Canadian dollar"},"symbol":"CA$","narrow":"$"},"CDF":{"displayName":{"other":"Congolese francs","one":"Congolese franc"},"symbol":"CDF","narrow":"CDF"},"CHE":{"displayName":{"other":"WIR euros","one":"WIR euro"},"symbol":"CHE","narrow":"CHE"},"CHF":{"displayName":{"other":"Swiss francs","one":"Swiss franc"},"symbol":"CHF","narrow":"CHF"},"CHW":{"displayName":{"other":"WIR francs","one":"WIR franc"},"symbol":"CHW","narrow":"CHW"},"CLE":{"displayName":{"other":"Chilean escudos","one":"Chilean escudo"},"symbol":"CLE","narrow":"CLE"},"CLF":{"displayName":{"other":"Chilean units of account (UF)","one":"Chilean unit of account (UF)"},"symbol":"CLF","narrow":"CLF"},"CLP":{"displayName":{"other":"Chilean pesos","one":"Chilean peso"},"symbol":"CLP","narrow":"$"},"CNH":{"displayName":{"other":"Chinese yuan (offshore)"},"symbol":"CNH","narrow":"CNH"},"CNX":{"displayName":{"other":"Chinese People’s Bank dollars","one":"Chinese People’s Bank dollar"},"symbol":"CNX","narrow":"CNX"},"CNY":{"displayName":{"other":"Chinese yuan"},"symbol":"CN¥","narrow":"¥"},"COP":{"displayName":{"other":"Colombian pesos","one":"Colombian peso"},"symbol":"COP","narrow":"$"},"COU":{"displayName":{"other":"Colombian real value units","one":"Colombian real value unit"},"symbol":"COU","narrow":"COU"},"CRC":{"displayName":{"other":"Costa Rican colóns","one":"Costa Rican colón"},"symbol":"CRC","narrow":"₡"},"CSD":{"displayName":{"other":"Serbian dinars (2002–2006)","one":"Serbian dinar (2002–2006)"},"symbol":"CSD","narrow":"CSD"},"CSK":{"displayName":{"other":"Czechoslovak hard korunas","one":"Czechoslovak hard koruna"},"symbol":"CSK","narrow":"CSK"},"CUC":{"displayName":{"other":"Cuban convertible pesos","one":"Cuban convertible peso"},"symbol":"CUC","narrow":"$"},"CUP":{"displayName":{"other":"Cuban pesos","one":"Cuban peso"},"symbol":"CUP","narrow":"$"},"CVE":{"displayName":{"other":"Cape Verdean escudos","one":"Cape Verdean escudo"},"symbol":"CVE","narrow":"CVE"},"CYP":{"displayName":{"other":"Cypriot pounds","one":"Cypriot pound"},"symbol":"CYP","narrow":"CYP"},"CZK":{"displayName":{"other":"Czech korunas","one":"Czech koruna"},"symbol":"CZK","narrow":"Kč"},"DDM":{"displayName":{"other":"East German marks","one":"East German mark"},"symbol":"DDM","narrow":"DDM"},"DEM":{"displayName":{"other":"German marks","one":"German mark"},"symbol":"DEM","narrow":"DEM"},"DJF":{"displayName":{"other":"Djiboutian francs","one":"Djiboutian franc"},"symbol":"DJF","narrow":"DJF"},"DKK":{"displayName":{"other":"Danish kroner","one":"Danish krone"},"symbol":"DKK","narrow":"kr"},"DOP":{"displayName":{"other":"Dominican pesos","one":"Dominican peso"},"symbol":"DOP","narrow":"$"},"DZD":{"displayName":{"other":"Algerian dinars","one":"Algerian dinar"},"symbol":"DZD","narrow":"DZD"},"ECS":{"displayName":{"other":"Ecuadorian sucres","one":"Ecuadorian sucre"},"symbol":"ECS","narrow":"ECS"},"ECV":{"displayName":{"other":"Ecuadorian units of constant value","one":"Ecuadorian unit of constant value"},"symbol":"ECV","narrow":"ECV"},"EEK":{"displayName":{"other":"Estonian kroons","one":"Estonian kroon"},"symbol":"EEK","narrow":"EEK"},"EGP":{"displayName":{"other":"Egyptian pounds","one":"Egyptian pound"},"symbol":"EGP","narrow":"E£"},"ERN":{"displayName":{"other":"Eritrean nakfas","one":"Eritrean nakfa"},"symbol":"ERN","narrow":"ERN"},"ESA":{"displayName":{"other":"Spanish pesetas (A account)","one":"Spanish peseta (A account)"},"symbol":"ESA","narrow":"ESA"},"ESB":{"displayName":{"other":"Spanish pesetas (convertible account)","one":"Spanish peseta (convertible account)"},"symbol":"ESB","narrow":"ESB"},"ESP":{"displayName":{"other":"Spanish pesetas","one":"Spanish peseta"},"symbol":"ESP","narrow":"₧"},"ETB":{"displayName":{"other":"Ethiopian birrs","one":"Ethiopian birr"},"symbol":"ETB","narrow":"ETB"},"EUR":{"displayName":{"other":"euros","one":"euro"},"symbol":"€","narrow":"€"},"FIM":{"displayName":{"other":"Finnish markkas","one":"Finnish markka"},"symbol":"FIM","narrow":"FIM"},"FJD":{"displayName":{"other":"Fijian dollars","one":"Fijian dollar"},"symbol":"FJD","narrow":"$"},"FKP":{"displayName":{"other":"Falkland Islands pounds","one":"Falkland Islands pound"},"symbol":"FKP","narrow":"£"},"FRF":{"displayName":{"other":"French francs","one":"French franc"},"symbol":"FRF","narrow":"FRF"},"GBP":{"displayName":{"other":"British pounds","one":"British pound"},"symbol":"£","narrow":"£"},"GEK":{"displayName":{"other":"Georgian kupon larits","one":"Georgian kupon larit"},"symbol":"GEK","narrow":"GEK"},"GEL":{"displayName":{"other":"Georgian laris","one":"Georgian lari"},"symbol":"GEL","narrow":"₾"},"GHC":{"displayName":{"other":"Ghanaian cedis (1979–2007)","one":"Ghanaian cedi (1979–2007)"},"symbol":"GHC","narrow":"GHC"},"GHS":{"displayName":{"other":"Ghanaian cedis","one":"Ghanaian cedi"},"symbol":"GHS","narrow":"GH₵"},"GIP":{"displayName":{"other":"Gibraltar pounds","one":"Gibraltar pound"},"symbol":"GIP","narrow":"£"},"GMD":{"displayName":{"other":"Gambian dalasis","one":"Gambian dalasi"},"symbol":"GMD","narrow":"GMD"},"GNF":{"displayName":{"other":"Guinean francs","one":"Guinean franc"},"symbol":"GNF","narrow":"FG"},"GNS":{"displayName":{"other":"Guinean sylis","one":"Guinean syli"},"symbol":"GNS","narrow":"GNS"},"GQE":{"displayName":{"other":"Equatorial Guinean ekwele"},"symbol":"GQE","narrow":"GQE"},"GRD":{"displayName":{"other":"Greek drachmas","one":"Greek drachma"},"symbol":"GRD","narrow":"GRD"},"GTQ":{"displayName":{"other":"Guatemalan quetzals","one":"Guatemalan quetzal"},"symbol":"GTQ","narrow":"Q"},"GWE":{"displayName":{"other":"Portuguese Guinea escudos","one":"Portuguese Guinea escudo"},"symbol":"GWE","narrow":"GWE"},"GWP":{"displayName":{"other":"Guinea-Bissau pesos","one":"Guinea-Bissau peso"},"symbol":"GWP","narrow":"GWP"},"GYD":{"displayName":{"other":"Guyanaese dollars","one":"Guyanaese dollar"},"symbol":"GYD","narrow":"$"},"HKD":{"displayName":{"other":"Hong Kong dollars","one":"Hong Kong dollar"},"symbol":"HK$","narrow":"$"},"HNL":{"displayName":{"other":"Honduran lempiras","one":"Honduran lempira"},"symbol":"HNL","narrow":"L"},"HRD":{"displayName":{"other":"Croatian dinars","one":"Croatian dinar"},"symbol":"HRD","narrow":"HRD"},"HRK":{"displayName":{"other":"Croatian kunas","one":"Croatian kuna"},"symbol":"HRK","narrow":"kn"},"HTG":{"displayName":{"other":"Haitian gourdes","one":"Haitian gourde"},"symbol":"HTG","narrow":"HTG"},"HUF":{"displayName":{"other":"Hungarian forints","one":"Hungarian forint"},"symbol":"HUF","narrow":"Ft"},"IDR":{"displayName":{"other":"Indonesian rupiahs","one":"Indonesian rupiah"},"symbol":"IDR","narrow":"Rp"},"IEP":{"displayName":{"other":"Irish pounds","one":"Irish pound"},"symbol":"IEP","narrow":"IEP"},"ILP":{"displayName":{"other":"Israeli pounds","one":"Israeli pound"},"symbol":"ILP","narrow":"ILP"},"ILR":{"displayName":{"other":"Israeli shekels (1980–1985)","one":"Israeli shekel (1980–1985)"},"symbol":"ILR","narrow":"ILR"},"ILS":{"displayName":{"other":"Israeli new shekels","one":"Israeli new shekel"},"symbol":"₪","narrow":"₪"},"INR":{"displayName":{"other":"Indian rupees","one":"Indian rupee"},"symbol":"₹","narrow":"₹"},"IQD":{"displayName":{"other":"Iraqi dinars","one":"Iraqi dinar"},"symbol":"IQD","narrow":"IQD"},"IRR":{"displayName":{"other":"Iranian rials","one":"Iranian rial"},"symbol":"IRR","narrow":"IRR"},"ISJ":{"displayName":{"other":"Icelandic krónur (1918–1981)","one":"Icelandic króna (1918–1981)"},"symbol":"ISJ","narrow":"ISJ"},"ISK":{"displayName":{"other":"Icelandic krónur","one":"Icelandic króna"},"symbol":"ISK","narrow":"kr"},"ITL":{"displayName":{"other":"Italian liras","one":"Italian lira"},"symbol":"ITL","narrow":"ITL"},"JMD":{"displayName":{"other":"Jamaican dollars","one":"Jamaican dollar"},"symbol":"JMD","narrow":"$"},"JOD":{"displayName":{"other":"Jordanian dinars","one":"Jordanian dinar"},"symbol":"JOD","narrow":"JOD"},"JPY":{"displayName":{"other":"Japanese yen"},"symbol":"¥","narrow":"¥"},"KES":{"displayName":{"other":"Kenyan shillings","one":"Kenyan shilling"},"symbol":"KES","narrow":"KES"},"KGS":{"displayName":{"other":"Kyrgystani soms","one":"Kyrgystani som"},"symbol":"KGS","narrow":"KGS"},"KHR":{"displayName":{"other":"Cambodian riels","one":"Cambodian riel"},"symbol":"KHR","narrow":"៛"},"KMF":{"displayName":{"other":"Comorian francs","one":"Comorian franc"},"symbol":"KMF","narrow":"CF"},"KPW":{"displayName":{"other":"North Korean won"},"symbol":"KPW","narrow":"₩"},"KRH":{"displayName":{"other":"South Korean hwan (1953–1962)"},"symbol":"KRH","narrow":"KRH"},"KRO":{"displayName":{"other":"South Korean won (1945–1953)"},"symbol":"KRO","narrow":"KRO"},"KRW":{"displayName":{"other":"South Korean won"},"symbol":"₩","narrow":"₩"},"KWD":{"displayName":{"other":"Kuwaiti dinars","one":"Kuwaiti dinar"},"symbol":"KWD","narrow":"KWD"},"KYD":{"displayName":{"other":"Cayman Islands dollars","one":"Cayman Islands dollar"},"symbol":"KYD","narrow":"$"},"KZT":{"displayName":{"other":"Kazakhstani tenges","one":"Kazakhstani tenge"},"symbol":"KZT","narrow":"₸"},"LAK":{"displayName":{"other":"Laotian kips","one":"Laotian kip"},"symbol":"LAK","narrow":"₭"},"LBP":{"displayName":{"other":"Lebanese pounds","one":"Lebanese pound"},"symbol":"LBP","narrow":"L£"},"LKR":{"displayName":{"other":"Sri Lankan rupees","one":"Sri Lankan rupee"},"symbol":"LKR","narrow":"Rs"},"LRD":{"displayName":{"other":"Liberian dollars","one":"Liberian dollar"},"symbol":"LRD","narrow":"$"},"LSL":{"displayName":{"other":"Lesotho lotis","one":"Lesotho loti"},"symbol":"LSL","narrow":"LSL"},"LTL":{"displayName":{"other":"Lithuanian litai","one":"Lithuanian litas"},"symbol":"LTL","narrow":"Lt"},"LTT":{"displayName":{"other":"Lithuanian talonases","one":"Lithuanian talonas"},"symbol":"LTT","narrow":"LTT"},"LUC":{"displayName":{"other":"Luxembourgian convertible francs","one":"Luxembourgian convertible franc"},"symbol":"LUC","narrow":"LUC"},"LUF":{"displayName":{"other":"Luxembourgian francs","one":"Luxembourgian franc"},"symbol":"LUF","narrow":"LUF"},"LUL":{"displayName":{"other":"Luxembourg financial francs","one":"Luxembourg financial franc"},"symbol":"LUL","narrow":"LUL"},"LVL":{"displayName":{"other":"Latvian lati","one":"Latvian lats"},"symbol":"LVL","narrow":"Ls"},"LVR":{"displayName":{"other":"Latvian rubles","one":"Latvian ruble"},"symbol":"LVR","narrow":"LVR"},"LYD":{"displayName":{"other":"Libyan dinars","one":"Libyan dinar"},"symbol":"LYD","narrow":"LYD"},"MAD":{"displayName":{"other":"Moroccan dirhams","one":"Moroccan dirham"},"symbol":"MAD","narrow":"MAD"},"MAF":{"displayName":{"other":"Moroccan francs","one":"Moroccan franc"},"symbol":"MAF","narrow":"MAF"},"MCF":{"displayName":{"other":"Monegasque francs","one":"Monegasque franc"},"symbol":"MCF","narrow":"MCF"},"MDC":{"displayName":{"other":"Moldovan cupon"},"symbol":"MDC","narrow":"MDC"},"MDL":{"displayName":{"other":"Moldovan lei","one":"Moldovan leu"},"symbol":"MDL","narrow":"MDL"},"MGA":{"displayName":{"other":"Malagasy ariaries","one":"Malagasy ariary"},"symbol":"MGA","narrow":"Ar"},"MGF":{"displayName":{"other":"Malagasy francs","one":"Malagasy franc"},"symbol":"MGF","narrow":"MGF"},"MKD":{"displayName":{"other":"Macedonian denari","one":"Macedonian denar"},"symbol":"MKD","narrow":"MKD"},"MKN":{"displayName":{"other":"Macedonian denari (1992–1993)","one":"Macedonian denar (1992–1993)"},"symbol":"MKN","narrow":"MKN"},"MLF":{"displayName":{"other":"Malian francs","one":"Malian franc"},"symbol":"MLF","narrow":"MLF"},"MMK":{"displayName":{"other":"Myanmar kyats","one":"Myanmar kyat"},"symbol":"MMK","narrow":"K"},"MNT":{"displayName":{"other":"Mongolian tugriks","one":"Mongolian tugrik"},"symbol":"MNT","narrow":"₮"},"MOP":{"displayName":{"other":"Macanese patacas","one":"Macanese pataca"},"symbol":"MOP","narrow":"MOP"},"MRO":{"displayName":{"other":"Mauritanian ouguiyas (1973–2017)","one":"Mauritanian ouguiya (1973–2017)"},"symbol":"MRO","narrow":"MRO"},"MRU":{"displayName":{"other":"Mauritanian ouguiyas","one":"Mauritanian ouguiya"},"symbol":"MRU","narrow":"MRU"},"MTL":{"displayName":{"other":"Maltese lira"},"symbol":"MTL","narrow":"MTL"},"MTP":{"displayName":{"other":"Maltese pounds","one":"Maltese pound"},"symbol":"MTP","narrow":"MTP"},"MUR":{"displayName":{"other":"Mauritian rupees","one":"Mauritian rupee"},"symbol":"MUR","narrow":"Rs"},"MVP":{"displayName":{"other":"Maldivian rupees (1947–1981)","one":"Maldivian rupee (1947–1981)"},"symbol":"MVP","narrow":"MVP"},"MVR":{"displayName":{"other":"Maldivian rufiyaas","one":"Maldivian rufiyaa"},"symbol":"MVR","narrow":"MVR"},"MWK":{"displayName":{"other":"Malawian kwachas","one":"Malawian kwacha"},"symbol":"MWK","narrow":"MWK"},"MXN":{"displayName":{"other":"Mexican pesos","one":"Mexican peso"},"symbol":"MX$","narrow":"$"},"MXP":{"displayName":{"other":"Mexican silver pesos (1861–1992)","one":"Mexican silver peso (1861–1992)"},"symbol":"MXP","narrow":"MXP"},"MXV":{"displayName":{"other":"Mexican investment units","one":"Mexican investment unit"},"symbol":"MXV","narrow":"MXV"},"MYR":{"displayName":{"other":"Malaysian ringgits","one":"Malaysian ringgit"},"symbol":"MYR","narrow":"RM"},"MZE":{"displayName":{"other":"Mozambican escudos","one":"Mozambican escudo"},"symbol":"MZE","narrow":"MZE"},"MZM":{"displayName":{"other":"Mozambican meticals (1980–2006)","one":"Mozambican metical (1980–2006)"},"symbol":"MZM","narrow":"MZM"},"MZN":{"displayName":{"other":"Mozambican meticals","one":"Mozambican metical"},"symbol":"MZN","narrow":"MZN"},"NAD":{"displayName":{"other":"Namibian dollars","one":"Namibian dollar"},"symbol":"NAD","narrow":"$"},"NGN":{"displayName":{"other":"Nigerian nairas","one":"Nigerian naira"},"symbol":"NGN","narrow":"₦"},"NIC":{"displayName":{"other":"Nicaraguan córdobas (1988–1991)","one":"Nicaraguan córdoba (1988–1991)"},"symbol":"NIC","narrow":"NIC"},"NIO":{"displayName":{"other":"Nicaraguan córdobas","one":"Nicaraguan córdoba"},"symbol":"NIO","narrow":"C$"},"NLG":{"displayName":{"other":"Dutch guilders","one":"Dutch guilder"},"symbol":"NLG","narrow":"NLG"},"NOK":{"displayName":{"other":"Norwegian kroner","one":"Norwegian krone"},"symbol":"NOK","narrow":"kr"},"NPR":{"displayName":{"other":"Nepalese rupees","one":"Nepalese rupee"},"symbol":"NPR","narrow":"Rs"},"NZD":{"displayName":{"other":"New Zealand dollars","one":"New Zealand dollar"},"symbol":"NZ$","narrow":"$"},"OMR":{"displayName":{"other":"Omani rials","one":"Omani rial"},"symbol":"OMR","narrow":"OMR"},"PAB":{"displayName":{"other":"Panamanian balboas","one":"Panamanian balboa"},"symbol":"PAB","narrow":"PAB"},"PEI":{"displayName":{"other":"Peruvian intis","one":"Peruvian inti"},"symbol":"PEI","narrow":"PEI"},"PEN":{"displayName":{"other":"Peruvian soles","one":"Peruvian sol"},"symbol":"PEN","narrow":"PEN"},"PES":{"displayName":{"other":"Peruvian soles (1863–1965)","one":"Peruvian sol (1863–1965)"},"symbol":"PES","narrow":"PES"},"PGK":{"displayName":{"other":"Papua New Guinean kina"},"symbol":"PGK","narrow":"PGK"},"PHP":{"displayName":{"other":"Philippine pisos","one":"Philippine piso"},"symbol":"₱","narrow":"₱"},"PKR":{"displayName":{"other":"Pakistani rupees","one":"Pakistani rupee"},"symbol":"PKR","narrow":"Rs"},"PLN":{"displayName":{"other":"Polish zlotys","one":"Polish zloty"},"symbol":"PLN","narrow":"zł"},"PLZ":{"displayName":{"other":"Polish zlotys (PLZ)","one":"Polish zloty (PLZ)"},"symbol":"PLZ","narrow":"PLZ"},"PTE":{"displayName":{"other":"Portuguese escudos","one":"Portuguese escudo"},"symbol":"PTE","narrow":"PTE"},"PYG":{"displayName":{"other":"Paraguayan guaranis","one":"Paraguayan guarani"},"symbol":"PYG","narrow":"₲"},"QAR":{"displayName":{"other":"Qatari rials","one":"Qatari rial"},"symbol":"QAR","narrow":"QAR"},"RHD":{"displayName":{"other":"Rhodesian dollars","one":"Rhodesian dollar"},"symbol":"RHD","narrow":"RHD"},"ROL":{"displayName":{"other":"Romanian Lei (1952–2006)","one":"Romanian leu (1952–2006)"},"symbol":"ROL","narrow":"ROL"},"RON":{"displayName":{"other":"Romanian lei","one":"Romanian leu"},"symbol":"RON","narrow":"lei"},"RSD":{"displayName":{"other":"Serbian dinars","one":"Serbian dinar"},"symbol":"RSD","narrow":"RSD"},"RUB":{"displayName":{"other":"Russian rubles","one":"Russian ruble"},"symbol":"RUB","narrow":"₽"},"RUR":{"displayName":{"other":"Russian rubles (1991–1998)","one":"Russian ruble (1991–1998)"},"symbol":"RUR","narrow":"р."},"RWF":{"displayName":{"other":"Rwandan francs","one":"Rwandan franc"},"symbol":"RWF","narrow":"RF"},"SAR":{"displayName":{"other":"Saudi riyals","one":"Saudi riyal"},"symbol":"SAR","narrow":"SAR"},"SBD":{"displayName":{"other":"Solomon Islands dollars","one":"Solomon Islands dollar"},"symbol":"SBD","narrow":"$"},"SCR":{"displayName":{"other":"Seychellois rupees","one":"Seychellois rupee"},"symbol":"SCR","narrow":"SCR"},"SDD":{"displayName":{"other":"Sudanese dinars (1992–2007)","one":"Sudanese dinar (1992–2007)"},"symbol":"SDD","narrow":"SDD"},"SDG":{"displayName":{"other":"Sudanese pounds","one":"Sudanese pound"},"symbol":"SDG","narrow":"SDG"},"SDP":{"displayName":{"other":"Sudanese pounds (1957–1998)","one":"Sudanese pound (1957–1998)"},"symbol":"SDP","narrow":"SDP"},"SEK":{"displayName":{"other":"Swedish kronor","one":"Swedish krona"},"symbol":"SEK","narrow":"kr"},"SGD":{"displayName":{"other":"Singapore dollars","one":"Singapore dollar"},"symbol":"SGD","narrow":"$"},"SHP":{"displayName":{"other":"St. Helena pounds","one":"St. Helena pound"},"symbol":"SHP","narrow":"£"},"SIT":{"displayName":{"other":"Slovenian tolars","one":"Slovenian tolar"},"symbol":"SIT","narrow":"SIT"},"SKK":{"displayName":{"other":"Slovak korunas","one":"Slovak koruna"},"symbol":"SKK","narrow":"SKK"},"SLL":{"displayName":{"other":"Sierra Leonean leones","one":"Sierra Leonean leone"},"symbol":"SLL","narrow":"SLL"},"SOS":{"displayName":{"other":"Somali shillings","one":"Somali shilling"},"symbol":"SOS","narrow":"SOS"},"SRD":{"displayName":{"other":"Surinamese dollars","one":"Surinamese dollar"},"symbol":"SRD","narrow":"$"},"SRG":{"displayName":{"other":"Surinamese guilders","one":"Surinamese guilder"},"symbol":"SRG","narrow":"SRG"},"SSP":{"displayName":{"other":"South Sudanese pounds","one":"South Sudanese pound"},"symbol":"SSP","narrow":"£"},"STD":{"displayName":{"other":"São Tomé & Príncipe dobras (1977–2017)","one":"São Tomé & Príncipe dobra (1977–2017)"},"symbol":"STD","narrow":"STD"},"STN":{"displayName":{"other":"São Tomé & Príncipe dobras","one":"São Tomé & Príncipe dobra"},"symbol":"STN","narrow":"Db"},"SUR":{"displayName":{"other":"Soviet roubles","one":"Soviet rouble"},"symbol":"SUR","narrow":"SUR"},"SVC":{"displayName":{"other":"Salvadoran colones","one":"Salvadoran colón"},"symbol":"SVC","narrow":"SVC"},"SYP":{"displayName":{"other":"Syrian pounds","one":"Syrian pound"},"symbol":"SYP","narrow":"£"},"SZL":{"displayName":{"other":"Swazi emalangeni","one":"Swazi lilangeni"},"symbol":"SZL","narrow":"SZL"},"THB":{"displayName":{"other":"Thai baht"},"symbol":"THB","narrow":"฿"},"TJR":{"displayName":{"other":"Tajikistani rubles","one":"Tajikistani ruble"},"symbol":"TJR","narrow":"TJR"},"TJS":{"displayName":{"other":"Tajikistani somonis","one":"Tajikistani somoni"},"symbol":"TJS","narrow":"TJS"},"TMM":{"displayName":{"other":"Turkmenistani manat (1993–2009)"},"symbol":"TMM","narrow":"TMM"},"TMT":{"displayName":{"other":"Turkmenistani manat"},"symbol":"TMT","narrow":"TMT"},"TND":{"displayName":{"other":"Tunisian dinars","one":"Tunisian dinar"},"symbol":"TND","narrow":"TND"},"TOP":{"displayName":{"other":"Tongan paʻanga"},"symbol":"TOP","narrow":"T$"},"TPE":{"displayName":{"other":"Timorese escudos","one":"Timorese escudo"},"symbol":"TPE","narrow":"TPE"},"TRL":{"displayName":{"other":"Turkish Lira (1922–2005)","one":"Turkish lira (1922–2005)"},"symbol":"TRL","narrow":"TRL"},"TRY":{"displayName":{"other":"Turkish Lira","one":"Turkish lira"},"symbol":"TRY","narrow":"₺"},"TTD":{"displayName":{"other":"Trinidad & Tobago dollars","one":"Trinidad & Tobago dollar"},"symbol":"TTD","narrow":"$"},"TWD":{"displayName":{"other":"New Taiwan dollars","one":"New Taiwan dollar"},"symbol":"NT$","narrow":"$"},"TZS":{"displayName":{"other":"Tanzanian shillings","one":"Tanzanian shilling"},"symbol":"TZS","narrow":"TZS"},"UAH":{"displayName":{"other":"Ukrainian hryvnias","one":"Ukrainian hryvnia"},"symbol":"UAH","narrow":"₴"},"UAK":{"displayName":{"other":"Ukrainian karbovantsiv","one":"Ukrainian karbovanets"},"symbol":"UAK","narrow":"UAK"},"UGS":{"displayName":{"other":"Ugandan shillings (1966–1987)","one":"Ugandan shilling (1966–1987)"},"symbol":"UGS","narrow":"UGS"},"UGX":{"displayName":{"other":"Ugandan shillings","one":"Ugandan shilling"},"symbol":"UGX","narrow":"UGX"},"USD":{"displayName":{"other":"US dollars","one":"US dollar"},"symbol":"$","narrow":"$"},"USN":{"displayName":{"other":"US dollars (next day)","one":"US dollar (next day)"},"symbol":"USN","narrow":"USN"},"USS":{"displayName":{"other":"US dollars (same day)","one":"US dollar (same day)"},"symbol":"USS","narrow":"USS"},"UYI":{"displayName":{"other":"Uruguayan pesos (indexed units)","one":"Uruguayan peso (indexed units)"},"symbol":"UYI","narrow":"UYI"},"UYP":{"displayName":{"other":"Uruguayan pesos (1975–1993)","one":"Uruguayan peso (1975–1993)"},"symbol":"UYP","narrow":"UYP"},"UYU":{"displayName":{"other":"Uruguayan pesos","one":"Uruguayan peso"},"symbol":"UYU","narrow":"$"},"UYW":{"displayName":{"other":"Uruguayan nominal wage index units","one":"Uruguayan nominal wage index unit"},"symbol":"UYW","narrow":"UYW"},"UZS":{"displayName":{"other":"Uzbekistani som"},"symbol":"UZS","narrow":"UZS"},"VEB":{"displayName":{"other":"Venezuelan bolívars (1871–2008)","one":"Venezuelan bolívar (1871–2008)"},"symbol":"VEB","narrow":"VEB"},"VEF":{"displayName":{"other":"Venezuelan bolívars (2008–2018)","one":"Venezuelan bolívar (2008–2018)"},"symbol":"VEF","narrow":"Bs"},"VES":{"displayName":{"other":"Venezuelan bolívars","one":"Venezuelan bolívar"},"symbol":"VES","narrow":"VES"},"VND":{"displayName":{"other":"Vietnamese dong"},"symbol":"₫","narrow":"₫"},"VNN":{"displayName":{"other":"Vietnamese dong (1978–1985)"},"symbol":"VNN","narrow":"VNN"},"VUV":{"displayName":{"other":"Vanuatu vatus","one":"Vanuatu vatu"},"symbol":"VUV","narrow":"VUV"},"WST":{"displayName":{"other":"Samoan tala"},"symbol":"WST","narrow":"WST"},"XAF":{"displayName":{"other":"Central African CFA francs","one":"Central African CFA franc"},"symbol":"FCFA","narrow":"FCFA"},"XAG":{"displayName":{"other":"troy ounces of silver","one":"troy ounce of silver"},"symbol":"XAG","narrow":"XAG"},"XAU":{"displayName":{"other":"troy ounces of gold","one":"troy ounce of gold"},"symbol":"XAU","narrow":"XAU"},"XBA":{"displayName":{"other":"European composite units","one":"European composite unit"},"symbol":"XBA","narrow":"XBA"},"XBB":{"displayName":{"other":"European monetary units","one":"European monetary unit"},"symbol":"XBB","narrow":"XBB"},"XBC":{"displayName":{"other":"European units of account (XBC)","one":"European unit of account (XBC)"},"symbol":"XBC","narrow":"XBC"},"XBD":{"displayName":{"other":"European units of account (XBD)","one":"European unit of account (XBD)"},"symbol":"XBD","narrow":"XBD"},"XCD":{"displayName":{"other":"East Caribbean dollars","one":"East Caribbean dollar"},"symbol":"EC$","narrow":"$"},"XDR":{"displayName":{"other":"special drawing rights"},"symbol":"XDR","narrow":"XDR"},"XEU":{"displayName":{"other":"European currency units","one":"European currency unit"},"symbol":"XEU","narrow":"XEU"},"XFO":{"displayName":{"other":"French gold francs","one":"French gold franc"},"symbol":"XFO","narrow":"XFO"},"XFU":{"displayName":{"other":"French UIC-francs","one":"French UIC-franc"},"symbol":"XFU","narrow":"XFU"},"XOF":{"displayName":{"other":"West African CFA francs","one":"West African CFA franc"},"symbol":"F CFA","narrow":"F CFA"},"XPD":{"displayName":{"other":"troy ounces of palladium","one":"troy ounce of palladium"},"symbol":"XPD","narrow":"XPD"},"XPF":{"displayName":{"other":"CFP francs","one":"CFP franc"},"symbol":"CFPF","narrow":"CFPF"},"XPT":{"displayName":{"other":"troy ounces of platinum","one":"troy ounce of platinum"},"symbol":"XPT","narrow":"XPT"},"XRE":{"displayName":{"other":"RINET Funds units","one":"RINET Funds unit"},"symbol":"XRE","narrow":"XRE"},"XSU":{"displayName":{"other":"Sucres","one":"Sucre"},"symbol":"XSU","narrow":"XSU"},"XTS":{"displayName":{"other":"Testing Currency units","one":"Testing Currency unit"},"symbol":"XTS","narrow":"XTS"},"XUA":{"displayName":{"other":"ADB units of account","one":"ADB unit of account"},"symbol":"XUA","narrow":"XUA"},"XXX":{"displayName":{"other":"(unknown currency)","one":"(unknown unit of currency)"},"symbol":"¤","narrow":"¤"},"YDD":{"displayName":{"other":"Yemeni dinars","one":"Yemeni dinar"},"symbol":"YDD","narrow":"YDD"},"YER":{"displayName":{"other":"Yemeni rials","one":"Yemeni rial"},"symbol":"YER","narrow":"YER"},"YUD":{"displayName":{"other":"Yugoslavian hard dinars (1966–1990)","one":"Yugoslavian hard dinar (1966–1990)"},"symbol":"YUD","narrow":"YUD"},"YUM":{"displayName":{"other":"Yugoslavian new dinars (1994–2002)","one":"Yugoslavian new dinar (1994–2002)"},"symbol":"YUM","narrow":"YUM"},"YUN":{"displayName":{"other":"Yugoslavian convertible dinars (1990–1992)","one":"Yugoslavian convertible dinar (1990–1992)"},"symbol":"YUN","narrow":"YUN"},"YUR":{"displayName":{"other":"Yugoslavian reformed dinars (1992–1993)","one":"Yugoslavian reformed dinar (1992–1993)"},"symbol":"YUR","narrow":"YUR"},"ZAL":{"displayName":{"other":"South African rands (financial)","one":"South African rand (financial)"},"symbol":"ZAL","narrow":"ZAL"},"ZAR":{"displayName":{"other":"South African rand"},"symbol":"ZAR","narrow":"R"},"ZMK":{"displayName":{"other":"Zambian kwachas (1968–2012)","one":"Zambian kwacha (1968–2012)"},"symbol":"ZMK","narrow":"ZMK"},"ZMW":{"displayName":{"other":"Zambian kwachas","one":"Zambian kwacha"},"symbol":"ZMW","narrow":"ZK"},"ZRN":{"displayName":{"other":"Zairean new zaires (1993–1998)","one":"Zairean new zaire (1993–1998)"},"symbol":"ZRN","narrow":"ZRN"},"ZRZ":{"displayName":{"other":"Zairean zaires (1971–1993)","one":"Zairean zaire (1971–1993)"},"symbol":"ZRZ","narrow":"ZRZ"},"ZWD":{"displayName":{"other":"Zimbabwean dollars (1980–2008)","one":"Zimbabwean dollar (1980–2008)"},"symbol":"ZWD","narrow":"ZWD"},"ZWL":{"displayName":{"other":"Zimbabwean dollars (2009)","one":"Zimbabwean dollar (2009)"},"symbol":"ZWL","narrow":"ZWL"},"ZWR":{"displayName":{"other":"Zimbabwean dollars (2008)","one":"Zimbabwean dollar (2008)"},"symbol":"ZWR","narrow":"ZWR"}},"numbers":{"nu":["latn"],"symbols":{"latn":{"decimal":".","group":",","list":";","percentSign":"%","plusSign":"+","minusSign":"-","approximatelySign":"~","exponential":"E","superscriptingExponent":"×","perMille":"‰","infinity":"∞","nan":"NaN","timeSeparator":":"}},"percent":{"latn":"#,##0%"},"decimal":{"latn":{"standard":"#,##0.###","long":{"1000":{"other":"0 thousand"},"10000":{"other":"00 thousand"},"100000":{"other":"000 thousand"},"1000000":{"other":"0 million"},"10000000":{"other":"00 million"},"100000000":{"other":"000 million"},"1000000000":{"other":"0 billion"},"10000000000":{"other":"00 billion"},"100000000000":{"other":"000 billion"},"1000000000000":{"other":"0 trillion"},"10000000000000":{"other":"00 trillion"},"100000000000000":{"other":"000 trillion"}},"short":{"1000":{"other":"0K"},"10000":{"other":"00K"},"100000":{"other":"000K"},"1000000":{"other":"0M"},"10000000":{"other":"00M"},"100000000":{"other":"000M"},"1000000000":{"other":"0B"},"10000000000":{"other":"00B"},"100000000000":{"other":"000B"},"1000000000000":{"other":"0T"},"10000000000000":{"other":"00T"},"100000000000000":{"other":"000T"}}}},"currency":{"latn":{"currencySpacing":{"beforeInsertBetween":" ","afterInsertBetween":" "},"standard":"¤#,##0.00","accounting":"¤#,##0.00;(¤#,##0.00)","unitPattern":"{0} {1}","short":{"1000":{"other":"¤0K"},"10000":{"other":"¤00K"},"100000":{"other":"¤000K"},"1000000":{"other":"¤0M"},"10000000":{"other":"¤00M"},"100000000":{"other":"¤000M"},"1000000000":{"other":"¤0B"},"10000000000":{"other":"¤00B"},"100000000000":{"other":"¤000B"},"1000000000000":{"other":"¤0T"},"10000000000000":{"other":"¤00T"},"100000000000000":{"other":"¤000T"}}}}},"nu":["latn"]},"locale":"en"}
)
}
}

if (!("Intl"in self&&"DateTimeFormat"in self.Intl&&"formatRangeToParts"in self.Intl.DateTimeFormat&&self.Intl.DateTimeFormat.supportedLocalesOf("en").length
)) {

// Intl.DateTimeFormat.~locale.en
/* @generated */	

  // prettier-ignore
  if (Intl.DateTimeFormat && typeof Intl.DateTimeFormat.__addLocaleData === 'function') {
    Intl.DateTimeFormat.__addLocaleData({"data":{"am":"AM","pm":"PM","weekday":{"narrow":["S","M","T","W","T","F","S"],"short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"long":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},"era":{"narrow":{"BC":"B","AD":"A"},"short":{"BC":"BC","AD":"AD"},"long":{"BC":"Before Christ","AD":"Anno Domini"}},"month":{"narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"short":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"long":["January","February","March","April","May","June","July","August","September","October","November","December"]},"timeZoneName":{"America/Rio_Branco":{"long":["Acre Standard Time","Acre Summer Time"]},"Asia/Kabul":{"long":["Afghanistan Time","Afghanistan Time"]},"Africa/Maputo":{"long":["Central Africa Time","Central Africa Time"]},"Africa/Bujumbura":{"long":["Central Africa Time","Central Africa Time"]},"Africa/Gaborone":{"long":["Central Africa Time","Central Africa Time"]},"Africa/Lubumbashi":{"long":["Central Africa Time","Central Africa Time"]},"Africa/Blantyre":{"long":["Central Africa Time","Central Africa Time"]},"Africa/Kigali":{"long":["Central Africa Time","Central Africa Time"]},"Africa/Lusaka":{"long":["Central Africa Time","Central Africa Time"]},"Africa/Harare":{"long":["Central Africa Time","Central Africa Time"]},"Africa/Nairobi":{"long":["East Africa Time","East Africa Time"]},"Africa/Djibouti":{"long":["East Africa Time","East Africa Time"]},"Africa/Asmera":{"long":["East Africa Time","East Africa Time"]},"Africa/Addis_Ababa":{"long":["East Africa Time","East Africa Time"]},"Indian/Comoro":{"long":["East Africa Time","East Africa Time"]},"Indian/Antananarivo":{"long":["East Africa Time","East Africa Time"]},"Africa/Mogadishu":{"long":["East Africa Time","East Africa Time"]},"Africa/Dar_es_Salaam":{"long":["East Africa Time","East Africa Time"]},"Africa/Kampala":{"long":["East Africa Time","East Africa Time"]},"Indian/Mayotte":{"long":["East Africa Time","East Africa Time"]},"Africa/Johannesburg":{"long":["South Africa Standard Time","South Africa Standard Time"]},"Africa/Maseru":{"long":["South Africa Standard Time","South Africa Standard Time"]},"Africa/Mbabane":{"long":["South Africa Standard Time","South Africa Standard Time"]},"Africa/Lagos":{"long":["West Africa Standard Time","West Africa Summer Time"]},"Africa/Luanda":{"long":["West Africa Standard Time","West Africa Summer Time"]},"Africa/Porto-Novo":{"long":["West Africa Standard Time","West Africa Summer Time"]},"Africa/Kinshasa":{"long":["West Africa Standard Time","West Africa Summer Time"]},"Africa/Bangui":{"long":["West Africa Standard Time","West Africa Summer Time"]},"Africa/Brazzaville":{"long":["West Africa Standard Time","West Africa Summer Time"]},"Africa/Douala":{"long":["West Africa Standard Time","West Africa Summer Time"]},"Africa/Libreville":{"long":["West Africa Standard Time","West Africa Summer Time"]},"Africa/Malabo":{"long":["West Africa Standard Time","West Africa Summer Time"]},"Africa/Niamey":{"long":["West Africa Standard Time","West Africa Summer Time"]},"Africa/Ndjamena":{"long":["West Africa Standard Time","West Africa Summer Time"]},"Asia/Aqtobe":{"long":["West Kazakhstan Time","West Kazakhstan Time"]},"America/Juneau":{"long":["Alaska Standard Time","Alaska Daylight Time"],"short":["AKST","AKDT"]},"Asia/Almaty":{"long":["East Kazakhstan Time","East Kazakhstan Time"]},"America/Manaus":{"long":["Amazon Standard Time","Amazon Summer Time"]},"America/Chicago":{"long":["Central Standard Time","Central Daylight Time"],"short":["CST","CDT"]},"America/Belize":{"long":["Central Standard Time","Central Daylight Time"],"short":["CST","CDT"]},"America/Winnipeg":{"long":["Central Standard Time","Central Daylight Time"],"short":["CST","CDT"]},"America/Costa_Rica":{"long":["Central Standard Time","Central Daylight Time"],"short":["CST","CDT"]},"America/Guatemala":{"long":["Central Standard Time","Central Daylight Time"],"short":["CST","CDT"]},"America/Tegucigalpa":{"long":["Central Standard Time","Central Daylight Time"],"short":["CST","CDT"]},"America/Mexico_City":{"long":["Central Standard Time","Central Daylight Time"],"short":["CST","CDT"]},"America/El_Salvador":{"long":["Central Standard Time","Central Daylight Time"],"short":["CST","CDT"]},"America/New_York":{"long":["Eastern Standard Time","Eastern Daylight Time"],"short":["EST","EDT"]},"America/Nassau":{"long":["Eastern Standard Time","Eastern Daylight Time"],"short":["EST","EDT"]},"America/Toronto":{"long":["Eastern Standard Time","Eastern Daylight Time"],"short":["EST","EDT"]},"America/Port-au-Prince":{"long":["Eastern Standard Time","Eastern Daylight Time"],"short":["EST","EDT"]},"America/Jamaica":{"long":["Eastern Standard Time","Eastern Daylight Time"],"short":["EST","EDT"]},"America/Cayman":{"long":["Eastern Standard Time","Eastern Daylight Time"],"short":["EST","EDT"]},"America/Panama":{"long":["Eastern Standard Time","Eastern Daylight Time"],"short":["EST","EDT"]},"America/Denver":{"long":["Mountain Standard Time","Mountain Daylight Time"],"short":["MST","MDT"]},"America/Edmonton":{"long":["Mountain Standard Time","Mountain Daylight Time"],"short":["MST","MDT"]},"America/Hermosillo":{"long":["Mountain Standard Time","Mountain Daylight Time"],"short":["MST","MDT"]},"America/Los_Angeles":{"long":["Pacific Standard Time","Pacific Daylight Time"],"short":["PST","PDT"]},"America/Vancouver":{"long":["Pacific Standard Time","Pacific Daylight Time"],"short":["PST","PDT"]},"America/Tijuana":{"long":["Pacific Standard Time","Pacific Daylight Time"],"short":["PST","PDT"]},"Asia/Anadyr":{"long":["Anadyr Standard Time","Anadyr Summer Time"]},"Pacific/Apia":{"long":["Apia Standard Time","Apia Daylight Time"]},"Asia/Riyadh":{"long":["Arabian Standard Time","Arabian Daylight Time"]},"Asia/Bahrain":{"long":["Arabian Standard Time","Arabian Daylight Time"]},"Asia/Baghdad":{"long":["Arabian Standard Time","Arabian Daylight Time"]},"Asia/Kuwait":{"long":["Arabian Standard Time","Arabian Daylight Time"]},"Asia/Qatar":{"long":["Arabian Standard Time","Arabian Daylight Time"]},"Asia/Aden":{"long":["Arabian Standard Time","Arabian Daylight Time"]},"America/Buenos_Aires":{"long":["Argentina Standard Time","Argentina Summer Time"]},"America/Argentina/San_Luis":{"long":["Western Argentina Standard Time","Western Argentina Summer Time"]},"Asia/Ashgabat":{"long":["Turkmenistan Standard Time","Turkmenistan Summer Time"]},"America/Halifax":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Antigua":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Anguilla":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Aruba":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Barbados":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"Atlantic/Bermuda":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Kralendijk":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Curacao":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Dominica":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Grenada":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Thule":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Guadeloupe":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/St_Kitts":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/St_Lucia":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Marigot":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Martinique":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Montserrat":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Puerto_Rico":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Lower_Princes":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Port_of_Spain":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/St_Vincent":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/Tortola":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"America/St_Thomas":{"long":["Atlantic Standard Time","Atlantic Daylight Time"],"short":["AST","ADT"]},"Australia/Adelaide":{"long":["Australian Central Standard Time","Australian Central Daylight Time"]},"Australia/Eucla":{"long":["Australian Central Western Standard Time","Australian Central Western Daylight Time"]},"Australia/Sydney":{"long":["Australian Eastern Standard Time","Australian Eastern Daylight Time"]},"Australia/Perth":{"long":["Australian Western Standard Time","Australian Western Daylight Time"]},"Atlantic/Azores":{"long":["Azores Standard Time","Azores Summer Time"]},"Asia/Thimphu":{"long":["Bhutan Time","Bhutan Time"]},"America/La_Paz":{"long":["Bolivia Time","Bolivia Time"]},"Asia/Kuching":{"long":["Malaysia Time","Malaysia Time"]},"America/Sao_Paulo":{"long":["Brasilia Standard Time","Brasilia Summer Time"]},"Europe/London":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Asia/Brunei":{"long":["Brunei Darussalam Time","Brunei Darussalam Time"]},"Atlantic/Cape_Verde":{"long":["Cape Verde Standard Time","Cape Verde Summer Time"]},"Antarctica/Casey":{"long":["Casey Time","Casey Time"]},"Pacific/Saipan":{"long":["North Mariana Islands Time","North Mariana Islands Time"]},"Pacific/Guam":{"long":["Guam Standard Time","Guam Standard Time"]},"Pacific/Chatham":{"long":["Chatham Standard Time","Chatham Daylight Time"]},"America/Santiago":{"long":["Chile Standard Time","Chile Summer Time"]},"Asia/Shanghai":{"long":["China Standard Time","China Daylight Time"]},"Asia/Choibalsan":{"long":["Choibalsan Standard Time","Choibalsan Summer Time"]},"Indian/Christmas":{"long":["Christmas Island Time","Christmas Island Time"]},"Indian/Cocos":{"long":["Cocos Islands Time","Cocos Islands Time"]},"America/Bogota":{"long":["Colombia Standard Time","Colombia Summer Time"]},"Pacific/Rarotonga":{"long":["Cook Islands Standard Time","Cook Islands Half Summer Time"]},"America/Havana":{"long":["Cuba Standard Time","Cuba Daylight Time"]},"Antarctica/Davis":{"long":["Davis Time","Davis Time"]},"Antarctica/DumontDUrville":{"long":["Dumont-d’Urville Time","Dumont-d’Urville Time"]},"Asia/Dushanbe":{"long":["Tajikistan Time","Tajikistan Time"]},"America/Paramaribo":{"long":["Suriname Time","Suriname Time"]},"Asia/Dili":{"long":["East Timor Time","East Timor Time"]},"Pacific/Easter":{"long":["Easter Island Standard Time","Easter Island Summer Time"]},"America/Guayaquil":{"long":["Ecuador Time","Ecuador Time"]},"Europe/Paris":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Andorra":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Tirane":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Vienna":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Sarajevo":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Brussels":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Zurich":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Prague":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Berlin":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Copenhagen":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Madrid":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Gibraltar":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Zagreb":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Budapest":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Rome":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Vaduz":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Luxembourg":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Monaco":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Podgorica":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Skopje":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Malta":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Amsterdam":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Oslo":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Warsaw":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Belgrade":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Stockholm":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Ljubljana":{"long":["Central European Standard Time","Central European Summer Time"]},"Arctic/Longyearbyen":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Bratislava":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/San_Marino":{"long":["Central European Standard Time","Central European Summer Time"]},"Africa/Tunis":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Vatican":{"long":["Central European Standard Time","Central European Summer Time"]},"Europe/Bucharest":{"long":["Eastern European Standard Time","Eastern European Summer Time"]},"Europe/Mariehamn":{"long":["Eastern European Standard Time","Eastern European Summer Time"]},"Europe/Sofia":{"long":["Eastern European Standard Time","Eastern European Summer Time"]},"Asia/Nicosia":{"long":["Eastern European Standard Time","Eastern European Summer Time"]},"Africa/Cairo":{"long":["Eastern European Standard Time","Eastern European Summer Time"]},"Europe/Helsinki":{"long":["Eastern European Standard Time","Eastern European Summer Time"]},"Europe/Athens":{"long":["Eastern European Standard Time","Eastern European Summer Time"]},"Asia/Amman":{"long":["Eastern European Standard Time","Eastern European Summer Time"]},"Asia/Beirut":{"long":["Eastern European Standard Time","Eastern European Summer Time"]},"Asia/Damascus":{"long":["Eastern European Standard Time","Eastern European Summer Time"]},"Europe/Minsk":{"long":["Further-eastern European Time","Further-eastern European Time"]},"Europe/Kaliningrad":{"long":["Further-eastern European Time","Further-eastern European Time"]},"Atlantic/Canary":{"long":["Western European Standard Time","Western European Summer Time"]},"Atlantic/Faeroe":{"long":["Western European Standard Time","Western European Summer Time"]},"Atlantic/Stanley":{"long":["Falkland Islands Standard Time","Falkland Islands Summer Time"]},"Pacific/Fiji":{"long":["Fiji Standard Time","Fiji Summer Time"]},"America/Cayenne":{"long":["French Guiana Time","French Guiana Time"]},"Indian/Kerguelen":{"long":["French Southern & Antarctic Time","French Southern & Antarctic Time"]},"Asia/Bishkek":{"long":["Kyrgyzstan Time","Kyrgyzstan Time"]},"Pacific/Galapagos":{"long":["Galapagos Time","Galapagos Time"]},"Pacific/Gambier":{"long":["Gambier Time","Gambier Time"]},"Pacific/Tarawa":{"long":["Gilbert Islands Time","Gilbert Islands Time"]},"Atlantic/Reykjavik":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Africa/Ouagadougou":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Africa/Abidjan":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Africa/Accra":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Africa/Banjul":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Africa/Conakry":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Africa/Bamako":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Africa/Nouakchott":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Atlantic/St_Helena":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Africa/Freetown":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Africa/Dakar":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"Africa/Lome":{"long":["Greenwich Mean Time","Greenwich Mean Time"],"short":["GMT","GMT"]},"America/Scoresbysund":{"long":["East Greenland Standard Time","East Greenland Summer Time"]},"America/Godthab":{"long":["West Greenland Standard Time","West Greenland Summer Time"]},"Asia/Dubai":{"long":["Gulf Standard Time","Gulf Standard Time"]},"Asia/Muscat":{"long":["Gulf Standard Time","Gulf Standard Time"]},"America/Guyana":{"long":["Guyana Time","Guyana Time"]},"Pacific/Honolulu":{"long":["Hawaii-Aleutian Standard Time","Hawaii-Aleutian Daylight Time"],"short":["HAST","HADT"]},"Asia/Hong_Kong":{"long":["Hong Kong Standard Time","Hong Kong Summer Time"]},"Asia/Hovd":{"long":["Hovd Standard Time","Hovd Summer Time"]},"Asia/Calcutta":{"long":["India Standard Time","India Standard Time"]},"Asia/Colombo":{"long":["Lanka Time","Lanka Time"]},"Indian/Chagos":{"long":["Indian Ocean Time","Indian Ocean Time"]},"Asia/Bangkok":{"long":["Indochina Time","Indochina Time"]},"Asia/Phnom_Penh":{"long":["Indochina Time","Indochina Time"]},"Asia/Vientiane":{"long":["Indochina Time","Indochina Time"]},"Asia/Makassar":{"long":["Central Indonesia Time","Central Indonesia Time"]},"Asia/Jayapura":{"long":["Eastern Indonesia Time","Eastern Indonesia Time"]},"Asia/Jakarta":{"long":["Western Indonesia Time","Western Indonesia Time"]},"Asia/Tehran":{"long":["Iran Standard Time","Iran Daylight Time"]},"Asia/Irkutsk":{"long":["Irkutsk Standard Time","Irkutsk Summer Time"]},"Asia/Jerusalem":{"long":["Israel Standard Time","Israel Daylight Time"]},"Asia/Tokyo":{"long":["Japan Standard Time","Japan Daylight Time"]},"Asia/Kamchatka":{"long":["Petropavlovsk-Kamchatski Standard Time","Petropavlovsk-Kamchatski Summer Time"]},"Asia/Karachi":{"long":["Pakistan Standard Time","Pakistan Summer Time"]},"Asia/Qyzylorda":{"long":["Qyzylorda Standard Time","Qyzylorda Summer Time"]},"Asia/Seoul":{"long":["Korean Standard Time","Korean Daylight Time"]},"Pacific/Kosrae":{"long":["Kosrae Time","Kosrae Time"]},"Asia/Krasnoyarsk":{"long":["Krasnoyarsk Standard Time","Krasnoyarsk Summer Time"]},"Europe/Samara":{"long":["Samara Standard Time","Samara Summer Time"]},"Pacific/Kiritimati":{"long":["Line Islands Time","Line Islands Time"]},"Australia/Lord_Howe":{"long":["Lord Howe Standard Time","Lord Howe Daylight Time"]},"Asia/Macau":{"long":["Macao Standard Time","Macao Summer Time"]},"Antarctica/Macquarie":{"long":["Macquarie Island Time","Macquarie Island Time"]},"Asia/Magadan":{"long":["Magadan Standard Time","Magadan Summer Time"]},"Indian/Maldives":{"long":["Maldives Time","Maldives Time"]},"Pacific/Marquesas":{"long":["Marquesas Time","Marquesas Time"]},"Pacific/Majuro":{"long":["Marshall Islands Time","Marshall Islands Time"]},"Indian/Mauritius":{"long":["Mauritius Standard Time","Mauritius Summer Time"]},"Antarctica/Mawson":{"long":["Mawson Time","Mawson Time"]},"America/Santa_Isabel":{"long":["Northwest Mexico Standard Time","Northwest Mexico Daylight Time"]},"America/Mazatlan":{"long":["Mexican Pacific Standard Time","Mexican Pacific Daylight Time"]},"Asia/Ulaanbaatar":{"long":["Ulaanbaatar Standard Time","Ulaanbaatar Summer Time"]},"Europe/Moscow":{"long":["Moscow Standard Time","Moscow Summer Time"]},"Asia/Rangoon":{"long":["Myanmar Time","Myanmar Time"]},"Pacific/Nauru":{"long":["Nauru Time","Nauru Time"]},"Asia/Katmandu":{"long":["Nepal Time","Nepal Time"]},"Pacific/Noumea":{"long":["New Caledonia Standard Time","New Caledonia Summer Time"]},"Pacific/Auckland":{"long":["New Zealand Standard Time","New Zealand Daylight Time"]},"Antarctica/McMurdo":{"long":["New Zealand Standard Time","New Zealand Daylight Time"]},"America/St_Johns":{"long":["Newfoundland Standard Time","Newfoundland Daylight Time"]},"Pacific/Niue":{"long":["Niue Time","Niue Time"]},"Pacific/Norfolk":{"long":["Norfolk Island Standard Time","Norfolk Island Daylight Time"]},"America/Noronha":{"long":["Fernando de Noronha Standard Time","Fernando de Noronha Summer Time"]},"Asia/Novosibirsk":{"long":["Novosibirsk Standard Time","Novosibirsk Summer Time"]},"Asia/Omsk":{"long":["Omsk Standard Time","Omsk Summer Time"]},"Pacific/Palau":{"long":["Palau Time","Palau Time"]},"Pacific/Port_Moresby":{"long":["Papua New Guinea Time","Papua New Guinea Time"]},"America/Asuncion":{"long":["Paraguay Standard Time","Paraguay Summer Time"]},"America/Lima":{"long":["Peru Standard Time","Peru Summer Time"]},"Asia/Manila":{"long":["Philippine Standard Time","Philippine Summer Time"]},"Pacific/Enderbury":{"long":["Phoenix Islands Time","Phoenix Islands Time"]},"America/Miquelon":{"long":["St. Pierre & Miquelon Standard Time","St. Pierre & Miquelon Daylight Time"]},"Pacific/Pitcairn":{"long":["Pitcairn Time","Pitcairn Time"]},"Pacific/Ponape":{"long":["Ponape Time","Ponape Time"]},"Asia/Pyongyang":{"long":["Pyongyang Time","Pyongyang Time"]},"Indian/Reunion":{"long":["Réunion Time","Réunion Time"]},"Antarctica/Rothera":{"long":["Rothera Time","Rothera Time"]},"Asia/Sakhalin":{"long":["Sakhalin Standard Time","Sakhalin Summer Time"]},"Pacific/Pago_Pago":{"long":["Samoa Standard Time","Samoa Daylight Time"]},"Indian/Mahe":{"long":["Seychelles Time","Seychelles Time"]},"Asia/Singapore":{"long":["Singapore Standard Time","Singapore Standard Time"]},"Pacific/Guadalcanal":{"long":["Solomon Islands Time","Solomon Islands Time"]},"Atlantic/South_Georgia":{"long":["South Georgia Time","South Georgia Time"]},"Asia/Yekaterinburg":{"long":["Yekaterinburg Standard Time","Yekaterinburg Summer Time"]},"Antarctica/Syowa":{"long":["Syowa Time","Syowa Time"]},"Pacific/Tahiti":{"long":["Tahiti Time","Tahiti Time"]},"Asia/Taipei":{"long":["Taipei Standard Time","Taipei Daylight Time"]},"Asia/Tashkent":{"long":["Uzbekistan Standard Time","Uzbekistan Summer Time"]},"Pacific/Fakaofo":{"long":["Tokelau Time","Tokelau Time"]},"Pacific/Tongatapu":{"long":["Tonga Standard Time","Tonga Summer Time"]},"Pacific/Truk":{"long":["Chuuk Time","Chuuk Time"]},"Pacific/Funafuti":{"long":["Tuvalu Time","Tuvalu Time"]},"America/Montevideo":{"long":["Uruguay Standard Time","Uruguay Summer Time"]},"Pacific/Efate":{"long":["Vanuatu Standard Time","Vanuatu Summer Time"]},"America/Caracas":{"long":["Venezuela Time","Venezuela Time"]},"Asia/Vladivostok":{"long":["Vladivostok Standard Time","Vladivostok Summer Time"]},"Europe/Volgograd":{"long":["Volgograd Standard Time","Volgograd Summer Time"]},"Antarctica/Vostok":{"long":["Vostok Time","Vostok Time"]},"Pacific/Wake":{"long":["Wake Island Time","Wake Island Time"]},"Pacific/Wallis":{"long":["Wallis & Futuna Time","Wallis & Futuna Time"]},"Asia/Yakutsk":{"long":["Yakutsk Standard Time","Yakutsk Summer Time"]},"UTC":{"long":["Coordinated Universal Time","Coordinated Universal Time"],"short":["UTC","UTC"]}},"gmtFormat":"GMT{0}","hourFormat":"+HH:mm;-HH:mm","dateFormat":{"full":"EEEE, MMMM d, y","long":"MMMM d, y","medium":"MMM d, y","short":"M/d/yy"},"timeFormat":{"full":"h:mm:ss a zzzz","long":"h:mm:ss a z","medium":"h:mm:ss a","short":"h:mm a"},"dateTimeFormat":{"full":"{1} 'at' {0}","long":"{1} 'at' {0}","medium":"{1}, {0}","short":"{1}, {0}"},"formats":{"gregory":{"Bh":"h B","Bhm":"h:mm B","Bhms":"h:mm:ss B","d":"d","E":"ccc","EBhm":"E h:mm B","EBhms":"E h:mm:ss B","Ed":"d E","Ehm":"E h:mm a","EHm":"E HH:mm","Ehms":"E h:mm:ss a","EHms":"E HH:mm:ss","Gy":"y G","GyMMM":"MMM y G","GyMMMd":"MMM d, y G","GyMMMEd":"E, MMM d, y G","h":"h a","H":"HH","hm":"h:mm a","Hm":"HH:mm","hms":"h:mm:ss a","Hms":"HH:mm:ss","hmsv":"h:mm:ss a v","Hmsv":"HH:mm:ss v","hmv":"h:mm a v","Hmv":"HH:mm v","M":"L","Md":"M/d","MEd":"E, M/d","MMM":"LLL","MMMd":"MMM d","MMMEd":"E, MMM d","MMMMd":"MMMM d","ms":"mm:ss","y":"y","yM":"M/y","yMd":"M/d/y","yMEd":"E, M/d/y","yMMM":"MMM y","yMMMd":"MMM d, y","yMMMEd":"E, MMM d, y","yMMMM":"MMMM y","EEEE, MMMM d, y":"EEEE, MMMM d, y","MMMM d, y":"MMMM d, y","MMM d, y":"MMM d, y","M/d/yy":"M/d/yy","h:mm:ss a zzzz":"h:mm:ss a zzzz","h:mm:ss a z":"h:mm:ss a z","h:mm:ss a":"h:mm:ss a","h:mm a":"h:mm a","EEEE, MMMM d, y 'at' h:mm:ss a zzzz":"EEEE, MMMM d, y 'at' h:mm:ss a zzzz","MMMM d, y 'at' h:mm:ss a zzzz":"MMMM d, y 'at' h:mm:ss a zzzz","MMM d, y, h:mm:ss a zzzz":"MMM d, y, h:mm:ss a zzzz","M/d/yy, h:mm:ss a zzzz":"M/d/yy, h:mm:ss a zzzz","d, h:mm:ss a zzzz":"d, h:mm:ss a zzzz","E, h:mm:ss a zzzz":"ccc, h:mm:ss a zzzz","Ed, h:mm:ss a zzzz":"d E, h:mm:ss a zzzz","Gy, h:mm:ss a zzzz":"y G, h:mm:ss a zzzz","GyMMM, h:mm:ss a zzzz":"MMM y G, h:mm:ss a zzzz","GyMMMd, h:mm:ss a zzzz":"MMM d, y G, h:mm:ss a zzzz","GyMMMEd, h:mm:ss a zzzz":"E, MMM d, y G, h:mm:ss a zzzz","M, h:mm:ss a zzzz":"L, h:mm:ss a zzzz","Md, h:mm:ss a zzzz":"M/d, h:mm:ss a zzzz","MEd, h:mm:ss a zzzz":"E, M/d, h:mm:ss a zzzz","MMM, h:mm:ss a zzzz":"LLL, h:mm:ss a zzzz","MMMd, h:mm:ss a zzzz":"MMM d, h:mm:ss a zzzz","MMMEd, h:mm:ss a zzzz":"E, MMM d, h:mm:ss a zzzz","MMMMd 'at' h:mm:ss a zzzz":"MMMM d 'at' h:mm:ss a zzzz","y, h:mm:ss a zzzz":"y, h:mm:ss a zzzz","yM, h:mm:ss a zzzz":"M/y, h:mm:ss a zzzz","yMd, h:mm:ss a zzzz":"M/d/y, h:mm:ss a zzzz","yMEd, h:mm:ss a zzzz":"E, M/d/y, h:mm:ss a zzzz","yMMM, h:mm:ss a zzzz":"MMM y, h:mm:ss a zzzz","yMMMd, h:mm:ss a zzzz":"MMM d, y, h:mm:ss a zzzz","yMMMEd, h:mm:ss a zzzz":"E, MMM d, y, h:mm:ss a zzzz","yMMMM 'at' h:mm:ss a zzzz":"MMMM y 'at' h:mm:ss a zzzz","EEEE, MMMM d, y 'at' h:mm:ss a z":"EEEE, MMMM d, y 'at' h:mm:ss a z","MMMM d, y 'at' h:mm:ss a z":"MMMM d, y 'at' h:mm:ss a z","MMM d, y, h:mm:ss a z":"MMM d, y, h:mm:ss a z","M/d/yy, h:mm:ss a z":"M/d/yy, h:mm:ss a z","d, h:mm:ss a z":"d, h:mm:ss a z","E, h:mm:ss a z":"ccc, h:mm:ss a z","Ed, h:mm:ss a z":"d E, h:mm:ss a z","Gy, h:mm:ss a z":"y G, h:mm:ss a z","GyMMM, h:mm:ss a z":"MMM y G, h:mm:ss a z","GyMMMd, h:mm:ss a z":"MMM d, y G, h:mm:ss a z","GyMMMEd, h:mm:ss a z":"E, MMM d, y G, h:mm:ss a z","M, h:mm:ss a z":"L, h:mm:ss a z","Md, h:mm:ss a z":"M/d, h:mm:ss a z","MEd, h:mm:ss a z":"E, M/d, h:mm:ss a z","MMM, h:mm:ss a z":"LLL, h:mm:ss a z","MMMd, h:mm:ss a z":"MMM d, h:mm:ss a z","MMMEd, h:mm:ss a z":"E, MMM d, h:mm:ss a z","MMMMd 'at' h:mm:ss a z":"MMMM d 'at' h:mm:ss a z","y, h:mm:ss a z":"y, h:mm:ss a z","yM, h:mm:ss a z":"M/y, h:mm:ss a z","yMd, h:mm:ss a z":"M/d/y, h:mm:ss a z","yMEd, h:mm:ss a z":"E, M/d/y, h:mm:ss a z","yMMM, h:mm:ss a z":"MMM y, h:mm:ss a z","yMMMd, h:mm:ss a z":"MMM d, y, h:mm:ss a z","yMMMEd, h:mm:ss a z":"E, MMM d, y, h:mm:ss a z","yMMMM 'at' h:mm:ss a z":"MMMM y 'at' h:mm:ss a z","EEEE, MMMM d, y 'at' h:mm:ss a":"EEEE, MMMM d, y 'at' h:mm:ss a","MMMM d, y 'at' h:mm:ss a":"MMMM d, y 'at' h:mm:ss a","MMM d, y, h:mm:ss a":"MMM d, y, h:mm:ss a","M/d/yy, h:mm:ss a":"M/d/yy, h:mm:ss a","d, h:mm:ss a":"d, h:mm:ss a","E, h:mm:ss a":"ccc, h:mm:ss a","Ed, h:mm:ss a":"d E, h:mm:ss a","Gy, h:mm:ss a":"y G, h:mm:ss a","GyMMM, h:mm:ss a":"MMM y G, h:mm:ss a","GyMMMd, h:mm:ss a":"MMM d, y G, h:mm:ss a","GyMMMEd, h:mm:ss a":"E, MMM d, y G, h:mm:ss a","M, h:mm:ss a":"L, h:mm:ss a","Md, h:mm:ss a":"M/d, h:mm:ss a","MEd, h:mm:ss a":"E, M/d, h:mm:ss a","MMM, h:mm:ss a":"LLL, h:mm:ss a","MMMd, h:mm:ss a":"MMM d, h:mm:ss a","MMMEd, h:mm:ss a":"E, MMM d, h:mm:ss a","MMMMd 'at' h:mm:ss a":"MMMM d 'at' h:mm:ss a","y, h:mm:ss a":"y, h:mm:ss a","yM, h:mm:ss a":"M/y, h:mm:ss a","yMd, h:mm:ss a":"M/d/y, h:mm:ss a","yMEd, h:mm:ss a":"E, M/d/y, h:mm:ss a","yMMM, h:mm:ss a":"MMM y, h:mm:ss a","yMMMd, h:mm:ss a":"MMM d, y, h:mm:ss a","yMMMEd, h:mm:ss a":"E, MMM d, y, h:mm:ss a","yMMMM 'at' h:mm:ss a":"MMMM y 'at' h:mm:ss a","EEEE, MMMM d, y 'at' h:mm a":"EEEE, MMMM d, y 'at' h:mm a","MMMM d, y 'at' h:mm a":"MMMM d, y 'at' h:mm a","MMM d, y, h:mm a":"MMM d, y, h:mm a","M/d/yy, h:mm a":"M/d/yy, h:mm a","d, h:mm a":"d, h:mm a","E, h:mm a":"ccc, h:mm a","Ed, h:mm a":"d E, h:mm a","Gy, h:mm a":"y G, h:mm a","GyMMM, h:mm a":"MMM y G, h:mm a","GyMMMd, h:mm a":"MMM d, y G, h:mm a","GyMMMEd, h:mm a":"E, MMM d, y G, h:mm a","M, h:mm a":"L, h:mm a","Md, h:mm a":"M/d, h:mm a","MEd, h:mm a":"E, M/d, h:mm a","MMM, h:mm a":"LLL, h:mm a","MMMd, h:mm a":"MMM d, h:mm a","MMMEd, h:mm a":"E, MMM d, h:mm a","MMMMd 'at' h:mm a":"MMMM d 'at' h:mm a","y, h:mm a":"y, h:mm a","yM, h:mm a":"M/y, h:mm a","yMd, h:mm a":"M/d/y, h:mm a","yMEd, h:mm a":"E, M/d/y, h:mm a","yMMM, h:mm a":"MMM y, h:mm a","yMMMd, h:mm a":"MMM d, y, h:mm a","yMMMEd, h:mm a":"E, MMM d, y, h:mm a","yMMMM 'at' h:mm a":"MMMM y 'at' h:mm a","EEEE, MMMM d, y 'at' Bh":"EEEE, MMMM d, y 'at' h B","MMMM d, y 'at' Bh":"MMMM d, y 'at' h B","MMM d, y, Bh":"MMM d, y, h B","M/d/yy, Bh":"M/d/yy, h B","d, Bh":"d, h B","E, Bh":"ccc, h B","Ed, Bh":"d E, h B","Gy, Bh":"y G, h B","GyMMM, Bh":"MMM y G, h B","GyMMMd, Bh":"MMM d, y G, h B","GyMMMEd, Bh":"E, MMM d, y G, h B","M, Bh":"L, h B","Md, Bh":"M/d, h B","MEd, Bh":"E, M/d, h B","MMM, Bh":"LLL, h B","MMMd, Bh":"MMM d, h B","MMMEd, Bh":"E, MMM d, h B","MMMMd 'at' Bh":"MMMM d 'at' h B","y, Bh":"y, h B","yM, Bh":"M/y, h B","yMd, Bh":"M/d/y, h B","yMEd, Bh":"E, M/d/y, h B","yMMM, Bh":"MMM y, h B","yMMMd, Bh":"MMM d, y, h B","yMMMEd, Bh":"E, MMM d, y, h B","yMMMM 'at' Bh":"MMMM y 'at' h B","EEEE, MMMM d, y 'at' Bhm":"EEEE, MMMM d, y 'at' h:mm B","MMMM d, y 'at' Bhm":"MMMM d, y 'at' h:mm B","MMM d, y, Bhm":"MMM d, y, h:mm B","M/d/yy, Bhm":"M/d/yy, h:mm B","d, Bhm":"d, h:mm B","E, Bhm":"ccc, h:mm B","Ed, Bhm":"d E, h:mm B","Gy, Bhm":"y G, h:mm B","GyMMM, Bhm":"MMM y G, h:mm B","GyMMMd, Bhm":"MMM d, y G, h:mm B","GyMMMEd, Bhm":"E, MMM d, y G, h:mm B","M, Bhm":"L, h:mm B","Md, Bhm":"M/d, h:mm B","MEd, Bhm":"E, M/d, h:mm B","MMM, Bhm":"LLL, h:mm B","MMMd, Bhm":"MMM d, h:mm B","MMMEd, Bhm":"E, MMM d, h:mm B","MMMMd 'at' Bhm":"MMMM d 'at' h:mm B","y, Bhm":"y, h:mm B","yM, Bhm":"M/y, h:mm B","yMd, Bhm":"M/d/y, h:mm B","yMEd, Bhm":"E, M/d/y, h:mm B","yMMM, Bhm":"MMM y, h:mm B","yMMMd, Bhm":"MMM d, y, h:mm B","yMMMEd, Bhm":"E, MMM d, y, h:mm B","yMMMM 'at' Bhm":"MMMM y 'at' h:mm B","EEEE, MMMM d, y 'at' Bhms":"EEEE, MMMM d, y 'at' h:mm:ss B","MMMM d, y 'at' Bhms":"MMMM d, y 'at' h:mm:ss B","MMM d, y, Bhms":"MMM d, y, h:mm:ss B","M/d/yy, Bhms":"M/d/yy, h:mm:ss B","d, Bhms":"d, h:mm:ss B","E, Bhms":"ccc, h:mm:ss B","Ed, Bhms":"d E, h:mm:ss B","Gy, Bhms":"y G, h:mm:ss B","GyMMM, Bhms":"MMM y G, h:mm:ss B","GyMMMd, Bhms":"MMM d, y G, h:mm:ss B","GyMMMEd, Bhms":"E, MMM d, y G, h:mm:ss B","M, Bhms":"L, h:mm:ss B","Md, Bhms":"M/d, h:mm:ss B","MEd, Bhms":"E, M/d, h:mm:ss B","MMM, Bhms":"LLL, h:mm:ss B","MMMd, Bhms":"MMM d, h:mm:ss B","MMMEd, Bhms":"E, MMM d, h:mm:ss B","MMMMd 'at' Bhms":"MMMM d 'at' h:mm:ss B","y, Bhms":"y, h:mm:ss B","yM, Bhms":"M/y, h:mm:ss B","yMd, Bhms":"M/d/y, h:mm:ss B","yMEd, Bhms":"E, M/d/y, h:mm:ss B","yMMM, Bhms":"MMM y, h:mm:ss B","yMMMd, Bhms":"MMM d, y, h:mm:ss B","yMMMEd, Bhms":"E, MMM d, y, h:mm:ss B","yMMMM 'at' Bhms":"MMMM y 'at' h:mm:ss B","EEEE, MMMM d, y 'at' h":"EEEE, MMMM d, y 'at' h a","MMMM d, y 'at' h":"MMMM d, y 'at' h a","MMM d, y, h":"MMM d, y, h a","M/d/yy, h":"M/d/yy, h a","d, h":"d, h a","E, h":"ccc, h a","Ed, h":"d E, h a","Gy, h":"y G, h a","GyMMM, h":"MMM y G, h a","GyMMMd, h":"MMM d, y G, h a","GyMMMEd, h":"E, MMM d, y G, h a","M, h":"L, h a","Md, h":"M/d, h a","MEd, h":"E, M/d, h a","MMM, h":"LLL, h a","MMMd, h":"MMM d, h a","MMMEd, h":"E, MMM d, h a","MMMMd 'at' h":"MMMM d 'at' h a","y, h":"y, h a","yM, h":"M/y, h a","yMd, h":"M/d/y, h a","yMEd, h":"E, M/d/y, h a","yMMM, h":"MMM y, h a","yMMMd, h":"MMM d, y, h a","yMMMEd, h":"E, MMM d, y, h a","yMMMM 'at' h":"MMMM y 'at' h a","EEEE, MMMM d, y 'at' H":"EEEE, MMMM d, y 'at' HH","MMMM d, y 'at' H":"MMMM d, y 'at' HH","MMM d, y, H":"MMM d, y, HH","M/d/yy, H":"M/d/yy, HH","d, H":"d, HH","E, H":"ccc, HH","Ed, H":"d E, HH","Gy, H":"y G, HH","GyMMM, H":"MMM y G, HH","GyMMMd, H":"MMM d, y G, HH","GyMMMEd, H":"E, MMM d, y G, HH","M, H":"L, HH","Md, H":"M/d, HH","MEd, H":"E, M/d, HH","MMM, H":"LLL, HH","MMMd, H":"MMM d, HH","MMMEd, H":"E, MMM d, HH","MMMMd 'at' H":"MMMM d 'at' HH","y, H":"y, HH","yM, H":"M/y, HH","yMd, H":"M/d/y, HH","yMEd, H":"E, M/d/y, HH","yMMM, H":"MMM y, HH","yMMMd, H":"MMM d, y, HH","yMMMEd, H":"E, MMM d, y, HH","yMMMM 'at' H":"MMMM y 'at' HH","EEEE, MMMM d, y 'at' hm":"EEEE, MMMM d, y 'at' h:mm a","MMMM d, y 'at' hm":"MMMM d, y 'at' h:mm a","MMM d, y, hm":"MMM d, y, h:mm a","M/d/yy, hm":"M/d/yy, h:mm a","d, hm":"d, h:mm a","E, hm":"ccc, h:mm a","Ed, hm":"d E, h:mm a","Gy, hm":"y G, h:mm a","GyMMM, hm":"MMM y G, h:mm a","GyMMMd, hm":"MMM d, y G, h:mm a","GyMMMEd, hm":"E, MMM d, y G, h:mm a","M, hm":"L, h:mm a","Md, hm":"M/d, h:mm a","MEd, hm":"E, M/d, h:mm a","MMM, hm":"LLL, h:mm a","MMMd, hm":"MMM d, h:mm a","MMMEd, hm":"E, MMM d, h:mm a","MMMMd 'at' hm":"MMMM d 'at' h:mm a","y, hm":"y, h:mm a","yM, hm":"M/y, h:mm a","yMd, hm":"M/d/y, h:mm a","yMEd, hm":"E, M/d/y, h:mm a","yMMM, hm":"MMM y, h:mm a","yMMMd, hm":"MMM d, y, h:mm a","yMMMEd, hm":"E, MMM d, y, h:mm a","yMMMM 'at' hm":"MMMM y 'at' h:mm a","EEEE, MMMM d, y 'at' Hm":"EEEE, MMMM d, y 'at' HH:mm","MMMM d, y 'at' Hm":"MMMM d, y 'at' HH:mm","MMM d, y, Hm":"MMM d, y, HH:mm","M/d/yy, Hm":"M/d/yy, HH:mm","d, Hm":"d, HH:mm","E, Hm":"ccc, HH:mm","Ed, Hm":"d E, HH:mm","Gy, Hm":"y G, HH:mm","GyMMM, Hm":"MMM y G, HH:mm","GyMMMd, Hm":"MMM d, y G, HH:mm","GyMMMEd, Hm":"E, MMM d, y G, HH:mm","M, Hm":"L, HH:mm","Md, Hm":"M/d, HH:mm","MEd, Hm":"E, M/d, HH:mm","MMM, Hm":"LLL, HH:mm","MMMd, Hm":"MMM d, HH:mm","MMMEd, Hm":"E, MMM d, HH:mm","MMMMd 'at' Hm":"MMMM d 'at' HH:mm","y, Hm":"y, HH:mm","yM, Hm":"M/y, HH:mm","yMd, Hm":"M/d/y, HH:mm","yMEd, Hm":"E, M/d/y, HH:mm","yMMM, Hm":"MMM y, HH:mm","yMMMd, Hm":"MMM d, y, HH:mm","yMMMEd, Hm":"E, MMM d, y, HH:mm","yMMMM 'at' Hm":"MMMM y 'at' HH:mm","EEEE, MMMM d, y 'at' hms":"EEEE, MMMM d, y 'at' h:mm:ss a","MMMM d, y 'at' hms":"MMMM d, y 'at' h:mm:ss a","MMM d, y, hms":"MMM d, y, h:mm:ss a","M/d/yy, hms":"M/d/yy, h:mm:ss a","d, hms":"d, h:mm:ss a","E, hms":"ccc, h:mm:ss a","Ed, hms":"d E, h:mm:ss a","Gy, hms":"y G, h:mm:ss a","GyMMM, hms":"MMM y G, h:mm:ss a","GyMMMd, hms":"MMM d, y G, h:mm:ss a","GyMMMEd, hms":"E, MMM d, y G, h:mm:ss a","M, hms":"L, h:mm:ss a","Md, hms":"M/d, h:mm:ss a","MEd, hms":"E, M/d, h:mm:ss a","MMM, hms":"LLL, h:mm:ss a","MMMd, hms":"MMM d, h:mm:ss a","MMMEd, hms":"E, MMM d, h:mm:ss a","MMMMd 'at' hms":"MMMM d 'at' h:mm:ss a","y, hms":"y, h:mm:ss a","yM, hms":"M/y, h:mm:ss a","yMd, hms":"M/d/y, h:mm:ss a","yMEd, hms":"E, M/d/y, h:mm:ss a","yMMM, hms":"MMM y, h:mm:ss a","yMMMd, hms":"MMM d, y, h:mm:ss a","yMMMEd, hms":"E, MMM d, y, h:mm:ss a","yMMMM 'at' hms":"MMMM y 'at' h:mm:ss a","EEEE, MMMM d, y 'at' Hms":"EEEE, MMMM d, y 'at' HH:mm:ss","MMMM d, y 'at' Hms":"MMMM d, y 'at' HH:mm:ss","MMM d, y, Hms":"MMM d, y, HH:mm:ss","M/d/yy, Hms":"M/d/yy, HH:mm:ss","d, Hms":"d, HH:mm:ss","E, Hms":"ccc, HH:mm:ss","Ed, Hms":"d E, HH:mm:ss","Gy, Hms":"y G, HH:mm:ss","GyMMM, Hms":"MMM y G, HH:mm:ss","GyMMMd, Hms":"MMM d, y G, HH:mm:ss","GyMMMEd, Hms":"E, MMM d, y G, HH:mm:ss","M, Hms":"L, HH:mm:ss","Md, Hms":"M/d, HH:mm:ss","MEd, Hms":"E, M/d, HH:mm:ss","MMM, Hms":"LLL, HH:mm:ss","MMMd, Hms":"MMM d, HH:mm:ss","MMMEd, Hms":"E, MMM d, HH:mm:ss","MMMMd 'at' Hms":"MMMM d 'at' HH:mm:ss","y, Hms":"y, HH:mm:ss","yM, Hms":"M/y, HH:mm:ss","yMd, Hms":"M/d/y, HH:mm:ss","yMEd, Hms":"E, M/d/y, HH:mm:ss","yMMM, Hms":"MMM y, HH:mm:ss","yMMMd, Hms":"MMM d, y, HH:mm:ss","yMMMEd, Hms":"E, MMM d, y, HH:mm:ss","yMMMM 'at' Hms":"MMMM y 'at' HH:mm:ss","EEEE, MMMM d, y 'at' hmsv":"EEEE, MMMM d, y 'at' h:mm:ss a v","MMMM d, y 'at' hmsv":"MMMM d, y 'at' h:mm:ss a v","MMM d, y, hmsv":"MMM d, y, h:mm:ss a v","M/d/yy, hmsv":"M/d/yy, h:mm:ss a v","d, hmsv":"d, h:mm:ss a v","E, hmsv":"ccc, h:mm:ss a v","Ed, hmsv":"d E, h:mm:ss a v","Gy, hmsv":"y G, h:mm:ss a v","GyMMM, hmsv":"MMM y G, h:mm:ss a v","GyMMMd, hmsv":"MMM d, y G, h:mm:ss a v","GyMMMEd, hmsv":"E, MMM d, y G, h:mm:ss a v","M, hmsv":"L, h:mm:ss a v","Md, hmsv":"M/d, h:mm:ss a v","MEd, hmsv":"E, M/d, h:mm:ss a v","MMM, hmsv":"LLL, h:mm:ss a v","MMMd, hmsv":"MMM d, h:mm:ss a v","MMMEd, hmsv":"E, MMM d, h:mm:ss a v","MMMMd 'at' hmsv":"MMMM d 'at' h:mm:ss a v","y, hmsv":"y, h:mm:ss a v","yM, hmsv":"M/y, h:mm:ss a v","yMd, hmsv":"M/d/y, h:mm:ss a v","yMEd, hmsv":"E, M/d/y, h:mm:ss a v","yMMM, hmsv":"MMM y, h:mm:ss a v","yMMMd, hmsv":"MMM d, y, h:mm:ss a v","yMMMEd, hmsv":"E, MMM d, y, h:mm:ss a v","yMMMM 'at' hmsv":"MMMM y 'at' h:mm:ss a v","EEEE, MMMM d, y 'at' Hmsv":"EEEE, MMMM d, y 'at' HH:mm:ss v","MMMM d, y 'at' Hmsv":"MMMM d, y 'at' HH:mm:ss v","MMM d, y, Hmsv":"MMM d, y, HH:mm:ss v","M/d/yy, Hmsv":"M/d/yy, HH:mm:ss v","d, Hmsv":"d, HH:mm:ss v","E, Hmsv":"ccc, HH:mm:ss v","Ed, Hmsv":"d E, HH:mm:ss v","Gy, Hmsv":"y G, HH:mm:ss v","GyMMM, Hmsv":"MMM y G, HH:mm:ss v","GyMMMd, Hmsv":"MMM d, y G, HH:mm:ss v","GyMMMEd, Hmsv":"E, MMM d, y G, HH:mm:ss v","M, Hmsv":"L, HH:mm:ss v","Md, Hmsv":"M/d, HH:mm:ss v","MEd, Hmsv":"E, M/d, HH:mm:ss v","MMM, Hmsv":"LLL, HH:mm:ss v","MMMd, Hmsv":"MMM d, HH:mm:ss v","MMMEd, Hmsv":"E, MMM d, HH:mm:ss v","MMMMd 'at' Hmsv":"MMMM d 'at' HH:mm:ss v","y, Hmsv":"y, HH:mm:ss v","yM, Hmsv":"M/y, HH:mm:ss v","yMd, Hmsv":"M/d/y, HH:mm:ss v","yMEd, Hmsv":"E, M/d/y, HH:mm:ss v","yMMM, Hmsv":"MMM y, HH:mm:ss v","yMMMd, Hmsv":"MMM d, y, HH:mm:ss v","yMMMEd, Hmsv":"E, MMM d, y, HH:mm:ss v","yMMMM 'at' Hmsv":"MMMM y 'at' HH:mm:ss v","EEEE, MMMM d, y 'at' hmv":"EEEE, MMMM d, y 'at' h:mm a v","MMMM d, y 'at' hmv":"MMMM d, y 'at' h:mm a v","MMM d, y, hmv":"MMM d, y, h:mm a v","M/d/yy, hmv":"M/d/yy, h:mm a v","d, hmv":"d, h:mm a v","E, hmv":"ccc, h:mm a v","Ed, hmv":"d E, h:mm a v","Gy, hmv":"y G, h:mm a v","GyMMM, hmv":"MMM y G, h:mm a v","GyMMMd, hmv":"MMM d, y G, h:mm a v","GyMMMEd, hmv":"E, MMM d, y G, h:mm a v","M, hmv":"L, h:mm a v","Md, hmv":"M/d, h:mm a v","MEd, hmv":"E, M/d, h:mm a v","MMM, hmv":"LLL, h:mm a v","MMMd, hmv":"MMM d, h:mm a v","MMMEd, hmv":"E, MMM d, h:mm a v","MMMMd 'at' hmv":"MMMM d 'at' h:mm a v","y, hmv":"y, h:mm a v","yM, hmv":"M/y, h:mm a v","yMd, hmv":"M/d/y, h:mm a v","yMEd, hmv":"E, M/d/y, h:mm a v","yMMM, hmv":"MMM y, h:mm a v","yMMMd, hmv":"MMM d, y, h:mm a v","yMMMEd, hmv":"E, MMM d, y, h:mm a v","yMMMM 'at' hmv":"MMMM y 'at' h:mm a v","EEEE, MMMM d, y 'at' Hmv":"EEEE, MMMM d, y 'at' HH:mm v","MMMM d, y 'at' Hmv":"MMMM d, y 'at' HH:mm v","MMM d, y, Hmv":"MMM d, y, HH:mm v","M/d/yy, Hmv":"M/d/yy, HH:mm v","d, Hmv":"d, HH:mm v","E, Hmv":"ccc, HH:mm v","Ed, Hmv":"d E, HH:mm v","Gy, Hmv":"y G, HH:mm v","GyMMM, Hmv":"MMM y G, HH:mm v","GyMMMd, Hmv":"MMM d, y G, HH:mm v","GyMMMEd, Hmv":"E, MMM d, y G, HH:mm v","M, Hmv":"L, HH:mm v","Md, Hmv":"M/d, HH:mm v","MEd, Hmv":"E, M/d, HH:mm v","MMM, Hmv":"LLL, HH:mm v","MMMd, Hmv":"MMM d, HH:mm v","MMMEd, Hmv":"E, MMM d, HH:mm v","MMMMd 'at' Hmv":"MMMM d 'at' HH:mm v","y, Hmv":"y, HH:mm v","yM, Hmv":"M/y, HH:mm v","yMd, Hmv":"M/d/y, HH:mm v","yMEd, Hmv":"E, M/d/y, HH:mm v","yMMM, Hmv":"MMM y, HH:mm v","yMMMd, Hmv":"MMM d, y, HH:mm v","yMMMEd, Hmv":"E, MMM d, y, HH:mm v","yMMMM 'at' Hmv":"MMMM y 'at' HH:mm v","EEEE, MMMM d, y 'at' ms":"EEEE, MMMM d, y 'at' mm:ss","MMMM d, y 'at' ms":"MMMM d, y 'at' mm:ss","MMM d, y, ms":"MMM d, y, mm:ss","M/d/yy, ms":"M/d/yy, mm:ss","d, ms":"d, mm:ss","E, ms":"ccc, mm:ss","Ed, ms":"d E, mm:ss","Gy, ms":"y G, mm:ss","GyMMM, ms":"MMM y G, mm:ss","GyMMMd, ms":"MMM d, y G, mm:ss","GyMMMEd, ms":"E, MMM d, y G, mm:ss","M, ms":"L, mm:ss","Md, ms":"M/d, mm:ss","MEd, ms":"E, M/d, mm:ss","MMM, ms":"LLL, mm:ss","MMMd, ms":"MMM d, mm:ss","MMMEd, ms":"E, MMM d, mm:ss","MMMMd 'at' ms":"MMMM d 'at' mm:ss","y, ms":"y, mm:ss","yM, ms":"M/y, mm:ss","yMd, ms":"M/d/y, mm:ss","yMEd, ms":"E, M/d/y, mm:ss","yMMM, ms":"MMM y, mm:ss","yMMMd, ms":"MMM d, y, mm:ss","yMMMEd, ms":"E, MMM d, y, mm:ss","yMMMM 'at' ms":"MMMM y 'at' mm:ss"}},"intervalFormats":{"intervalFormatFallback":"{0} – {1}","Bh":{"B":"h B – h B","h":"h – h B"},"Bhm":{"B":"h:mm B – h:mm B","h":"h:mm – h:mm B","m":"h:mm – h:mm B"},"d":{"d":"d – d"},"Gy":{"G":"y G – y G","y":"y – y G"},"GyM":{"G":"M/y GGGGG – M/y GGGGG","M":"M/y – M/y GGGGG","y":"M/y – M/y GGGGG"},"GyMd":{"d":"M/d/y – M/d/y GGGGG","G":"M/d/y GGGGG – M/d/y GGGGG","M":"M/d/y – M/d/y GGGGG","y":"M/d/y – M/d/y GGGGG"},"GyMEd":{"d":"E, M/d/y – E, M/d/y GGGGG","G":"E, M/d/y GGGGG – E, M/d/y GGGGG","M":"E, M/d/y – E, M/d/y GGGGG","y":"E, M/d/y – E, M/d/y GGGGG"},"GyMMM":{"G":"MMM y G – MMM y G","M":"MMM – MMM y G","y":"MMM y – MMM y G"},"GyMMMd":{"d":"MMM d – d, y G","G":"MMM d, y G – MMM d, y G","M":"MMM d – MMM d, y G","y":"MMM d, y – MMM d, y G"},"GyMMMEd":{"d":"E, MMM d – E, MMM d, y G","G":"E, MMM d, y G – E, MMM d, y G","M":"E, MMM d – E, MMM d, y G","y":"E, MMM d, y – E, MMM d, y G"},"h":{"a":"h a – h a","h":"h – h a"},"H":{"H":"HH – HH"},"hm":{"a":"h:mm a – h:mm a","h":"h:mm – h:mm a","m":"h:mm – h:mm a"},"Hm":{"H":"HH:mm – HH:mm","m":"HH:mm – HH:mm"},"hmv":{"a":"h:mm a – h:mm a v","h":"h:mm – h:mm a v","m":"h:mm – h:mm a v"},"Hmv":{"H":"HH:mm – HH:mm v","m":"HH:mm – HH:mm v"},"hv":{"a":"h a – h a v","h":"h – h a v"},"Hv":{"H":"HH – HH v"},"M":{"M":"M – M"},"Md":{"d":"M/d – M/d","M":"M/d – M/d"},"MEd":{"d":"E, M/d – E, M/d","M":"E, M/d – E, M/d"},"MMM":{"M":"MMM – MMM"},"MMMd":{"d":"MMM d – d","M":"MMM d – MMM d"},"MMMEd":{"d":"E, MMM d – E, MMM d","M":"E, MMM d – E, MMM d"},"y":{"y":"y – y"},"yM":{"M":"M/y – M/y","y":"M/y – M/y"},"yMd":{"d":"M/d/y – M/d/y","M":"M/d/y – M/d/y","y":"M/d/y – M/d/y"},"yMEd":{"d":"E, M/d/y – E, M/d/y","M":"E, M/d/y – E, M/d/y","y":"E, M/d/y – E, M/d/y"},"yMMM":{"M":"MMM – MMM y","y":"MMM y – MMM y"},"yMMMd":{"d":"MMM d – d, y","M":"MMM d – MMM d, y","y":"MMM d, y – MMM d, y"},"yMMMEd":{"d":"E, MMM d – E, MMM d, y","M":"E, MMM d – E, MMM d, y","y":"E, MMM d, y – E, MMM d, y"},"yMMMM":{"M":"MMMM – MMMM y","y":"MMMM y – MMMM y"}},"hourCycle":"h12","nu":["latn"],"ca":["gregory"],"hc":["h12","","h23",""]},"locale":"en"}
)
  }
}

if (!("Int8Array"in self&&"toLocaleString"in self.Int8Array.prototype
)) {

// TypedArray.prototype.toLocaleString
/* global CreateMethodProperty */
// 23.2.3.31 %TypedArray%.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
(function () {
	var fnName = 'toLocaleString'

	// %TypedArray%.prototype.toLocaleString is a distinct function that implements the same algorithm as Array.prototype.toLocaleString
	function toLocaleString () {
		return Array.prototype.toLocaleString.call(this, arguments);
	}

	// use "Int8Array" as a proxy for all "TypedArray" subclasses

	// in IE11, `Int8Array.prototype` inherits directly from `Object.prototype`
	// in that case, don't define it on the parent; define it directly on the prototype
	if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) {
		// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
		CreateMethodProperty(self.Int8Array.prototype.__proto__, fnName, toLocaleString);
	} else {
		CreateMethodProperty(self.Int8Array.prototype, fnName, toLocaleString);
		CreateMethodProperty(self.Uint8Array.prototype, fnName, toLocaleString);
		CreateMethodProperty(self.Uint8ClampedArray.prototype, fnName, toLocaleString);
		CreateMethodProperty(self.Int16Array.prototype, fnName, toLocaleString);
		CreateMethodProperty(self.Uint16Array.prototype, fnName, toLocaleString);
		CreateMethodProperty(self.Int32Array.prototype, fnName, toLocaleString);
		CreateMethodProperty(self.Uint32Array.prototype, fnName, toLocaleString);
		CreateMethodProperty(self.Float32Array.prototype, fnName, toLocaleString);
		CreateMethodProperty(self.Float64Array.prototype, fnName, toLocaleString);
	}
})();

}

if (!("Intl"in self&&"RelativeTimeFormat"in self.Intl
)) {

// Intl.RelativeTimeFormat
(function() {
  // node_modules/tslib/tslib.es6.js
  var extendStatics = function(d, b) {
    extendStatics = Object.setPrototypeOf || {__proto__: []} instanceof Array && function(d2, b2) {
      d2.__proto__ = b2;
    } || function(d2, b2) {
      for (var p in b2)
        if (Object.prototype.hasOwnProperty.call(b2, p))
          d2[p] = b2[p];
    };
    return extendStatics(d, b);
  };
  function __extends(d, b) {
    if (typeof b !== "function" && b !== null)
      throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
    extendStatics(d, b);
    function __() {
      this.constructor = d;
    }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/utils.js
  var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;
  function invariant(condition, message, Err) {
    if (Err === void 0) {
      Err = Error;
    }
    if (!condition) {
      throw new Err(message);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/types/date-time.js
  var RangePatternType;
  (function(RangePatternType2) {
    RangePatternType2["startRange"] = "startRange";
    RangePatternType2["shared"] = "shared";
    RangePatternType2["endRange"] = "endRange";
  })(RangePatternType || (RangePatternType = {}));

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/CanonicalizeLocaleList.js
  function CanonicalizeLocaleList(locales) {
    return Intl.getCanonicalLocales(locales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/262.js
  function ToString(o) {
    if (typeof o === "symbol") {
      throw TypeError("Cannot convert a Symbol value to a string");
    }
    return String(o);
  }
  function ToObject(arg) {
    if (arg == null) {
      throw new TypeError("undefined/null cannot be converted to object");
    }
    return Object(arg);
  }
  function SameValue(x, y) {
    if (Object.is) {
      return Object.is(x, y);
    }
    if (x === y) {
      return x !== 0 || 1 / x === 1 / y;
    }
    return x !== x && y !== y;
  }
  function Type(x) {
    if (x === null) {
      return "Null";
    }
    if (typeof x === "undefined") {
      return "Undefined";
    }
    if (typeof x === "function" || typeof x === "object") {
      return "Object";
    }
    if (typeof x === "number") {
      return "Number";
    }
    if (typeof x === "boolean") {
      return "Boolean";
    }
    if (typeof x === "string") {
      return "String";
    }
    if (typeof x === "symbol") {
      return "Symbol";
    }
    if (typeof x === "bigint") {
      return "BigInt";
    }
  }
  var MINUTES_PER_HOUR = 60;
  var SECONDS_PER_MINUTE = 60;
  var MS_PER_SECOND = 1e3;
  var MS_PER_MINUTE = MS_PER_SECOND * SECONDS_PER_MINUTE;
  var MS_PER_HOUR = MS_PER_MINUTE * MINUTES_PER_HOUR;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/CoerceOptionsToObject.js
  function CoerceOptionsToObject(options) {
    if (typeof options === "undefined") {
      return Object.create(null);
    }
    return ToObject(options);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/PartitionPattern.js
  function PartitionPattern(pattern) {
    var result = [];
    var beginIndex = pattern.indexOf("{");
    var endIndex = 0;
    var nextIndex = 0;
    var length = pattern.length;
    while (beginIndex < pattern.length && beginIndex > -1) {
      endIndex = pattern.indexOf("}", beginIndex);
      invariant(endIndex > beginIndex, "Invalid pattern " + pattern);
      if (beginIndex > nextIndex) {
        result.push({
          type: "literal",
          value: pattern.substring(nextIndex, beginIndex)
        });
      }
      result.push({
        type: pattern.substring(beginIndex + 1, endIndex),
        value: void 0
      });
      nextIndex = endIndex + 1;
      beginIndex = pattern.indexOf("{", nextIndex);
    }
    if (nextIndex < length) {
      result.push({
        type: "literal",
        value: pattern.substring(nextIndex, length)
      });
    }
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/GetOption.js
  function GetOption(opts, prop, type, values, fallback) {
    if (typeof opts !== "object") {
      throw new TypeError("Options must be an object");
    }
    var value = opts[prop];
    if (value !== void 0) {
      if (type !== "boolean" && type !== "string") {
        throw new TypeError("invalid type");
      }
      if (type === "boolean") {
        value = Boolean(value);
      }
      if (type === "string") {
        value = ToString(value);
      }
      if (values !== void 0 && !values.filter(function(val) {
        return val == value;
      }).length) {
        throw new RangeError(value + " is not within " + values.join(", "));
      }
      return value;
    }
    return fallback;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestAvailableLocale.js
  function BestAvailableLocale(availableLocales, locale) {
    var candidate = locale;
    while (true) {
      if (availableLocales.has(candidate)) {
        return candidate;
      }
      var pos = candidate.lastIndexOf("-");
      if (!~pos) {
        return void 0;
      }
      if (pos >= 2 && candidate[pos - 2] === "-") {
        pos -= 2;
      }
      candidate = candidate.slice(0, pos);
    }
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupMatcher.js
  function LookupMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var result = {locale: ""};
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        result.locale = availableLocale;
        if (locale !== noExtensionLocale) {
          result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);
        }
        return result;
      }
    }
    result.locale = getDefaultLocale();
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/BestFitMatcher.js
  function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
    var minimizedAvailableLocaleMap = {};
    var minimizedAvailableLocales = new Set();
    availableLocales.forEach(function(locale2) {
      var minimizedLocale = new Intl.Locale(locale2).minimize().toString();
      minimizedAvailableLocaleMap[minimizedLocale] = locale2;
      minimizedAvailableLocales.add(minimizedLocale);
    });
    var foundLocale;
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var l = requestedLocales_1[_i];
      if (foundLocale) {
        break;
      }
      var noExtensionLocale = l.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      if (availableLocales.has(noExtensionLocale)) {
        foundLocale = noExtensionLocale;
        break;
      }
      if (minimizedAvailableLocales.has(noExtensionLocale)) {
        foundLocale = minimizedAvailableLocaleMap[noExtensionLocale];
        break;
      }
      var locale = new Intl.Locale(noExtensionLocale);
      var maximizedRequestedLocale = locale.maximize().toString();
      var minimizedRequestedLocale = locale.minimize().toString();
      if (minimizedAvailableLocales.has(minimizedRequestedLocale)) {
        foundLocale = minimizedAvailableLocaleMap[minimizedRequestedLocale];
        break;
      }
      foundLocale = BestAvailableLocale(minimizedAvailableLocales, maximizedRequestedLocale);
    }
    return {
      locale: foundLocale || getDefaultLocale()
    };
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/UnicodeExtensionValue.js
  function UnicodeExtensionValue(extension, key) {
    invariant(key.length === 2, "key must have 2 elements");
    var size = extension.length;
    var searchValue = "-" + key + "-";
    var pos = extension.indexOf(searchValue);
    if (pos !== -1) {
      var start = pos + 4;
      var end = start;
      var k = start;
      var done = false;
      while (!done) {
        var e = extension.indexOf("-", k);
        var len = void 0;
        if (e === -1) {
          len = size - k;
        } else {
          len = e - k;
        }
        if (len === 2) {
          done = true;
        } else if (e === -1) {
          end = size;
          done = true;
        } else {
          end = e;
          k = e + 1;
        }
      }
      return extension.slice(start, end);
    }
    searchValue = "-" + key;
    pos = extension.indexOf(searchValue);
    if (pos !== -1 && pos + 3 === size) {
      return "";
    }
    return void 0;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/ResolveLocale.js
  function ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData, getDefaultLocale) {
    var matcher = options.localeMatcher;
    var r;
    if (matcher === "lookup") {
      r = LookupMatcher(availableLocales, requestedLocales, getDefaultLocale);
    } else {
      r = BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale);
    }
    var foundLocale = r.locale;
    var result = {locale: "", dataLocale: foundLocale};
    var supportedExtension = "-u";
    for (var _i = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _i < relevantExtensionKeys_1.length; _i++) {
      var key = relevantExtensionKeys_1[_i];
      invariant(foundLocale in localeData, "Missing locale data for " + foundLocale);
      var foundLocaleData = localeData[foundLocale];
      invariant(typeof foundLocaleData === "object" && foundLocaleData !== null, "locale data " + key + " must be an object");
      var keyLocaleData = foundLocaleData[key];
      invariant(Array.isArray(keyLocaleData), "keyLocaleData for " + key + " must be an array");
      var value = keyLocaleData[0];
      invariant(typeof value === "string" || value === null, "value must be string or null but got " + typeof value + " in key " + key);
      var supportedExtensionAddition = "";
      if (r.extension) {
        var requestedValue = UnicodeExtensionValue(r.extension, key);
        if (requestedValue !== void 0) {
          if (requestedValue !== "") {
            if (~keyLocaleData.indexOf(requestedValue)) {
              value = requestedValue;
              supportedExtensionAddition = "-" + key + "-" + value;
            }
          } else if (~requestedValue.indexOf("true")) {
            value = "true";
            supportedExtensionAddition = "-" + key;
          }
        }
      }
      if (key in options) {
        var optionsValue = options[key];
        invariant(typeof optionsValue === "string" || typeof optionsValue === "undefined" || optionsValue === null, "optionsValue must be String, Undefined or Null");
        if (~keyLocaleData.indexOf(optionsValue)) {
          if (optionsValue !== value) {
            value = optionsValue;
            supportedExtensionAddition = "";
          }
        }
      }
      result[key] = value;
      supportedExtension += supportedExtensionAddition;
    }
    if (supportedExtension.length > 2) {
      var privateIndex = foundLocale.indexOf("-x-");
      if (privateIndex === -1) {
        foundLocale = foundLocale + supportedExtension;
      } else {
        var preExtension = foundLocale.slice(0, privateIndex);
        var postExtension = foundLocale.slice(privateIndex, foundLocale.length);
        foundLocale = preExtension + supportedExtension + postExtension;
      }
      foundLocale = Intl.getCanonicalLocales(foundLocale)[0];
    }
    result.locale = foundLocale;
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/IsSanctionedSimpleUnitIdentifier.js
  var SANCTIONED_UNITS = [
    "angle-degree",
    "area-acre",
    "area-hectare",
    "concentr-percent",
    "digital-bit",
    "digital-byte",
    "digital-gigabit",
    "digital-gigabyte",
    "digital-kilobit",
    "digital-kilobyte",
    "digital-megabit",
    "digital-megabyte",
    "digital-petabyte",
    "digital-terabit",
    "digital-terabyte",
    "duration-day",
    "duration-hour",
    "duration-millisecond",
    "duration-minute",
    "duration-month",
    "duration-second",
    "duration-week",
    "duration-year",
    "length-centimeter",
    "length-foot",
    "length-inch",
    "length-kilometer",
    "length-meter",
    "length-mile-scandinavian",
    "length-mile",
    "length-millimeter",
    "length-yard",
    "mass-gram",
    "mass-kilogram",
    "mass-ounce",
    "mass-pound",
    "mass-stone",
    "temperature-celsius",
    "temperature-fahrenheit",
    "volume-fluid-ounce",
    "volume-gallon",
    "volume-liter",
    "volume-milliliter"
  ];
  function removeUnitNamespace(unit) {
    return unit.slice(unit.indexOf("-") + 1);
  }
  var SIMPLE_UNITS = SANCTIONED_UNITS.map(removeUnitNamespace);

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/regex.generated.js
  var S_UNICODE_REGEX = /[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]/;

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/NumberFormat/format_to_parts.js
  var CARET_S_UNICODE_REGEX = new RegExp("^" + S_UNICODE_REGEX.source);
  var S_DOLLAR_UNICODE_REGEX = new RegExp(S_UNICODE_REGEX.source + "$");

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/RelativeTimeFormat/SingularRelativeTimeUnit.js
  function SingularRelativeTimeUnit(unit) {
    invariant(Type(unit) === "String", "unit must be a string");
    if (unit === "seconds")
      return "second";
    if (unit === "minutes")
      return "minute";
    if (unit === "hours")
      return "hour";
    if (unit === "days")
      return "day";
    if (unit === "weeks")
      return "week";
    if (unit === "months")
      return "month";
    if (unit === "quarters")
      return "quarter";
    if (unit === "years")
      return "year";
    if (unit !== "second" && unit !== "minute" && unit !== "hour" && unit !== "day" && unit !== "week" && unit !== "month" && unit !== "quarter" && unit !== "year") {
      throw new RangeError("invalid unit");
    }
    return unit;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/RelativeTimeFormat/MakePartsList.js
  function MakePartsList(pattern, unit, parts) {
    var patternParts = PartitionPattern(pattern);
    var result = [];
    for (var _i = 0, patternParts_1 = patternParts; _i < patternParts_1.length; _i++) {
      var patternPart = patternParts_1[_i];
      if (patternPart.type === "literal") {
        result.push({
          type: "literal",
          value: patternPart.value
        });
      } else {
        invariant(patternPart.type === "0", "Malformed pattern " + pattern);
        for (var _a = 0, parts_1 = parts; _a < parts_1.length; _a++) {
          var part = parts_1[_a];
          result.push({
            type: part.type,
            value: part.value,
            unit: unit
          });
        }
      }
    }
    return result;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/RelativeTimeFormat/PartitionRelativeTimePattern.js
  function PartitionRelativeTimePattern(rtf, value, unit, _a) {
    var getInternalSlots2 = _a.getInternalSlots;
    invariant(Type(value) === "Number", "value must be number, instead got " + typeof value, TypeError);
    invariant(Type(unit) === "String", "unit must be number, instead got " + typeof value, TypeError);
    if (isNaN(value) || !isFinite(value)) {
      throw new RangeError("Invalid value " + value);
    }
    var resolvedUnit = SingularRelativeTimeUnit(unit);
    var _b = getInternalSlots2(rtf), fields = _b.fields, style = _b.style, numeric = _b.numeric, pluralRules = _b.pluralRules, numberFormat = _b.numberFormat;
    var entry = resolvedUnit;
    if (style === "short") {
      entry = resolvedUnit + "-short";
    } else if (style === "narrow") {
      entry = resolvedUnit + "-narrow";
    }
    if (!(entry in fields)) {
      entry = resolvedUnit;
    }
    var patterns = fields[entry];
    if (numeric === "auto") {
      if (ToString(value) in patterns) {
        return [
          {
            type: "literal",
            value: patterns[ToString(value)]
          }
        ];
      }
    }
    var tl = "future";
    if (SameValue(value, -0) || value < 0) {
      tl = "past";
    }
    var po = patterns[tl];
    var fv = typeof numberFormat.formatToParts === "function" ? numberFormat.formatToParts(Math.abs(value)) : [
      {
        type: "literal",
        value: numberFormat.format(Math.abs(value)),
        unit: unit
      }
    ];
    var pr = pluralRules.select(value);
    var pattern = po[pr];
    return MakePartsList(pattern, resolvedUnit, fv);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/RelativeTimeFormat/InitializeRelativeTimeFormat.js
  var NUMBERING_SYSTEM_REGEX = /^[a-z0-9]{3,8}(-[a-z0-9]{3,8})*$/i;
  function InitializeRelativeTimeFormat(rtf, locales, options, _a) {
    var getInternalSlots2 = _a.getInternalSlots, availableLocales = _a.availableLocales, relevantExtensionKeys = _a.relevantExtensionKeys, localeData = _a.localeData, getDefaultLocale = _a.getDefaultLocale;
    var internalSlots = getInternalSlots2(rtf);
    internalSlots.initializedRelativeTimeFormat = true;
    var requestedLocales = CanonicalizeLocaleList(locales);
    var opt = Object.create(null);
    var opts = CoerceOptionsToObject(options);
    var matcher = GetOption(opts, "localeMatcher", "string", ["best fit", "lookup"], "best fit");
    opt.localeMatcher = matcher;
    var numberingSystem = GetOption(opts, "numberingSystem", "string", void 0, void 0);
    if (numberingSystem !== void 0) {
      if (!NUMBERING_SYSTEM_REGEX.test(numberingSystem)) {
        throw new RangeError("Invalid numbering system " + numberingSystem);
      }
    }
    opt.nu = numberingSystem;
    var r = ResolveLocale(availableLocales, requestedLocales, opt, relevantExtensionKeys, localeData, getDefaultLocale);
    var locale = r.locale, nu = r.nu;
    internalSlots.locale = locale;
    internalSlots.style = GetOption(opts, "style", "string", ["long", "narrow", "short"], "long");
    internalSlots.numeric = GetOption(opts, "numeric", "string", ["always", "auto"], "always");
    var fields = localeData[r.dataLocale];
    invariant(!!fields, "Missing locale data for " + r.dataLocale);
    internalSlots.fields = fields;
    internalSlots.numberFormat = new Intl.NumberFormat(locales);
    internalSlots.pluralRules = new Intl.PluralRules(locales);
    internalSlots.numberingSystem = nu;
    return rtf;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/LookupSupportedLocales.js
  function LookupSupportedLocales(availableLocales, requestedLocales) {
    var subset = [];
    for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
      var locale = requestedLocales_1[_i];
      var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, "");
      var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
      if (availableLocale) {
        subset.push(availableLocale);
      }
    }
    return subset;
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/SupportedLocales.js
  function SupportedLocales(availableLocales, requestedLocales, options) {
    var matcher = "best fit";
    if (options !== void 0) {
      options = ToObject(options);
      matcher = GetOption(options, "localeMatcher", "string", ["lookup", "best fit"], "best fit");
    }
    if (matcher === "best fit") {
      return LookupSupportedLocales(availableLocales, requestedLocales);
    }
    return LookupSupportedLocales(availableLocales, requestedLocales);
  }

  // bazel-out/darwin-fastbuild/bin/packages/ecma402-abstract/lib/data.js
  var MissingLocaleDataError = function(_super) {
    __extends(MissingLocaleDataError2, _super);
    function MissingLocaleDataError2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.type = "MISSING_LOCALE_DATA";
      return _this;
    }
    return MissingLocaleDataError2;
  }(Error);

  // bazel-out/darwin-fastbuild/bin/packages/intl-relativetimeformat/lib/get_internal_slots.js
  var internalSlotMap = new WeakMap();
  function getInternalSlots(x) {
    var internalSlots = internalSlotMap.get(x);
    if (!internalSlots) {
      internalSlots = Object.create(null);
      internalSlotMap.set(x, internalSlots);
    }
    return internalSlots;
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-relativetimeformat/lib/index.js
  var RelativeTimeFormat = function() {
    function RelativeTimeFormat2(locales, options) {
      var newTarget = this && this instanceof RelativeTimeFormat2 ? this.constructor : void 0;
      if (!newTarget) {
        throw new TypeError("Intl.RelativeTimeFormat must be called with 'new'");
      }
      return InitializeRelativeTimeFormat(this, locales, options, {
        getInternalSlots: getInternalSlots,
        availableLocales: RelativeTimeFormat2.availableLocales,
        relevantExtensionKeys: RelativeTimeFormat2.relevantExtensionKeys,
        localeData: RelativeTimeFormat2.localeData,
        getDefaultLocale: RelativeTimeFormat2.getDefaultLocale
      });
    }
    RelativeTimeFormat2.prototype.format = function(value, unit) {
      if (typeof this !== "object") {
        throw new TypeError("format was called on a non-object");
      }
      var internalSlots = getInternalSlots(this);
      if (!internalSlots.initializedRelativeTimeFormat) {
        throw new TypeError("format was called on a invalid context");
      }
      return PartitionRelativeTimePattern(this, Number(value), ToString(unit), {
        getInternalSlots: getInternalSlots
      }).map(function(el) {
        return el.value;
      }).join("");
    };
    RelativeTimeFormat2.prototype.formatToParts = function(value, unit) {
      if (typeof this !== "object") {
        throw new TypeError("formatToParts was called on a non-object");
      }
      var internalSlots = getInternalSlots(this);
      if (!internalSlots.initializedRelativeTimeFormat) {
        throw new TypeError("formatToParts was called on a invalid context");
      }
      return PartitionRelativeTimePattern(this, Number(value), ToString(unit), {getInternalSlots: getInternalSlots});
    };
    RelativeTimeFormat2.prototype.resolvedOptions = function() {
      if (typeof this !== "object") {
        throw new TypeError("resolvedOptions was called on a non-object");
      }
      var internalSlots = getInternalSlots(this);
      if (!internalSlots.initializedRelativeTimeFormat) {
        throw new TypeError("resolvedOptions was called on a invalid context");
      }
      return {
        locale: internalSlots.locale,
        style: internalSlots.style,
        numeric: internalSlots.numeric,
        numberingSystem: internalSlots.numberingSystem
      };
    };
    RelativeTimeFormat2.supportedLocalesOf = function(locales, options) {
      return SupportedLocales(RelativeTimeFormat2.availableLocales, CanonicalizeLocaleList(locales), options);
    };
    RelativeTimeFormat2.__addLocaleData = function() {
      var data = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        data[_i] = arguments[_i];
      }
      for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {
        var _b = data_1[_a], d = _b.data, locale = _b.locale;
        var minimizedLocale = new Intl.Locale(locale).minimize().toString();
        RelativeTimeFormat2.localeData[locale] = RelativeTimeFormat2.localeData[minimizedLocale] = d;
        RelativeTimeFormat2.availableLocales.add(minimizedLocale);
        RelativeTimeFormat2.availableLocales.add(locale);
        if (!RelativeTimeFormat2.__defaultLocale) {
          RelativeTimeFormat2.__defaultLocale = minimizedLocale;
        }
      }
    };
    RelativeTimeFormat2.getDefaultLocale = function() {
      return RelativeTimeFormat2.__defaultLocale;
    };
    RelativeTimeFormat2.localeData = {};
    RelativeTimeFormat2.availableLocales = new Set();
    RelativeTimeFormat2.__defaultLocale = "";
    RelativeTimeFormat2.relevantExtensionKeys = ["nu"];
    RelativeTimeFormat2.polyfilled = true;
    return RelativeTimeFormat2;
  }();
  var lib_default = RelativeTimeFormat;
  try {
    if (typeof Symbol !== "undefined") {
      Object.defineProperty(RelativeTimeFormat.prototype, Symbol.toStringTag, {
        value: "Intl.RelativeTimeFormat",
        writable: false,
        enumerable: false,
        configurable: true
      });
    }
    Object.defineProperty(RelativeTimeFormat.prototype.constructor, "length", {
      value: 0,
      writable: false,
      enumerable: false,
      configurable: true
    });
    Object.defineProperty(RelativeTimeFormat.supportedLocalesOf, "length", {
      value: 1,
      writable: false,
      enumerable: false,
      configurable: true
    });
  } catch (e) {
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-relativetimeformat/lib/should-polyfill.js
  function shouldPolyfill() {
    return typeof Intl === "undefined" || !("RelativeTimeFormat" in Intl);
  }

  // bazel-out/darwin-fastbuild/bin/packages/intl-relativetimeformat/lib/polyfill.js
  if (shouldPolyfill()) {
    Object.defineProperty(Intl, "RelativeTimeFormat", {
      value: lib_default,
      writable: true,
      enumerable: false,
      configurable: true
    });
  }
})();
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */


}

if (!("Intl"in self&&Intl.RelativeTimeFormat&&Intl.RelativeTimeFormat.supportedLocalesOf&&1===Intl.RelativeTimeFormat.supportedLocalesOf("en").length
)) {

// Intl.RelativeTimeFormat.~locale.en
/* @generated */	
// prettier-ignore
if (Intl.RelativeTimeFormat && typeof Intl.RelativeTimeFormat.__addLocaleData === 'function') {
  Intl.RelativeTimeFormat.__addLocaleData({"data":{"nu":["latn"],"year":{"0":"this year","1":"next year","future":{"one":"in {0} year","other":"in {0} years"},"past":{"one":"{0} year ago","other":"{0} years ago"},"-1":"last year"},"year-short":{"0":"this yr.","1":"next yr.","future":{"one":"in {0} yr.","other":"in {0} yr."},"past":{"one":"{0} yr. ago","other":"{0} yr. ago"},"-1":"last yr."},"year-narrow":{"0":"this yr.","1":"next yr.","future":{"one":"in {0} yr.","other":"in {0} yr."},"past":{"one":"{0} yr. ago","other":"{0} yr. ago"},"-1":"last yr."},"quarter":{"0":"this quarter","1":"next quarter","future":{"one":"in {0} quarter","other":"in {0} quarters"},"past":{"one":"{0} quarter ago","other":"{0} quarters ago"},"-1":"last quarter"},"quarter-short":{"0":"this qtr.","1":"next qtr.","future":{"one":"in {0} qtr.","other":"in {0} qtrs."},"past":{"one":"{0} qtr. ago","other":"{0} qtrs. ago"},"-1":"last qtr."},"quarter-narrow":{"0":"this qtr.","1":"next qtr.","future":{"one":"in {0} qtr.","other":"in {0} qtrs."},"past":{"one":"{0} qtr. ago","other":"{0} qtrs. ago"},"-1":"last qtr."},"month":{"0":"this month","1":"next month","future":{"one":"in {0} month","other":"in {0} months"},"past":{"one":"{0} month ago","other":"{0} months ago"},"-1":"last month"},"month-short":{"0":"this mo.","1":"next mo.","future":{"one":"in {0} mo.","other":"in {0} mo."},"past":{"one":"{0} mo. ago","other":"{0} mo. ago"},"-1":"last mo."},"month-narrow":{"0":"this mo.","1":"next mo.","future":{"one":"in {0} mo.","other":"in {0} mo."},"past":{"one":"{0} mo. ago","other":"{0} mo. ago"},"-1":"last mo."},"week":{"0":"this week","1":"next week","future":{"one":"in {0} week","other":"in {0} weeks"},"past":{"one":"{0} week ago","other":"{0} weeks ago"},"-1":"last week"},"week-short":{"0":"this wk.","1":"next wk.","future":{"one":"in {0} wk.","other":"in {0} wk."},"past":{"one":"{0} wk. ago","other":"{0} wk. ago"},"-1":"last wk."},"week-narrow":{"0":"this wk.","1":"next wk.","future":{"one":"in {0} wk.","other":"in {0} wk."},"past":{"one":"{0} wk. ago","other":"{0} wk. ago"},"-1":"last wk."},"day":{"0":"today","1":"tomorrow","future":{"one":"in {0} day","other":"in {0} days"},"past":{"one":"{0} day ago","other":"{0} days ago"},"-1":"yesterday"},"day-short":{"0":"today","1":"tomorrow","future":{"one":"in {0} day","other":"in {0} days"},"past":{"one":"{0} day ago","other":"{0} days ago"},"-1":"yesterday"},"day-narrow":{"0":"today","1":"tomorrow","future":{"one":"in {0} day","other":"in {0} days"},"past":{"one":"{0} day ago","other":"{0} days ago"},"-1":"yesterday"},"hour":{"0":"this hour","future":{"one":"in {0} hour","other":"in {0} hours"},"past":{"one":"{0} hour ago","other":"{0} hours ago"}},"hour-short":{"0":"this hour","future":{"one":"in {0} hr.","other":"in {0} hr."},"past":{"one":"{0} hr. ago","other":"{0} hr. ago"}},"hour-narrow":{"0":"this hour","future":{"one":"in {0} hr.","other":"in {0} hr."},"past":{"one":"{0} hr. ago","other":"{0} hr. ago"}},"minute":{"0":"this minute","future":{"one":"in {0} minute","other":"in {0} minutes"},"past":{"one":"{0} minute ago","other":"{0} minutes ago"}},"minute-short":{"0":"this minute","future":{"one":"in {0} min.","other":"in {0} min."},"past":{"one":"{0} min. ago","other":"{0} min. ago"}},"minute-narrow":{"0":"this minute","future":{"one":"in {0} min.","other":"in {0} min."},"past":{"one":"{0} min. ago","other":"{0} min. ago"}},"second":{"0":"now","future":{"one":"in {0} second","other":"in {0} seconds"},"past":{"one":"{0} second ago","other":"{0} seconds ago"}},"second-short":{"0":"now","future":{"one":"in {0} sec.","other":"in {0} sec."},"past":{"one":"{0} sec. ago","other":"{0} sec. ago"}},"second-narrow":{"0":"now","future":{"one":"in {0} sec.","other":"in {0} sec."},"past":{"one":"{0} sec. ago","other":"{0} sec. ago"}}},"locale":"en"}
)
}
}

if (!("ResizeObserver"in self
)) {

// ResizeObserver
(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
    typeof define === 'function' && define.amd ? define(['exports'], factory) :
    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ResizeObserver = {}));
})(this, (function (exports) { 'use strict';

    var resizeObservers = [];

    var hasActiveObservations = function () {
        return resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; });
    };

    var hasSkippedObservations = function () {
        return resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; });
    };

    var msg = 'ResizeObserver loop completed with undelivered notifications.';
    var deliverResizeLoopError = function () {
        var event;
        if (typeof ErrorEvent === 'function') {
            event = new ErrorEvent('error', {
                message: msg
            });
        }
        else {
            event = document.createEvent('Event');
            event.initEvent('error', false, false);
            event.message = msg;
        }
        window.dispatchEvent(event);
    };

    var ResizeObserverBoxOptions;
    (function (ResizeObserverBoxOptions) {
        ResizeObserverBoxOptions["BORDER_BOX"] = "border-box";
        ResizeObserverBoxOptions["CONTENT_BOX"] = "content-box";
        ResizeObserverBoxOptions["DEVICE_PIXEL_CONTENT_BOX"] = "device-pixel-content-box";
    })(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));

    var freeze = function (obj) { return Object.freeze(obj); };

    var ResizeObserverSize = (function () {
        function ResizeObserverSize(inlineSize, blockSize) {
            this.inlineSize = inlineSize;
            this.blockSize = blockSize;
            freeze(this);
        }
        return ResizeObserverSize;
    }());

    var DOMRectReadOnly = (function () {
        function DOMRectReadOnly(x, y, width, height) {
            this.x = x;
            this.y = y;
            this.width = width;
            this.height = height;
            this.top = this.y;
            this.left = this.x;
            this.bottom = this.top + this.height;
            this.right = this.left + this.width;
            return freeze(this);
        }
        DOMRectReadOnly.prototype.toJSON = function () {
            var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;
            return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height };
        };
        DOMRectReadOnly.fromRect = function (rectangle) {
            return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
        };
        return DOMRectReadOnly;
    }());

    var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; };
    var isHidden = function (target) {
        if (isSVG(target)) {
            var _a = target.getBBox(), width = _a.width, height = _a.height;
            return !width && !height;
        }
        var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;
        return !(offsetWidth || offsetHeight || target.getClientRects().length);
    };
    var isElement = function (obj) {
        var _a;
        if (obj instanceof Element) {
            return true;
        }
        var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;
        return !!(scope && obj instanceof scope.Element);
    };
    var isReplacedElement = function (target) {
        switch (target.tagName) {
            case 'INPUT':
                if (target.type !== 'image') {
                    break;
                }
            case 'VIDEO':
            case 'AUDIO':
            case 'EMBED':
            case 'OBJECT':
            case 'CANVAS':
            case 'IFRAME':
            case 'IMG':
                return true;
        }
        return false;
    };

    var global = typeof window !== 'undefined' ? window : {};

    var cache = new WeakMap();
    var scrollRegexp = /auto|scroll/;
    var verticalRegexp = /^tb|vertical/;
    var IE = (/msie|trident/i).test(global.navigator && global.navigator.userAgent);
    var parseDimension = function (pixel) { return parseFloat(pixel || '0'); };
    var size = function (inlineSize, blockSize, switchSizes) {
        if (inlineSize === void 0) { inlineSize = 0; }
        if (blockSize === void 0) { blockSize = 0; }
        if (switchSizes === void 0) { switchSizes = false; }
        return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);
    };
    var zeroBoxes = freeze({
        devicePixelContentBoxSize: size(),
        borderBoxSize: size(),
        contentBoxSize: size(),
        contentRect: new DOMRectReadOnly(0, 0, 0, 0)
    });
    var calculateBoxSizes = function (target, forceRecalculation) {
        if (forceRecalculation === void 0) { forceRecalculation = false; }
        if (cache.has(target) && !forceRecalculation) {
            return cache.get(target);
        }
        if (isHidden(target)) {
            cache.set(target, zeroBoxes);
            return zeroBoxes;
        }
        var cs = getComputedStyle(target);
        var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();
        var removePadding = !IE && cs.boxSizing === 'border-box';
        var switchSizes = verticalRegexp.test(cs.writingMode || '');
        var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');
        var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');
        var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);
        var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);
        var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);
        var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);
        var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);
        var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);
        var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);
        var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);
        var horizontalPadding = paddingLeft + paddingRight;
        var verticalPadding = paddingTop + paddingBottom;
        var horizontalBorderArea = borderLeft + borderRight;
        var verticalBorderArea = borderTop + borderBottom;
        var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;
        var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;
        var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;
        var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;
        var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;
        var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;
        var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;
        var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;
        var boxes = freeze({
            devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),
            borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),
            contentBoxSize: size(contentWidth, contentHeight, switchSizes),
            contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)
        });
        cache.set(target, boxes);
        return boxes;
    };
    var calculateBoxSize = function (target, observedBox, forceRecalculation) {
        var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;
        switch (observedBox) {
            case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:
                return devicePixelContentBoxSize;
            case ResizeObserverBoxOptions.BORDER_BOX:
                return borderBoxSize;
            default:
                return contentBoxSize;
        }
    };

    var ResizeObserverEntry = (function () {
        function ResizeObserverEntry(target) {
            var boxes = calculateBoxSizes(target);
            this.target = target;
            this.contentRect = boxes.contentRect;
            this.borderBoxSize = freeze([boxes.borderBoxSize]);
            this.contentBoxSize = freeze([boxes.contentBoxSize]);
            this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);
        }
        return ResizeObserverEntry;
    }());

    var calculateDepthForNode = function (node) {
        if (isHidden(node)) {
            return Infinity;
        }
        var depth = 0;
        var parent = node.parentNode;
        while (parent) {
            depth += 1;
            parent = parent.parentNode;
        }
        return depth;
    };

    var broadcastActiveObservations = function () {
        var shallowestDepth = Infinity;
        var callbacks = [];
        resizeObservers.forEach(function processObserver(ro) {
            if (ro.activeTargets.length === 0) {
                return;
            }
            var entries = [];
            ro.activeTargets.forEach(function processTarget(ot) {
                var entry = new ResizeObserverEntry(ot.target);
                var targetDepth = calculateDepthForNode(ot.target);
                entries.push(entry);
                ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);
                if (targetDepth < shallowestDepth) {
                    shallowestDepth = targetDepth;
                }
            });
            callbacks.push(function resizeObserverCallback() {
                ro.callback.call(ro.observer, entries, ro.observer);
            });
            ro.activeTargets.splice(0, ro.activeTargets.length);
        });
        for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {
            var callback = callbacks_1[_i];
            callback();
        }
        return shallowestDepth;
    };

    var gatherActiveObservationsAtDepth = function (depth) {
        resizeObservers.forEach(function processObserver(ro) {
            ro.activeTargets.splice(0, ro.activeTargets.length);
            ro.skippedTargets.splice(0, ro.skippedTargets.length);
            ro.observationTargets.forEach(function processTarget(ot) {
                if (ot.isActive()) {
                    if (calculateDepthForNode(ot.target) > depth) {
                        ro.activeTargets.push(ot);
                    }
                    else {
                        ro.skippedTargets.push(ot);
                    }
                }
            });
        });
    };

    var process = function () {
        var depth = 0;
        gatherActiveObservationsAtDepth(depth);
        while (hasActiveObservations()) {
            depth = broadcastActiveObservations();
            gatherActiveObservationsAtDepth(depth);
        }
        if (hasSkippedObservations()) {
            deliverResizeLoopError();
        }
        return depth > 0;
    };

    var trigger;
    var callbacks = [];
    var notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); };
    var queueMicroTask = function (callback) {
        if (!trigger) {
            var toggle_1 = 0;
            var el_1 = document.createTextNode('');
            var config = { characterData: true };
            new MutationObserver(function () { return notify(); }).observe(el_1, config);
            trigger = function () { el_1.textContent = "".concat(toggle_1 ? toggle_1-- : toggle_1++); };
        }
        callbacks.push(callback);
        trigger();
    };

    var queueResizeObserver = function (cb) {
        queueMicroTask(function ResizeObserver() {
            requestAnimationFrame(cb);
        });
    };

    var watching = 0;
    var isWatching = function () { return !!watching; };
    var CATCH_PERIOD = 250;
    var observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };
    var events = [
        'resize',
        'load',
        'transitionend',
        'animationend',
        'animationstart',
        'animationiteration',
        'keyup',
        'keydown',
        'mouseup',
        'mousedown',
        'mouseover',
        'mouseout',
        'blur',
        'focus'
    ];
    var time = function (timeout) {
        if (timeout === void 0) { timeout = 0; }
        return Date.now() + timeout;
    };
    var scheduled = false;
    var Scheduler = (function () {
        function Scheduler() {
            var _this = this;
            this.stopped = true;
            this.listener = function () { return _this.schedule(); };
        }
        Scheduler.prototype.run = function (timeout) {
            var _this = this;
            if (timeout === void 0) { timeout = CATCH_PERIOD; }
            if (scheduled) {
                return;
            }
            scheduled = true;
            var until = time(timeout);
            queueResizeObserver(function () {
                var elementsHaveResized = false;
                try {
                    elementsHaveResized = process();
                }
                finally {
                    scheduled = false;
                    timeout = until - time();
                    if (!isWatching()) {
                        return;
                    }
                    if (elementsHaveResized) {
                        _this.run(1000);
                    }
                    else if (timeout > 0) {
                        _this.run(timeout);
                    }
                    else {
                        _this.start();
                    }
                }
            });
        };
        Scheduler.prototype.schedule = function () {
            this.stop();
            this.run();
        };
        Scheduler.prototype.observe = function () {
            var _this = this;
            var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); };
            document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);
        };
        Scheduler.prototype.start = function () {
            var _this = this;
            if (this.stopped) {
                this.stopped = false;
                this.observer = new MutationObserver(this.listener);
                this.observe();
                events.forEach(function (name) { return global.addEventListener(name, _this.listener, true); });
            }
        };
        Scheduler.prototype.stop = function () {
            var _this = this;
            if (!this.stopped) {
                this.observer && this.observer.disconnect();
                events.forEach(function (name) { return global.removeEventListener(name, _this.listener, true); });
                this.stopped = true;
            }
        };
        return Scheduler;
    }());
    var scheduler = new Scheduler();
    var updateCount = function (n) {
        !watching && n > 0 && scheduler.start();
        watching += n;
        !watching && scheduler.stop();
    };

    var skipNotifyOnElement = function (target) {
        return !isSVG(target)
            && !isReplacedElement(target)
            && getComputedStyle(target).display === 'inline';
    };
    var ResizeObservation = (function () {
        function ResizeObservation(target, observedBox) {
            this.target = target;
            this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;
            this.lastReportedSize = {
                inlineSize: 0,
                blockSize: 0
            };
        }
        ResizeObservation.prototype.isActive = function () {
            var size = calculateBoxSize(this.target, this.observedBox, true);
            if (skipNotifyOnElement(this.target)) {
                this.lastReportedSize = size;
            }
            if (this.lastReportedSize.inlineSize !== size.inlineSize
                || this.lastReportedSize.blockSize !== size.blockSize) {
                return true;
            }
            return false;
        };
        return ResizeObservation;
    }());

    var ResizeObserverDetail = (function () {
        function ResizeObserverDetail(resizeObserver, callback) {
            this.activeTargets = [];
            this.skippedTargets = [];
            this.observationTargets = [];
            this.observer = resizeObserver;
            this.callback = callback;
        }
        return ResizeObserverDetail;
    }());

    var observerMap = new WeakMap();
    var getObservationIndex = function (observationTargets, target) {
        for (var i = 0; i < observationTargets.length; i += 1) {
            if (observationTargets[i].target === target) {
                return i;
            }
        }
        return -1;
    };
    var ResizeObserverController = (function () {
        function ResizeObserverController() {
        }
        ResizeObserverController.connect = function (resizeObserver, callback) {
            var detail = new ResizeObserverDetail(resizeObserver, callback);
            observerMap.set(resizeObserver, detail);
        };
        ResizeObserverController.observe = function (resizeObserver, target, options) {
            var detail = observerMap.get(resizeObserver);
            var firstObservation = detail.observationTargets.length === 0;
            if (getObservationIndex(detail.observationTargets, target) < 0) {
                firstObservation && resizeObservers.push(detail);
                detail.observationTargets.push(new ResizeObservation(target, options && options.box));
                updateCount(1);
                scheduler.schedule();
            }
        };
        ResizeObserverController.unobserve = function (resizeObserver, target) {
            var detail = observerMap.get(resizeObserver);
            var index = getObservationIndex(detail.observationTargets, target);
            var lastObservation = detail.observationTargets.length === 1;
            if (index >= 0) {
                lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);
                detail.observationTargets.splice(index, 1);
                updateCount(-1);
            }
        };
        ResizeObserverController.disconnect = function (resizeObserver) {
            var _this = this;
            var detail = observerMap.get(resizeObserver);
            detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });
            detail.activeTargets.splice(0, detail.activeTargets.length);
        };
        return ResizeObserverController;
    }());

    var ResizeObserver = (function () {
        function ResizeObserver(callback) {
            if (arguments.length === 0) {
                throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");
            }
            if (typeof callback !== 'function') {
                throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");
            }
            ResizeObserverController.connect(this, callback);
        }
        ResizeObserver.prototype.observe = function (target, options) {
            if (arguments.length === 0) {
                throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");
            }
            if (!isElement(target)) {
                throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");
            }
            ResizeObserverController.observe(this, target, options);
        };
        ResizeObserver.prototype.unobserve = function (target) {
            if (arguments.length === 0) {
                throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");
            }
            if (!isElement(target)) {
                throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");
            }
            ResizeObserverController.unobserve(this, target);
        };
        ResizeObserver.prototype.disconnect = function () {
            ResizeObserverController.disconnect(this);
        };
        ResizeObserver.toString = function () {
            return 'function ResizeObserver () { [polyfill code] }';
        };
        return ResizeObserver;
    }());

    exports.ResizeObserver = ResizeObserver;
    exports.ResizeObserverEntry = ResizeObserverEntry;
    exports.ResizeObserverSize = ResizeObserverSize;

    Object.defineProperty(exports, '__esModule', { value: true });

}));
;self.ResizeObserverEntry = ResizeObserver.ResizeObserverEntry;self.ResizeObserver=ResizeObserver.ResizeObserver;
}

if (!((function(e){try{if(Object.prototype.hasOwnProperty.call(e,"WeakSet")&&0===e.WeakSet.length){var t={},r=new e.WeakSet([t])
return r.has(t)&&!1===r.delete(0)&&"toStringTag"in self.Symbol&&void 0!==r[self.Symbol.toStringTag]}return!1}catch(e){return!1}})(self)
)) {

// WeakSet
/* global Call, CreateMethodProperty, Get, GetIterator, IsArray, IsCallable, IteratorClose, IteratorStep, IteratorValue, OrdinaryCreateFromConstructor, SameValueZero, Type, Symbol */
(function (global) {
	// Deleted set items mess with iterator pointers, so rather than removing them mark them as deleted. Can't use undefined or null since those both valid keys so use a private symbol.
	var undefMarker = Symbol('undef');
	// 23.4.1.1. WeakSet ( [ iterable ] )
	var WeakSet = function WeakSet() {
		// 1. If NewTarget is undefined, throw a TypeError exception.
		if (!(this instanceof WeakSet)) {
			throw new TypeError('Constructor WeakSet requires "new"');
		}
		// 2. Let set be ? OrdinaryCreateFromConstructor(NewTarget, "%WeakSetPrototype%", « [[WeakSetData]] »).
		var set = OrdinaryCreateFromConstructor(this, WeakSet.prototype, {
			_values: [],
			_size: 0,
			_es6WeakSet: true
		});

		// 3. Set set.[[WeakSetData]] to a new empty List.
		// Polyfill.io - This step was done as part of step two.

		// 4. If iterable is not present, let iterable be undefined.
		var iterable = arguments.length > 0 ? arguments[0] : undefined;
		// 5. If iterable is either undefined or null, return set.
		if (iterable === null || iterable === undefined) {
			return set;
		}
		// 6. Let adder be ? Get(set, "add").
		var adder = Get(set, 'add');
		// 7. If IsCallable(adder) is false, throw a TypeError exception.
		if (!IsCallable(adder)) {
			throw new TypeError("WeakSet.prototype.add is not a function");
		}
		try {
			// 8. Let iteratorRecord be ? GetIterator(iterable).
			var iteratorRecord = GetIterator(iterable);
			// 9. Repeat,
			// eslint-disable-next-line no-constant-condition
			while (true) {
				// a. Let next be ? IteratorStep(iteratorRecord).
				var next = IteratorStep(iteratorRecord);
				// b. If next is false, return set.
				if (next === false) {
					return set;
				}
				// c. Let nextValue be ? IteratorValue(next).
				var nextValue = IteratorValue(next);
				// d. Let status be Call(adder, set, « nextValue »).
				try {
					Call(adder, set, [nextValue]);
				} catch (e) {
					// e. If status is an abrupt completion, return ? IteratorClose(iteratorRecord, status).
					return IteratorClose(iteratorRecord, e);
				}
			}
		} catch (e) {
			// Polyfill.io - For user agents which do not have iteration methods on argument objects or arrays, we can special case those.
			if (IsArray(iterable) ||
				Object.prototype.toString.call(iterable) === '[object Arguments]') {
				var index;
				var length = iterable.length;
				for (index = 0; index < length; index++) {
					Call(adder, set, [iterable[index]]);
				}
			}
		}
		return set;
	};

	// 23.4.2.1. WeakSet.prototype
	// The initial value of WeakSet.prototype is the intrinsic %WeakSetPrototype% object.
	// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
	Object.defineProperty(WeakSet, 'prototype', {
		configurable: false,
		enumerable: false,
		writable: false,
		value: {}
	});

	// 23.4.3.1. WeakSet.prototype.add ( value )
	CreateMethodProperty(WeakSet.prototype, 'add', function add(value) {
		// 1. Let S be the this value.
		var S = this;
		// 2. If Type(S) is not Object, throw a TypeError exception.
		if (Type(S) !== 'object') {
			throw new TypeError('Method WeakSet.prototype.add called on incompatible receiver ' + Object.prototype.toString.call(S));
		}
		// 3. If S does not have a [[WeakSetData]] internal slot, throw a TypeError exception.
		if (S._es6WeakSet !== true) {
			throw new TypeError('Method WeakSet.prototype.add called on incompatible receiver ' + Object.prototype.toString.call(S));
		}
		// 4. If Type(value) is not Object, throw a TypeError exception.
		if (Type(value) !== 'object') {
			throw new TypeError('Invalid value used in weak set');
		}
		// 5. Let entries be the List that is S.[[WeakSetData]].
		var entries = S._values;
		// 6. For each e that is an element of entries, do
		for (var i = 0; i < entries.length; i++) {
			var e = entries[i];
			// a. If e is not empty and SameValue(e, value) is true, then
			if (e !== undefMarker && SameValueZero(e, value)) {
				// i. Return S.
				return S;
			}
		}
		// 7. Append value as the last element of entries.
		S._values.push(value);
		// 8. Return S.
		return S;
	});

	// 23.4.3.2. WeakSet.prototype.constructor
	CreateMethodProperty(WeakSet.prototype, 'constructor', WeakSet);

	// 23.4.3.3. WeakSet.prototype.delete ( value )
	CreateMethodProperty(WeakSet.prototype, 'delete', function (value) {
		// 1. Let S be the this value.
		var S = this;
		// 2. If Type(S) is not Object, throw a TypeError exception.
		if (Type(S) !== 'object') {
			throw new TypeError('Method WeakSet.prototype.delete called on incompatible receiver ' + Object.prototype.toString.call(S));
		}
		// 3. If S does not have a [[WeakSetData]] internal slot, throw a TypeError exception.
		if (S._es6WeakSet !== true) {
			throw new TypeError('Method WeakSet.prototype.delete called on incompatible receiver ' + Object.prototype.toString.call(S));
		}
		// 4. If Type(value) is not Object, return false.
		if (Type(value) !== 'object') {
			return false;
		}
		// 5. Let entries be the List that is S.[[WeakSetData]].
		var entries = S._values;
		// 6. For each e that is an element of entries, do
		for (var i = 0; i < entries.length; i++) {
			var e = entries[i];
			// a. If e is not empty and SameValue(e, value) is true, then
			if (e !== undefMarker && SameValueZero(e, value)) {
				// i. Replace the element of entries whose value is e with an element whose value is empty.
				entries[i] = undefMarker;
				// ii. Return true.
				return true;
			}
		}
		// 7. Return false.
		return false;
	});

	// 23.4.3.4. WeakSet.prototype.has ( value )
	CreateMethodProperty(WeakSet.prototype, 'has', function has(value) {
		// 1. Let S be the this value.
		var S = this;
		// 2. If Type(S) is not Object, throw a TypeError exception.
		if (Type(S) !== 'object') {
			throw new TypeError('Method WeakSet.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(S));
		}
		// 3. If S does not have a [[WeakSetData]] internal slot, throw a TypeError exception.
		if (S._es6WeakSet !== true) {
			throw new TypeError('Method WeakSet.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(S));
		}
		// 4. Let entries be the List that is S.[[WeakSetData]].
		var entries = S._values;
		// 5. If Type(value) is not Object, return false.
		if (Type(value) !== 'object') {
			return false;
		}
		// 6. For each e that is an element of entries, do
		for (var i = 0; i < entries.length; i++) {
			var e = entries[i];
			// a. If e is not empty and SameValue(e, value) is true, return true.
			if (e !== undefMarker && SameValueZero(e, value)) {
				return true;
			}
		}
		// 7. Return false.
		return false;
	});

	// 23.4.3.5. WeakSet.prototype [ @@toStringTag ]
	// The initial value of the @@toStringTag property is the String value "WeakSet".
	// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
	Object.defineProperty(WeakSet.prototype, Symbol.toStringTag, {
		configurable: true,
		enumerable: false,
		writable: false,
		value: 'WeakSet'
	});

	// Polyfill.io - Safari 8 implements Set.name but as a non-configurable property, which means it would throw an error if we try and configure it here.
	if (!('name' in WeakSet)) {
		// 19.2.4.2 name
		Object.defineProperty(WeakSet, 'name', {
			configurable: true,
			enumerable: false,
			writable: false,
			value: 'WeakSet'
		});
	}

	// Export the object
	CreateMethodProperty(global, 'WeakSet', WeakSet);
}(self));

}

})
('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
</script></head><body><div id="appMountPoint"><div class="basicLayout"><div class=""><div data-uia="loc" lang="en" dir="ltr"><style data-emotion="default-ltr-cache 1lr0euo">.default-ltr-cache-1lr0euo{overflow:visible;height:0;position:relative;z-index:1;}</style><div class="default-ltr-cache-1lr0euo e1iw2qjb0"><style data-emotion="default-ltr-cache auyd9j">.default-ltr-cache-auyd9j{width:inherit;padding-top:1.5rem;padding-bottom:1.5rem;margin:auto;}@media all{.default-ltr-cache-auyd9j{padding-left:1.5rem;padding-right:1.5rem;}}@media all and (min-width: 600px){.default-ltr-cache-auyd9j{padding-left:2rem;padding-right:2rem;}}@media all and (min-width: 960px){.default-ltr-cache-auyd9j{padding-left:2rem;padding-right:2rem;}}@media all and (min-width: 1280px){.default-ltr-cache-auyd9j{padding-left:3rem;padding-right:3rem;}}@media all and (min-width: 1920px){.default-ltr-cache-auyd9j{padding-left:3rem;padding-right:3rem;}}@media screen and (min-width: 1280px){.default-ltr-cache-auyd9j{max-width:calc(83.33333333333334% - 6rem);}}@media screen and (min-width: 1920px){.default-ltr-cache-auyd9j{max-width:calc(66.66666666666666% - 6rem);}}.default-ltr-cache-auyd9j::after{display:none;border-bottom:none;content:'';position:absolute;left:0;right:0;margin-top:calc(
			1.5rem - 0.0625rem
		);}</style><header data-uia="nmhp-card-header" class=" default-ltr-cache-auyd9j e1bzn5xj1"><style data-emotion="default-ltr-cache 1fhvoso">.default-ltr-cache-1fhvoso{box-sizing:border-box;width:100%;display:inherit;height:auto;}.default-ltr-cache-1fhvoso *{box-sizing:border-box;}</style><div data-layout="wrapper" class=" default-ltr-cache-1fhvoso eslj5pt1"><style data-emotion="default-ltr-cache 1ih16e8">.default-ltr-cache-1ih16e8{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;height:inherit;margin-top:-0.5rem;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;padding:0px;}@media all{.default-ltr-cache-1ih16e8{margin-left:-0.5rem;width:calc(100% + 0.5rem);}}@media all and (min-width: 600px){.default-ltr-cache-1ih16e8{margin-left:-0.5rem;width:calc(100% + 0.5rem);}}@media all and (min-width: 960px){.default-ltr-cache-1ih16e8{margin-left:-1rem;width:calc(100% + 1rem);}}@media all and (min-width: 1280px){.default-ltr-cache-1ih16e8{margin-left:-1rem;width:calc(100% + 1rem);}}@media all and (min-width: 1920px){.default-ltr-cache-1ih16e8{margin-left:-1rem;width:calc(100% + 1rem);}}.default-ltr-cache-1ih16e8>*{margin-top:0.5rem;}@media all{.default-ltr-cache-1ih16e8>*{margin-left:0.5rem;}}@media all and (min-width: 600px){.default-ltr-cache-1ih16e8>*{margin-left:0.5rem;}}@media all and (min-width: 960px){.default-ltr-cache-1ih16e8>*{margin-left:1rem;}}@media all and (min-width: 1280px){.default-ltr-cache-1ih16e8>*{margin-left:1rem;}}@media all and (min-width: 1920px){.default-ltr-cache-1ih16e8>*{margin-left:1rem;}}</style><div data-layout="container" class="default-ltr-cache-1ih16e8 eslj5pt0"><style data-emotion="default-ltr-cache 35cwt6">.default-ltr-cache-35cwt6{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;padding:0px;}@media all{.default-ltr-cache-35cwt6{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 600px){.default-ltr-cache-35cwt6{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 960px){.default-ltr-cache-35cwt6{width:auto;-webkit-flex:0 0 calc(33.333333333333336% - 1rem);-ms-flex:0 0 calc(33.333333333333336% - 1rem);flex:0 0 calc(33.333333333333336% - 1rem);}}@media all and (min-width: 1280px){.default-ltr-cache-35cwt6{width:auto;-webkit-flex:0 0 calc(33.333333333333336% - 1rem);-ms-flex:0 0 calc(33.333333333333336% - 1rem);flex:0 0 calc(33.333333333333336% - 1rem);}}@media all and (min-width: 1920px){.default-ltr-cache-35cwt6{width:auto;-webkit-flex:0 0 calc(33.333333333333336% - 1rem);-ms-flex:0 0 calc(33.333333333333336% - 1rem);flex:0 0 calc(33.333333333333336% - 1rem);}}</style><div data-layout="item" class=" default-ltr-cache-35cwt6 ew2l6qe0"><span class="default-ltr-cache-0 ev1dnif0" data-uia="nmhp-card-header+logo"><style data-emotion="default-ltr-cache 1d568uk">.default-ltr-cache-1d568uk{width:9.25rem;height:2.5rem;color:rgb(229,9,20);fill:currentColor;display:block;}@media screen and (max-width: 959.98px){.default-ltr-cache-1d568uk{width:5.5625rem;height:1.5rem;}}</style><svg viewBox="0 0 111 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="default-ltr-cache-1d568uk ev1dnif2"><g><path d="M105.06233,14.2806261 L110.999156,30 C109.249227,29.7497422 107.500234,29.4366857 105.718437,29.1554972 L102.374168,20.4686475 L98.9371075,28.4375293 C97.2499766,28.1563408 95.5928391,28.061674 93.9057081,27.8432843 L99.9372012,14.0931671 L94.4680851,-5.68434189e-14 L99.5313525,-5.68434189e-14 L102.593495,7.87421502 L105.874965,-5.68434189e-14 L110.999156,-5.68434189e-14 L105.06233,14.2806261 Z M90.4686475,-5.68434189e-14 L85.8749649,-5.68434189e-14 L85.8749649,27.2499766 C87.3746368,27.3437061 88.9371075,27.4055675 90.4686475,27.5930265 L90.4686475,-5.68434189e-14 Z M81.9055207,26.93692 C77.7186241,26.6557316 73.5307901,26.4064111 69.250164,26.3117443 L69.250164,-5.68434189e-14 L73.9366389,-5.68434189e-14 L73.9366389,21.8745899 C76.6248008,21.9373887 79.3120255,22.1557784 81.9055207,22.2804387 L81.9055207,26.93692 Z M64.2496954,10.6561065 L64.2496954,15.3435186 L57.8442216,15.3435186 L57.8442216,25.9996251 L53.2186709,25.9996251 L53.2186709,-5.68434189e-14 L66.3436123,-5.68434189e-14 L66.3436123,4.68741213 L57.8442216,4.68741213 L57.8442216,10.6561065 L64.2496954,10.6561065 Z M45.3435186,4.68741213 L45.3435186,26.2498828 C43.7810479,26.2498828 42.1876465,26.2498828 40.6561065,26.3117443 L40.6561065,4.68741213 L35.8121661,4.68741213 L35.8121661,-5.68434189e-14 L50.2183897,-5.68434189e-14 L50.2183897,4.68741213 L45.3435186,4.68741213 Z M30.749836,15.5928391 C28.687787,15.5928391 26.2498828,15.5928391 24.4999531,15.6875059 L24.4999531,22.6562939 C27.2499766,22.4678976 30,22.2495079 32.7809542,22.1557784 L32.7809542,26.6557316 L19.812541,27.6876933 L19.812541,-5.68434189e-14 L32.7809542,-5.68434189e-14 L32.7809542,4.68741213 L24.4999531,4.68741213 L24.4999531,10.9991564 C26.3126816,10.9991564 29.0936358,10.9054269 30.749836,10.9054269 L30.749836,15.5928391 Z M4.78114163,12.9684132 L4.78114163,29.3429562 C3.09401069,29.5313525 1.59340144,29.7497422 0,30 L0,-5.68434189e-14 L4.4690224,-5.68434189e-14 L10.562377,17.0315868 L10.562377,-5.68434189e-14 L15.2497891,-5.68434189e-14 L15.2497891,28.061674 C13.5935889,28.3437998 11.906458,28.4375293 10.1246602,28.6868498 L4.78114163,12.9684132 Z"></path></g></svg><style data-emotion="default-ltr-cache raue2m">.default-ltr-cache-raue2m{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px;}</style><span class="default-ltr-cache-raue2m ev1dnif1">Netflix</span></span></div><style data-emotion="default-ltr-cache 7ejomh">.default-ltr-cache-7ejomh{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;padding:0px;}@media all{.default-ltr-cache-7ejomh{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 600px){.default-ltr-cache-7ejomh{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 960px){.default-ltr-cache-7ejomh{width:auto;-webkit-flex:0 0 calc(66.66666666666667% - 1rem);-ms-flex:0 0 calc(66.66666666666667% - 1rem);flex:0 0 calc(66.66666666666667% - 1rem);}}@media all and (min-width: 1280px){.default-ltr-cache-7ejomh{width:auto;-webkit-flex:0 0 calc(66.66666666666667% - 1rem);-ms-flex:0 0 calc(66.66666666666667% - 1rem);flex:0 0 calc(66.66666666666667% - 1rem);}}@media all and (min-width: 1920px){.default-ltr-cache-7ejomh{width:auto;-webkit-flex:0 0 calc(66.66666666666667% - 1rem);-ms-flex:0 0 calc(66.66666666666667% - 1rem);flex:0 0 calc(66.66666666666667% - 1rem);}}</style><div data-layout="item" class=" default-ltr-cache-7ejomh ew2l6qe0"><div data-layout="wrapper" class=" default-ltr-cache-1fhvoso eslj5pt1"><style data-emotion="default-ltr-cache p63fvi">.default-ltr-cache-p63fvi{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;height:inherit;margin-top:-0px;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;padding:0px;}@media all{.default-ltr-cache-p63fvi{margin-left:-0.5rem;width:calc(100% + 0.5rem);}}@media all and (min-width: 600px){.default-ltr-cache-p63fvi{margin-left:-0.5rem;width:calc(100% + 0.5rem);}}@media all and (min-width: 960px){.default-ltr-cache-p63fvi{margin-left:-1.5rem;width:calc(100% + 1.5rem);}}@media all and (min-width: 1280px){.default-ltr-cache-p63fvi{margin-left:-1.5rem;width:calc(100% + 1.5rem);}}@media all and (min-width: 1920px){.default-ltr-cache-p63fvi{margin-left:-1.5rem;width:calc(100% + 1.5rem);}}.default-ltr-cache-p63fvi>*{margin-top:0px;}@media all{.default-ltr-cache-p63fvi>*{margin-left:0.5rem;}}@media all and (min-width: 600px){.default-ltr-cache-p63fvi>*{margin-left:0.5rem;}}@media all and (min-width: 960px){.default-ltr-cache-p63fvi>*{margin-left:1.5rem;}}@media all and (min-width: 1280px){.default-ltr-cache-p63fvi>*{margin-left:1.5rem;}}@media all and (min-width: 1920px){.default-ltr-cache-p63fvi>*{margin-left:1.5rem;}}</style><div data-layout="container" class="default-ltr-cache-p63fvi eslj5pt0"><style data-emotion="default-ltr-cache 7ujrbr">.default-ltr-cache-7ujrbr{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;padding:0px;}@media all{.default-ltr-cache-7ujrbr{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 600px){.default-ltr-cache-7ujrbr{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 960px){.default-ltr-cache-7ujrbr{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 1280px){.default-ltr-cache-7ujrbr{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 1920px){.default-ltr-cache-7ujrbr{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}</style><div data-layout="item" class=" default-ltr-cache-7ujrbr ew2l6qe0"><style data-emotion="default-ltr-cache 1sk81mw">@media screen and (max-width: 599.98px){.default-ltr-cache-1sk81mw .ea3diy34>select{width:0.0625rem!important;padding-right:1.75rem!important;}}</style><span class="default-ltr-cache-1sk81mw e1bzn5xj0"></span></div><style data-emotion="default-ltr-cache 11adcsa">.default-ltr-cache-11adcsa{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;padding:0px;}@media all{.default-ltr-cache-11adcsa{width:auto;}}@media all and (min-width: 600px){.default-ltr-cache-11adcsa{width:auto;}}@media all and (min-width: 960px){.default-ltr-cache-11adcsa{width:auto;}}@media all and (min-width: 1280px){.default-ltr-cache-11adcsa{width:auto;}}@media all and (min-width: 1920px){.default-ltr-cache-11adcsa{width:auto;}}</style><div data-layout="item" class=" default-ltr-cache-11adcsa ew2l6qe0"><div><style data-emotion="default-ltr-cache 15olm78">.default-ltr-cache-15olm78{border:0;border-radius:0.25rem;cursor:pointer;fill:currentColor;position:relative;transition-duration:250ms;transition-property:background-color,border-color;transition-timing-function:cubic-bezier(0.9, 0, 0.51, 1);vertical-align:text-top;width:auto;font-size:0.875rem;font-weight:500;min-height:2rem;padding:0.25rem 1rem;background:rgb(229,9,20);color:rgb(255,255,255);}.default-ltr-cache-15olm78:focus{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-15olm78:focus:not(:focus-visible){outline:none;}.default-ltr-cache-15olm78::after{bottom:0;left:0;position:absolute;right:0;top:0;-webkit-transition:inherit;transition:inherit;border-style:solid;border-width:0.0625rem;border-radius:0.1875rem;content:'';border-color:rgba(0,0,0,0);}@media screen and (prefers-reduced-motion){.default-ltr-cache-15olm78{-webkit-transition:none;transition:none;}}.default-ltr-cache-15olm78[aria-disabled]{opacity:1;background:rgba(229,9,20,0.4);cursor:not-allowed;color:rgba(255,255,255,0.4);}.default-ltr-cache-15olm78[aria-disabled]::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-15olm78[aria-disabled] .e1ax5wel3,.default-ltr-cache-15olm78[aria-disabled] .e1ax5wel2{position:absolute;color:rgba(255,255,255,0.4);}.default-ltr-cache-15olm78:not([aria-disabled]):hover{transition-timing-function:cubic-bezier(0.5, 0, 0.1, 1);background:rgb(193,17,25);}.default-ltr-cache-15olm78:not([aria-disabled]):hover::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-15olm78:not([aria-disabled]):active{-webkit-transition:none;transition:none;color:rgba(255,255,255,0.7);background:rgb(153,22,29);}.default-ltr-cache-15olm78:not([aria-disabled]):active::after{border-color:rgba(0,0,0,0);}</style><style data-emotion="default-ltr-cache eziut">.default-ltr-cache-eziut{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:gainsboro;border-radius:2px;border:1px solid dimgray;box-sizing:border-box;color:black;cursor:default;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:13px;font-weight:400;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;letter-spacing:normal;line-height:1;padding:2px 7px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:0;border-radius:0.25rem;cursor:pointer;fill:currentColor;position:relative;transition-duration:250ms;transition-property:background-color,border-color;transition-timing-function:cubic-bezier(0.9, 0, 0.51, 1);vertical-align:text-top;width:auto;font-size:0.875rem;font-weight:500;min-height:2rem;padding:0.25rem 1rem;background:rgb(229,9,20);color:rgb(255,255,255);}.default-ltr-cache-eziut:not([aria-disabled]):hover{border-color:black;background:lightgray;}.default-ltr-cache-eziut:not([aria-disabled]):active{border-color:darkgray;background:#ececec;}.default-ltr-cache-eziut:focus{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-eziut:focus:not(:focus-visible){outline:none;}.default-ltr-cache-eziut::after{bottom:0;left:0;position:absolute;right:0;top:0;-webkit-transition:inherit;transition:inherit;border-style:solid;border-width:0.0625rem;border-radius:0.1875rem;content:'';border-color:rgba(0,0,0,0);}@media screen and (prefers-reduced-motion){.default-ltr-cache-eziut{-webkit-transition:none;transition:none;}}.default-ltr-cache-eziut[aria-disabled]{opacity:1;background:rgba(229,9,20,0.4);cursor:not-allowed;color:rgba(255,255,255,0.4);}.default-ltr-cache-eziut[aria-disabled]::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-eziut[aria-disabled] .e1ax5wel3,.default-ltr-cache-eziut[aria-disabled] .e1ax5wel2{position:absolute;color:rgba(255,255,255,0.4);}.default-ltr-cache-eziut:not([aria-disabled]):hover{transition-timing-function:cubic-bezier(0.5, 0, 0.1, 1);background:rgb(193,17,25);}.default-ltr-cache-eziut:not([aria-disabled]):hover::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-eziut:not([aria-disabled]):active{-webkit-transition:none;transition:none;color:rgba(255,255,255,0.7);background:rgb(153,22,29);}.default-ltr-cache-eziut:not([aria-disabled]):active::after{border-color:rgba(0,0,0,0);}</style><style data-emotion="default-ltr-cache 1clcoym">.default-ltr-cache-1clcoym{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:none;border-radius:0;border:0;box-sizing:content-box;color:inherit;cursor:default;display:inline;font:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0;-webkit-text-decoration:none;text-decoration:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:gainsboro;border-radius:2px;border:1px solid dimgray;box-sizing:border-box;color:black;cursor:default;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:13px;font-weight:400;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;letter-spacing:normal;line-height:1;padding:2px 7px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:0;border-radius:0.25rem;cursor:pointer;fill:currentColor;position:relative;transition-duration:250ms;transition-property:background-color,border-color;transition-timing-function:cubic-bezier(0.9, 0, 0.51, 1);vertical-align:text-top;width:auto;font-size:0.875rem;font-weight:500;min-height:2rem;padding:0.25rem 1rem;background:rgb(229,9,20);color:rgb(255,255,255);}.default-ltr-cache-1clcoym[aria-disabled]{cursor:not-allowed;opacity:0.5;}.default-ltr-cache-1clcoym:focus{outline:none;outline:#a9a9a9 auto 5px;outline:Highlight auto 5px;outline:-webkit-focus-ring-color auto 5px;}.default-ltr-cache-1clcoym:focus:not(:focus-visible){outline:none;}.default-ltr-cache-1clcoym:not([aria-disabled]):hover{border-color:black;background:lightgray;}.default-ltr-cache-1clcoym:not([aria-disabled]):active{border-color:darkgray;background:#ececec;}.default-ltr-cache-1clcoym:focus{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-1clcoym:focus:not(:focus-visible){outline:none;}.default-ltr-cache-1clcoym::after{bottom:0;left:0;position:absolute;right:0;top:0;-webkit-transition:inherit;transition:inherit;border-style:solid;border-width:0.0625rem;border-radius:0.1875rem;content:'';border-color:rgba(0,0,0,0);}@media screen and (prefers-reduced-motion){.default-ltr-cache-1clcoym{-webkit-transition:none;transition:none;}}.default-ltr-cache-1clcoym[aria-disabled]{opacity:1;background:rgba(229,9,20,0.4);cursor:not-allowed;color:rgba(255,255,255,0.4);}.default-ltr-cache-1clcoym[aria-disabled]::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-1clcoym[aria-disabled] .e1ax5wel3,.default-ltr-cache-1clcoym[aria-disabled] .e1ax5wel2{position:absolute;color:rgba(255,255,255,0.4);}.default-ltr-cache-1clcoym:not([aria-disabled]):hover{transition-timing-function:cubic-bezier(0.5, 0, 0.1, 1);background:rgb(193,17,25);}.default-ltr-cache-1clcoym:not([aria-disabled]):hover::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-1clcoym:not([aria-disabled]):active{-webkit-transition:none;transition:none;color:rgba(255,255,255,0.7);background:rgb(153,22,29);}.default-ltr-cache-1clcoym:not([aria-disabled]):active::after{border-color:rgba(0,0,0,0);}</style><a role="button" class=" e1ax5wel1 ew97par0 default-ltr-cache-1clcoym e1ff4m3w1" id="signIn" data-uia="header-login-link" href="/gb/login">Sign In</a></div></div></div></div></div></div></div></header></div><div><style data-emotion="default-ltr-cache 142hwrm">.default-ltr-cache-142hwrm{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;color:rgb(255,255,255);text-align:center;height:100%;box-sizing:border-box;min-height:30rem;padding:7.5rem 0 2rem;}@media screen and (min-width: 600px){.default-ltr-cache-142hwrm{min-height:32rem;padding:8.5rem 0 3rem;}}@media screen and (min-width: 960px){.default-ltr-cache-142hwrm{min-height:43.75rem;padding:9.875rem 0 4rem;}}</style><div class=" default-ltr-cache-142hwrm e9eyrqp6" data-uia="nmhp-card-hero"><style data-emotion="default-ltr-cache 1opu7t3">.default-ltr-cache-1opu7t3{height:100%;left:0;position:absolute;top:0;width:100%;}</style><div class="default-ltr-cache-1opu7t3 e9eyrqp2"><style data-emotion="default-ltr-cache 1nqqplm">.default-ltr-cache-1nqqplm{position:relative;overflow:hidden;height:100%;width:100%;}</style><div class=" default-ltr-cache-1nqqplm e13sg9vu1" data-uia="nmhp-card-hero+background"><style data-emotion="default-ltr-cache 1jxs5rh">.default-ltr-cache-1jxs5rh{height:100%;width:100%;-webkit-transform:scale(1.25) translateY(-10%);-moz-transform:scale(1.25) translateY(-10%);-ms-transform:scale(1.25) translateY(-10%);transform:scale(1.25) translateY(-10%);object-fit:cover;}@media screen and (max-width: 599.98px){.default-ltr-cache-1jxs5rh{width:auto;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}}</style><img alt="" aria-hidden="true" data-uia="nmhp-card-hero+background+image" src="https://assets.nflxext.com/ffe/siteui/vlv3/9f46b569-aff7-4975-9b8e-3212e4637f16/b5e570d2-ae63-44ab-a10c-730d4d95f0fa/GB-en-20240415-popsignuptwoweeks-perspective_alpha_website_small.jpg" srcSet="https://assets.nflxext.com/ffe/siteui/vlv3/9f46b569-aff7-4975-9b8e-3212e4637f16/b5e570d2-ae63-44ab-a10c-730d4d95f0fa/GB-en-20240415-popsignuptwoweeks-perspective_alpha_website_small.jpg 1000w, https://assets.nflxext.com/ffe/siteui/vlv3/9f46b569-aff7-4975-9b8e-3212e4637f16/b5e570d2-ae63-44ab-a10c-730d4d95f0fa/GB-en-20240415-popsignuptwoweeks-perspective_alpha_website_medium.jpg 1500w, https://assets.nflxext.com/ffe/siteui/vlv3/9f46b569-aff7-4975-9b8e-3212e4637f16/b5e570d2-ae63-44ab-a10c-730d4d95f0fa/GB-en-20240415-popsignuptwoweeks-perspective_alpha_website_large.jpg 1800w" class="default-ltr-cache-1jxs5rh e13sg9vu0"/><style data-emotion="default-ltr-cache 1y1tnl9">.default-ltr-cache-1y1tnl9{background:rgb(0 0 0 / 40%);position:absolute;top:0;right:0;bottom:0;left:0;}</style><div class=" default-ltr-cache-1y1tnl9 egicmjq0" style="background-image:linear-gradient(to top, rgba(0, 0, 0, 0.8) 0, rgba(0, 0, 0, 0) 60%, rgba(0, 0, 0, 0.8) 100%)" data-uia="nmhp-card-hero+gradient"></div></div></div><style data-emotion="default-ltr-cache d4qcmr">.default-ltr-cache-d4qcmr{margin:auto;max-width:calc(
        100% - 3rem
    );display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;text-align:center;}@media screen and (min-width: 600px){.default-ltr-cache-d4qcmr{max-width:calc(
            100% - 4rem
        );}}@media screen and (min-width: 960px){.default-ltr-cache-d4qcmr{max-width:calc(
            100% - 4rem
        );}}@media screen and (min-width: 1280px){.default-ltr-cache-d4qcmr{max-width:calc(
            83.33333333333334% - 6rem
        );}}@media screen and (min-width: 1920px){.default-ltr-cache-d4qcmr{max-width:calc(
            66.66666666666666% - 6rem
        );}}@media screen and (min-width: 960px){.default-ltr-cache-d4qcmr{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}</style><div class="default-ltr-cache-d4qcmr e9eyrqp1"><style data-emotion="default-ltr-cache 1dvfrvc">.default-ltr-cache-1dvfrvc{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;padding:0;z-index:1;width:100%;}</style><div class="default-ltr-cache-1dvfrvc e9eyrqp5"><style data-emotion="default-ltr-cache jpuyb8">.default-ltr-cache-jpuyb8{margin:0;font-size:2rem;font-weight:700;}@media screen and (min-width: 960px){.default-ltr-cache-jpuyb8{font-size:3rem;font-weight:900;}}</style><h1 data-uia="nmhp-card-hero-text-title" class="default-ltr-cache-jpuyb8 e9eyrqp8">Unlimited films, TV programmes and more</h1><style data-emotion="default-ltr-cache 10i4ild">.default-ltr-cache-10i4ild{margin:1rem 0 0;font-size:1.125rem;font-weight:400;}@media screen and (min-width: 960px){.default-ltr-cache-10i4ild{font-size:1.5rem;font-weight:400;}}</style><p data-uia="nmhp-card-hero-text-subtitle" class="default-ltr-cache-10i4ild e9eyrqp7">Watch anywhere. Cancel at any time.</p><style data-emotion="default-ltr-cache 1asgq30">.default-ltr-cache-1asgq30{margin:1.5rem 0 0;}</style><div class="default-ltr-cache-1asgq30 e9eyrqp4"><style data-emotion="default-ltr-cache inkrn">.default-ltr-cache-inkrn{text-align:center;box-sizing:border-box;max-width:61.5rem;margin:0 auto;padding:0 1.5rem;content:'1';}@media screen and (min-width: 960px){.default-ltr-cache-inkrn{content:'2';padding:0 2.625rem;}}@media screen and (min-width: 600px){.default-ltr-cache-inkrn{content:'2';padding:0 2rem;}}.default-ltr-cache-inkrn>form{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}</style><div class="default-ltr-cache-inkrn e1w590cc2"><div data-uia="email-form" class=" default-ltr-cache-1u8qly9" aria-label="Sign up or restart your membership with Netflix."><style data-emotion="default-ltr-cache 1arr3vy">.default-ltr-cache-1arr3vy{margin:0;font-size:1.125rem;font-weight:400;line-height:1.5;}@media screen and (min-width: 960px){.default-ltr-cache-1arr3vy{font-size:1.25rem;font-weight:400;line-height:1.5;}}</style><h3 class="default-ltr-cache-1arr3vy e1w590cc1">Ready to watch? Enter your email to create or restart your membership.</h3><style data-emotion="default-ltr-cache 1jbflut">.default-ltr-cache-1jbflut{text-align:left;position:relative;margin:1rem auto 0;width:100%;max-width:36.625rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.default-ltr-cache-1jbflut>div{width:100%;}.default-ltr-cache-1jbflut button{margin-top:1rem;}.default-ltr-cache-1jbflut[data-issplitform='false']{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}.default-ltr-cache-1jbflut[data-issplitform='false']>div{width:auto;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;}.default-ltr-cache-1jbflut[data-issplitform='false'] button{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:0;margin-left:0.5rem;}.default-ltr-cache-1jbflut[data-issplitform='false'][data-hasmessage='true']{margin-bottom:-1.625rem;}</style><div data-issplitform="true" data-hasmessage="false" class="default-ltr-cache-1jbflut e1w590cc0"><style data-emotion="default-ltr-cache b1rwa8">.default-ltr-cache-b1rwa8 .ea3diy34>input{min-height:16px;min-width:16px;}.default-ltr-cache-b1rwa8{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;vertical-align:text-top;}.default-ltr-cache-b1rwa8 .ea3diy32{position:absolute;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition-property:top,font-size,line-height;transition-duration:250ms;pointer-events:none;transition-timing-function:cubic-bezier(0.9, 0, 0.51, 1);left:1rem;right:1rem;top:0.75rem;}@media screen and (prefers-reduced-motion){.default-ltr-cache-b1rwa8 .ea3diy32{-webkit-transition:none;transition:none;}}.default-ltr-cache-b1rwa8 .ea3diy34{fill:currentColor;min-width:12.5rem;padding:0;width:100%;}.default-ltr-cache-b1rwa8 input~.ea3diy33{border-width:1px;border-style:solid;border-radius:0.25rem;}.default-ltr-cache-b1rwa8 input[aria-disabled]~.ea3diy33{opacity:1;}.default-ltr-cache-b1rwa8 .ea3diy34>input{width:100%;color:inherit;-webkit-filter:opacity(
			0%
		);filter:opacity(
			0%
		);padding-right:1rem;padding-left:1rem;padding-bottom:0.25rem;padding-top:1.25rem;}.default-ltr-cache-b1rwa8 .ea3diy34>input:-webkit-autofill{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-b1rwa8 .ea3diy34>input:autofill{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-b1rwa8 .ea3diy34>input.edge-autofilled,.default-ltr-cache-b1rwa8 .ea3diy34>input[data-com-onepassword-filled],.default-ltr-cache-b1rwa8 .ea3diy34>input[data-dashlane-autofilled]{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-b1rwa8 .ea3diy34>input[aria-disabled]{opacity:1;padding-right:2.75rem;cursor:not-allowed;}@media screen and (prefers-reduced-motion){.default-ltr-cache-b1rwa8 .ea3diy34>input{-webkit-transition:none;transition:none;}}.default-ltr-cache-b1rwa8 .ea3diy31{margin-top:0.375rem;width:100%;color:rgba(255,255,255,0.7);font-size:0.8125rem;font-weight:400;}.default-ltr-cache-b1rwa8 .ea3diy30{fill:currentColor;margin-top:0.375rem;width:100%;}.default-ltr-cache-b1rwa8 .ea3diy30 .e1vkmu652,.default-ltr-cache-b1rwa8 .ea3diy30 .e1vkmu651,.default-ltr-cache-b1rwa8 .ea3diy30 .e1vkmu650{margin-right:0.25rem;position:relative;top:0.1875rem;}.default-ltr-cache-b1rwa8 .ea3diy32{font-size:1rem;font-weight:400;line-height:1.5;color:rgba(255,255,255,0.7);}.default-ltr-cache-b1rwa8 .ea3diy34{font-size:1rem;font-weight:400;color:rgb(255,255,255);}.default-ltr-cache-b1rwa8 input~.ea3diy33{background:rgba(22,22,22,0.7);border-color:rgba(128,128,128,0.7);}.default-ltr-cache-b1rwa8 input[aria-disabled]~.ea3diy33{border-color:rgba(128,128,128,0.4);background:rgba(22,22,22,0.2);}.default-ltr-cache-b1rwa8 input:focus:not(:focus-visible)~.ea3diy33{outline:none;}.default-ltr-cache-b1rwa8 input:focus~.ea3diy33{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-b1rwa8 input[data-autofill]~.ea3diy33{background:rgb(25,34,71);}@supports (-webkit-appearance: none) and (not (-moz-appearance: none)) and (text-size-adjust: none){.default-ltr-cache-b1rwa8 input[data-autofill]~.ea3diy33{background:rgba(70,90,126,0.4);}}@supports (-webkit-appearance: none) and (not (-moz-appearance: none)) and (not (text-size-adjust: none)){.default-ltr-cache-b1rwa8 input[data-autofill]~.ea3diy33{background:rgb(5,0,66);}}@supports (-moz-appearance: none){.default-ltr-cache-b1rwa8 input[data-autofill]~.ea3diy33{background:rgb(0,4,56);}}.default-ltr-cache-b1rwa8 .ea3diy34>input{line-height:1.5;font-size:1rem;}.default-ltr-cache-b1rwa8 .ea3diy30{font-size:0.8125rem;font-weight:400;line-height:1.5384615384615385;color:rgba(255,255,255,0.7);}</style><style data-emotion="default-ltr-cache v58789">.default-ltr-cache-v58789{display:inline-block;}.default-ltr-cache-v58789 .ea3diy34>input{min-height:16px;min-width:16px;}.default-ltr-cache-v58789{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;vertical-align:text-top;}.default-ltr-cache-v58789 .ea3diy32{position:absolute;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition-property:top,font-size,line-height;transition-duration:250ms;pointer-events:none;transition-timing-function:cubic-bezier(0.9, 0, 0.51, 1);left:1rem;right:1rem;top:0.75rem;}@media screen and (prefers-reduced-motion){.default-ltr-cache-v58789 .ea3diy32{-webkit-transition:none;transition:none;}}.default-ltr-cache-v58789 .ea3diy34{fill:currentColor;min-width:12.5rem;padding:0;width:100%;}.default-ltr-cache-v58789 input~.ea3diy33{border-width:1px;border-style:solid;border-radius:0.25rem;}.default-ltr-cache-v58789 input[aria-disabled]~.ea3diy33{opacity:1;}.default-ltr-cache-v58789 .ea3diy34>input{width:100%;color:inherit;-webkit-filter:opacity(
			0%
		);filter:opacity(
			0%
		);padding-right:1rem;padding-left:1rem;padding-bottom:0.25rem;padding-top:1.25rem;}.default-ltr-cache-v58789 .ea3diy34>input:-webkit-autofill{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-v58789 .ea3diy34>input:autofill{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-v58789 .ea3diy34>input.edge-autofilled,.default-ltr-cache-v58789 .ea3diy34>input[data-com-onepassword-filled],.default-ltr-cache-v58789 .ea3diy34>input[data-dashlane-autofilled]{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-v58789 .ea3diy34>input[aria-disabled]{opacity:1;padding-right:2.75rem;cursor:not-allowed;}@media screen and (prefers-reduced-motion){.default-ltr-cache-v58789 .ea3diy34>input{-webkit-transition:none;transition:none;}}.default-ltr-cache-v58789 .ea3diy31{margin-top:0.375rem;width:100%;color:rgba(255,255,255,0.7);font-size:0.8125rem;font-weight:400;}.default-ltr-cache-v58789 .ea3diy30{fill:currentColor;margin-top:0.375rem;width:100%;}.default-ltr-cache-v58789 .ea3diy30 .e1vkmu652,.default-ltr-cache-v58789 .ea3diy30 .e1vkmu651,.default-ltr-cache-v58789 .ea3diy30 .e1vkmu650{margin-right:0.25rem;position:relative;top:0.1875rem;}.default-ltr-cache-v58789 .ea3diy32{font-size:1rem;font-weight:400;line-height:1.5;color:rgba(255,255,255,0.7);}.default-ltr-cache-v58789 .ea3diy34{font-size:1rem;font-weight:400;color:rgb(255,255,255);}.default-ltr-cache-v58789 input~.ea3diy33{background:rgba(22,22,22,0.7);border-color:rgba(128,128,128,0.7);}.default-ltr-cache-v58789 input[aria-disabled]~.ea3diy33{border-color:rgba(128,128,128,0.4);background:rgba(22,22,22,0.2);}.default-ltr-cache-v58789 input:focus:not(:focus-visible)~.ea3diy33{outline:none;}.default-ltr-cache-v58789 input:focus~.ea3diy33{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-v58789 input[data-autofill]~.ea3diy33{background:rgb(25,34,71);}@supports (-webkit-appearance: none) and (not (-moz-appearance: none)) and (text-size-adjust: none){.default-ltr-cache-v58789 input[data-autofill]~.ea3diy33{background:rgba(70,90,126,0.4);}}@supports (-webkit-appearance: none) and (not (-moz-appearance: none)) and (not (text-size-adjust: none)){.default-ltr-cache-v58789 input[data-autofill]~.ea3diy33{background:rgb(5,0,66);}}@supports (-moz-appearance: none){.default-ltr-cache-v58789 input[data-autofill]~.ea3diy33{background:rgb(0,4,56);}}.default-ltr-cache-v58789 .ea3diy34>input{line-height:1.5;font-size:1rem;}.default-ltr-cache-v58789 .ea3diy30{font-size:0.8125rem;font-weight:400;line-height:1.5384615384615385;color:rgba(255,255,255,0.7);}</style><div data-uia="field-email+container" class=" e2so2tu1 default-ltr-cache-v58789 ea3diy35"><style data-emotion="default-ltr-cache v70qew">.default-ltr-cache-v70qew{display:block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.ea3diy34~.default-ltr-cache-v70qew{display:inline-block;padding-left:0.25rem;}</style><label for=":R56lbada9h:" data-uia="field-email+label" class="default-ltr-cache-v70qew ea3diy32">Email address</label><style data-emotion="default-ltr-cache fmygl2 animation-8kyet8 animation-8kyet8 animation-8kyet8 animation-14hycbg">.default-ltr-cache-fmygl2{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:black;fill:black;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:13px;font-weight:400;gap:2px;letter-spacing:normal;line-height:100%;padding:2px;position:relative;text-align:left;z-index:0;}.default-ltr-cache-fmygl2>input,.default-ltr-cache-fmygl2>select{-webkit-animation:animation-14hycbg;animation:animation-14hycbg;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:transparent;-webkit-background-clip:padding-box;background-clip:padding-box;border:0 solid transparent;color:inherit;font:inherit;letter-spacing:inherit;line-height:inherit;margin:0;min-width:15px;min-height:15px;padding:0;text-align:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;text-transform:inherit;}.default-ltr-cache-fmygl2>input:-webkit-autofill,.default-ltr-cache-fmygl2>select:-webkit-autofill{-webkit-animation:animation-8kyet8;animation:animation-8kyet8;background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-fmygl2>input:autofill,.default-ltr-cache-fmygl2>select:autofill{-webkit-animation:animation-8kyet8;animation:animation-8kyet8;background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-fmygl2>input.edge-autofilled,.default-ltr-cache-fmygl2>select.edge-autofilled,.default-ltr-cache-fmygl2>input[data-com-onepassword-filled],.default-ltr-cache-fmygl2>select[data-com-onepassword-filled],.default-ltr-cache-fmygl2>input[data-dashlane-autofilled],.default-ltr-cache-fmygl2>select[data-dashlane-autofilled]{-webkit-animation:animation-8kyet8;animation:animation-8kyet8;background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-fmygl2>input[aria-disabled],.default-ltr-cache-fmygl2>select[aria-disabled]{cursor:not-allowed;caret-color:transparent;}.default-ltr-cache-fmygl2>input:focus,.default-ltr-cache-fmygl2>select:focus,.default-ltr-cache-fmygl2>input:focus-visible,.default-ltr-cache-fmygl2>select:focus-visible{outline:0;}.default-ltr-cache-fmygl2>input:-webkit-autofill-strong-password::-webkit-textfield-decoration-container,.default-ltr-cache-fmygl2>select:-webkit-autofill-strong-password::-webkit-textfield-decoration-container,.default-ltr-cache-fmygl2>input:-webkit-autofill-strong-password-viewable::-webkit-textfield-decoration-container,.default-ltr-cache-fmygl2>select:-webkit-autofill-strong-password-viewable::-webkit-textfield-decoration-container{-webkit-filter:brightness(0%) contrast(0%);filter:brightness(0%) contrast(0%);}.default-ltr-cache-fmygl2 option{color:initial;background:initial;}@-webkit-keyframes animation-8kyet8{}@keyframes animation-8kyet8{}@-webkit-keyframes animation-8kyet8{}@keyframes animation-8kyet8{}@-webkit-keyframes animation-8kyet8{}@keyframes animation-8kyet8{}@-webkit-keyframes animation-14hycbg{}@keyframes animation-14hycbg{}</style><div class="default-ltr-cache-fmygl2 ea3diy34"><input autoComplete="email" minLength="5" maxLength="50" type="email" id=":R56lbada9h:" name="email" data-uia="field-email" value=""/><style data-emotion="default-ltr-cache emv211">.default-ltr-cache-emv211{color:transparent;position:absolute;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;left:0;top:0;right:0;bottom:0;z-index:-1;background:white;border-radius:2px;border:1px solid black;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}input[aria-disabled]~.default-ltr-cache-emv211,select[aria-disabled]~.default-ltr-cache-emv211{opacity:0.5;}input[data-autofill]~.default-ltr-cache-emv211,select[data-autofill]~.default-ltr-cache-emv211{background:cornsilk;}input:focus~.default-ltr-cache-emv211,select:focus~.default-ltr-cache-emv211{outline:#a9a9a9 auto 5px;outline:Highlight auto 5px;outline:-webkit-focus-ring-color auto 5px;}input:focus:not(:focus-visible)~.default-ltr-cache-emv211,select:focus:not(:focus-visible)~.default-ltr-cache-emv211{outline:none;}</style><div aria-hidden="true" class="default-ltr-cache-emv211 ea3diy33"></div></div></div><style data-emotion="default-ltr-cache tclo32">.default-ltr-cache-tclo32{border:0;border-radius:0.25rem;cursor:pointer;fill:currentColor;position:relative;transition-duration:250ms;transition-property:background-color,border-color;transition-timing-function:cubic-bezier(0.9, 0, 0.51, 1);vertical-align:text-top;width:auto;font-size:1.125rem;font-weight:500;min-height:3rem;padding:0.5rem 1rem;background:rgb(229,9,20);color:rgb(255,255,255);}.default-ltr-cache-tclo32:focus{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-tclo32:focus:not(:focus-visible){outline:none;}.default-ltr-cache-tclo32::after{bottom:0;left:0;position:absolute;right:0;top:0;-webkit-transition:inherit;transition:inherit;border-style:solid;border-width:0.0625rem;border-radius:0.1875rem;content:'';border-color:rgba(0,0,0,0);}@media screen and (prefers-reduced-motion){.default-ltr-cache-tclo32{-webkit-transition:none;transition:none;}}.default-ltr-cache-tclo32[aria-disabled]{opacity:1;background:rgba(229,9,20,0.4);cursor:not-allowed;color:rgba(255,255,255,0.4);}.default-ltr-cache-tclo32[aria-disabled]::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-tclo32[aria-disabled] .e1ax5wel3,.default-ltr-cache-tclo32[aria-disabled] .e1ax5wel2{position:absolute;color:rgba(255,255,255,0.4);}.default-ltr-cache-tclo32:not([aria-disabled]):hover{transition-timing-function:cubic-bezier(0.5, 0, 0.1, 1);background:rgb(193,17,25);}.default-ltr-cache-tclo32:not([aria-disabled]):hover::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-tclo32:not([aria-disabled]):active{-webkit-transition:none;transition:none;color:rgba(255,255,255,0.7);background:rgb(153,22,29);}.default-ltr-cache-tclo32:not([aria-disabled]):active::after{border-color:rgba(0,0,0,0);}</style><style data-emotion="default-ltr-cache z7eh43">.default-ltr-cache-z7eh43{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:gainsboro;border-radius:2px;border:1px solid dimgray;box-sizing:border-box;color:black;cursor:default;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:13px;font-weight:400;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;letter-spacing:normal;line-height:1;padding:2px 7px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:0;border-radius:0.25rem;cursor:pointer;fill:currentColor;position:relative;transition-duration:250ms;transition-property:background-color,border-color;transition-timing-function:cubic-bezier(0.9, 0, 0.51, 1);vertical-align:text-top;width:auto;font-size:1.125rem;font-weight:500;min-height:3rem;padding:0.5rem 1rem;background:rgb(229,9,20);color:rgb(255,255,255);}.default-ltr-cache-z7eh43:not([aria-disabled]):hover{border-color:black;background:lightgray;}.default-ltr-cache-z7eh43:not([aria-disabled]):active{border-color:darkgray;background:#ececec;}.default-ltr-cache-z7eh43:focus{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-z7eh43:focus:not(:focus-visible){outline:none;}.default-ltr-cache-z7eh43::after{bottom:0;left:0;position:absolute;right:0;top:0;-webkit-transition:inherit;transition:inherit;border-style:solid;border-width:0.0625rem;border-radius:0.1875rem;content:'';border-color:rgba(0,0,0,0);}@media screen and (prefers-reduced-motion){.default-ltr-cache-z7eh43{-webkit-transition:none;transition:none;}}.default-ltr-cache-z7eh43[aria-disabled]{opacity:1;background:rgba(229,9,20,0.4);cursor:not-allowed;color:rgba(255,255,255,0.4);}.default-ltr-cache-z7eh43[aria-disabled]::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-z7eh43[aria-disabled] .e1ax5wel3,.default-ltr-cache-z7eh43[aria-disabled] .e1ax5wel2{position:absolute;color:rgba(255,255,255,0.4);}.default-ltr-cache-z7eh43:not([aria-disabled]):hover{transition-timing-function:cubic-bezier(0.5, 0, 0.1, 1);background:rgb(193,17,25);}.default-ltr-cache-z7eh43:not([aria-disabled]):hover::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-z7eh43:not([aria-disabled]):active{-webkit-transition:none;transition:none;color:rgba(255,255,255,0.7);background:rgb(153,22,29);}.default-ltr-cache-z7eh43:not([aria-disabled]):active::after{border-color:rgba(0,0,0,0);}</style><style data-emotion="default-ltr-cache 1js8ko8">.default-ltr-cache-1js8ko8{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:none;border-radius:0;border:0;box-sizing:content-box;color:inherit;cursor:default;display:inline;font:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0;-webkit-text-decoration:none;text-decoration:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:gainsboro;border-radius:2px;border:1px solid dimgray;box-sizing:border-box;color:black;cursor:default;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:13px;font-weight:400;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;letter-spacing:normal;line-height:1;padding:2px 7px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:0;border-radius:0.25rem;cursor:pointer;fill:currentColor;position:relative;transition-duration:250ms;transition-property:background-color,border-color;transition-timing-function:cubic-bezier(0.9, 0, 0.51, 1);vertical-align:text-top;width:auto;font-size:1.125rem;font-weight:500;min-height:3rem;padding:0.5rem 1rem;background:rgb(229,9,20);color:rgb(255,255,255);}.default-ltr-cache-1js8ko8[aria-disabled]{cursor:not-allowed;opacity:0.5;}.default-ltr-cache-1js8ko8:focus{outline:none;outline:#a9a9a9 auto 5px;outline:Highlight auto 5px;outline:-webkit-focus-ring-color auto 5px;}.default-ltr-cache-1js8ko8:focus:not(:focus-visible){outline:none;}.default-ltr-cache-1js8ko8:not([aria-disabled]):hover{border-color:black;background:lightgray;}.default-ltr-cache-1js8ko8:not([aria-disabled]):active{border-color:darkgray;background:#ececec;}.default-ltr-cache-1js8ko8:focus{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-1js8ko8:focus:not(:focus-visible){outline:none;}.default-ltr-cache-1js8ko8::after{bottom:0;left:0;position:absolute;right:0;top:0;-webkit-transition:inherit;transition:inherit;border-style:solid;border-width:0.0625rem;border-radius:0.1875rem;content:'';border-color:rgba(0,0,0,0);}@media screen and (prefers-reduced-motion){.default-ltr-cache-1js8ko8{-webkit-transition:none;transition:none;}}.default-ltr-cache-1js8ko8[aria-disabled]{opacity:1;background:rgba(229,9,20,0.4);cursor:not-allowed;color:rgba(255,255,255,0.4);}.default-ltr-cache-1js8ko8[aria-disabled]::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-1js8ko8[aria-disabled] .e1ax5wel3,.default-ltr-cache-1js8ko8[aria-disabled] .e1ax5wel2{position:absolute;color:rgba(255,255,255,0.4);}.default-ltr-cache-1js8ko8:not([aria-disabled]):hover{transition-timing-function:cubic-bezier(0.5, 0, 0.1, 1);background:rgb(193,17,25);}.default-ltr-cache-1js8ko8:not([aria-disabled]):hover::after{border-color:rgba(0,0,0,0);}.default-ltr-cache-1js8ko8:not([aria-disabled]):active{-webkit-transition:none;transition:none;color:rgba(255,255,255,0.7);background:rgb(153,22,29);}.default-ltr-cache-1js8ko8:not([aria-disabled]):active::after{border-color:rgba(0,0,0,0);}</style><button role="button" class=" e1ax5wel1 ew97par0 default-ltr-cache-1js8ko8 e1ff4m3w2" data-uia="nmhp-card-cta+hero_fuji" type="submit">Get Started<style data-emotion="default-ltr-cache 17uj5h">.default-ltr-cache-17uj5h{display:inline-block;height:1.5rem;}.default-ltr-cache-17uj5h >svg{width:1.5rem;height:inherit;margin-left:0.5rem;margin-right:0rem;}</style><div aria-hidden="true" class="default-ltr-cache-17uj5h e1ax5wel0"><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="24" height="24" viewBox="0 0 24 24" role="img" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.5859 12L8.29303 19.2928L9.70725 20.7071L17.7072 12.7071C17.8948 12.5195 18.0001 12.2652 18.0001 12C18.0001 11.7347 17.8948 11.4804 17.7072 11.2928L9.70724 3.29285L8.29303 4.70706L15.5859 12Z" fill="currentColor"></path></svg></div></button></div></div></div><style data-emotion="default-ltr-cache 1qms9jn">.default-ltr-cache-1qms9jn{position:absolute;top:50%;left:50%;}</style><div class="center-pixel default-ltr-cache-1qms9jn ekwtkbw0"></div></div></div><style data-emotion="default-ltr-cache vgp0nn">.default-ltr-cache-vgp0nn{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;padding:0;z-index:1;}@media screen and (min-width: 960px){.default-ltr-cache-vgp0nn{padding-right:0.375rem;}}</style><div class="default-ltr-cache-vgp0nn e9eyrqp3"></div></div></div><style data-emotion="default-ltr-cache ti4tfm">.default-ltr-cache-ti4tfm{z-index:1;}@media (min-width: 960px){.default-ltr-cache-ti4tfm{position:absolute;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:100%;}}</style><div class="default-ltr-cache-ti4tfm"><style data-emotion="default-ltr-cache 1sevpkx">.default-ltr-cache-1sevpkx{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;background:rgb(
        14,
        27,
        79
    );background:radial-gradient(
        51.39% 511.66% at 47.68% -217.91%,
        #ff9900 0%,
        #e50914 17.27%,
        #0e1b4f 79.44%,
        #000413 100%
    );box-shadow:0px -8px 25px rgba(0, 0, 0, 0.5);border-radius:4px;margin:0 74px;color:white;padding:22px;}@media (max-width: 655px){.default-ltr-cache-1sevpkx{background:radial-gradient(
            120.35% 220% at 49.86% -6.29%,
            #e50914 0%,
            #0e1b4f 46.15%,
            #0d1121 100%
        );display:block;margin:0 24px;padding:30px;}}@media (max-width: 598px){.default-ltr-cache-1sevpkx{margin-top:16px;}}</style><div data-uia="ads-plan-rich-banner" class="default-ltr-cache-1sevpkx"><style data-emotion="default-ltr-cache dr6ztu">@media (max-width: 655px){.default-ltr-cache-dr6ztu{-webkit-transform:scale(0.8);-moz-transform:scale(0.8);-ms-transform:scale(0.8);transform:scale(0.8);margin-top:-80px;margin-left:-40px;}}</style><div class="default-ltr-cache-dr6ztu"><svg width="96" height="96" fill="none"><path d="M48 95.213c26.51 0 48-3.875 48-8.656 0-4.78-21.49-8.655-48-8.655S0 81.777 0 86.557c0 4.78 21.49 8.656 48 8.656Z" fill="url(#a)"></path><path d="M48 77.115c26.51 0 48-17.087 48-38.164C96 17.873 74.51.787 48 .787S0 17.874 0 38.95s21.49 38.164 48 38.164Z" fill="url(#b)"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M75.376 75.624a2.36 2.36 0 1 0-2.817 1.408c-.062.157-.107.32-.134.486a3.15 3.15 0 0 0-1.161 4.298 3.146 3.146 0 0 0 4.297 1.161 3.148 3.148 0 0 0 4.927 2.228 2.36 2.36 0 1 0 3.662-2.809 3.148 3.148 0 0 0-4.448-4.447 2.355 2.355 0 0 0-2.67-.669 2.365 2.365 0 0 0-1.656-1.656Zm-50.983 1.49c0 .31-.044.619-.134.915a4.328 4.328 0 1 1-3.256 7.922 2.743 2.743 0 0 1-1.724.606c-.477.001-.946-.123-1.36-.358a1.966 1.966 0 0 1-3.74-.569 2.36 2.36 0 1 1-.013-4.445 3.148 3.148 0 0 1 4.07-3.145 3.148 3.148 0 1 1 6.157-.925Z" fill="url(#c)"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M51.934 20.459c0 .388-.07.76-.198 1.102.234.114.452.256.65.422a3.146 3.146 0 0 1 3.102-1.498 3.147 3.147 0 0 1 5.888 1.646 3.154 3.154 0 0 1 1.953 1.498c.783.095 1.501.48 2.013 1.078a3.935 3.935 0 0 1 4.868 5.726c.559.375.983.918 1.212 1.552a3.148 3.148 0 0 1 5.26 3.445 3.147 3.147 0 1 1-3.08 4.701H24.392v-1.208a3.148 3.148 0 0 1-4.346-4.217 3.148 3.148 0 0 1 3.478-5.215 3.142 3.142 0 0 1 2.442-1.164 3.147 3.147 0 0 1 3.554-3.122 3.147 3.147 0 0 1 3.18-1.568 3.147 3.147 0 0 1 4.803-3.954 3.15 3.15 0 0 1 3.238 2.094c.41-.276.88-.45 1.371-.51a3.147 3.147 0 0 1 3.597-1.478 3.148 3.148 0 0 1 6.224.67Z" fill="url(#d)"></path><path opacity="0.6" d="M46.033 36.984a7.475 7.475 0 1 0 0-14.951 7.475 7.475 0 0 0 0 14.95Z" fill="url(#e)"></path><path opacity="0.6" d="M43.672 32.262a5.115 5.115 0 1 0 0-10.23 5.115 5.115 0 0 0 0 10.23Z" fill="url(#f)"></path><path opacity="0.6" d="M42.098 36.197a5.115 5.115 0 1 0 0-10.23 5.115 5.115 0 0 0 0 10.23Z" fill="url(#g)"></path><path opacity="0.6" d="M27.148 38.557a5.115 5.115 0 1 0 0-10.23 5.115 5.115 0 0 0 0 10.23Z" fill="url(#h)"></path><path opacity="0.6" d="M30.295 36.197a5.115 5.115 0 1 0 0-10.23 5.115 5.115 0 0 0 0 10.23Z" fill="url(#i)"></path><path opacity="0.6" d="M30.295 37.77a2.754 2.754 0 1 0 0-5.508 2.754 2.754 0 0 0 0 5.508Z" fill="url(#j)"></path><path opacity="0.2" d="M73.574 36.197a2.754 2.754 0 1 0 0-5.508 2.754 2.754 0 0 0 0 5.508Z" fill="url(#k)"></path><path opacity="0.2" d="M76.721 39.344a1.967 1.967 0 1 0 0-3.934 1.967 1.967 0 0 0 0 3.934Z" fill="url(#l)"></path><path opacity="0.3" d="M72.787 40.131a3.541 3.541 0 1 0 0-7.082 3.541 3.541 0 0 0 0 7.082Z" fill="url(#m)"></path><path opacity="0.2" d="M58.623 24.393a2.754 2.754 0 1 0 0-5.508 2.754 2.754 0 0 0 0 5.508Z" fill="url(#n)"></path><path opacity="0.2" d="M48.393 21.246a1.967 1.967 0 1 0 0-3.935 1.967 1.967 0 0 0 0 3.935Z" fill="url(#o)"></path><path opacity="0.2" d="M35.016 23.607a1.967 1.967 0 1 0 0-3.935 1.967 1.967 0 0 0 0 3.935Z" fill="url(#p)"></path><path opacity="0.2" d="M61.77 33.05a5.115 5.115 0 1 0 0-10.23 5.115 5.115 0 0 0 0 10.23Z" fill="url(#q)"></path><path opacity="0.6" d="M57.05 31.475a5.115 5.115 0 1 0 0-10.229 5.115 5.115 0 0 0 0 10.23Z" fill="url(#r)"></path><path opacity="0.2" d="M59.41 33.836a5.115 5.115 0 1 0 0-10.23 5.115 5.115 0 0 0 0 10.23Z" fill="url(#s)"></path><path d="M18.885 36.984h44.853l-3.935 51.934h-37.77l-3.148-51.934Z" fill="url(#t)"></path><path d="m71.607 85.77-11.804 3.148 3.935-51.934 14.95 3.934-7.081 44.852Z" fill="url(#u)"></path><path fill-rule="evenodd" clip-rule="evenodd" d="m46.33 47.333.254-10.35h-9.388l.104 9.84a16.418 16.418 0 0 0-4.664 1.825l-.327-11.664h-9.407l2.927 51.934h7.943l-.317-11.22a16.431 16.431 0 0 0 4.187 1.453l.105 9.767h7.558l.25-10.101a16.449 16.449 0 0 0 3.675-1.58l-.37 11.681h8.321l2.741-51.934h-9.417l-.388 12.237a16.47 16.47 0 0 0-3.788-1.888Zm16.078 40.89 2.95-.786 5.845-48.488-4.501-1.186-4.294 50.46Zm4.63-1.234 2.317-.618 7.838-45.846-4.375-1.152-5.78 47.616ZM53.507 62.95c0 6.953-5.636 12.59-12.59 12.59s-12.59-5.636-12.59-12.59 5.636-12.59 12.59-12.59 12.59 5.636 12.59 12.59Zm-7.172 6.795L44.64 64.26l4.108-3.047a.39.39 0 0 0-.2-.702 93.591 93.591 0 0 0-5.184-.274l-2.076-5.712a.394.394 0 0 0-.74 0l-2.076 5.712c-1.76.044-3.49.137-5.185.274a.39.39 0 0 0-.198.702l4.107 3.046-1.696 5.485a.394.394 0 0 0 .598.442l4.82-3.281 4.82 3.281a.394.394 0 0 0 .599-.441h-.001Z" fill="url(#v)"></path><path opacity="0.4" d="M16.918 82.623a1.967 1.967 0 1 0 0-3.934 1.967 1.967 0 0 0 0 3.934Z" fill="url(#w)"></path><path opacity="0.4" d="M13.77 84.984a1.967 1.967 0 1 0 0-3.935 1.967 1.967 0 0 0 0 3.935Z" fill="url(#x)"></path><path opacity="0.4" d="M16.131 84.984a1.967 1.967 0 1 0 0-3.935 1.967 1.967 0 0 0 0 3.935Z" fill="url(#y)"></path><path opacity="0.4" d="M19.279 86.557a1.967 1.967 0 1 0 0-3.934 1.967 1.967 0 0 0 0 3.934Z" fill="url(#z)"></path><path opacity="0.4" d="M82.23 85.77a1.967 1.967 0 1 0 0-3.934 1.967 1.967 0 0 0 0 3.934Z" fill="url(#A)"></path><path opacity="0.4" d="M81.836 82.623a2.36 2.36 0 1 0 0-4.721 2.36 2.36 0 0 0 0 4.721Z" fill="url(#B)"></path><path opacity="0.4" d="M77.902 82.623a2.36 2.36 0 1 0 0-4.721 2.36 2.36 0 0 0 0 4.721Z" fill="url(#C)"></path><path opacity="0.4" d="M75.147 81.836a2.754 2.754 0 1 0 0-5.508 2.754 2.754 0 0 0 0 5.508Z" fill="url(#D)"></path><path opacity="0.4" d="M18.492 84.984a2.754 2.754 0 1 0 0-5.509 2.754 2.754 0 0 0 0 5.509Z" fill="url(#E)"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M73.967 79.475a2.361 2.361 0 0 1 2.36 2.361 3.148 3.148 0 1 1-.88 6.17 2.36 2.36 0 0 1-4.613-.92 2.755 2.755 0 0 1 .773-5.222v-.028a2.36 2.36 0 0 1 2.36-2.36Z" fill="url(#F)"></path><defs><radialGradient id="a" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 -8.70201 48.2567 0 48 86.604)"><stop offset="0.286" stop-color="#7D2889"></stop><stop offset="0.724" stop-color="#FF66D9" stop-opacity="0.41"></stop><stop offset="1" stop-color="#fff" stop-opacity="0"></stop></radialGradient><radialGradient id="b" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 -38.3681 48.2567 0 48 39.155)"><stop stop-color="#FFCA45"></stop><stop offset="0.453" stop-color="#FF66D9" stop-opacity="0.36"></stop><stop offset="1" stop-color="#fff" stop-opacity="0"></stop></radialGradient><radialGradient id="c" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(180 23.41 39.738) scale(37.7705)"><stop offset="0.432" stop-color="#FF8B54"></stop><stop offset="0.76" stop-color="#FFBB8D"></stop><stop offset="1" stop-color="#F9DDD1"></stop></radialGradient><radialGradient id="d" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 -10.623 28.257 0 47.607 27.934)"><stop offset="0.302" stop-color="#F9DDD1"></stop><stop offset="0.674" stop-color="#FFBB8D"></stop><stop offset="1" stop-color="#FF8B54"></stop></radialGradient><radialGradient id="e" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 8.042 37.99) scale(7.03568)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="f" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 8.112 35.56) scale(4.81389)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="g" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 5.358 36.74) scale(4.81389)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="h" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 -3.298 30.445) scale(4.81389)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="i" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 -.544 30.839) scale(4.81389)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="j" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 -2.442 32.737) scale(2.59209)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="k" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 19.985 53.59) scale(2.59209)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="l" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 19.614 57.107) scale(1.85149)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="m" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 17.994 54.792) scale(3.33269)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="n" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 18.41 40.212) scale(2.59209)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="o" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 14.5 33.894) scale(1.8515)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="p" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 6.63 28.386) scale(1.85149)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="q" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 16.768 45.003) scale(4.81389)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="r" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 15.194 41.855) scale(4.81389)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="s" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 15.194 44.216) scale(4.81389)"><stop offset="0.375" stop-color="#FFF4EB"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="w" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 -31.927 48.845) scale(1.8515)"><stop offset="0.375" stop-color="#F9DDD1"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="x" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 -34.681 48.452) scale(1.8515)"><stop offset="0.375" stop-color="#F9DDD1"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="y" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 -33.5 49.632) scale(1.8515)"><stop offset="0.375" stop-color="#F9DDD1"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="z" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 -32.714 51.993) scale(1.85149)"><stop offset="0.375" stop-color="#F9DDD1"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="A" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 -.845 83.075) scale(1.85149)"><stop offset="0.375" stop-color="#F9DDD1"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="B" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 .718 81.118) scale(2.2218)"><stop offset="0.375" stop-color="#F9DDD1"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="C" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 -1.25 79.151) scale(2.2218)"><stop offset="0.375" stop-color="#F9DDD1"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="D" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 -2.048 77.196) scale(2.5921)"><stop offset="0.375" stop-color="#F9DDD1"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="E" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(90 -31.95 50.442) scale(2.5921)"><stop offset="0.375" stop-color="#F9DDD1"></stop><stop offset="1" stop-color="#FFF3EB" stop-opacity="0"></stop></radialGradient><radialGradient id="F" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(111.038 9.116 68.506) scale(5.48002)"><stop stop-color="#FDF7F2"></stop><stop offset="1" stop-color="#FFD8BD"></stop></radialGradient><linearGradient id="t" x1="59.803" y1="88.918" x2="33.764" y2="21.046" gradientUnits="userSpaceOnUse"><stop stop-color="#E0B1CC"></stop><stop offset="0.431" stop-color="#FFF1F1"></stop><stop offset="1" stop-color="#FFC9A5"></stop></linearGradient><linearGradient id="u" x1="59.803" y1="53.115" x2="83.41" y2="53.115" gradientUnits="userSpaceOnUse"><stop stop-color="#D16AE9"></stop><stop offset="1" stop-color="#FF661D"></stop></linearGradient><linearGradient id="v" x1="18.111" y1="36.984" x2="75.136" y2="85.621" gradientUnits="userSpaceOnUse"><stop stop-color="#FF661D"></stop><stop offset="0.5" stop-color="#CE3A00"></stop><stop offset="1" stop-color="#A60A5E"></stop></linearGradient></defs></svg></div><style data-emotion="default-ltr-cache 1y8v5zy">.default-ltr-cache-1y8v5zy{padding-left:32px;}@media (max-width: 655px){.default-ltr-cache-1y8v5zy{padding-left:0;}}</style><div class="default-ltr-cache-1y8v5zy"><style data-emotion="default-ltr-cache 610gsq">.default-ltr-cache-610gsq{font-size:20px;font-weight:500;line-height:30px;margin:0;}</style><p class="default-ltr-cache-610gsq">The Netflix you love for just £4.99.</p><style data-emotion="default-ltr-cache d355cw">.default-ltr-cache-d355cw{font-size:16px;line-height:24px;margin-top:4px;margin-bottom:8px;}</style><p class="default-ltr-cache-d355cw">Get the Standard with adverts plan.</p><style data-emotion="default-ltr-cache ubaz1z">.default-ltr-cache-ubaz1z{cursor:pointer;color:#448ef4;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;font-weight:500;background:none;border:none;-webkit-text-decoration:underline;text-decoration:underline;padding:0;}</style><button role="link" data-uia="ads-plan-rich-banner-link" class="default-ltr-cache-ubaz1z">Learn More<svg xmlns="http://www.w3.org/2000/svg" fill="none" width="24" height="24" viewBox="0 0 24 24" role="img" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.5859 12L8.29303 19.2928L9.70725 20.7071L17.7072 12.7071C17.8948 12.5195 18.0001 12.2652 18.0001 12C18.0001 11.7347 17.8948 11.4804 17.7072 11.2928L9.70724 3.29285L8.29303 4.70706L15.5859 12Z" fill="currentColor"></path></svg></button></div></div></div><style data-emotion="default-ltr-cache v2xv94">.default-ltr-cache-v2xv94{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;color:rgb(255,255,255);text-align:center;height:100%;box-sizing:border-box;min-height:auto;padding:3.5rem 0;}@media screen and (min-width: 600px){.default-ltr-cache-v2xv94{min-height:auto;padding:4.5rem 0;}}@media screen and (min-width: 960px){.default-ltr-cache-v2xv94{min-height:auto;padding:4.5rem 0;}}</style><div class=" default-ltr-cache-v2xv94 e9eyrqp6" data-uia="nmhp-card-animation+watchOnTv"><style data-emotion="default-ltr-cache q7jeu0">.default-ltr-cache-q7jeu0{margin:auto;max-width:calc(
        100% - 3rem
    );display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;text-align:center;}@media screen and (min-width: 600px){.default-ltr-cache-q7jeu0{max-width:calc(
            100% - 4rem
        );}}@media screen and (min-width: 960px){.default-ltr-cache-q7jeu0{max-width:calc(
            100% - 4rem
        );}}@media screen and (min-width: 1280px){.default-ltr-cache-q7jeu0{max-width:calc(
            83.33333333333334% - 6rem
        );}}@media screen and (min-width: 1920px){.default-ltr-cache-q7jeu0{max-width:calc(
            66.66666666666666% - 6rem
        );}}@media screen and (min-width: 960px){.default-ltr-cache-q7jeu0{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}</style><div class="default-ltr-cache-q7jeu0 e9eyrqp1"><style data-emotion="default-ltr-cache tmevzf">.default-ltr-cache-tmevzf{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;padding:0;z-index:1;width:100%;}@media screen and (min-width: 960px){.default-ltr-cache-tmevzf{text-align:left;padding-right:0.375rem;}}</style><div class="default-ltr-cache-tmevzf e9eyrqp5"><h2 data-uia="nmhp-card-animation-text-title" class="default-ltr-cache-jpuyb8 e9eyrqp8">Enjoy on your TV</h2><p data-uia="nmhp-card-animation-text-subtitle" class="default-ltr-cache-10i4ild e9eyrqp7">Watch on smart TVs, PlayStation, Xbox, Chromecast, Apple TV, Blu-ray players and more.</p><div class="default-ltr-cache-1asgq30 e9eyrqp4"><div class="center-pixel default-ltr-cache-1qms9jn ekwtkbw0"></div></div></div><style data-emotion="default-ltr-cache 7cljuy">.default-ltr-cache-7cljuy{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;padding:0;z-index:1;}@media screen and (min-width: 960px){.default-ltr-cache-7cljuy{padding-left:0.375rem;}}</style><div class="default-ltr-cache-7cljuy e9eyrqp3"><style data-emotion="default-ltr-cache bjn8wh">.default-ltr-cache-bjn8wh{position:relative;}</style><div class="default-ltr-cache-bjn8wh"><style data-emotion="default-ltr-cache 1d3w5wq">.default-ltr-cache-1d3w5wq{width:100%;}</style><img alt="" src="https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/tv.png" data-uia="nmhp-card-animation-asset-image" class="default-ltr-cache-1d3w5wq"/><style data-emotion="default-ltr-cache m5f3qu">.default-ltr-cache-m5f3qu{z-index:-1;overflow:hidden;width:100%;height:100%;max-width:73%;max-height:54%;position:absolute;top:46%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);}</style><div data-uia="nmhp-card-animation-asset-motion" class="default-ltr-cache-m5f3qu e15c37ii14"><video data-uia="nmhp-card-animation-asset-video" autoplay="" playsinline="" muted="" loop=""><source src="https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/video-tv-0819.m4v" type="video/mp4"/></video><div class="default-ltr-cache-0"></div><div data-uia="nmhp-card-animation-asset-custom" aria-hidden="true" class="default-ltr-cache-0 e15c37ii13"></div></div></div></div></div><style data-emotion="default-ltr-cache 1yz1b0z">.default-ltr-cache-1yz1b0z{width:100%;height:0.5rem;position:absolute;bottom:-0.5rem;background-color:rgb(35,35,35);}</style><div data-uia="nmhp-card-animation+watchOnTv+divider" class="default-ltr-cache-1yz1b0z e9eyrqp0"></div></div><div class=" default-ltr-cache-v2xv94 e9eyrqp6" data-uia="nmhp-card-animation+watchOnDevice"><style data-emotion="default-ltr-cache pv2edp">.default-ltr-cache-pv2edp{margin:auto;max-width:calc(
        100% - 3rem
    );display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;text-align:center;}@media screen and (min-width: 600px){.default-ltr-cache-pv2edp{max-width:calc(
            100% - 4rem
        );}}@media screen and (min-width: 960px){.default-ltr-cache-pv2edp{max-width:calc(
            100% - 4rem
        );}}@media screen and (min-width: 1280px){.default-ltr-cache-pv2edp{max-width:calc(
            83.33333333333334% - 6rem
        );}}@media screen and (min-width: 1920px){.default-ltr-cache-pv2edp{max-width:calc(
            66.66666666666666% - 6rem
        );}}@media screen and (min-width: 960px){.default-ltr-cache-pv2edp{-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;}}</style><div class="default-ltr-cache-pv2edp e9eyrqp1"><style data-emotion="default-ltr-cache ogx8b3">.default-ltr-cache-ogx8b3{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;padding:0;z-index:1;width:100%;}@media screen and (min-width: 960px){.default-ltr-cache-ogx8b3{text-align:left;padding-left:0.375rem;}}</style><div class="default-ltr-cache-ogx8b3 e9eyrqp5"><h2 data-uia="nmhp-card-animation-text-title" class="default-ltr-cache-jpuyb8 e9eyrqp8">Watch everywhere</h2><p data-uia="nmhp-card-animation-text-subtitle" class="default-ltr-cache-10i4ild e9eyrqp7">Stream unlimited films and TV programmes on your phone, tablet, laptop and TV.</p><div class="default-ltr-cache-1asgq30 e9eyrqp4"><div class="center-pixel default-ltr-cache-1qms9jn ekwtkbw0"></div></div></div><div class="default-ltr-cache-vgp0nn e9eyrqp3"><div class="default-ltr-cache-bjn8wh"><img alt="" src="https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/device-pile.png" data-uia="nmhp-card-animation-asset-image" class="default-ltr-cache-1d3w5wq"/><style data-emotion="default-ltr-cache 1626rqb">.default-ltr-cache-1626rqb{z-index:-1;overflow:hidden;width:100%;height:100%;max-width:63%;max-height:47%;position:absolute;top:34%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);}</style><div data-uia="nmhp-card-animation-asset-motion" class="default-ltr-cache-1626rqb e15c37ii10"><video data-uia="nmhp-card-animation-asset-video" autoplay="" playsinline="" muted="" loop=""><source src="https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/video-devices.m4v" type="video/mp4"/></video><div class="default-ltr-cache-0"></div><div data-uia="nmhp-card-animation-asset-custom" aria-hidden="true" class="default-ltr-cache-0 e15c37ii9"></div></div></div></div></div><div data-uia="nmhp-card-animation+watchOnDevice+divider" class="default-ltr-cache-1yz1b0z e9eyrqp0"></div></div><div class=" default-ltr-cache-v2xv94 e9eyrqp6" data-uia="nmhp-card-animation+kidsValueProp"><div class="default-ltr-cache-q7jeu0 e9eyrqp1"><div class="default-ltr-cache-tmevzf e9eyrqp5"><h2 data-uia="nmhp-card-animation-text-title" class="default-ltr-cache-jpuyb8 e9eyrqp8">Create profiles for children</h2><p data-uia="nmhp-card-animation-text-subtitle" class="default-ltr-cache-10i4ild e9eyrqp7">Send children on adventures with their favourite characters in a space made just for them – free with your membership.</p><div class="default-ltr-cache-1asgq30 e9eyrqp4"><div class="center-pixel default-ltr-cache-1qms9jn ekwtkbw0"></div></div></div><div class="default-ltr-cache-7cljuy e9eyrqp3"><div class="default-ltr-cache-bjn8wh"><img alt="" src="https://occ-0-299-300.1.nflxso.net/dnm/api/v6/19OhWN2dO19C9txTON9tvTFtefw/AAAABVr8nYuAg0xDpXDv0VI9HUoH7r2aGp4TKRCsKNQrMwxzTtr-NlwOHeS8bCI2oeZddmu3nMYr3j9MjYhHyjBASb1FaOGYZNYvPBCL.png?r=54d" data-uia="nmhp-card-animation-asset-image" class="default-ltr-cache-1d3w5wq"/><style data-emotion="default-ltr-cache 3snzoc">.default-ltr-cache-3snzoc{z-index:-1;overflow:hidden;}</style><div data-uia="nmhp-card-animation-asset-motion" class="default-ltr-cache-3snzoc e15c37ii15"><div class="default-ltr-cache-0"></div><div data-uia="nmhp-card-animation-asset-custom" aria-hidden="true" class="default-ltr-cache-0 e15c37ii2"></div></div></div></div></div><div data-uia="nmhp-card-animation+kidsValueProp+divider" class="default-ltr-cache-1yz1b0z e9eyrqp0"></div></div><div class=" default-ltr-cache-v2xv94 e9eyrqp6" data-uia="nmhp-card-animation+downloadAndWatch"><div class="default-ltr-cache-pv2edp e9eyrqp1"><div class="default-ltr-cache-ogx8b3 e9eyrqp5"><h2 data-uia="nmhp-card-animation-text-title" class="default-ltr-cache-jpuyb8 e9eyrqp8">Download your programmes to watch offline</h2><p data-uia="nmhp-card-animation-text-subtitle" class="default-ltr-cache-10i4ild e9eyrqp7">Watch on a plane, train or submarine...</p><div class="default-ltr-cache-1asgq30 e9eyrqp4"><div class="center-pixel default-ltr-cache-1qms9jn ekwtkbw0"></div></div></div><div class="default-ltr-cache-vgp0nn e9eyrqp3"><div class="default-ltr-cache-bjn8wh"><img alt="" src="https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/mobile-0819.jpg" data-uia="nmhp-card-animation-asset-image" class="default-ltr-cache-1d3w5wq"/><style data-emotion="default-ltr-cache xfttou">.default-ltr-cache-xfttou{z-index:-1;overflow:hidden;position:absolute;left:50%;bottom:8%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);margin:0 auto;background:rgb(0,0,0);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:60%;min-width:15rem;padding:0.25rem 0.65rem;border:2px solid rgba(128,128,128,0.7);box-shadow:0 0 2em 0 rgb(0,0,0);border-radius:0.75rem;z-index:1;}@media screen and (min-width: 600px){.default-ltr-cache-xfttou{padding:0.35rem 0.75rem;}}@media screen and (min-width: 960px){.default-ltr-cache-xfttou{padding:0.5rem 0.75rem;}}@media screen and (min-width: 1280px){.default-ltr-cache-xfttou{width:50%;}}</style><div data-uia="nmhp-card-animation-asset-motion" class="default-ltr-cache-xfttou e15c37ii6"><style data-emotion="default-ltr-cache 1cn8kex">.default-ltr-cache-1cn8kex{margin:0 1rem 0 0;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}</style><div class="default-ltr-cache-1cn8kex"><style data-emotion="default-ltr-cache 1t1z3a4">.default-ltr-cache-1t1z3a4{height:3rem;}@media screen and (min-width: 600px){.default-ltr-cache-1t1z3a4{height:4rem;}}@media screen and (min-width: 960px){.default-ltr-cache-1t1z3a4{height:4.5rem;}}@media screen and (min-width: 1280px){.default-ltr-cache-1t1z3a4{height:5rem;}}</style><img data-uia="nmhp-card-animation-asset-animation" alt="" src="https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/boxshot.png" class="default-ltr-cache-1t1z3a4"/></div><style data-emotion="default-ltr-cache tcf860">.default-ltr-cache-tcf860{text-align:left;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;margin:0.3rem 0;}</style><div class="default-ltr-cache-tcf860"><style data-emotion="default-ltr-cache 162uqtg">.default-ltr-cache-162uqtg{color:rgb(255,255,255);font-weight:500;font-size:0.875rem;}@media screen and (min-width: 600px){.default-ltr-cache-162uqtg{font-size:1rem;}}</style><div id="" class="default-ltr-cache-162uqtg e15c37ii4" data-uia="">Stranger Things</div><style data-emotion="default-ltr-cache 44ib4m">.default-ltr-cache-44ib4m{font-size:0.75rem;font-weight:400;color:#0071eb;}@media screen and (min-width: 600px){.default-ltr-cache-44ib4m{font-size:0.875rem;}}</style><div id="" class="default-ltr-cache-44ib4m e15c37ii3" data-uia="">Downloading...</div></div><style data-emotion="default-ltr-cache 1q4up1i">.default-ltr-cache-1q4up1i{width:3rem;height:3rem;outline:2px solid rgb(0,0,0);outline-offset:-2px;display:block;background:url('https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/download-icon.gif') center center no-repeat;-webkit-background-size:100%;background-size:100%;content:'';-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}@media screen and (min-width: 960px){.default-ltr-cache-1q4up1i{height:3.75rem;}}</style><div data-uia="nmhp-card-animation-asset-custom" aria-hidden="true" class="default-ltr-cache-1q4up1i e15c37ii5"></div></div></div></div></div><div data-uia="nmhp-card-animation+downloadAndWatch+divider" class="default-ltr-cache-1yz1b0z e9eyrqp0"></div></div><div class=" default-ltr-cache-v2xv94 e9eyrqp6" data-uia="nmhp-card-faq"><div class="default-ltr-cache-d4qcmr e9eyrqp1"><div class="default-ltr-cache-1dvfrvc e9eyrqp5"><h2 data-uia="nmhp-card-faq-text-title" class="default-ltr-cache-jpuyb8 e9eyrqp8">Frequently Asked Questions</h2><div class="default-ltr-cache-1asgq30 e9eyrqp4"><style data-emotion="default-ltr-cache 1hh0fcn">.default-ltr-cache-1hh0fcn{font-size:1.5rem;font-weight:400;}@media screen and (max-width: 959.98px){.default-ltr-cache-1hh0fcn{font-size:1.125rem;font-weight:400;}}</style><style data-emotion="default-ltr-cache 1cftcxg">.default-ltr-cache-1cftcxg{list-style:none;padding:0;margin:0;font-size:1.5rem;font-weight:400;}@media screen and (max-width: 959.98px){.default-ltr-cache-1cftcxg{font-size:1.125rem;font-weight:400;}}</style><ul id="nmhp-card-faq-accordion" data-uia="nmhp-card-faq-accordion" class=" e164gv2o3 default-ltr-cache-1cftcxg eiehs6n0"><style data-emotion="default-ltr-cache y0rrtk">.default-ltr-cache-y0rrtk{margin:0 0 0.5rem 0;}</style><style data-emotion="default-ltr-cache 1vunuwp">.default-ltr-cache-1vunuwp{list-style-type:none;margin:0;padding:0;text-indent:0;margin:0 0 0.5rem 0;}</style><li class="e164gv2o2 default-ltr-cache-1vunuwp erpgvj60"><style data-emotion="default-ltr-cache bomg96">.default-ltr-cache-bomg96{margin-bottom:0.0625rem;position:relative;background-color:rgb(45,45,45);color:rgb(255,255,255);transition-duration:250ms;transition-property:background-color;transition-timing-function:cubic-bezier(0.9, 0, 0.51, 1);}.default-ltr-cache-bomg96:hover{transition-timing-function:cubic-bezier(0.5, 0, 0.1, 1);background-color:rgb(65,65,65);}.default-ltr-cache-bomg96>button{padding:1.5rem;}.default-ltr-cache-bomg96>button:focus{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-bomg96>button:focus:not(:focus-visible){outline:none;}@media screen and (min-width: 960px){.default-ltr-cache-bomg96>button{padding:1.5rem;}}@media screen and (prefers-reduced-motion){.default-ltr-cache-bomg96{-webkit-transition:none;transition:none;}}</style><style data-emotion="default-ltr-cache dfy0gt">.default-ltr-cache-dfy0gt{margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:inherit;font-weight:inherit;margin-bottom:0.0625rem;position:relative;background-color:rgb(45,45,45);color:rgb(255,255,255);transition-duration:250ms;transition-property:background-color;transition-timing-function:cubic-bezier(0.9, 0, 0.51, 1);}.default-ltr-cache-dfy0gt:hover{transition-timing-function:cubic-bezier(0.5, 0, 0.1, 1);background-color:rgb(65,65,65);}.default-ltr-cache-dfy0gt>button{padding:1.5rem;}.default-ltr-cache-dfy0gt>button:focus{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-dfy0gt>button:focus:not(:focus-visible){outline:none;}@media screen and (min-width: 960px){.default-ltr-cache-dfy0gt>button{padding:1.5rem;}}@media screen and (prefers-reduced-motion){.default-ltr-cache-dfy0gt{-webkit-transition:none;transition:none;}}</style><h3 class="e164gv2o1 default-ltr-cache-dfy0gt elj7tfr2"><style data-emotion="default-ltr-cache 1gp2q9k">.default-ltr-cache-1gp2q9k{width:100%;background:none;border:none;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:inherit;font-family:inherit;font-size:inherit;text-align:left;}</style><style data-emotion="default-ltr-cache gu5o20">.default-ltr-cache-gu5o20{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:none;border-radius:0;border:0;box-sizing:content-box;color:inherit;cursor:default;display:inline;font:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0;-webkit-text-decoration:none;text-decoration:none;width:100%;background:none;border:none;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:inherit;font-family:inherit;font-size:inherit;text-align:left;}.default-ltr-cache-gu5o20[aria-disabled]{cursor:not-allowed;opacity:0.5;}.default-ltr-cache-gu5o20:focus{outline:none;outline:#a9a9a9 auto 5px;outline:Highlight auto 5px;outline:-webkit-focus-ring-color auto 5px;}.default-ltr-cache-gu5o20:focus:not(:focus-visible){outline:none;}</style><button aria-expanded="false" aria-controls="content--nmhp-card-faq-accordion--0" id="button--nmhp-card-faq-accordion--0" data-uia="nmhp-card-faq-accordion+button-0" class="elj7tfr0 default-ltr-cache-gu5o20 e1ff4m3w2" type="button"><span data-uia="nmhp-card-faq-accordion+what_is_netflix_ad_plan">What is Netflix?</span><style data-emotion="default-ltr-cache 16u2w06">.default-ltr-cache-16u2w06{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transform:rotate(
		0
	);-moz-transform:rotate(
		0
	);-ms-transform:rotate(
		0
	);transform:rotate(
		0
	);}</style><style data-emotion="default-ltr-cache 1dpnjn">.default-ltr-cache-1dpnjn{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transform:rotate(
		0
	);-moz-transform:rotate(
		0
	);-ms-transform:rotate(
		0
	);transform:rotate(
		0
	);}@media screen and (max-width: 959.98px){.default-ltr-cache-1dpnjn{display:none;}}</style><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="36" height="36" viewBox="0 0 36 36" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1dpnjn e164gv2o4"><path fill-rule="evenodd" clip-rule="evenodd" d="M17 17V3H19V17H33V19H19V33H17V19H3V17H17Z" fill="currentColor"></path></svg><style data-emotion="default-ltr-cache 1kkka4h">.default-ltr-cache-1kkka4h{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transform:rotate(
		0
	);-moz-transform:rotate(
		0
	);-ms-transform:rotate(
		0
	);transform:rotate(
		0
	);}@media screen and (min-width: 960px){.default-ltr-cache-1kkka4h{display:none;}}</style><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="24" height="24" viewBox="0 0 24 24" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1kkka4h e164gv2o5"><path fill-rule="evenodd" clip-rule="evenodd" d="M11 11V2H13V11H22V13H13V22H11V13H2V11H11Z" fill="currentColor"></path></svg></button></h3><style data-emotion="default-ltr-cache dyvzyw">.default-ltr-cache-dyvzyw{max-height:0;padding:0 1.5rem;-webkit-transition:all 0.25s cubic-bezier(0.5, 0, 0.1, 1);transition:all 0.25s cubic-bezier(0.5, 0, 0.1, 1);text-align:left;background-color:rgb(45,45,45);color:rgb(255,255,255);}.default-ltr-cache-dyvzyw a{color:rgb(255,255,255);border-radius:0.125rem;}.default-ltr-cache-dyvzyw a:focus{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-dyvzyw a:focus:not(:focus-visible){outline:none;}@media screen and (prefers-reduced-motion){.default-ltr-cache-dyvzyw{-webkit-transition:none;transition:none;}}</style><style data-emotion="default-ltr-cache 22pc6v">.default-ltr-cache-22pc6v{overflow:hidden;max-height:0;visibility:collapse;max-height:0;padding:0 1.5rem;-webkit-transition:all 0.25s cubic-bezier(0.5, 0, 0.1, 1);transition:all 0.25s cubic-bezier(0.5, 0, 0.1, 1);text-align:left;background-color:rgb(45,45,45);color:rgb(255,255,255);}.default-ltr-cache-22pc6v a{color:rgb(255,255,255);border-radius:0.125rem;}.default-ltr-cache-22pc6v a:focus{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-22pc6v a:focus:not(:focus-visible){outline:none;}@media screen and (prefers-reduced-motion){.default-ltr-cache-22pc6v{-webkit-transition:none;transition:none;}}</style><div id="content--nmhp-card-faq-accordion--0" aria-labelledby="button--nmhp-card-faq-accordion--0" role="region" class="e164gv2o0 default-ltr-cache-22pc6v e16cpwz0"><span id="" data-uia="">Netflix is a streaming service that offers a wide variety of award-winning TV programmes, films, anime, documentaries and more on thousands of internet-connected devices.<br><br>You can watch as much as you want, whenever you want – all for one low monthly price. There's always something new to discover, and new TV programmes and films are added every week!</span></div></li><li class="e164gv2o2 default-ltr-cache-1vunuwp erpgvj60"><h3 class="e164gv2o1 default-ltr-cache-dfy0gt elj7tfr2"><button aria-expanded="false" aria-controls="content--nmhp-card-faq-accordion--1" id="button--nmhp-card-faq-accordion--1" data-uia="nmhp-card-faq-accordion+button-1" class="elj7tfr0 default-ltr-cache-gu5o20 e1ff4m3w2" type="button"><span data-uia="nmhp-card-faq-accordion+cost">How much does Netflix cost?</span><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="36" height="36" viewBox="0 0 36 36" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1dpnjn e164gv2o4"><path fill-rule="evenodd" clip-rule="evenodd" d="M17 17V3H19V17H33V19H19V33H17V19H3V17H17Z" fill="currentColor"></path></svg><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="24" height="24" viewBox="0 0 24 24" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1kkka4h e164gv2o5"><path fill-rule="evenodd" clip-rule="evenodd" d="M11 11V2H13V11H22V13H13V22H11V13H2V11H11Z" fill="currentColor"></path></svg></button></h3><div id="content--nmhp-card-faq-accordion--1" aria-labelledby="button--nmhp-card-faq-accordion--1" role="region" class="e164gv2o0 default-ltr-cache-22pc6v e16cpwz0"><span id="" data-uia="">Watch Netflix on your smartphone, tablet, smart TV, laptop or streaming device, all for one fixed monthly fee. Plans range from £4.99 to £17.99 a month. No extra costs, no contracts.</span></div></li><li class="e164gv2o2 default-ltr-cache-1vunuwp erpgvj60"><h3 class="e164gv2o1 default-ltr-cache-dfy0gt elj7tfr2"><button aria-expanded="false" aria-controls="content--nmhp-card-faq-accordion--2" id="button--nmhp-card-faq-accordion--2" data-uia="nmhp-card-faq-accordion+button-2" class="elj7tfr0 default-ltr-cache-gu5o20 e1ff4m3w2" type="button"><span data-uia="nmhp-card-faq-accordion+where_to_watch">Where can I watch?</span><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="36" height="36" viewBox="0 0 36 36" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1dpnjn e164gv2o4"><path fill-rule="evenodd" clip-rule="evenodd" d="M17 17V3H19V17H33V19H19V33H17V19H3V17H17Z" fill="currentColor"></path></svg><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="24" height="24" viewBox="0 0 24 24" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1kkka4h e164gv2o5"><path fill-rule="evenodd" clip-rule="evenodd" d="M11 11V2H13V11H22V13H13V22H11V13H2V11H11Z" fill="currentColor"></path></svg></button></h3><div id="content--nmhp-card-faq-accordion--2" aria-labelledby="button--nmhp-card-faq-accordion--2" role="region" class="e164gv2o0 default-ltr-cache-22pc6v e16cpwz0"><span id="" data-uia="">Watch anywhere, anytime. Sign in with your Netflix account to watch instantly on the web at netflix.com from your personal computer or on any internet-connected device that offers the Netflix app, including smart TVs, smartphones, tablets, streaming media players and game consoles.<br><br>You can also download your favourite programmes with the iOS, Android, or Windows 10 app. Use downloads to watch while you're on the go and without an internet connection. Take Netflix with you anywhere.</span></div></li><li class="e164gv2o2 default-ltr-cache-1vunuwp erpgvj60"><h3 class="e164gv2o1 default-ltr-cache-dfy0gt elj7tfr2"><button aria-expanded="false" aria-controls="content--nmhp-card-faq-accordion--3" id="button--nmhp-card-faq-accordion--3" data-uia="nmhp-card-faq-accordion+button-3" class="elj7tfr0 default-ltr-cache-gu5o20 e1ff4m3w2" type="button"><span data-uia="nmhp-card-faq-accordion+cancel">How do I cancel?</span><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="36" height="36" viewBox="0 0 36 36" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1dpnjn e164gv2o4"><path fill-rule="evenodd" clip-rule="evenodd" d="M17 17V3H19V17H33V19H19V33H17V19H3V17H17Z" fill="currentColor"></path></svg><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="24" height="24" viewBox="0 0 24 24" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1kkka4h e164gv2o5"><path fill-rule="evenodd" clip-rule="evenodd" d="M11 11V2H13V11H22V13H13V22H11V13H2V11H11Z" fill="currentColor"></path></svg></button></h3><div id="content--nmhp-card-faq-accordion--3" aria-labelledby="button--nmhp-card-faq-accordion--3" role="region" class="e164gv2o0 default-ltr-cache-22pc6v e16cpwz0"><span id="" data-uia="">Netflix is flexible. There are no annoying contracts and no commitments. You can easily cancel your account online in two clicks. There are no cancellation fees – start or stop your account at any time.</span></div></li><li class="e164gv2o2 default-ltr-cache-1vunuwp erpgvj60"><h3 class="e164gv2o1 default-ltr-cache-dfy0gt elj7tfr2"><button aria-expanded="false" aria-controls="content--nmhp-card-faq-accordion--4" id="button--nmhp-card-faq-accordion--4" data-uia="nmhp-card-faq-accordion+button-4" class="elj7tfr0 default-ltr-cache-gu5o20 e1ff4m3w2" type="button"><span data-uia="nmhp-card-faq-accordion+what_to_watch_nft">What can I watch on Netflix?</span><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="36" height="36" viewBox="0 0 36 36" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1dpnjn e164gv2o4"><path fill-rule="evenodd" clip-rule="evenodd" d="M17 17V3H19V17H33V19H19V33H17V19H3V17H17Z" fill="currentColor"></path></svg><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="24" height="24" viewBox="0 0 24 24" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1kkka4h e164gv2o5"><path fill-rule="evenodd" clip-rule="evenodd" d="M11 11V2H13V11H22V13H13V22H11V13H2V11H11Z" fill="currentColor"></path></svg></button></h3><div id="content--nmhp-card-faq-accordion--4" aria-labelledby="button--nmhp-card-faq-accordion--4" role="region" class="e164gv2o0 default-ltr-cache-22pc6v e16cpwz0"><span id="" data-uia="">Netflix has an extensive library of feature films, documentaries, TV programmes, anime, award-winning Netflix originals, and more. Watch as much as you want, any time you want.</span></div></li><li class="e164gv2o2 default-ltr-cache-1vunuwp erpgvj60"><h3 class="e164gv2o1 default-ltr-cache-dfy0gt elj7tfr2"><button aria-expanded="false" aria-controls="content--nmhp-card-faq-accordion--5" id="button--nmhp-card-faq-accordion--5" data-uia="nmhp-card-faq-accordion+button-5" class="elj7tfr0 default-ltr-cache-gu5o20 e1ff4m3w2" type="button"><span data-uia="nmhp-card-faq-accordion+kids_value_prop">Is Netflix good for children?</span><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="36" height="36" viewBox="0 0 36 36" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1dpnjn e164gv2o4"><path fill-rule="evenodd" clip-rule="evenodd" d="M17 17V3H19V17H33V19H19V33H17V19H3V17H17Z" fill="currentColor"></path></svg><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="24" height="24" viewBox="0 0 24 24" role="img" aria-hidden="true" class="elj7tfr3 default-ltr-cache-1kkka4h e164gv2o5"><path fill-rule="evenodd" clip-rule="evenodd" d="M11 11V2H13V11H22V13H13V22H11V13H2V11H11Z" fill="currentColor"></path></svg></button></h3><div id="content--nmhp-card-faq-accordion--5" aria-labelledby="button--nmhp-card-faq-accordion--5" role="region" class="e164gv2o0 default-ltr-cache-22pc6v e16cpwz0"><span id="" data-uia="">The Netflix Children's experience is included in your membership to give parents control while children enjoy family-friendly TV programmes and films in their own space.<br><br>Children's profiles come with PIN-protected parental controls that let you restrict the maturity rating of content children can watch and block specific titles you don’t want children to see.</span></div></li></ul><style data-emotion="default-ltr-cache 1ypj6h8">.default-ltr-cache-1ypj6h8{margin-top:2.85rem;}</style><div class="default-ltr-cache-1ypj6h8"><div class="default-ltr-cache-inkrn e1w590cc2"><div data-uia="email-form" class=" default-ltr-cache-1u8qly9" aria-label="Sign up or restart your membership with Netflix."><h3 class="default-ltr-cache-1arr3vy e1w590cc1">Ready to watch? Enter your email to create or restart your membership.</h3><div data-issplitform="true" data-hasmessage="false" class="default-ltr-cache-1jbflut e1w590cc0"><div data-uia="field-email+container" class=" e2so2tu1 default-ltr-cache-v58789 ea3diy35"><label for=":R56ldajamh:" data-uia="field-email+label" class="default-ltr-cache-v70qew ea3diy32">Email address</label><div class="default-ltr-cache-fmygl2 ea3diy34"><input autoComplete="email" minLength="5" maxLength="50" type="email" id=":R56ldajamh:" name="email" data-uia="field-email" value=""/><div aria-hidden="true" class="default-ltr-cache-emv211 ea3diy33"></div></div></div><button role="button" class=" e1ax5wel1 ew97par0 default-ltr-cache-1js8ko8 e1ff4m3w2" data-uia="nmhp-card-cta+faq" type="submit">Get Started<div aria-hidden="true" class="default-ltr-cache-17uj5h e1ax5wel0"><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="24" height="24" viewBox="0 0 24 24" role="img" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.5859 12L8.29303 19.2928L9.70725 20.7071L17.7072 12.7071C17.8948 12.5195 18.0001 12.2652 18.0001 12C18.0001 11.7347 17.8948 11.4804 17.7072 11.2928L9.70724 3.29285L8.29303 4.70706L15.5859 12Z" fill="currentColor"></path></svg></div></button></div></div></div></div><style data-emotion="default-ltr-cache a4hmbt">.default-ltr-cache-a4hmbt{position:absolute;}</style><img src="https://assets.nflxext.com/ffe/siteui/acquisition/common/transparent_1x1.png" aria-hidden="true" alt="" class="default-ltr-cache-a4hmbt ekwtkbw1"/><div class="center-pixel default-ltr-cache-1qms9jn ekwtkbw0"></div></div></div><div class="default-ltr-cache-vgp0nn e9eyrqp3"></div></div><div data-uia="nmhp-card-faq+divider" class="default-ltr-cache-1yz1b0z e9eyrqp0"></div></div></div><style data-emotion="default-ltr-cache xfi1wp">.default-ltr-cache-xfi1wp{color:rgba(255,255,255,0.7);margin:auto;font-size:1rem;font-weight:400;}@media screen and (min-width: 1280px){.default-ltr-cache-xfi1wp{max-width:calc(83.33333333333334% - 6rem);}}@media screen and (min-width: 1920px){.default-ltr-cache-xfi1wp{max-width:calc(66.66666666666666% - 6rem);}}@media all{.default-ltr-cache-xfi1wp{margin-top:2rem;margin-bottom:2rem;}}@media all and (min-width: 600px){.default-ltr-cache-xfi1wp{margin-top:2rem;margin-bottom:2rem;}}@media all and (min-width: 960px){.default-ltr-cache-xfi1wp{margin-top:4.5rem;margin-bottom:4.5rem;}}@media all and (min-width: 1280px){.default-ltr-cache-xfi1wp{margin-top:4.5rem;margin-bottom:4.5rem;}}@media all and (min-width: 1920px){.default-ltr-cache-xfi1wp{margin-top:4.5rem;margin-bottom:4.5rem;}}@media all{.default-ltr-cache-xfi1wp{padding-left:1.5rem;padding-right:1.5rem;}}@media all and (min-width: 600px){.default-ltr-cache-xfi1wp{padding-left:2rem;padding-right:2rem;}}@media all and (min-width: 960px){.default-ltr-cache-xfi1wp{padding-left:2rem;padding-right:2rem;}}@media all and (min-width: 1280px){.default-ltr-cache-xfi1wp{padding-left:3rem;padding-right:3rem;}}@media all and (min-width: 1920px){.default-ltr-cache-xfi1wp{padding-left:3rem;padding-right:3rem;}}.default-ltr-cache-xfi1wp a{color:rgba(255,255,255,0.7);border-radius:0.125rem;}.default-ltr-cache-xfi1wp a:focus{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-xfi1wp a:focus:not(:focus-visible){outline:none;}.default-ltr-cache-xfi1wp a:visited,.default-ltr-cache-xfi1wp a:not([aria-disabled]):active{color:rgba(255,255,255,0.7);}.default-ltr-cache-xfi1wp p{margin-block-start:0;margin-block-end:0;}</style><footer data-uia="nmhp-card-footer" class=" default-ltr-cache-xfi1wp eyieukx5"><style data-emotion="default-ltr-cache 1b5mvc4">.default-ltr-cache-1b5mvc4{box-sizing:border-box;width:100%;display:inherit;height:auto;}.default-ltr-cache-1b5mvc4 *{box-sizing:border-box;}</style><div data-layout="wrapper" class="default-ltr-cache-1b5mvc4 eslj5pt1"><style data-emotion="default-ltr-cache 1u7ywyk">.default-ltr-cache-1u7ywyk{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;height:inherit;margin-top:-0px;margin-left:-0px;width:100%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding:0px;}.default-ltr-cache-1u7ywyk>*{margin-top:0px;margin-left:0px;}</style><div data-layout="container" class="default-ltr-cache-1u7ywyk eslj5pt0"><style data-emotion="default-ltr-cache cd6tzo">.default-ltr-cache-cd6tzo{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;padding:0px;}@media all{.default-ltr-cache-cd6tzo{-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;}}@media all and (min-width: 600px){.default-ltr-cache-cd6tzo{-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;}}@media all and (min-width: 960px){.default-ltr-cache-cd6tzo{-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;}}@media all and (min-width: 1280px){.default-ltr-cache-cd6tzo{-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;}}@media all and (min-width: 1920px){.default-ltr-cache-cd6tzo{-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;}}</style><div data-layout="item" class="default-ltr-cache-cd6tzo ew2l6qe0"><style data-emotion="default-ltr-cache 82qlwu">.default-ltr-cache-82qlwu{margin-bottom:0.75rem;}</style><div class="default-ltr-cache-82qlwu eyieukx4">Questions? Call <a href="tel:0808 196 5391">0808 196 5391</a></div></div><div data-layout="item" class="default-ltr-cache-cd6tzo ew2l6qe0"><style data-emotion="default-ltr-cache 2lwb1t">.default-ltr-cache-2lwb1t{margin:0.75rem 0;width:100%;font-size:0.875rem;font-weight:400;}</style><div class="default-ltr-cache-2lwb1t eyieukx3"><div data-layout="wrapper" class="default-ltr-cache-1b5mvc4 eslj5pt1"><style data-emotion="default-ltr-cache 198rcvt">.default-ltr-cache-198rcvt{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;height:inherit;margin-top:-1rem;margin-left:-0.75rem;width:calc(100% + 0.75rem);-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding:0px;}.default-ltr-cache-198rcvt>*{margin-top:1rem;margin-left:0.75rem;}</style><ul data-layout="container" class="default-ltr-cache-198rcvt eslj5pt0"><style data-emotion="default-ltr-cache text8n">.default-ltr-cache-text8n{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;padding:0px;}@media all{.default-ltr-cache-text8n{-webkit-flex:0 0 calc(50% - 0.75rem);-ms-flex:0 0 calc(50% - 0.75rem);flex:0 0 calc(50% - 0.75rem);}}@media all and (min-width: 600px){.default-ltr-cache-text8n{-webkit-flex:0 0 calc(50% - 0.75rem);-ms-flex:0 0 calc(50% - 0.75rem);flex:0 0 calc(50% - 0.75rem);}}@media all and (min-width: 960px){.default-ltr-cache-text8n{-webkit-flex:0 0 calc(25% - 0.75rem);-ms-flex:0 0 calc(25% - 0.75rem);flex:0 0 calc(25% - 0.75rem);}}@media all and (min-width: 1280px){.default-ltr-cache-text8n{-webkit-flex:0 0 calc(25% - 0.75rem);-ms-flex:0 0 calc(25% - 0.75rem);flex:0 0 calc(25% - 0.75rem);}}@media all and (min-width: 1920px){.default-ltr-cache-text8n{-webkit-flex:0 0 calc(25% - 0.75rem);-ms-flex:0 0 calc(25% - 0.75rem);flex:0 0 calc(25% - 0.75rem);}}</style><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><style data-emotion="default-ltr-cache i9ostd">.default-ltr-cache-i9ostd{color:blue;cursor:pointer;-webkit-text-decoration:underline;text-decoration:underline;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;}.default-ltr-cache-i9ostd:visited{color:purple;}.default-ltr-cache-i9ostd:not([aria-disabled]):active{color:red;}</style><style data-emotion="default-ltr-cache ncd99a">.default-ltr-cache-ncd99a{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:none;border-radius:0;border:0;box-sizing:content-box;color:inherit;cursor:default;display:inline;font:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0;-webkit-text-decoration:none;text-decoration:none;color:blue;cursor:pointer;-webkit-text-decoration:underline;text-decoration:underline;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;}.default-ltr-cache-ncd99a[aria-disabled]{cursor:not-allowed;opacity:0.5;}.default-ltr-cache-ncd99a:focus{outline:none;outline:#a9a9a9 auto 5px;outline:Highlight auto 5px;outline:-webkit-focus-ring-color auto 5px;}.default-ltr-cache-ncd99a:focus:not(:focus-visible){outline:none;}.default-ltr-cache-ncd99a:visited{color:purple;}.default-ltr-cache-ncd99a:not([aria-disabled]):active{color:red;}</style><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://help.netflix.com/support/412">FAQ</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://help.netflix.com">Help Centre</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="/youraccount">Account</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://media.netflix.com/">Media Centre</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="http://ir.netflix.com/">Investor Relations</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://jobs.netflix.com/jobs">Jobs</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://netflix.shop/">Netflix Shop</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="/redeem">Redeem gift cards</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="/gift-cards">Buy gift cards</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="/watch">Ways to Watch</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://help.netflix.com/legal/termsofuse">Terms of Use</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://help.netflix.com/legal/privacy">Privacy</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="#">Cookie Preferences</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://help.netflix.com/legal/corpinfo">Corporate Information</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://help.netflix.com/contactus">Contact Us</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://fast.com">Speed Test</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://netflix.com/legal/guarantee">Legal Guarantee</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://help.netflix.com/legal/notices">Legal Notices</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://www.netflix.com/gb/browse/genre/839338">Only on Netflix</a></li><li data-layout="item" class="default-ltr-cache-text8n ew2l6qe0"><a role="link" data-uia="footer-link-ad-choices" class="e1xphksk0 default-ltr-cache-ncd99a e1ff4m3w1" href="https://netflix.com/adchoices">Advert choices</a></li></ul></div></div></div><div data-layout="wrapper" class="default-ltr-cache-1b5mvc4 eslj5pt1"><style data-emotion="default-ltr-cache 1sgpei4">.default-ltr-cache-1sgpei4{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;height:inherit;margin-top:-0.5rem;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding:0px;}@media all{.default-ltr-cache-1sgpei4{margin-left:-0.5rem;width:calc(100% + 0.5rem);}}@media all and (min-width: 600px){.default-ltr-cache-1sgpei4{margin-left:-0.5rem;width:calc(100% + 0.5rem);}}@media all and (min-width: 960px){.default-ltr-cache-1sgpei4{margin-left:-1.5rem;width:calc(100% + 1.5rem);}}@media all and (min-width: 1280px){.default-ltr-cache-1sgpei4{margin-left:-1.5rem;width:calc(100% + 1.5rem);}}@media all and (min-width: 1920px){.default-ltr-cache-1sgpei4{margin-left:-1.5rem;width:calc(100% + 1.5rem);}}.default-ltr-cache-1sgpei4>*{margin-top:0.5rem;}@media all{.default-ltr-cache-1sgpei4>*{margin-left:0.5rem;}}@media all and (min-width: 600px){.default-ltr-cache-1sgpei4>*{margin-left:0.5rem;}}@media all and (min-width: 960px){.default-ltr-cache-1sgpei4>*{margin-left:1.5rem;}}@media all and (min-width: 1280px){.default-ltr-cache-1sgpei4>*{margin-left:1.5rem;}}@media all and (min-width: 1920px){.default-ltr-cache-1sgpei4>*{margin-left:1.5rem;}}</style><div data-layout="container" class="default-ltr-cache-1sgpei4 eslj5pt0"><style data-emotion="default-ltr-cache 1m38zg8">.default-ltr-cache-1m38zg8{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:inherit;padding:0px;}@media all{.default-ltr-cache-1m38zg8{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 600px){.default-ltr-cache-1m38zg8{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 960px){.default-ltr-cache-1m38zg8{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 1280px){.default-ltr-cache-1m38zg8{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}@media all and (min-width: 1920px){.default-ltr-cache-1m38zg8{width:auto;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;}}</style><div data-layout="item" class="default-ltr-cache-1m38zg8 ew2l6qe0"><style data-emotion="default-ltr-cache 1ogakd7">.default-ltr-cache-1ogakd7{margin-top:0.75rem;}</style><style data-emotion="default-ltr-cache np31vm">.default-ltr-cache-np31vm .ea3diy34>select{min-height:16px;min-width:16px;padding-right:12px;}.default-ltr-cache-np31vm select~.ea3diy33{color:inherit;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;font-size:10px;padding-right:2px;padding-top:2px;}.default-ltr-cache-np31vm{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;vertical-align:text-top;}.default-ltr-cache-np31vm .ea3diy32{position:absolute;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition-property:top,font-size,line-height;transition-duration:250ms;pointer-events:none;transition-timing-function:cubic-bezier(0.5, 0, 0.1, 1);left:2.25rem;right:0.75rem;top:0rem;}@media screen and (prefers-reduced-motion){.default-ltr-cache-np31vm .ea3diy32{-webkit-transition:none;transition:none;}}.default-ltr-cache-np31vm .ea3diy34{fill:currentColor;min-width:12.5rem;padding:0;width:100%;}.default-ltr-cache-np31vm select~.ea3diy33{border-width:1px;border-style:solid;border-radius:0.25rem;}.default-ltr-cache-np31vm select[aria-disabled]~.ea3diy33{opacity:1;}.default-ltr-cache-np31vm .ea3diy34>select{width:100%;color:inherit;-webkit-filter:opacity(
			100%
		);filter:opacity(
			100%
		);padding-right:0.75rem;padding-left:2.25rem;padding-bottom:0.375rem;padding-top:0.375rem;}.default-ltr-cache-np31vm .ea3diy34>select:-webkit-autofill{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-np31vm .ea3diy34>select:autofill{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-np31vm .ea3diy34>select.edge-autofilled,.default-ltr-cache-np31vm .ea3diy34>select[data-com-onepassword-filled],.default-ltr-cache-np31vm .ea3diy34>select[data-dashlane-autofilled]{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-np31vm .ea3diy34>select[aria-disabled]{opacity:1;padding-right:2.5rem;cursor:not-allowed;}@media screen and (prefers-reduced-motion){.default-ltr-cache-np31vm .ea3diy34>select{-webkit-transition:none;transition:none;}}.default-ltr-cache-np31vm .ea3diy31{margin-top:0.375rem;width:100%;color:rgba(255,255,255,0.7);font-size:0.8125rem;font-weight:400;}.default-ltr-cache-np31vm .ea3diy30{fill:currentColor;margin-top:0.375rem;width:100%;}.default-ltr-cache-np31vm .ea3diy30 .e1vkmu652,.default-ltr-cache-np31vm .ea3diy30 .e1vkmu651,.default-ltr-cache-np31vm .ea3diy30 .e1vkmu650{margin-right:0.25rem;position:relative;top:0.1875rem;}.default-ltr-cache-np31vm .ea3diy32{right:2.5rem;font-size:0.75rem;color:rgba(255,255,255,0.7);line-height:0.875rem;}.default-ltr-cache-np31vm .ea3diy34{font-size:1rem;font-weight:400;color:rgb(255,255,255);}.default-ltr-cache-np31vm select~.ea3diy33{background:rgba(22,22,22,0.7);padding-right:0.75rem;border-color:rgba(128,128,128,0.7);}.default-ltr-cache-np31vm select~.ea3diy33 >svg{display:auto;}.default-ltr-cache-np31vm select[aria-disabled]~.ea3diy33{border-color:rgba(128,128,128,0.4);background:rgba(22,22,22,0.02);}.default-ltr-cache-np31vm select:focus:not(:focus-visible)~.ea3diy33{outline:none;}.default-ltr-cache-np31vm select:focus~.ea3diy33{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-np31vm select[data-autofill]~.ea3diy33{background:rgba(22,22,22,0.7);}@supports (-webkit-appearance: none) and (not (-moz-appearance: none)) and (text-size-adjust: none){.default-ltr-cache-np31vm select[data-autofill]~.ea3diy33{background:rgba(70,90,126,0.4);}}@supports (-webkit-appearance: none) and (not (-moz-appearance: none)) and (not (text-size-adjust: none)){.default-ltr-cache-np31vm select[data-autofill]~.ea3diy33{background:rgb(5,0,66);}}@supports (-moz-appearance: none){.default-ltr-cache-np31vm select[data-autofill]~.ea3diy33{background:rgb(0,4,56);}}.default-ltr-cache-np31vm .ea3diy34>select{padding-right:2.25rem;line-height:1.25rem;}.default-ltr-cache-np31vm .ea3diy34,.default-ltr-cache-np31vm .ea3diy34>select{min-width:auto;width:auto;}.default-ltr-cache-np31vm .ea3diy30{font-size:0.8125rem;color:rgba(255,255,255,0.7);}</style><style data-emotion="default-ltr-cache aq0hg5">.default-ltr-cache-aq0hg5{display:inline-block;}.default-ltr-cache-aq0hg5 .ea3diy34>select{min-height:16px;min-width:16px;padding-right:12px;}.default-ltr-cache-aq0hg5 select~.ea3diy33{color:inherit;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;font-size:10px;padding-right:2px;padding-top:2px;}.default-ltr-cache-aq0hg5{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;vertical-align:text-top;}.default-ltr-cache-aq0hg5 .ea3diy32{position:absolute;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition-property:top,font-size,line-height;transition-duration:250ms;pointer-events:none;transition-timing-function:cubic-bezier(0.5, 0, 0.1, 1);left:2.25rem;right:0.75rem;top:0rem;}@media screen and (prefers-reduced-motion){.default-ltr-cache-aq0hg5 .ea3diy32{-webkit-transition:none;transition:none;}}.default-ltr-cache-aq0hg5 .ea3diy34{fill:currentColor;min-width:12.5rem;padding:0;width:100%;}.default-ltr-cache-aq0hg5 select~.ea3diy33{border-width:1px;border-style:solid;border-radius:0.25rem;}.default-ltr-cache-aq0hg5 select[aria-disabled]~.ea3diy33{opacity:1;}.default-ltr-cache-aq0hg5 .ea3diy34>select{width:100%;color:inherit;-webkit-filter:opacity(
			100%
		);filter:opacity(
			100%
		);padding-right:0.75rem;padding-left:2.25rem;padding-bottom:0.375rem;padding-top:0.375rem;}.default-ltr-cache-aq0hg5 .ea3diy34>select:-webkit-autofill{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-aq0hg5 .ea3diy34>select:autofill{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-aq0hg5 .ea3diy34>select.edge-autofilled,.default-ltr-cache-aq0hg5 .ea3diy34>select[data-com-onepassword-filled],.default-ltr-cache-aq0hg5 .ea3diy34>select[data-dashlane-autofilled]{background-image:none!important;transition-property:background-color,color;transition-delay:86400s;}.default-ltr-cache-aq0hg5 .ea3diy34>select[aria-disabled]{opacity:1;padding-right:2.5rem;cursor:not-allowed;}@media screen and (prefers-reduced-motion){.default-ltr-cache-aq0hg5 .ea3diy34>select{-webkit-transition:none;transition:none;}}.default-ltr-cache-aq0hg5 .ea3diy31{margin-top:0.375rem;width:100%;color:rgba(255,255,255,0.7);font-size:0.8125rem;font-weight:400;}.default-ltr-cache-aq0hg5 .ea3diy30{fill:currentColor;margin-top:0.375rem;width:100%;}.default-ltr-cache-aq0hg5 .ea3diy30 .e1vkmu652,.default-ltr-cache-aq0hg5 .ea3diy30 .e1vkmu651,.default-ltr-cache-aq0hg5 .ea3diy30 .e1vkmu650{margin-right:0.25rem;position:relative;top:0.1875rem;}.default-ltr-cache-aq0hg5 .ea3diy32{right:2.5rem;font-size:0.75rem;color:rgba(255,255,255,0.7);line-height:0.875rem;}.default-ltr-cache-aq0hg5 .ea3diy34{font-size:1rem;font-weight:400;color:rgb(255,255,255);}.default-ltr-cache-aq0hg5 select~.ea3diy33{background:rgba(22,22,22,0.7);padding-right:0.75rem;border-color:rgba(128,128,128,0.7);}.default-ltr-cache-aq0hg5 select~.ea3diy33 >svg{display:auto;}.default-ltr-cache-aq0hg5 select[aria-disabled]~.ea3diy33{border-color:rgba(128,128,128,0.4);background:rgba(22,22,22,0.02);}.default-ltr-cache-aq0hg5 select:focus:not(:focus-visible)~.ea3diy33{outline:none;}.default-ltr-cache-aq0hg5 select:focus~.ea3diy33{outline:none;outline:rgb(255,255,255) solid 0.125rem;outline-offset:0.125rem;}.default-ltr-cache-aq0hg5 select[data-autofill]~.ea3diy33{background:rgba(22,22,22,0.7);}@supports (-webkit-appearance: none) and (not (-moz-appearance: none)) and (text-size-adjust: none){.default-ltr-cache-aq0hg5 select[data-autofill]~.ea3diy33{background:rgba(70,90,126,0.4);}}@supports (-webkit-appearance: none) and (not (-moz-appearance: none)) and (not (text-size-adjust: none)){.default-ltr-cache-aq0hg5 select[data-autofill]~.ea3diy33{background:rgb(5,0,66);}}@supports (-moz-appearance: none){.default-ltr-cache-aq0hg5 select[data-autofill]~.ea3diy33{background:rgb(0,4,56);}}.default-ltr-cache-aq0hg5 .ea3diy34>select{padding-right:2.25rem;line-height:1.25rem;}.default-ltr-cache-aq0hg5 .ea3diy34,.default-ltr-cache-aq0hg5 .ea3diy34>select{min-width:auto;width:auto;}.default-ltr-cache-aq0hg5 .ea3diy30{font-size:0.8125rem;color:rgba(255,255,255,0.7);}</style><div data-uia="language-picker+container" class=" e1jlx6kl1 default-ltr-cache-aq0hg5 ea3diy35"><style data-emotion="default-ltr-cache fsmuz3">.default-ltr-cache-fsmuz3{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px;}</style><style data-emotion="default-ltr-cache 1vw5kt6">.default-ltr-cache-1vw5kt6{display:block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px;}.ea3diy34~.default-ltr-cache-1vw5kt6{display:inline-block;padding-left:0.25rem;}</style><label for=":R2l6jl9l:" data-uia="language-picker+label" class="default-ltr-cache-1vw5kt6 ea3diy32">Select language</label><div class="default-ltr-cache-fmygl2 ea3diy34"><style data-emotion="default-ltr-cache iyxs8w">.default-ltr-cache-iyxs8w{position:absolute;pointer-events:none;width:1rem;height:1rem;left:0.75rem;right:auto;}.default-ltr-cache-iyxs8w>svg{width:100%;height:100%;display:block;}</style><div role="img" aria-hidden="true" class="default-ltr-cache-iyxs8w e1vkmu653"><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="16" height="16" viewBox="0 0 16 16" role="img" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.7668 5.33333L10.5038 5.99715L9.33974 8.9355L8.76866 10.377L7.33333 14H9.10751L9.83505 12.0326H13.4217L14.162 14H16L12.5665 5.33333H10.8278H10.7668ZM10.6186 9.93479L10.3839 10.5632H11.1036H12.8856L11.6348 7.2136L10.6186 9.93479ZM9.52722 4.84224C9.55393 4.77481 9.58574 4.71045 9.62211 4.64954H6.41909V2H4.926V4.64954H0.540802V5.99715H4.31466C3.35062 7.79015 1.75173 9.51463 0 10.4283C0.329184 10.7138 0.811203 11.2391 1.04633 11.5931C2.55118 10.6795 3.90318 9.22912 4.926 7.57316V12.6667H6.41909V7.51606C6.81951 8.15256 7.26748 8.76169 7.7521 9.32292L8.31996 7.88955C7.80191 7.29052 7.34631 6.64699 6.9834 5.99715H9.06968L9.52722 4.84224Z" fill="currentColor"></path></svg></div><select id=":R2l6jl9l:" name="LanguageSelect" data-uia="language-picker"><option lang="en" label="English" value="en-GB" selected="">English</option></select><div aria-hidden="true" class="default-ltr-cache-emv211 ea3diy33"><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="16" height="16" viewBox="0 0 16 16" role="img" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.5976 6.5C11.7461 6.5 11.8204 6.67956 11.7154 6.78457L8.23574 10.2643C8.10555 10.3945 7.89445 10.3945 7.76425 10.2643L4.28457 6.78457C4.17956 6.67956 4.25393 6.5 4.40244 6.5H11.5976Z" fill="currentColor"></path></svg></div></div></div></div></div></div><div data-layout="item" class="default-ltr-cache-cd6tzo ew2l6qe0"><style data-emotion="default-ltr-cache 13m3r9a">.default-ltr-cache-13m3r9a{font-size:0.875rem;margin-top:1.5rem;}</style><div class="default-ltr-cache-13m3r9a eyieukx1">Netflix United Kingdom</div></div></div></div></footer><div class="center-pixel default-ltr-cache-1qms9jn ekwtkbw0"></div></div></div></div></div><script>window.__public_path__ = 'https://assets.nflxext.com/web/ffe/wp/';</script><div><script>window.netflix = window.netflix || {} ;         netflix.reactContext = {"title":"metaTitleWithCountry","clPageName":"nmLanding","layout":"simpleLayout","template":"signup\x2Fnmhp\x2FnmhpFramework.tsx","models":{"esnGeneratorModel":{"data":{"esn":"WWW-BROWSE-L2MM5DV533TGAPL01WLHC9340NEGPC","useFallbackEsn":false,"fallbackEsn":"WWW-BROWSE-"},"type":"Model"},"abContext":{"data":{"headers":{"X-Netflix.uiVersion":"vd18c8b6b","X-Netflix.esnPrefix":"WWW-BROWSE-","X-Netflix.browserName":"ClaudeBot","X-Netflix.browserVersion":1,"X-Netflix.osName":"","X-Netflix.osFullName":"","X-Netflix.osVersion":"0.0.0","X-Netflix.clientType":"akira"}}},"nonmemberSupportCategories":{"data":{"category":"innovation","isStaticClient":false},"type":"Model"},"serverDefs":{"data":{"env":"prod","stack":"prod","cluster":"nq_website_nonmember-prod-release","instance":"9f67b36c-0fdc-45c8-b438-40e07ba89a7e","EC2_REGION":"eu-west-1","BUILD_IDENTIFIER":"vd18c8b6b","uiVersion":"shakti-vd18c8b6b","host":"www.netflix.com","requestId":"983e24ec-07c7-42ce-af2d-922657746609-30435384","AUI_ENDPOINT_STACK":null,"API_ROOT":"https:\x2F\x2Fwww.netflix.com\x2Fapi","debugApiRequests":false,"ftlHost":"","ftlRecoveryHTTPStatus":[0,408,414,502,504],"enableABInclusionHeaders":true,"acceptHeaders":"\x2A\x2F\x2A","requestIpAddress":"178.79.185.141,2a05:d018:76c:b685::51b5","conductorRoutePath":"\x2F"},"type":"Model"},"requestHeaders":{"data":{"accept":"\x2A\x2F\x2A","xForwardedFor":"178.79.185.141,2a05:d018:76c:b685::51b5"},"type":"Model"},"browserInfo":{"data":{"name":"ClaudeBot","version":"1.0.0","major":1,"minor":0,"patch":0,"os":{"name":"","fullName":"","version":"0.0.0","majorVersion":0,"minorVersion":0,"patchVersion":0},"device":{"family":"Spider"},"isFirefox":false,"isSafari":false,"isSafariWebView":false,"isIE":false,"isEdge":false,"isChrome":false,"isTesla":false,"isQuest":false,"isOpera":false,"isEdgeOSS":false,"isWindows":false,"isMac":false,"isChromeOS":false,"isLinux":false,"isAndroid":false,"isIOS":false,"isIOSGT91":false,"isWindowsPhone":false,"isMobile":false,"isAndroidPhone":false,"isWindowsVista":false,"isWindowsXP":false,"isWindows7":false,"isWindows8":false,"isWindows10":false,"originallyIdentifiedAsAppleMail":false,"features":{"webp":false,"es2015":false,"fontDisplayProperty":false,"supportsGames":false,"maybeSupportsHTML5":false,"maybeSupportsHTML5withDRM":false},"specialFlags":{},"esnPrefix":"WWW-BROWSE-","_rawResult":{"family":"ClaudeBot","major":"1","minor":"0","patch":"0","device":{"family":"Spider","major":"0","minor":"0","patch":"0"},"os":{"family":"Other","major":"0","minor":"0","patch":"0"}}},"type":"Model"},"links":{"data":{"WIHOMEURL":"\x2FWiHome","TERMS":"https:\x2F\x2Fhelp.netflix.com\x2Flegal\x2Ftermsofuse","PRIVACY":"https:\x2F\x2Fhelp.netflix.com\x2Flegal\x2Fprivacy"},"type":"Model"},"uiTracking":{"data":{"mapRequestId":"","enabled":true,"retrySend":true,"maxRecords":250,"useCompression":true,"ptdebug":false},"type":"Model"},"moneyballRequestProps":{"data":{"dynamicMoneyballProps":false,"flow":"signupSimplicity","flowMode":"welcome","inApp":"","isLegacyClient":false,"nfuToken":"","signupEntryPoint":false,"supportCategory":"innovation"},"type":"Model"},"signupContext":{"data":{"flow":{"mode":"welcome","flwssn":"8cfded3a-450a-495d-864f-b95c82c2a725","netflixClientPlatform":"browser","flow":"signupSimplicity","edgeFields":null,"fields":{"startAction":{"fieldType":"Action"},"signInAction":{"fieldType":"Action"},"saveAction":{"fieldType":"Action","withFields":["email"]},"firstName":{"fieldType":"String"},"anonymous":{"fieldType":"Boolean","value":true},"recognizedNeverMember":{"fieldType":"Boolean","value":false},"recognizedFormerMember":{"fieldType":"Boolean","value":false},"registered":{"fieldType":"Boolean","value":false},"signedup":{"fieldType":"Boolean","value":false},"isFreeTrial":{"fieldType":"Boolean","value":false},"planChoice":{"fieldType":"Choice","value":"10341","options":[{"value":"10341","fields":{"planId":{"fieldType":"String","value":"3108"},"planName":{"fieldType":"String","value":"text_4_stream_name","localize":true},"planDescription":{"fieldType":"String","value":"Our\x20best\x20video\x20quality\x20in\x20Ultra\x20HD\x20\x284K\x29\x20and\x20HDR.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"planHas720p":{"fieldType":"Boolean","value":false},"planHasHd":{"fieldType":"Boolean","value":true},"planHasUltraHd":{"fieldType":"Boolean","value":true},"planMaxScreenCount":{"fieldType":"Numeric","value":4},"planMaxDownloadCount":{"fieldType":"Numeric","value":6},"planPriceCurrency":{"fieldType":"String","value":"GBP"},"planPriceAmount":{"fieldType":"String","value":"17.99"},"formattedPlanPrice":{"fieldType":"String","value":"\u00A317.99"},"billingFrequency":{"fieldType":"String","value":"Monthly"},"hasAds":{"fieldType":"Boolean","value":false},"canWatchOnMobilePhoneAndTablet":{"fieldType":"Boolean","value":true},"canWatchOnMobilTabletAndLaptop":{"fieldType":"Boolean","value":true},"canWatchOnLaptopAndTV":{"fieldType":"Boolean","value":true},"canWatchOnTV":{"fieldType":"Boolean","value":true},"hasSpatialAudio":{"fieldType":"Boolean","value":true},"planType":{"fieldType":"String","value":"PREMIUM"},"offerType":{"fieldType":"String","value":"NO_DISCOUNT"},"planTier":{"fieldType":"String","value":"text_4_stream_name","localize":true},"localizedPlanName":{"fieldType":"String","value":"Premium"},"planPrice":{"fieldType":"String","value":"\u00A317.99"},"offerId":{"fieldType":"String","value":"10341"},"offerDurationLength":{"fieldType":"String"},"offerDurationInMonths":{"fieldType":"Boolean"},"incentives":{"fieldType":"Custom","value":{}},"offerName":{"fieldType":"String","value":"Our\x20best\x20video\x20quality\x20in\x20Ultra\x20HD\x20\x284K\x29\x20and\x20HDR.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"supportedDevices":{"fieldType":"String","value":"[PHONE,\x20TABLET,\x20COMPUTER,\x20TV]"},"videoQuality":{"fieldType":"Custom","value":["text_video_quality_best"]},"resolution":{"readOnly":true,"fieldType":"String","value":"text_video_quality_4khdr"},"canDownload":{"fieldType":"Boolean","value":true},"minimizedSet":{"fieldType":"Boolean","value":true}}},{"value":"10322","fields":{"planId":{"fieldType":"String","value":"3088"},"planName":{"fieldType":"String","value":"text_2_stream_name","localize":true},"planDescription":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"planHas720p":{"fieldType":"Boolean","value":false},"planHasHd":{"fieldType":"Boolean","value":true},"planHasUltraHd":{"fieldType":"Boolean","value":false},"planMaxScreenCount":{"fieldType":"Numeric","value":2},"planMaxDownloadCount":{"fieldType":"Numeric","value":2},"planPriceCurrency":{"fieldType":"String","value":"GBP"},"planPriceAmount":{"fieldType":"String","value":"10.99"},"formattedPlanPrice":{"fieldType":"String","value":"\u00A310.99"},"billingFrequency":{"fieldType":"String","value":"Monthly"},"hasAds":{"fieldType":"Boolean","value":false},"canWatchOnMobilePhoneAndTablet":{"fieldType":"Boolean","value":true},"canWatchOnMobilTabletAndLaptop":{"fieldType":"Boolean","value":true},"canWatchOnLaptopAndTV":{"fieldType":"Boolean","value":true},"canWatchOnTV":{"fieldType":"Boolean","value":true},"hasSpatialAudio":{"fieldType":"Boolean","value":false},"planType":{"fieldType":"String","value":"STANDARD"},"offerType":{"fieldType":"String","value":"NO_DISCOUNT"},"planTier":{"fieldType":"String","value":"text_2_stream_name","localize":true},"localizedPlanName":{"fieldType":"String","value":"Standard"},"planPrice":{"fieldType":"String","value":"\u00A310.99"},"offerId":{"fieldType":"String","value":"10322"},"offerDurationLength":{"fieldType":"String"},"offerDurationInMonths":{"fieldType":"Boolean"},"incentives":{"fieldType":"Custom","value":{}},"offerName":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"supportedDevices":{"fieldType":"String","value":"[PHONE,\x20TABLET,\x20COMPUTER,\x20TV]"},"videoQuality":{"fieldType":"Custom","value":["text_video_quality_great"]},"resolution":{"readOnly":true,"fieldType":"String","value":"text_video_quality_1080p"},"canDownload":{"fieldType":"Boolean","value":true},"minimizedSet":{"fieldType":"Boolean","value":true}}},{"value":"315200031","fields":{"planId":{"fieldType":"String","value":"5200"},"planName":{"fieldType":"String","value":"text_1_stream_name","localize":true},"planDescription":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20with\x20a\x20few\x20advert\x20breaks\x20on\x20your\x20phone,\x20tablet,\x20computer\x20or\x20TV.\x20Download\x20on\x202\x20devices."},"planHas720p":{"fieldType":"Boolean","value":false},"planHasHd":{"fieldType":"Boolean","value":true},"planHasUltraHd":{"fieldType":"Boolean","value":false},"planMaxScreenCount":{"fieldType":"Numeric","value":2},"planMaxDownloadCount":{"fieldType":"Numeric","value":2},"planPriceCurrency":{"fieldType":"String","value":"GBP"},"planPriceAmount":{"fieldType":"String","value":"4.99"},"formattedPlanPrice":{"fieldType":"String","value":"\u00A34.99"},"billingFrequency":{"fieldType":"String","value":"Monthly"},"hasAds":{"fieldType":"Boolean","value":true},"canWatchOnMobilePhoneAndTablet":{"fieldType":"Boolean","value":true},"canWatchOnMobilTabletAndLaptop":{"fieldType":"Boolean","value":true},"canWatchOnLaptopAndTV":{"fieldType":"Boolean","value":true},"canWatchOnTV":{"fieldType":"Boolean","value":true},"hasSpatialAudio":{"fieldType":"Boolean","value":false},"planType":{"fieldType":"String","value":"ADS"},"offerType":{"fieldType":"String","value":"NO_DISCOUNT"},"planTier":{"fieldType":"String","value":"text_1_stream_name","localize":true},"localizedPlanName":{"fieldType":"String","value":"Standard\x20with\x20adverts"},"planPrice":{"fieldType":"String","value":"\u00A34.99"},"offerId":{"fieldType":"String","value":"315200031"},"offerDurationLength":{"fieldType":"String"},"offerDurationInMonths":{"fieldType":"Boolean"},"incentives":{"fieldType":"Custom","value":{}},"offerName":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20with\x20a\x20few\x20advert\x20breaks\x20on\x20your\x20phone,\x20tablet,\x20computer\x20or\x20TV.\x20Download\x20on\x202\x20devices."},"supportedDevices":{"fieldType":"String","value":"[PHONE,\x20TABLET,\x20COMPUTER,\x20TV]"},"videoQuality":{"fieldType":"Custom","value":["text_video_quality_great"]},"resolution":{"readOnly":true,"fieldType":"String","value":"text_video_quality_1080p"},"canDownload":{"fieldType":"Boolean","value":true},"minimizedSet":{"fieldType":"Boolean","value":true}}}]},"hasFreeTrial":{"fieldType":"Boolean","value":false},"headerRows":[{"messages":{"label":{"string":"watch_unlimited_any_device_prop","expect":[],"stringData":null}}},{"messages":{"label":{"string":"subheader_recommendations_just_for_you","expect":[],"stringData":null}}},{"messages":{"label":{"string":"subheader_change_or_cancel_anytime","expect":[],"stringData":null}}}],"rows":[{"moneyballField":"planPrice","messages":{"label":{"string":"monthly_price","expect":[],"stringData":null}}},{"moneyballField":"videoQuality","messages":{"label":{"string":"text_video_quality","expect":[],"stringData":null}}},{"moneyballField":"resolution","messages":{"label":{"string":"text_resolution","expect":[],"stringData":null}}},{"moneyballField":"hasSpatialAudio","messages":{"label":{"string":"text_spatial_audio","expect":[],"stringData":null}}},{"moneyballField":"planMaxScreenCount","messages":{"label":{"string":"text_watchable_household_devices","expect":[],"stringData":null}}},{"moneyballField":"planMaxDownloadCount","messages":{"label":{"string":"text_download_device_limit","expect":[],"stringData":null}}}],"messages":{"headerTitleMessage":{"fieldType":"Message","string":"headline_choose_plan_right_for_you"},"headerSubtitleMessage":{"fieldType":"Message","string":"text_downgrade_anytime"},"ctaButton":{"fieldType":"Message","string":"button_continue"},"textDisclaimer":{"fieldType":"Message","string":"text_disclaimer_with_resolution_fhd_uhd_hdr"},"streamDisclaimer":{"fieldType":"Message","string":"text_disclaimer_people_swasp_mhu"}},"isAdsPlanAvailable":{"hidden":true,"fieldType":"Boolean","value":true},"adsPlanSupportDownload":{"hidden":true,"fieldType":"Boolean","value":true},"csPhoneNumber":{"fieldType":"String","value":"0808\x20196\x205391"},"email":{"fieldType":"String","maxLength":50,"minLength":5,"validationRegex":"\x5E[\x5E\\s\x3C\x3E\"\\\\\x3B:]\x2B\x40[a-zA-Z0-9.\\-_]\x2B\\.[a-zA-Z0-9-_]\x2B\x24"},"abAllocations":[],"moneyballSessionUuid":{"hidden":true,"readOnly":true,"fieldType":"String","value":"af47a182-d63f-4217-8113-2f238344d1bb"}},"adaptiveFields":{"concord":{"image":{"numberOfLoops":"continuous","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Fvlv3\x2F9f46b569-aff7-4975-9b8e-3212e4637f16\x2Fb5e570d2-ae63-44ab-a10c-730d4d95f0fa\x2FGB-en-20240415-popsignuptwoweeks-perspective_alpha_website_{size}.jpg"}]}},"customizations":[{"tabs":[{"tabHeader":{"icon":"icon-cancel","messages":{"headerSmall":"cancel_anytime_small_screen","header":"cancel_anytime"},"iconSmall":"icon-cancel"},"tabBody":{"header":{},"body":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_cancelanytime_withdevice.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"cancel_anytime_content"}}},"renderType":"cancelAnytime"},{"tabHeader":{"icon":"icon-cross-device-screens-desktop","messages":{"headerSmall":"watch_anywhere_mobile_optimized","header":"watch_anywhere"},"iconSmall":"icon-cross-device-screens-small"},"tabBody":{"header":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_NFLX_app_icon.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_anywhere_logo_content"}},"body":{"devices":[{"image":{"alt":"watch_anywhere_tv_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_TV_UI.png"}]},"messages":{"subhead":"watch_anywhere_tv_content_chromecast","headline":"watch_anywhere_tv_content_hd"}},{"image":{"alt":"watch_anywhere_download_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_mobile_tablet_UI_2.png"}]},"messages":{"subhead":"watch_anywhere_download_generic","headline":"watch_anywhere_download_hd"}},{"image":{"alt":"watch_anywhere_laptop_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_website_UI.png"}]},"messages":{"subhead":"watch_anywhere_laptop_content","headline":"watch_anywhere_laptop_content_hd"}}]}},"renderType":"device"},{"tabHeader":{"icon":"icon-price-tag","messages":{"headerSmall":"watch_pricing_small_screen","header":"watch_pricing"},"iconSmall":"icon-price-tag"},"tabBody":{"header":{"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_pricing_content"}},"body":{}},"renderType":"price"}],"messages":[{"headerSmall":"learn_more_about_netflix_small_screen","header":"learn_more_about_netflix"}],"type":"thisIsNetflix","variation":"dark","activeTab":"0"},{"cards":["card_hero","card_watchOnTv","card_watchOnDevice","card_kidsValueProp","card_downloadAndWatch","card_watchContentSampling","card_faq"],"type":"fuji"},{"messages":{"ctaButton":"button_get_started","ctaButton_never":"button_finishsignup_capitalized","ctaButton_former":"button_restart_your_membership_capitalized"},"type":"fuji_ctas"},{"type":"card_kidsValueProp","cardType":"animation","name":"kidsValueProp","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fcards\x2FkidsValueProp.png","labels":{"headline":{"string":"kids_profile_title"},"subHeadline":{"string":"kids_profile_body"}},"flipped":false,"kidsValuePropCard":{"url":"https:\x2F\x2Focc-0-299-300.1.nflxso.net\x2Fdnm\x2Fapi\x2Fv6\x2F19OhWN2dO19C9txTON9tvTFtefw\x2FAAAABVr8nYuAg0xDpXDv0VI9HUoH7r2aGp4TKRCsKNQrMwxzTtr-NlwOHeS8bCI2oeZddmu3nMYr3j9MjYhHyjBASb1FaOGYZNYvPBCL.png\x3Fr\x3D54d"}},{"type":"card_faq","cardType":"faq","name":"faq","labels":{"headline":{"string":"faq_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}]},{"type":"card_downloadAndWatch","cardType":"animation","name":"downloadAndWatch","videoid":"80057281","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fmobile-0819.jpg","animation":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fboxshot.png","labels":{"headline":{"string":"download_headline_fuji"},"subHeadline":{"string":"ad_plan_supports_downloads_sub_headline"},"animationMessages":[{"string":"download_message_status_fuji"}]},"flipped":true,"downloadVideo":{"title":"Stranger\x20Things"}},{"type":"card_watchOnTv","cardType":"animation","name":"watchOnTv","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Ftv.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-tv-0819.m4v","labels":{"headline":{"string":"tv_headline_fuji"},"subHeadline":{"string":"tv_sub_headline_fuji"}}},{"type":"card_hero","cardType":"hero","name":"hero_fuji","image":"vlv","labels":{"headline":{"string":"hero_headline_fuji"},"subHeadline":{"string":"hero_sub_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}],"messageParams":{"planPricePREMIUM":"\u00A317.99","planPriceSTANDARD":"\u00A310.99","planPriceADS":"\u00A34.99","planPrice":"\u00A34.99"}},{"type":"card_watchOnDevice","cardType":"animation","name":"watchOnDevice","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fdevice-pile.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-devices.m4v","labels":{"headline":{"string":"device_headline_fuji"},"subHeadline":{"string":"device_sub_headline_fuji"}},"flipped":true},{"type":"card_freePlanAndroid","cardType":"animation","name":"freePlanAndroid","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fab36101\x2Fnmhp\x2Fen.jpg","labels":{"headline":{"string":"free_plan_mobile_headline_fuji"},"subHeadline":{"string":"free_plan_sub_headline_fuji"}},"ctas":[{"ctaType":"ctaLink","ctaStyle":"text_chevron","ctaPath":"https:\x2F\x2Fplay.google.com\x2Fstore\x2Fapps\x2Fdetails\x3Fid\x3Dcom.netflix.mediaclient","viewName":"nmLanding","messages":{"default":"free_plan_button_fuji"}}]},{"image":{"numberOfLoops":"continuous","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Fvlv3\x2F9f46b569-aff7-4975-9b8e-3212e4637f16\x2Fb5e570d2-ae63-44ab-a10c-730d4d95f0fa\x2FGB-en-20240415-popsignuptwoweeks-perspective_alpha_website_{size}.jpg"}],"tagMap":{}},"type":"concord"}],"thisIsNetflix":{"tabs":[{"tabHeader":{"icon":"icon-cancel","messages":{"headerSmall":"cancel_anytime_small_screen","header":"cancel_anytime"},"iconSmall":"icon-cancel"},"tabBody":{"header":{},"body":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_cancelanytime_withdevice.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"cancel_anytime_content"}}},"renderType":"cancelAnytime"},{"tabHeader":{"icon":"icon-cross-device-screens-desktop","messages":{"headerSmall":"watch_anywhere_mobile_optimized","header":"watch_anywhere"},"iconSmall":"icon-cross-device-screens-small"},"tabBody":{"header":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_NFLX_app_icon.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_anywhere_logo_content"}},"body":{"devices":[{"image":{"alt":"watch_anywhere_tv_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_TV_UI.png"}]},"messages":{"subhead":"watch_anywhere_tv_content_chromecast","headline":"watch_anywhere_tv_content_hd"}},{"image":{"alt":"watch_anywhere_download_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_mobile_tablet_UI_2.png"}]},"messages":{"subhead":"watch_anywhere_download_generic","headline":"watch_anywhere_download_hd"}},{"image":{"alt":"watch_anywhere_laptop_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_website_UI.png"}]},"messages":{"subhead":"watch_anywhere_laptop_content","headline":"watch_anywhere_laptop_content_hd"}}]}},"renderType":"device"},{"tabHeader":{"icon":"icon-price-tag","messages":{"headerSmall":"watch_pricing_small_screen","header":"watch_pricing"},"iconSmall":"icon-price-tag"},"tabBody":{"header":{"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_pricing_content"}},"body":{}},"renderType":"price"}],"messages":[{"headerSmall":"learn_more_about_netflix_small_screen","header":"learn_more_about_netflix"}],"type":"thisIsNetflix","variation":"dark","activeTab":"0"},"fuji":{"cards":["card_hero","card_watchOnTv","card_watchOnDevice","card_kidsValueProp","card_downloadAndWatch","card_watchContentSampling","card_faq"]},"fuji_ctas":{"messages":{"ctaButton":"button_get_started","ctaButton_never":"button_finishsignup_capitalized","ctaButton_former":"button_restart_your_membership_capitalized"}},"card_kidsValueProp":{"cardType":"animation","name":"kidsValueProp","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fcards\x2FkidsValueProp.png","labels":{"headline":{"string":"kids_profile_title"},"subHeadline":{"string":"kids_profile_body"}},"flipped":false,"kidsValuePropCard":{"url":"https:\x2F\x2Focc-0-299-300.1.nflxso.net\x2Fdnm\x2Fapi\x2Fv6\x2F19OhWN2dO19C9txTON9tvTFtefw\x2FAAAABVr8nYuAg0xDpXDv0VI9HUoH7r2aGp4TKRCsKNQrMwxzTtr-NlwOHeS8bCI2oeZddmu3nMYr3j9MjYhHyjBASb1FaOGYZNYvPBCL.png\x3Fr\x3D54d"}},"card_faq":{"cardType":"faq","name":"faq","labels":{"headline":{"string":"faq_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}]},"card_downloadAndWatch":{"cardType":"animation","name":"downloadAndWatch","videoid":"80057281","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fmobile-0819.jpg","animation":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fboxshot.png","labels":{"headline":{"string":"download_headline_fuji"},"subHeadline":{"string":"ad_plan_supports_downloads_sub_headline"},"animationMessages":[{"string":"download_message_status_fuji"}]},"flipped":true,"downloadVideo":{"title":"Stranger\x20Things"}},"card_watchOnTv":{"cardType":"animation","name":"watchOnTv","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Ftv.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-tv-0819.m4v","labels":{"headline":{"string":"tv_headline_fuji"},"subHeadline":{"string":"tv_sub_headline_fuji"}}},"card_hero":{"cardType":"hero","name":"hero_fuji","image":"vlv","labels":{"headline":{"string":"hero_headline_fuji"},"subHeadline":{"string":"hero_sub_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}],"messageParams":{"planPricePREMIUM":"\u00A317.99","planPriceSTANDARD":"\u00A310.99","planPriceADS":"\u00A34.99","planPrice":"\u00A34.99"}},"card_watchOnDevice":{"cardType":"animation","name":"watchOnDevice","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fdevice-pile.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-devices.m4v","labels":{"headline":{"string":"device_headline_fuji"},"subHeadline":{"string":"device_sub_headline_fuji"}},"flipped":true},"card_freePlanAndroid":{"cardType":"animation","name":"freePlanAndroid","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fab36101\x2Fnmhp\x2Fen.jpg","labels":{"headline":{"string":"free_plan_mobile_headline_fuji"},"subHeadline":{"string":"free_plan_sub_headline_fuji"}},"ctas":[{"ctaType":"ctaLink","ctaStyle":"text_chevron","ctaPath":"https:\x2F\x2Fplay.google.com\x2Fstore\x2Fapps\x2Fdetails\x3Fid\x3Dcom.netflix.mediaclient","viewName":"nmLanding","messages":{"default":"free_plan_button_fuji"}}]},"debug":"","sessionData":""}},"geo":{"locale":{"default":true,"dir":"ltr","displayName":"English","fallbackDisplayName":"English","id":"en-GB","language":"en","isCursive":false,"doubleByte":false,"hasExtendedDiacritics":false,"durationFormat":"hoursAndMinutes","fallbacks":["en"]},"preferredLocale":{"country":"GB","language":"en","dir":"ltr","isCursive":false,"doubleByte":false,"hasExtendedDiacritics":false,"default":true,"id":"en-GB"},"supportedLocales":[{"locale":"en-GB","selected":true,"default":true,"country":"GB","id":"en","displayText":"English"}],"supportedCountry":"ALLOW","requestCountry":{"id":"GB","countryName":"United\x20Kingdom","supportedLocales":["en"],"defaultLocale":"en","status":"ALLOW","regionCode":"LND"},"showPreTaxDisclaimer":false,"showAltTermsOfUse":true,"showLegalContactsLink":false,"giftAsMopSupported":true,"showIntlTerms":false,"shouldReverseNameFields":false},"userInfo":{"name":null,"guid":null,"userGuid":null,"emailAddress":null,"countryOfSignup":null,"currentCountry":null,"membershipStatus":"ANONYMOUS","isDVD":null,"isTestAccount":null,"isKids":false,"isInFreeTrial":false,"isBOBO":null,"hasBOBOResult":false,"memberSince":null,"authURL":"1714049196763.uMtkAojFlMC0yovXi3YqcKYVk\x2FE\x3D","showCookieDisclosure":true,"userLocale":{"locale":{"default":true,"dir":"ltr","displayName":"English","fallbackDisplayName":"English","fallbacks":["en"],"id":"en-GB","language":"en","preferredLocales":["en-GB","en"],"isCursive":false,"doubleByte":false,"hasExtendedDiacritics":false,"durationFormat":"hoursAndMinutes"}},"esn":"WWW-BROWSE-L2MM5D7C0JF44EU0CN841GCVWH0H16","esnPrefix":"WWW","deviceTypeId":1580},"originalPath":"\x2Fgb\x2F","testAllocations":[],"csPhoneNumber":{"phoneNumber":"0808\x20196\x205391"},"inapp":false,"sharedUuid":false}},"ab":{"data":{"_evaluatedTests":{},"_rawAllocations":[]}},"geo":{"data":{"locale":{"default":true,"dir":"ltr","displayName":"English","fallbackDisplayName":"English","id":"en-GB","language":"en","isCursive":false,"doubleByte":false,"hasExtendedDiacritics":false,"durationFormat":"hoursAndMinutes","fallbacks":["en"]},"preferredLocale":{"country":"GB","language":"en","dir":"ltr","isCursive":false,"doubleByte":false,"hasExtendedDiacritics":false,"default":true,"id":"en-GB"},"supportedLocales":[{"locale":"en-GB","selected":true,"default":true,"country":"GB","id":"en","displayText":"English"}],"supportedCountry":"ALLOW","requestCountry":{"id":"GB","countryName":"United\x20Kingdom","supportedLocales":["en"],"defaultLocale":"en","status":"ALLOW","regionCode":"LND"},"showPreTaxDisclaimer":false,"showAltTermsOfUse":true,"showLegalContactsLink":false,"giftAsMopSupported":true,"showIntlTerms":false,"shouldReverseNameFields":false,"hasLocaleQuery":true,"localeUrl":"gb"},"type":"api"},"userInfo":{"data":{"name":null,"guid":null,"userGuid":null,"emailAddress":null,"countryOfSignup":null,"currentCountry":null,"membershipStatus":"ANONYMOUS","isDVD":null,"isTestAccount":null,"isKids":false,"isInFreeTrial":false,"isBOBO":null,"hasBOBOResult":false,"memberSince":null,"authURL":"1714049196763.uMtkAojFlMC0yovXi3YqcKYVk\x2FE\x3D","showCookieDisclosure":true,"userLocale":{"locale":{"default":true,"dir":"ltr","displayName":"English","fallbackDisplayName":"English","fallbacks":["en"],"id":"en-GB","language":"en","preferredLocales":["en-GB","en"],"isCursive":false,"doubleByte":false,"hasExtendedDiacritics":false,"durationFormat":"hoursAndMinutes"}},"esn":"WWW-BROWSE-L2MM5D7C0JF44EU0CN841GCVWH0H16","esnPrefix":"WWW","deviceTypeId":1580}},"interstitialModel":{"data":{},"type":"Model"},"octoberSkyProperties":{"data":{"status":"ALLOW","supportedLocales":["en"],"defaultLocale":"en","id":"GB","displayName":"United\x20Kingdom","props":{"pin_required":false,"pin_enabled":false,"show_pay_after_free_month":true,"alt_terms_of_use_enabled":true,"show_terms_intl_transaction":false,"show_kr_footer_disclaimer":false,"showLegalContactsLink":false,"inAppIOSSignupSupport":true,"regPageSimplifiedMessaging":false,"minimum_verification_age":"18","payment_card_number_first":false,"phone_sms_consent_enabled":false,"signup_tou_region":"eu","signup_tou_checkbox":false,"signup_tou_has_minimized_consents":false,"partner_connect_tou_region":"eu","partner_connect_tou_checkbox":false,"hide_country_in_footer_and_title":false,"redirect_odp_to_info":false,"pin_required_min_age":"","pin_reset_on_non_pin_content":false,"preTaxDisclaimerOnPrice":false,"showRedeemGiftInFooter":true,"showGiftLandingLink":true,"force_hawkeye_cookie":false,"buyGiftCardOnlineLink":"https:\x2F\x2Fwww.paypal-gifts.com\x2Fuk\x2Fbrands\x2Fnetflix.html","require_additional_cookie_consent":true,"override_maturity_names_little_kids":"","override_maturity_names_older_kids":"","override_maturity_names_teens":"","override_maturity_names_adults":"","override_maturity_names_restricted":"","maturity_toggle_by_label":false,"cancelBundleUponPartnerPause":false,"hide_free_trial_button_label":false,"free_trial_eligible":false,"show_language_disclaimer":false,"cookie_disclosure_text_type":"eu","show_start_paid_membership_except_ppp":false,"show_buy_now_cta":false,"should_show_extra_member_new_tag":true,"should_show_paid_locations_new_tag":false,"show_footer_guarantee_link":true,"show_footer_do_not_sell_info_link":false,"show_footer_privacy_statement_text":false,"show_footer_netflix_shop_link":true}},"type":"Model"},"inapp":{"data":{"esn":"WWW-BROWSE-L2MM5D7C0JF44EU0CN841GCVWH0H16","esnPrefix":"WWW","signupEnabled":false,"isAnonymous":true,"inapp":false,"sharedUuid":false,"windows":false,"android":false,"ios":false,"osType":"unknown","unsupportedLanguageMessageURLs":false,"anonymous":true},"type":"Model"},"flow":{"data":{"moneyballPaths":{"passwordOnly":"\x2Fsignup\x2Fpassword","planSelectionWithContext":"\x2Fsignup","learnMore":"\x2Fsignup\x2Flearnmore","greetFormerMember":"\x2Fsignup\x2Fwelcomeback","planSelection":"\x2Fsignup\x2Fplanform","registrationWithContext":"\x2Fsignup\x2Fregistration","registration":"\x2Fsignup\x2Fregform","paymentPicker":"\x2Fsignup\x2FpaymentPicker","paymentPickerWithCardSteering":"\x2Fsignup\x2FpaymentPickerWithCard","paymentPickerWithContext":"\x2Fsignup\x2Fpaymentcontext","payAndStartMembershipWithContext":"\x2Fsignup\x2Fpayment","editPaymentAndStartMembershipModeWithContext":"\x2Fsignup\x2Feditpaymentcontext","editPaymentAndStartMembershipMode":"\x2Fsignup\x2Feditpaymentchoice","payAndStartMembershipForcedWithContext":"\x2Fsignup\x2Fpaymentinfo","creditOptionMode":"\x2Fsignup\x2Fcreditoption","debitOptionMode":"\x2Fsignup\x2Fdebitoption","paypalOptionMode":"\x2Fsignup\x2Fpaypaloption","giftOptionMode":"\x2Fsignup\x2Fgiftoption","idealOptionMode":"\x2Fsignup\x2Fidealoption","deDebitOptionMode":"\x2Fsignup\x2FdeDebitoption","openBankingOptionMode":"\x2Fsignup\x2FopenBanking","collectZipCodeForGift":"\x2Fsignup\x2Fcollectzipcode","editcreditOptionMode":"\x2Fsignup\x2Feditcredit","editcreditOptionWithContextMode":"\x2Fsignup\x2Feditcreditcontext","editdebitOptionMode":"\x2Fsignup\x2Feditdebit","editdebitOptionWithContextMode":"\x2Fsignup\x2Feditdebitcontext","editpaypalOptionMode":"\x2Fsignup\x2Feditpaypal","editidealOptionMode":"\x2Fsignup\x2Feditideal","editdeDebitOptionMode":"\x2Fsignup\x2FeditdeDebitOption","editopenBankingOptionMode":"\x2Fsignup\x2FeditopenBanking","editdcbOptionMode":"\x2Fsignup\x2Feditdcb","editcashPaymentOptionMode":"\x2Fsignup\x2FeditcashPaymentOption","editmobileWalletOptionMode":"\x2Fsignup\x2FeditmobileWalletOption","confirmWithContext":"\x2Fsignup\x2Fconfirm","confirm":"\x2Fsignup\x2Fconfirmform","rejoinPlanConfirmation":"\x2Fsignup\x2FrejoinPlanConfirmation","upiOrderConfirm":"\x2Fsignup\x2Fupiorderconfirm","upiWaiting":"\x2FsimpleSetup\x2Fupiwaiting","editPayment":"\x2Fsignup\x2Feditpayment","editPlanSelection":"\x2Fsignup\x2Feditplan","changePlan":"\x2Fsignup\x2Fchangeplan","changeEmail":"\x2Femail","changeEmailWithoutChallenge":"\x2Fchangeemailverified","changeEmailBlocked":"\x2Fyouraccount","confirmMembershipStarted":"\x2Forderfinal","confirmMembershipStartedForSimplicity":"\x2FsimpleSetup\x2Forderfinal","welcome":"\x2F","memberHome":"\x2Fbrowse","verifyCardContext":"\x2Fsignup\x2FverifyCardContext","verifyCard":"\x2Fsignup\x2FverifyCard","verifyLater":"\x2Fsignup\x2FverifyLater","changeCardProcessingType":"\x2Fsignup\x2FchangeProcessingType","dcbOptionMode":"\x2Fsignup\x2Fdcboption","cashPaymentOptionMode":"\x2Fsignup\x2FcashPaymentOption","mobileWalletOptionMode":"\x2Fsignup\x2FmobileWalletOption","cashOrderFinal":"\x2FsimpleSetup\x2Fcashorderfinal","dcbVerify":"\x2Fsignup\x2Fdcbverify","upiPaymentOptionMode":"\x2Fsignup\x2Fupipaymentoption","editupiPaymentOptionMode":"\x2Fsignup\x2Feditupipaymentoption","login":"\x2Flogin","loginOtpEntry":"\x2Flogin\x2Fcode","signupBlocked":"\x2FsignupBlocked","enterOTPPhoneMode":"\x2Fsignup\x2FotpPhoneEntry","enterOTPCodeMode":"\x2Fsignup\x2FotpCodeEntry","redirectRequestLanding":"\x2Fsignup\x2FredirectRequestLanding","enterTvLoginRendezvousCode":"\x2Ftv8","tvLoginSuccess":"\x2Ftv\x2Fin\x2Fsuccess","midProfileTransferLanding":"\x2Faccount\x2Fprofile\x2FtransferIncomplete","profileTransferContext":"\x2Faccount\x2Fprofile\x2Ftransfercontext","freePlanAppUpgrade":"\x2Fappupgrade","mhuCreateAccount":"\x2Fsignup\x2FcreateAccountContext","verifyEmail":"\x2Fsignup\x2Fverifyemail","adsWelcome":"\x2Fads-plan","otpRegistration":"\x2Fsignup\x2Fregphone","verifyOtpRegistration":"\x2Fsignup\x2Fregverify"},"mode":"welcome","flwssn":"8cfded3a-450a-495d-864f-b95c82c2a725","netflixClientPlatform":"browser","flow":"signupSimplicity","edgeFields":null,"fields":{"startAction":{"fieldType":"Action"},"signInAction":{"fieldType":"Action"},"saveAction":{"fieldType":"Action","withFields":["email"]},"firstName":{"fieldType":"String"},"anonymous":{"fieldType":"Boolean","value":true},"recognizedNeverMember":{"fieldType":"Boolean","value":false},"recognizedFormerMember":{"fieldType":"Boolean","value":false},"registered":{"fieldType":"Boolean","value":false},"signedup":{"fieldType":"Boolean","value":false},"isFreeTrial":{"fieldType":"Boolean","value":false},"planChoice":{"fieldType":"Choice","value":"10341","options":[{"value":"10341","fields":{"planId":{"fieldType":"String","value":"3108"},"planName":{"fieldType":"String","value":"text_4_stream_name","localize":true},"planDescription":{"fieldType":"String","value":"Our\x20best\x20video\x20quality\x20in\x20Ultra\x20HD\x20\x284K\x29\x20and\x20HDR.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"planHas720p":{"fieldType":"Boolean","value":false},"planHasHd":{"fieldType":"Boolean","value":true},"planHasUltraHd":{"fieldType":"Boolean","value":true},"planMaxScreenCount":{"fieldType":"Numeric","value":4},"planMaxDownloadCount":{"fieldType":"Numeric","value":6},"planPriceCurrency":{"fieldType":"String","value":"GBP"},"planPriceAmount":{"fieldType":"String","value":"17.99"},"formattedPlanPrice":{"fieldType":"String","value":"\u00A317.99"},"billingFrequency":{"fieldType":"String","value":"Monthly"},"hasAds":{"fieldType":"Boolean","value":false},"canWatchOnMobilePhoneAndTablet":{"fieldType":"Boolean","value":true},"canWatchOnMobilTabletAndLaptop":{"fieldType":"Boolean","value":true},"canWatchOnLaptopAndTV":{"fieldType":"Boolean","value":true},"canWatchOnTV":{"fieldType":"Boolean","value":true},"hasSpatialAudio":{"fieldType":"Boolean","value":true},"planType":{"fieldType":"String","value":"PREMIUM"},"offerType":{"fieldType":"String","value":"NO_DISCOUNT"},"planTier":{"fieldType":"String","value":"text_4_stream_name","localize":true},"localizedPlanName":{"fieldType":"String","value":"Premium"},"planPrice":{"fieldType":"String","value":"\u00A317.99"},"offerId":{"fieldType":"String","value":"10341"},"offerDurationLength":{"fieldType":"String"},"offerDurationInMonths":{"fieldType":"Boolean"},"incentives":{"fieldType":"Custom","value":{}},"offerName":{"fieldType":"String","value":"Our\x20best\x20video\x20quality\x20in\x20Ultra\x20HD\x20\x284K\x29\x20and\x20HDR.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"supportedDevices":{"fieldType":"String","value":"[PHONE,\x20TABLET,\x20COMPUTER,\x20TV]"},"videoQuality":{"fieldType":"Custom","value":["text_video_quality_best"]},"resolution":{"readOnly":true,"fieldType":"String","value":"text_video_quality_4khdr"},"canDownload":{"fieldType":"Boolean","value":true},"minimizedSet":{"fieldType":"Boolean","value":true}}},{"value":"10322","fields":{"planId":{"fieldType":"String","value":"3088"},"planName":{"fieldType":"String","value":"text_2_stream_name","localize":true},"planDescription":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"planHas720p":{"fieldType":"Boolean","value":false},"planHasHd":{"fieldType":"Boolean","value":true},"planHasUltraHd":{"fieldType":"Boolean","value":false},"planMaxScreenCount":{"fieldType":"Numeric","value":2},"planMaxDownloadCount":{"fieldType":"Numeric","value":2},"planPriceCurrency":{"fieldType":"String","value":"GBP"},"planPriceAmount":{"fieldType":"String","value":"10.99"},"formattedPlanPrice":{"fieldType":"String","value":"\u00A310.99"},"billingFrequency":{"fieldType":"String","value":"Monthly"},"hasAds":{"fieldType":"Boolean","value":false},"canWatchOnMobilePhoneAndTablet":{"fieldType":"Boolean","value":true},"canWatchOnMobilTabletAndLaptop":{"fieldType":"Boolean","value":true},"canWatchOnLaptopAndTV":{"fieldType":"Boolean","value":true},"canWatchOnTV":{"fieldType":"Boolean","value":true},"hasSpatialAudio":{"fieldType":"Boolean","value":false},"planType":{"fieldType":"String","value":"STANDARD"},"offerType":{"fieldType":"String","value":"NO_DISCOUNT"},"planTier":{"fieldType":"String","value":"text_2_stream_name","localize":true},"localizedPlanName":{"fieldType":"String","value":"Standard"},"planPrice":{"fieldType":"String","value":"\u00A310.99"},"offerId":{"fieldType":"String","value":"10322"},"offerDurationLength":{"fieldType":"String"},"offerDurationInMonths":{"fieldType":"Boolean"},"incentives":{"fieldType":"Custom","value":{}},"offerName":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"supportedDevices":{"fieldType":"String","value":"[PHONE,\x20TABLET,\x20COMPUTER,\x20TV]"},"videoQuality":{"fieldType":"Custom","value":["text_video_quality_great"]},"resolution":{"readOnly":true,"fieldType":"String","value":"text_video_quality_1080p"},"canDownload":{"fieldType":"Boolean","value":true},"minimizedSet":{"fieldType":"Boolean","value":true}}},{"value":"315200031","fields":{"planId":{"fieldType":"String","value":"5200"},"planName":{"fieldType":"String","value":"text_1_stream_name","localize":true},"planDescription":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20with\x20a\x20few\x20advert\x20breaks\x20on\x20your\x20phone,\x20tablet,\x20computer\x20or\x20TV.\x20Download\x20on\x202\x20devices."},"planHas720p":{"fieldType":"Boolean","value":false},"planHasHd":{"fieldType":"Boolean","value":true},"planHasUltraHd":{"fieldType":"Boolean","value":false},"planMaxScreenCount":{"fieldType":"Numeric","value":2},"planMaxDownloadCount":{"fieldType":"Numeric","value":2},"planPriceCurrency":{"fieldType":"String","value":"GBP"},"planPriceAmount":{"fieldType":"String","value":"4.99"},"formattedPlanPrice":{"fieldType":"String","value":"\u00A34.99"},"billingFrequency":{"fieldType":"String","value":"Monthly"},"hasAds":{"fieldType":"Boolean","value":true},"canWatchOnMobilePhoneAndTablet":{"fieldType":"Boolean","value":true},"canWatchOnMobilTabletAndLaptop":{"fieldType":"Boolean","value":true},"canWatchOnLaptopAndTV":{"fieldType":"Boolean","value":true},"canWatchOnTV":{"fieldType":"Boolean","value":true},"hasSpatialAudio":{"fieldType":"Boolean","value":false},"planType":{"fieldType":"String","value":"ADS"},"offerType":{"fieldType":"String","value":"NO_DISCOUNT"},"planTier":{"fieldType":"String","value":"text_1_stream_name","localize":true},"localizedPlanName":{"fieldType":"String","value":"Standard\x20with\x20adverts"},"planPrice":{"fieldType":"String","value":"\u00A34.99"},"offerId":{"fieldType":"String","value":"315200031"},"offerDurationLength":{"fieldType":"String"},"offerDurationInMonths":{"fieldType":"Boolean"},"incentives":{"fieldType":"Custom","value":{}},"offerName":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20with\x20a\x20few\x20advert\x20breaks\x20on\x20your\x20phone,\x20tablet,\x20computer\x20or\x20TV.\x20Download\x20on\x202\x20devices."},"supportedDevices":{"fieldType":"String","value":"[PHONE,\x20TABLET,\x20COMPUTER,\x20TV]"},"videoQuality":{"fieldType":"Custom","value":["text_video_quality_great"]},"resolution":{"readOnly":true,"fieldType":"String","value":"text_video_quality_1080p"},"canDownload":{"fieldType":"Boolean","value":true},"minimizedSet":{"fieldType":"Boolean","value":true}}}]},"hasFreeTrial":{"fieldType":"Boolean","value":false},"headerRows":[{"messages":{"label":{"string":"watch_unlimited_any_device_prop","expect":[],"stringData":null}}},{"messages":{"label":{"string":"subheader_recommendations_just_for_you","expect":[],"stringData":null}}},{"messages":{"label":{"string":"subheader_change_or_cancel_anytime","expect":[],"stringData":null}}}],"rows":[{"moneyballField":"planPrice","messages":{"label":{"string":"monthly_price","expect":[],"stringData":null}}},{"moneyballField":"videoQuality","messages":{"label":{"string":"text_video_quality","expect":[],"stringData":null}}},{"moneyballField":"resolution","messages":{"label":{"string":"text_resolution","expect":[],"stringData":null}}},{"moneyballField":"hasSpatialAudio","messages":{"label":{"string":"text_spatial_audio","expect":[],"stringData":null}}},{"moneyballField":"planMaxScreenCount","messages":{"label":{"string":"text_watchable_household_devices","expect":[],"stringData":null}}},{"moneyballField":"planMaxDownloadCount","messages":{"label":{"string":"text_download_device_limit","expect":[],"stringData":null}}}],"messages":{"headerTitleMessage":{"fieldType":"Message","string":"headline_choose_plan_right_for_you"},"headerSubtitleMessage":{"fieldType":"Message","string":"text_downgrade_anytime"},"ctaButton":{"fieldType":"Message","string":"button_continue"},"textDisclaimer":{"fieldType":"Message","string":"text_disclaimer_with_resolution_fhd_uhd_hdr"},"streamDisclaimer":{"fieldType":"Message","string":"text_disclaimer_people_swasp_mhu"}},"isAdsPlanAvailable":{"hidden":true,"fieldType":"Boolean","value":true},"adsPlanSupportDownload":{"hidden":true,"fieldType":"Boolean","value":true},"csPhoneNumber":{"fieldType":"String","value":"0808\x20196\x205391"},"email":{"fieldType":"String","maxLength":50,"minLength":5,"validationRegex":"\x5E[\x5E\\s\x3C\x3E\"\\\\\x3B:]\x2B\x40[a-zA-Z0-9.\\-_]\x2B\\.[a-zA-Z0-9-_]\x2B\x24"},"abAllocations":[],"moneyballSessionUuid":{"hidden":true,"readOnly":true,"fieldType":"String","value":"af47a182-d63f-4217-8113-2f238344d1bb"}},"adaptiveFields":{"concord":{"image":{"numberOfLoops":"continuous","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Fvlv3\x2F9f46b569-aff7-4975-9b8e-3212e4637f16\x2Fb5e570d2-ae63-44ab-a10c-730d4d95f0fa\x2FGB-en-20240415-popsignuptwoweeks-perspective_alpha_website_{size}.jpg"}]}},"customizations":[{"tabs":[{"tabHeader":{"icon":"icon-cancel","messages":{"headerSmall":"cancel_anytime_small_screen","header":"cancel_anytime"},"iconSmall":"icon-cancel"},"tabBody":{"header":{},"body":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_cancelanytime_withdevice.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"cancel_anytime_content"}}},"renderType":"cancelAnytime"},{"tabHeader":{"icon":"icon-cross-device-screens-desktop","messages":{"headerSmall":"watch_anywhere_mobile_optimized","header":"watch_anywhere"},"iconSmall":"icon-cross-device-screens-small"},"tabBody":{"header":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_NFLX_app_icon.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_anywhere_logo_content"}},"body":{"devices":[{"image":{"alt":"watch_anywhere_tv_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_TV_UI.png"}]},"messages":{"subhead":"watch_anywhere_tv_content_chromecast","headline":"watch_anywhere_tv_content_hd"}},{"image":{"alt":"watch_anywhere_download_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_mobile_tablet_UI_2.png"}]},"messages":{"subhead":"watch_anywhere_download_generic","headline":"watch_anywhere_download_hd"}},{"image":{"alt":"watch_anywhere_laptop_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_website_UI.png"}]},"messages":{"subhead":"watch_anywhere_laptop_content","headline":"watch_anywhere_laptop_content_hd"}}]}},"renderType":"device"},{"tabHeader":{"icon":"icon-price-tag","messages":{"headerSmall":"watch_pricing_small_screen","header":"watch_pricing"},"iconSmall":"icon-price-tag"},"tabBody":{"header":{"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_pricing_content"}},"body":{}},"renderType":"price"}],"messages":[{"headerSmall":"learn_more_about_netflix_small_screen","header":"learn_more_about_netflix"}],"type":"thisIsNetflix","variation":"dark","activeTab":"0"},{"cards":["card_hero","card_watchOnTv","card_watchOnDevice","card_kidsValueProp","card_downloadAndWatch","card_watchContentSampling","card_faq"],"type":"fuji"},{"messages":{"ctaButton":"button_get_started","ctaButton_never":"button_finishsignup_capitalized","ctaButton_former":"button_restart_your_membership_capitalized"},"type":"fuji_ctas"},{"type":"card_kidsValueProp","cardType":"animation","name":"kidsValueProp","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fcards\x2FkidsValueProp.png","labels":{"headline":{"string":"kids_profile_title"},"subHeadline":{"string":"kids_profile_body"}},"flipped":false,"kidsValuePropCard":{"url":"https:\x2F\x2Focc-0-299-300.1.nflxso.net\x2Fdnm\x2Fapi\x2Fv6\x2F19OhWN2dO19C9txTON9tvTFtefw\x2FAAAABVr8nYuAg0xDpXDv0VI9HUoH7r2aGp4TKRCsKNQrMwxzTtr-NlwOHeS8bCI2oeZddmu3nMYr3j9MjYhHyjBASb1FaOGYZNYvPBCL.png\x3Fr\x3D54d"}},{"type":"card_faq","cardType":"faq","name":"faq","labels":{"headline":{"string":"faq_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}]},{"type":"card_downloadAndWatch","cardType":"animation","name":"downloadAndWatch","videoid":"80057281","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fmobile-0819.jpg","animation":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fboxshot.png","labels":{"headline":{"string":"download_headline_fuji"},"subHeadline":{"string":"ad_plan_supports_downloads_sub_headline"},"animationMessages":[{"string":"download_message_status_fuji"}]},"flipped":true,"downloadVideo":{"title":"Stranger\x20Things"}},{"type":"card_watchOnTv","cardType":"animation","name":"watchOnTv","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Ftv.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-tv-0819.m4v","labels":{"headline":{"string":"tv_headline_fuji"},"subHeadline":{"string":"tv_sub_headline_fuji"}}},{"type":"card_hero","cardType":"hero","name":"hero_fuji","image":"vlv","labels":{"headline":{"string":"hero_headline_fuji"},"subHeadline":{"string":"hero_sub_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}],"messageParams":{"planPricePREMIUM":"\u00A317.99","planPriceSTANDARD":"\u00A310.99","planPriceADS":"\u00A34.99","planPrice":"\u00A34.99"}},{"type":"card_watchOnDevice","cardType":"animation","name":"watchOnDevice","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fdevice-pile.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-devices.m4v","labels":{"headline":{"string":"device_headline_fuji"},"subHeadline":{"string":"device_sub_headline_fuji"}},"flipped":true},{"type":"card_freePlanAndroid","cardType":"animation","name":"freePlanAndroid","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fab36101\x2Fnmhp\x2Fen.jpg","labels":{"headline":{"string":"free_plan_mobile_headline_fuji"},"subHeadline":{"string":"free_plan_sub_headline_fuji"}},"ctas":[{"ctaType":"ctaLink","ctaStyle":"text_chevron","ctaPath":"https:\x2F\x2Fplay.google.com\x2Fstore\x2Fapps\x2Fdetails\x3Fid\x3Dcom.netflix.mediaclient","viewName":"nmLanding","messages":{"default":"free_plan_button_fuji"}}]},{"image":{"numberOfLoops":"continuous","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Fvlv3\x2F9f46b569-aff7-4975-9b8e-3212e4637f16\x2Fb5e570d2-ae63-44ab-a10c-730d4d95f0fa\x2FGB-en-20240415-popsignuptwoweeks-perspective_alpha_website_{size}.jpg"}],"tagMap":{}},"type":"concord"}],"thisIsNetflix":{"tabs":[{"tabHeader":{"icon":"icon-cancel","messages":{"headerSmall":"cancel_anytime_small_screen","header":"cancel_anytime"},"iconSmall":"icon-cancel"},"tabBody":{"header":{},"body":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_cancelanytime_withdevice.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"cancel_anytime_content"}}},"renderType":"cancelAnytime"},{"tabHeader":{"icon":"icon-cross-device-screens-desktop","messages":{"headerSmall":"watch_anywhere_mobile_optimized","header":"watch_anywhere"},"iconSmall":"icon-cross-device-screens-small"},"tabBody":{"header":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_NFLX_app_icon.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_anywhere_logo_content"}},"body":{"devices":[{"image":{"alt":"watch_anywhere_tv_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_TV_UI.png"}]},"messages":{"subhead":"watch_anywhere_tv_content_chromecast","headline":"watch_anywhere_tv_content_hd"}},{"image":{"alt":"watch_anywhere_download_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_mobile_tablet_UI_2.png"}]},"messages":{"subhead":"watch_anywhere_download_generic","headline":"watch_anywhere_download_hd"}},{"image":{"alt":"watch_anywhere_laptop_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_website_UI.png"}]},"messages":{"subhead":"watch_anywhere_laptop_content","headline":"watch_anywhere_laptop_content_hd"}}]}},"renderType":"device"},{"tabHeader":{"icon":"icon-price-tag","messages":{"headerSmall":"watch_pricing_small_screen","header":"watch_pricing"},"iconSmall":"icon-price-tag"},"tabBody":{"header":{"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_pricing_content"}},"body":{}},"renderType":"price"}],"messages":[{"headerSmall":"learn_more_about_netflix_small_screen","header":"learn_more_about_netflix"}],"type":"thisIsNetflix","variation":"dark","activeTab":"0"},"fuji":{"cards":["card_hero","card_watchOnTv","card_watchOnDevice","card_kidsValueProp","card_downloadAndWatch","card_watchContentSampling","card_faq"]},"fuji_ctas":{"messages":{"ctaButton":"button_get_started","ctaButton_never":"button_finishsignup_capitalized","ctaButton_former":"button_restart_your_membership_capitalized"}},"card_kidsValueProp":{"cardType":"animation","name":"kidsValueProp","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fcards\x2FkidsValueProp.png","labels":{"headline":{"string":"kids_profile_title"},"subHeadline":{"string":"kids_profile_body"}},"flipped":false,"kidsValuePropCard":{"url":"https:\x2F\x2Focc-0-299-300.1.nflxso.net\x2Fdnm\x2Fapi\x2Fv6\x2F19OhWN2dO19C9txTON9tvTFtefw\x2FAAAABVr8nYuAg0xDpXDv0VI9HUoH7r2aGp4TKRCsKNQrMwxzTtr-NlwOHeS8bCI2oeZddmu3nMYr3j9MjYhHyjBASb1FaOGYZNYvPBCL.png\x3Fr\x3D54d"}},"card_faq":{"cardType":"faq","name":"faq","labels":{"headline":{"string":"faq_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}]},"card_downloadAndWatch":{"cardType":"animation","name":"downloadAndWatch","videoid":"80057281","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fmobile-0819.jpg","animation":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fboxshot.png","labels":{"headline":{"string":"download_headline_fuji"},"subHeadline":{"string":"ad_plan_supports_downloads_sub_headline"},"animationMessages":[{"string":"download_message_status_fuji"}]},"flipped":true,"downloadVideo":{"title":"Stranger\x20Things"}},"card_watchOnTv":{"cardType":"animation","name":"watchOnTv","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Ftv.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-tv-0819.m4v","labels":{"headline":{"string":"tv_headline_fuji"},"subHeadline":{"string":"tv_sub_headline_fuji"}}},"card_hero":{"cardType":"hero","name":"hero_fuji","image":"vlv","labels":{"headline":{"string":"hero_headline_fuji"},"subHeadline":{"string":"hero_sub_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}],"messageParams":{"planPricePREMIUM":"\u00A317.99","planPriceSTANDARD":"\u00A310.99","planPriceADS":"\u00A34.99","planPrice":"\u00A34.99"}},"card_watchOnDevice":{"cardType":"animation","name":"watchOnDevice","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fdevice-pile.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-devices.m4v","labels":{"headline":{"string":"device_headline_fuji"},"subHeadline":{"string":"device_sub_headline_fuji"}},"flipped":true},"card_freePlanAndroid":{"cardType":"animation","name":"freePlanAndroid","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fab36101\x2Fnmhp\x2Fen.jpg","labels":{"headline":{"string":"free_plan_mobile_headline_fuji"},"subHeadline":{"string":"free_plan_sub_headline_fuji"}},"ctas":[{"ctaType":"ctaLink","ctaStyle":"text_chevron","ctaPath":"https:\x2F\x2Fplay.google.com\x2Fstore\x2Fapps\x2Fdetails\x3Fid\x3Dcom.netflix.mediaclient","viewName":"nmLanding","messages":{"default":"free_plan_button_fuji"}}]},"debug":"","sessionData":""},"initialPathname":"\x2F\x3Flocale\x3Den-GB","trackingInfo":{"flow":"signupSimplicity","mode":"welcome","actions":["startAction","signInAction","saveAction"]},"customization":{"thisIsNetflix":{"tabs":[{"tabHeader":{"icon":"icon-cancel","messages":{"headerSmall":"cancel_anytime_small_screen","header":"cancel_anytime"},"iconSmall":"icon-cancel"},"tabBody":{"header":{},"body":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_cancelanytime_withdevice.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"cancel_anytime_content"}}},"renderType":"cancelAnytime"},{"tabHeader":{"icon":"icon-cross-device-screens-desktop","messages":{"headerSmall":"watch_anywhere_mobile_optimized","header":"watch_anywhere"},"iconSmall":"icon-cross-device-screens-small"},"tabBody":{"header":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_NFLX_app_icon.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_anywhere_logo_content"}},"body":{"devices":[{"image":{"alt":"watch_anywhere_tv_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_TV_UI.png"}]},"messages":{"subhead":"watch_anywhere_tv_content_chromecast","headline":"watch_anywhere_tv_content_hd"}},{"image":{"alt":"watch_anywhere_download_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_mobile_tablet_UI_2.png"}]},"messages":{"subhead":"watch_anywhere_download_generic","headline":"watch_anywhere_download_hd"}},{"image":{"alt":"watch_anywhere_laptop_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_website_UI.png"}]},"messages":{"subhead":"watch_anywhere_laptop_content","headline":"watch_anywhere_laptop_content_hd"}}]}},"renderType":"device"},{"tabHeader":{"icon":"icon-price-tag","messages":{"headerSmall":"watch_pricing_small_screen","header":"watch_pricing"},"iconSmall":"icon-price-tag"},"tabBody":{"header":{"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_pricing_content"}},"body":{}},"renderType":"price"}],"messages":[{"headerSmall":"learn_more_about_netflix_small_screen","header":"learn_more_about_netflix"}],"type":"thisIsNetflix","variation":"dark","activeTab":"0"},"fuji":{"cards":["card_hero","card_watchOnTv","card_watchOnDevice","card_kidsValueProp","card_downloadAndWatch","card_watchContentSampling","card_faq"],"type":"fuji"},"fuji_ctas":{"messages":{"ctaButton":"button_get_started","ctaButton_never":"button_finishsignup_capitalized","ctaButton_former":"button_restart_your_membership_capitalized"},"type":"fuji_ctas"},"card_kidsValueProp":{"type":"card_kidsValueProp","cardType":"animation","name":"kidsValueProp","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fcards\x2FkidsValueProp.png","labels":{"headline":{"string":"kids_profile_title"},"subHeadline":{"string":"kids_profile_body"}},"flipped":false,"kidsValuePropCard":{"url":"https:\x2F\x2Focc-0-299-300.1.nflxso.net\x2Fdnm\x2Fapi\x2Fv6\x2F19OhWN2dO19C9txTON9tvTFtefw\x2FAAAABVr8nYuAg0xDpXDv0VI9HUoH7r2aGp4TKRCsKNQrMwxzTtr-NlwOHeS8bCI2oeZddmu3nMYr3j9MjYhHyjBASb1FaOGYZNYvPBCL.png\x3Fr\x3D54d"}},"card_faq":{"type":"card_faq","cardType":"faq","name":"faq","labels":{"headline":{"string":"faq_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}]},"card_downloadAndWatch":{"type":"card_downloadAndWatch","cardType":"animation","name":"downloadAndWatch","videoid":"80057281","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fmobile-0819.jpg","animation":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fboxshot.png","labels":{"headline":{"string":"download_headline_fuji"},"subHeadline":{"string":"ad_plan_supports_downloads_sub_headline"},"animationMessages":[{"string":"download_message_status_fuji"}]},"flipped":true,"downloadVideo":{"title":"Stranger\x20Things"}},"card_watchOnTv":{"type":"card_watchOnTv","cardType":"animation","name":"watchOnTv","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Ftv.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-tv-0819.m4v","labels":{"headline":{"string":"tv_headline_fuji"},"subHeadline":{"string":"tv_sub_headline_fuji"}}},"card_hero":{"type":"card_hero","cardType":"hero","name":"hero_fuji","image":"vlv","labels":{"headline":{"string":"hero_headline_fuji"},"subHeadline":{"string":"hero_sub_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}],"messageParams":{"planPricePREMIUM":"\u00A317.99","planPriceSTANDARD":"\u00A310.99","planPriceADS":"\u00A34.99","planPrice":"\u00A34.99"}},"card_watchOnDevice":{"type":"card_watchOnDevice","cardType":"animation","name":"watchOnDevice","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fdevice-pile.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-devices.m4v","labels":{"headline":{"string":"device_headline_fuji"},"subHeadline":{"string":"device_sub_headline_fuji"}},"flipped":true},"card_freePlanAndroid":{"type":"card_freePlanAndroid","cardType":"animation","name":"freePlanAndroid","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fab36101\x2Fnmhp\x2Fen.jpg","labels":{"headline":{"string":"free_plan_mobile_headline_fuji"},"subHeadline":{"string":"free_plan_sub_headline_fuji"}},"ctas":[{"ctaType":"ctaLink","ctaStyle":"text_chevron","ctaPath":"https:\x2F\x2Fplay.google.com\x2Fstore\x2Fapps\x2Fdetails\x3Fid\x3Dcom.netflix.mediaclient","viewName":"nmLanding","messages":{"default":"free_plan_button_fuji"}}]},"concord":{"image":{"numberOfLoops":"continuous","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Fvlv3\x2F9f46b569-aff7-4975-9b8e-3212e4637f16\x2Fb5e570d2-ae63-44ab-a10c-730d4d95f0fa\x2FGB-en-20240415-popsignuptwoweeks-perspective_alpha_website_{size}.jpg"}],"tagMap":{}},"type":"concord"}},"thisIsNetflix":{"tabs":[{"tabHeader":{"icon":"icon-cancel","messages":{"headerSmall":"cancel_anytime_small_screen","header":"cancel_anytime"},"iconSmall":"icon-cancel"},"tabBody":{"header":{},"body":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_cancelanytime_withdevice.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"cancel_anytime_content"}}},"renderType":"cancelAnytime"},{"tabHeader":{"icon":"icon-cross-device-screens-desktop","messages":{"headerSmall":"watch_anywhere_mobile_optimized","header":"watch_anywhere"},"iconSmall":"icon-cross-device-screens-small"},"tabBody":{"header":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_NFLX_app_icon.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_anywhere_logo_content"}},"body":{"devices":[{"image":{"alt":"watch_anywhere_tv_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_TV_UI.png"}]},"messages":{"subhead":"watch_anywhere_tv_content_chromecast","headline":"watch_anywhere_tv_content_hd"}},{"image":{"alt":"watch_anywhere_download_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_mobile_tablet_UI_2.png"}]},"messages":{"subhead":"watch_anywhere_download_generic","headline":"watch_anywhere_download_hd"}},{"image":{"alt":"watch_anywhere_laptop_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_website_UI.png"}]},"messages":{"subhead":"watch_anywhere_laptop_content","headline":"watch_anywhere_laptop_content_hd"}}]}},"renderType":"device"},{"tabHeader":{"icon":"icon-price-tag","messages":{"headerSmall":"watch_pricing_small_screen","header":"watch_pricing"},"iconSmall":"icon-price-tag"},"tabBody":{"header":{"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_pricing_content"}},"body":{}},"renderType":"price"}],"messages":[{"headerSmall":"learn_more_about_netflix_small_screen","header":"learn_more_about_netflix"}],"type":"thisIsNetflix","variation":"dark","activeTab":"0"},"fuji":{"cards":["card_hero","card_watchOnTv","card_watchOnDevice","card_kidsValueProp","card_downloadAndWatch","card_watchContentSampling","card_faq"],"type":"fuji"},"fuji_ctas":{"messages":{"ctaButton":"button_get_started","ctaButton_never":"button_finishsignup_capitalized","ctaButton_former":"button_restart_your_membership_capitalized"},"type":"fuji_ctas"},"card_kidsValueProp":{"type":"card_kidsValueProp","cardType":"animation","name":"kidsValueProp","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fcards\x2FkidsValueProp.png","labels":{"headline":{"string":"kids_profile_title"},"subHeadline":{"string":"kids_profile_body"}},"flipped":false,"kidsValuePropCard":{"url":"https:\x2F\x2Focc-0-299-300.1.nflxso.net\x2Fdnm\x2Fapi\x2Fv6\x2F19OhWN2dO19C9txTON9tvTFtefw\x2FAAAABVr8nYuAg0xDpXDv0VI9HUoH7r2aGp4TKRCsKNQrMwxzTtr-NlwOHeS8bCI2oeZddmu3nMYr3j9MjYhHyjBASb1FaOGYZNYvPBCL.png\x3Fr\x3D54d"}},"card_faq":{"type":"card_faq","cardType":"faq","name":"faq","labels":{"headline":{"string":"faq_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}]},"card_downloadAndWatch":{"type":"card_downloadAndWatch","cardType":"animation","name":"downloadAndWatch","videoid":"80057281","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fmobile-0819.jpg","animation":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fboxshot.png","labels":{"headline":{"string":"download_headline_fuji"},"subHeadline":{"string":"ad_plan_supports_downloads_sub_headline"},"animationMessages":[{"string":"download_message_status_fuji"}]},"flipped":true,"downloadVideo":{"title":"Stranger\x20Things"}},"card_watchOnTv":{"type":"card_watchOnTv","cardType":"animation","name":"watchOnTv","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Ftv.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-tv-0819.m4v","labels":{"headline":{"string":"tv_headline_fuji"},"subHeadline":{"string":"tv_sub_headline_fuji"}}},"card_hero":{"type":"card_hero","cardType":"hero","name":"hero_fuji","image":"vlv","labels":{"headline":{"string":"hero_headline_fuji"},"subHeadline":{"string":"hero_sub_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}],"messageParams":{"planPricePREMIUM":"\u00A317.99","planPriceSTANDARD":"\u00A310.99","planPriceADS":"\u00A34.99","planPrice":"\u00A34.99"}},"card_watchOnDevice":{"type":"card_watchOnDevice","cardType":"animation","name":"watchOnDevice","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fdevice-pile.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-devices.m4v","labels":{"headline":{"string":"device_headline_fuji"},"subHeadline":{"string":"device_sub_headline_fuji"}},"flipped":true},"card_freePlanAndroid":{"type":"card_freePlanAndroid","cardType":"animation","name":"freePlanAndroid","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fab36101\x2Fnmhp\x2Fen.jpg","labels":{"headline":{"string":"free_plan_mobile_headline_fuji"},"subHeadline":{"string":"free_plan_sub_headline_fuji"}},"ctas":[{"ctaType":"ctaLink","ctaStyle":"text_chevron","ctaPath":"https:\x2F\x2Fplay.google.com\x2Fstore\x2Fapps\x2Fdetails\x3Fid\x3Dcom.netflix.mediaclient","viewName":"nmLanding","messages":{"default":"free_plan_button_fuji"}}]},"concord":{"image":{"numberOfLoops":"continuous","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Fvlv3\x2F9f46b569-aff7-4975-9b8e-3212e4637f16\x2Fb5e570d2-ae63-44ab-a10c-730d4d95f0fa\x2FGB-en-20240415-popsignuptwoweeks-perspective_alpha_website_{size}.jpg"}],"tagMap":{}},"type":"concord"}},"type":"Model"},"showCookieDisclosure":{"data":false,"type":"Model"},"signupHeaderFooter":{"data":{"links":{"helpLinks":[{"label":"footer.responsive.link.faq","limited":true,"href":"https:\x2F\x2Fhelp.netflix.com\x2Fsupport\x2F412"},{"label":"footer.responsive.link.giftTerms","limited":true,"giftOnly":true,"href":"https:\x2F\x2Fwww.netflix.com\x2Fgiftterms"},{"label":"footer.responsive.link.cancel_membership","href":"\x2Fcancelplan","limited":true,"geos":["DE"],"dataUia":"footer-cancel-membership"},{"label":"footer.responsive.link.help","href":"https:\x2F\x2Fhelp.netflix.com","limited":true,"inapp":true},{"label":"footer.responsive.link.account","href":"\x2Fyouraccount"}],"companyLinks":[{"label":"footer.responsive.link.media.center","href":"https:\x2F\x2Fmedia.netflix.com\x2F"},{"label":"footer.responsive.link.relations","href":"http:\x2F\x2Fir.netflix.com\x2F"},{"label":"footer.responsive.link.jobs","href":"https:\x2F\x2Fjobs.netflix.com\x2Fjobs"},{"label":"footer.responsive.link.netflix_shop","limited":true,"href":"https:\x2F\x2Fnetflix.shop\x2F","isHidden":false}],"getStartedLinks":[{"label":"footer.responsive.link.gift.redeem","href":"\x2Fredeem","isHidden":false},{"label":"footer.responsive.link.gift.buy","href":"\x2Fgift-cards","isHidden":false},{"label":"footer.responsive.link.waysToWatch","href":"\x2Fwatch"},{"label":"footer.responsive.link.terms","href":"https:\x2F\x2Fhelp.netflix.com\x2Flegal\x2Ftermsofuse","limited":true,"inapp":true},{"label":"footer.responsive.link.privacy_separate_link","href":"https:\x2F\x2Fhelp.netflix.com\x2Flegal\x2Fprivacy","limited":true,"inapp":true},{"label":"footer.responsive.link.cookies_separate_link","href":"\x23","limited":true,"inapp":true},{"label":"footer.responsive.link.corporate_information","href":"https:\x2F\x2Fhelp.netflix.com\x2Flegal\x2Fcorpinfo","limited":true,"excludedGeos":["DE","AT"]},{"label":"footer.responsive.link.corporate_information_impressum","href":"https:\x2F\x2Fhelp.netflix.com\x2Fen\x2Fnode\x2F68708","limited":true,"geos":["DE","AT"]},{"label":"footer.responsive.link.contact_us","href":"https:\x2F\x2Fhelp.netflix.com\x2Fcontactus"},{"label":"footer.responsive.commercial.jp","href":"https:\x2F\x2Fhelp.netflix.com\x2Flegal\x2Fjacommercialtransaction","limited":true,"inapp":true,"geos":["JP"]},{"label":"footer.responsive.link.speed_test","href":"https:\x2F\x2Ffast.com"},{"label":"footer.responsive.link.legal.guarantee","href":"https:\x2F\x2Fnetflix.com\x2Flegal\x2Fguarantee","isHidden":false},{"label":"footer.responsive.link.legal.notices","href":"https:\x2F\x2Fhelp.netflix.com\x2Flegal\x2Fnotices"},{"label":"footer.responsive.link.only_on_netflix","inapp":false,"href":"https:\x2F\x2Fwww.netflix.com\x2Fgb\x2Fbrowse\x2Fgenre\x2F839338","className":"originals-link"}],"testLinks":[]},"showLogin":true,"csPhoneNumber":{"phoneNumber":"0808\x20196\x205391"},"shouldSeeNetflixCountry":true,"showHeader":true,"showKoreaFooterDisclaimer":false,"disableNetflixLogoClick":false,"showFooter":true,"hideLanguageSelector":false,"includeOneTrustScript":true},"type":"Model"},"customization":{"data":{"moneyballPaths":{"passwordOnly":"\x2Fsignup\x2Fpassword","planSelectionWithContext":"\x2Fsignup","learnMore":"\x2Fsignup\x2Flearnmore","greetFormerMember":"\x2Fsignup\x2Fwelcomeback","planSelection":"\x2Fsignup\x2Fplanform","registrationWithContext":"\x2Fsignup\x2Fregistration","registration":"\x2Fsignup\x2Fregform","paymentPicker":"\x2Fsignup\x2FpaymentPicker","paymentPickerWithCardSteering":"\x2Fsignup\x2FpaymentPickerWithCard","paymentPickerWithContext":"\x2Fsignup\x2Fpaymentcontext","payAndStartMembershipWithContext":"\x2Fsignup\x2Fpayment","editPaymentAndStartMembershipModeWithContext":"\x2Fsignup\x2Feditpaymentcontext","editPaymentAndStartMembershipMode":"\x2Fsignup\x2Feditpaymentchoice","payAndStartMembershipForcedWithContext":"\x2Fsignup\x2Fpaymentinfo","creditOptionMode":"\x2Fsignup\x2Fcreditoption","debitOptionMode":"\x2Fsignup\x2Fdebitoption","paypalOptionMode":"\x2Fsignup\x2Fpaypaloption","giftOptionMode":"\x2Fsignup\x2Fgiftoption","idealOptionMode":"\x2Fsignup\x2Fidealoption","deDebitOptionMode":"\x2Fsignup\x2FdeDebitoption","openBankingOptionMode":"\x2Fsignup\x2FopenBanking","collectZipCodeForGift":"\x2Fsignup\x2Fcollectzipcode","editcreditOptionMode":"\x2Fsignup\x2Feditcredit","editcreditOptionWithContextMode":"\x2Fsignup\x2Feditcreditcontext","editdebitOptionMode":"\x2Fsignup\x2Feditdebit","editdebitOptionWithContextMode":"\x2Fsignup\x2Feditdebitcontext","editpaypalOptionMode":"\x2Fsignup\x2Feditpaypal","editidealOptionMode":"\x2Fsignup\x2Feditideal","editdeDebitOptionMode":"\x2Fsignup\x2FeditdeDebitOption","editopenBankingOptionMode":"\x2Fsignup\x2FeditopenBanking","editdcbOptionMode":"\x2Fsignup\x2Feditdcb","editcashPaymentOptionMode":"\x2Fsignup\x2FeditcashPaymentOption","editmobileWalletOptionMode":"\x2Fsignup\x2FeditmobileWalletOption","confirmWithContext":"\x2Fsignup\x2Fconfirm","confirm":"\x2Fsignup\x2Fconfirmform","rejoinPlanConfirmation":"\x2Fsignup\x2FrejoinPlanConfirmation","upiOrderConfirm":"\x2Fsignup\x2Fupiorderconfirm","upiWaiting":"\x2FsimpleSetup\x2Fupiwaiting","editPayment":"\x2Fsignup\x2Feditpayment","editPlanSelection":"\x2Fsignup\x2Feditplan","changePlan":"\x2Fsignup\x2Fchangeplan","changeEmail":"\x2Femail","changeEmailWithoutChallenge":"\x2Fchangeemailverified","changeEmailBlocked":"\x2Fyouraccount","confirmMembershipStarted":"\x2Forderfinal","confirmMembershipStartedForSimplicity":"\x2FsimpleSetup\x2Forderfinal","welcome":"\x2F","memberHome":"\x2Fbrowse","verifyCardContext":"\x2Fsignup\x2FverifyCardContext","verifyCard":"\x2Fsignup\x2FverifyCard","verifyLater":"\x2Fsignup\x2FverifyLater","changeCardProcessingType":"\x2Fsignup\x2FchangeProcessingType","dcbOptionMode":"\x2Fsignup\x2Fdcboption","cashPaymentOptionMode":"\x2Fsignup\x2FcashPaymentOption","mobileWalletOptionMode":"\x2Fsignup\x2FmobileWalletOption","cashOrderFinal":"\x2FsimpleSetup\x2Fcashorderfinal","dcbVerify":"\x2Fsignup\x2Fdcbverify","upiPaymentOptionMode":"\x2Fsignup\x2Fupipaymentoption","editupiPaymentOptionMode":"\x2Fsignup\x2Feditupipaymentoption","login":"\x2Flogin","loginOtpEntry":"\x2Flogin\x2Fcode","signupBlocked":"\x2FsignupBlocked","enterOTPPhoneMode":"\x2Fsignup\x2FotpPhoneEntry","enterOTPCodeMode":"\x2Fsignup\x2FotpCodeEntry","redirectRequestLanding":"\x2Fsignup\x2FredirectRequestLanding","enterTvLoginRendezvousCode":"\x2Ftv8","tvLoginSuccess":"\x2Ftv\x2Fin\x2Fsuccess","midProfileTransferLanding":"\x2Faccount\x2Fprofile\x2FtransferIncomplete","profileTransferContext":"\x2Faccount\x2Fprofile\x2Ftransfercontext","freePlanAppUpgrade":"\x2Fappupgrade","mhuCreateAccount":"\x2Fsignup\x2FcreateAccountContext","verifyEmail":"\x2Fsignup\x2Fverifyemail","adsWelcome":"\x2Fads-plan","otpRegistration":"\x2Fsignup\x2Fregphone","verifyOtpRegistration":"\x2Fsignup\x2Fregverify"},"mode":"welcome","flwssn":"8cfded3a-450a-495d-864f-b95c82c2a725","netflixClientPlatform":"browser","flow":"signupSimplicity","edgeFields":null,"fields":{"startAction":{"fieldType":"Action"},"signInAction":{"fieldType":"Action"},"saveAction":{"fieldType":"Action","withFields":["email"]},"firstName":{"fieldType":"String"},"anonymous":{"fieldType":"Boolean","value":true},"recognizedNeverMember":{"fieldType":"Boolean","value":false},"recognizedFormerMember":{"fieldType":"Boolean","value":false},"registered":{"fieldType":"Boolean","value":false},"signedup":{"fieldType":"Boolean","value":false},"isFreeTrial":{"fieldType":"Boolean","value":false},"planChoice":{"fieldType":"Choice","value":"10341","options":[{"value":"10341","fields":{"planId":{"fieldType":"String","value":"3108"},"planName":{"fieldType":"String","value":"text_4_stream_name","localize":true},"planDescription":{"fieldType":"String","value":"Our\x20best\x20video\x20quality\x20in\x20Ultra\x20HD\x20\x284K\x29\x20and\x20HDR.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"planHas720p":{"fieldType":"Boolean","value":false},"planHasHd":{"fieldType":"Boolean","value":true},"planHasUltraHd":{"fieldType":"Boolean","value":true},"planMaxScreenCount":{"fieldType":"Numeric","value":4},"planMaxDownloadCount":{"fieldType":"Numeric","value":6},"planPriceCurrency":{"fieldType":"String","value":"GBP"},"planPriceAmount":{"fieldType":"String","value":"17.99"},"formattedPlanPrice":{"fieldType":"String","value":"\u00A317.99"},"billingFrequency":{"fieldType":"String","value":"Monthly"},"hasAds":{"fieldType":"Boolean","value":false},"canWatchOnMobilePhoneAndTablet":{"fieldType":"Boolean","value":true},"canWatchOnMobilTabletAndLaptop":{"fieldType":"Boolean","value":true},"canWatchOnLaptopAndTV":{"fieldType":"Boolean","value":true},"canWatchOnTV":{"fieldType":"Boolean","value":true},"hasSpatialAudio":{"fieldType":"Boolean","value":true},"planType":{"fieldType":"String","value":"PREMIUM"},"offerType":{"fieldType":"String","value":"NO_DISCOUNT"},"planTier":{"fieldType":"String","value":"text_4_stream_name","localize":true},"localizedPlanName":{"fieldType":"String","value":"Premium"},"planPrice":{"fieldType":"String","value":"\u00A317.99"},"offerId":{"fieldType":"String","value":"10341"},"offerDurationLength":{"fieldType":"String"},"offerDurationInMonths":{"fieldType":"Boolean"},"incentives":{"fieldType":"Custom","value":{}},"offerName":{"fieldType":"String","value":"Our\x20best\x20video\x20quality\x20in\x20Ultra\x20HD\x20\x284K\x29\x20and\x20HDR.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"supportedDevices":{"fieldType":"String","value":"[PHONE,\x20TABLET,\x20COMPUTER,\x20TV]"},"videoQuality":{"fieldType":"Custom","value":["text_video_quality_best"]},"resolution":{"readOnly":true,"fieldType":"String","value":"text_video_quality_4khdr"},"canDownload":{"fieldType":"Boolean","value":true},"minimizedSet":{"fieldType":"Boolean","value":true}}},{"value":"10322","fields":{"planId":{"fieldType":"String","value":"3088"},"planName":{"fieldType":"String","value":"text_2_stream_name","localize":true},"planDescription":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"planHas720p":{"fieldType":"Boolean","value":false},"planHasHd":{"fieldType":"Boolean","value":true},"planHasUltraHd":{"fieldType":"Boolean","value":false},"planMaxScreenCount":{"fieldType":"Numeric","value":2},"planMaxDownloadCount":{"fieldType":"Numeric","value":2},"planPriceCurrency":{"fieldType":"String","value":"GBP"},"planPriceAmount":{"fieldType":"String","value":"10.99"},"formattedPlanPrice":{"fieldType":"String","value":"\u00A310.99"},"billingFrequency":{"fieldType":"String","value":"Monthly"},"hasAds":{"fieldType":"Boolean","value":false},"canWatchOnMobilePhoneAndTablet":{"fieldType":"Boolean","value":true},"canWatchOnMobilTabletAndLaptop":{"fieldType":"Boolean","value":true},"canWatchOnLaptopAndTV":{"fieldType":"Boolean","value":true},"canWatchOnTV":{"fieldType":"Boolean","value":true},"hasSpatialAudio":{"fieldType":"Boolean","value":false},"planType":{"fieldType":"String","value":"STANDARD"},"offerType":{"fieldType":"String","value":"NO_DISCOUNT"},"planTier":{"fieldType":"String","value":"text_2_stream_name","localize":true},"localizedPlanName":{"fieldType":"String","value":"Standard"},"planPrice":{"fieldType":"String","value":"\u00A310.99"},"offerId":{"fieldType":"String","value":"10322"},"offerDurationLength":{"fieldType":"String"},"offerDurationInMonths":{"fieldType":"Boolean"},"incentives":{"fieldType":"Custom","value":{}},"offerName":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20on\x20any\x20phone,\x20tablet,\x20computer\x20or\x20TV."},"supportedDevices":{"fieldType":"String","value":"[PHONE,\x20TABLET,\x20COMPUTER,\x20TV]"},"videoQuality":{"fieldType":"Custom","value":["text_video_quality_great"]},"resolution":{"readOnly":true,"fieldType":"String","value":"text_video_quality_1080p"},"canDownload":{"fieldType":"Boolean","value":true},"minimizedSet":{"fieldType":"Boolean","value":true}}},{"value":"315200031","fields":{"planId":{"fieldType":"String","value":"5200"},"planName":{"fieldType":"String","value":"text_1_stream_name","localize":true},"planDescription":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20with\x20a\x20few\x20advert\x20breaks\x20on\x20your\x20phone,\x20tablet,\x20computer\x20or\x20TV.\x20Download\x20on\x202\x20devices."},"planHas720p":{"fieldType":"Boolean","value":false},"planHasHd":{"fieldType":"Boolean","value":true},"planHasUltraHd":{"fieldType":"Boolean","value":false},"planMaxScreenCount":{"fieldType":"Numeric","value":2},"planMaxDownloadCount":{"fieldType":"Numeric","value":2},"planPriceCurrency":{"fieldType":"String","value":"GBP"},"planPriceAmount":{"fieldType":"String","value":"4.99"},"formattedPlanPrice":{"fieldType":"String","value":"\u00A34.99"},"billingFrequency":{"fieldType":"String","value":"Monthly"},"hasAds":{"fieldType":"Boolean","value":true},"canWatchOnMobilePhoneAndTablet":{"fieldType":"Boolean","value":true},"canWatchOnMobilTabletAndLaptop":{"fieldType":"Boolean","value":true},"canWatchOnLaptopAndTV":{"fieldType":"Boolean","value":true},"canWatchOnTV":{"fieldType":"Boolean","value":true},"hasSpatialAudio":{"fieldType":"Boolean","value":false},"planType":{"fieldType":"String","value":"ADS"},"offerType":{"fieldType":"String","value":"NO_DISCOUNT"},"planTier":{"fieldType":"String","value":"text_1_stream_name","localize":true},"localizedPlanName":{"fieldType":"String","value":"Standard\x20with\x20adverts"},"planPrice":{"fieldType":"String","value":"\u00A34.99"},"offerId":{"fieldType":"String","value":"315200031"},"offerDurationLength":{"fieldType":"String"},"offerDurationInMonths":{"fieldType":"Boolean"},"incentives":{"fieldType":"Custom","value":{}},"offerName":{"fieldType":"String","value":"Great\x20video\x20quality\x20in\x20Full\x20HD\x20\x281080p\x29.\x20Watch\x20with\x20a\x20few\x20advert\x20breaks\x20on\x20your\x20phone,\x20tablet,\x20computer\x20or\x20TV.\x20Download\x20on\x202\x20devices."},"supportedDevices":{"fieldType":"String","value":"[PHONE,\x20TABLET,\x20COMPUTER,\x20TV]"},"videoQuality":{"fieldType":"Custom","value":["text_video_quality_great"]},"resolution":{"readOnly":true,"fieldType":"String","value":"text_video_quality_1080p"},"canDownload":{"fieldType":"Boolean","value":true},"minimizedSet":{"fieldType":"Boolean","value":true}}}]},"hasFreeTrial":{"fieldType":"Boolean","value":false},"headerRows":[{"messages":{"label":{"string":"watch_unlimited_any_device_prop","expect":[],"stringData":null}}},{"messages":{"label":{"string":"subheader_recommendations_just_for_you","expect":[],"stringData":null}}},{"messages":{"label":{"string":"subheader_change_or_cancel_anytime","expect":[],"stringData":null}}}],"rows":[{"moneyballField":"planPrice","messages":{"label":{"string":"monthly_price","expect":[],"stringData":null}}},{"moneyballField":"videoQuality","messages":{"label":{"string":"text_video_quality","expect":[],"stringData":null}}},{"moneyballField":"resolution","messages":{"label":{"string":"text_resolution","expect":[],"stringData":null}}},{"moneyballField":"hasSpatialAudio","messages":{"label":{"string":"text_spatial_audio","expect":[],"stringData":null}}},{"moneyballField":"planMaxScreenCount","messages":{"label":{"string":"text_watchable_household_devices","expect":[],"stringData":null}}},{"moneyballField":"planMaxDownloadCount","messages":{"label":{"string":"text_download_device_limit","expect":[],"stringData":null}}}],"messages":{"headerTitleMessage":{"fieldType":"Message","string":"headline_choose_plan_right_for_you"},"headerSubtitleMessage":{"fieldType":"Message","string":"text_downgrade_anytime"},"ctaButton":{"fieldType":"Message","string":"button_continue"},"textDisclaimer":{"fieldType":"Message","string":"text_disclaimer_with_resolution_fhd_uhd_hdr"},"streamDisclaimer":{"fieldType":"Message","string":"text_disclaimer_people_swasp_mhu"}},"isAdsPlanAvailable":{"hidden":true,"fieldType":"Boolean","value":true},"adsPlanSupportDownload":{"hidden":true,"fieldType":"Boolean","value":true},"csPhoneNumber":{"fieldType":"String","value":"0808\x20196\x205391"},"email":{"fieldType":"String","maxLength":50,"minLength":5,"validationRegex":"\x5E[\x5E\\s\x3C\x3E\"\\\\\x3B:]\x2B\x40[a-zA-Z0-9.\\-_]\x2B\\.[a-zA-Z0-9-_]\x2B\x24"},"abAllocations":[],"moneyballSessionUuid":{"hidden":true,"readOnly":true,"fieldType":"String","value":"af47a182-d63f-4217-8113-2f238344d1bb"}},"adaptiveFields":{"concord":{"image":{"numberOfLoops":"continuous","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Fvlv3\x2F9f46b569-aff7-4975-9b8e-3212e4637f16\x2Fb5e570d2-ae63-44ab-a10c-730d4d95f0fa\x2FGB-en-20240415-popsignuptwoweeks-perspective_alpha_website_{size}.jpg"}]}},"customizations":[{"tabs":[{"tabHeader":{"icon":"icon-cancel","messages":{"headerSmall":"cancel_anytime_small_screen","header":"cancel_anytime"},"iconSmall":"icon-cancel"},"tabBody":{"header":{},"body":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_cancelanytime_withdevice.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"cancel_anytime_content"}}},"renderType":"cancelAnytime"},{"tabHeader":{"icon":"icon-cross-device-screens-desktop","messages":{"headerSmall":"watch_anywhere_mobile_optimized","header":"watch_anywhere"},"iconSmall":"icon-cross-device-screens-small"},"tabBody":{"header":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_NFLX_app_icon.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_anywhere_logo_content"}},"body":{"devices":[{"image":{"alt":"watch_anywhere_tv_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_TV_UI.png"}]},"messages":{"subhead":"watch_anywhere_tv_content_chromecast","headline":"watch_anywhere_tv_content_hd"}},{"image":{"alt":"watch_anywhere_download_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_mobile_tablet_UI_2.png"}]},"messages":{"subhead":"watch_anywhere_download_generic","headline":"watch_anywhere_download_hd"}},{"image":{"alt":"watch_anywhere_laptop_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_website_UI.png"}]},"messages":{"subhead":"watch_anywhere_laptop_content","headline":"watch_anywhere_laptop_content_hd"}}]}},"renderType":"device"},{"tabHeader":{"icon":"icon-price-tag","messages":{"headerSmall":"watch_pricing_small_screen","header":"watch_pricing"},"iconSmall":"icon-price-tag"},"tabBody":{"header":{"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_pricing_content"}},"body":{}},"renderType":"price"}],"messages":[{"headerSmall":"learn_more_about_netflix_small_screen","header":"learn_more_about_netflix"}],"type":"thisIsNetflix","variation":"dark","activeTab":"0"},{"cards":["card_hero","card_watchOnTv","card_watchOnDevice","card_kidsValueProp","card_downloadAndWatch","card_watchContentSampling","card_faq"],"type":"fuji"},{"messages":{"ctaButton":"button_get_started","ctaButton_never":"button_finishsignup_capitalized","ctaButton_former":"button_restart_your_membership_capitalized"},"type":"fuji_ctas"},{"type":"card_kidsValueProp","cardType":"animation","name":"kidsValueProp","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fcards\x2FkidsValueProp.png","labels":{"headline":{"string":"kids_profile_title"},"subHeadline":{"string":"kids_profile_body"}},"flipped":false,"kidsValuePropCard":{"url":"https:\x2F\x2Focc-0-299-300.1.nflxso.net\x2Fdnm\x2Fapi\x2Fv6\x2F19OhWN2dO19C9txTON9tvTFtefw\x2FAAAABVr8nYuAg0xDpXDv0VI9HUoH7r2aGp4TKRCsKNQrMwxzTtr-NlwOHeS8bCI2oeZddmu3nMYr3j9MjYhHyjBASb1FaOGYZNYvPBCL.png\x3Fr\x3D54d"}},{"type":"card_faq","cardType":"faq","name":"faq","labels":{"headline":{"string":"faq_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}]},{"type":"card_downloadAndWatch","cardType":"animation","name":"downloadAndWatch","videoid":"80057281","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fmobile-0819.jpg","animation":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fboxshot.png","labels":{"headline":{"string":"download_headline_fuji"},"subHeadline":{"string":"ad_plan_supports_downloads_sub_headline"},"animationMessages":[{"string":"download_message_status_fuji"}]},"flipped":true,"downloadVideo":{"title":"Stranger\x20Things"}},{"type":"card_watchOnTv","cardType":"animation","name":"watchOnTv","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Ftv.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-tv-0819.m4v","labels":{"headline":{"string":"tv_headline_fuji"},"subHeadline":{"string":"tv_sub_headline_fuji"}}},{"type":"card_hero","cardType":"hero","name":"hero_fuji","image":"vlv","labels":{"headline":{"string":"hero_headline_fuji"},"subHeadline":{"string":"hero_sub_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}],"messageParams":{"planPricePREMIUM":"\u00A317.99","planPriceSTANDARD":"\u00A310.99","planPriceADS":"\u00A34.99","planPrice":"\u00A34.99"}},{"type":"card_watchOnDevice","cardType":"animation","name":"watchOnDevice","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fdevice-pile.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-devices.m4v","labels":{"headline":{"string":"device_headline_fuji"},"subHeadline":{"string":"device_sub_headline_fuji"}},"flipped":true},{"type":"card_freePlanAndroid","cardType":"animation","name":"freePlanAndroid","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fab36101\x2Fnmhp\x2Fen.jpg","labels":{"headline":{"string":"free_plan_mobile_headline_fuji"},"subHeadline":{"string":"free_plan_sub_headline_fuji"}},"ctas":[{"ctaType":"ctaLink","ctaStyle":"text_chevron","ctaPath":"https:\x2F\x2Fplay.google.com\x2Fstore\x2Fapps\x2Fdetails\x3Fid\x3Dcom.netflix.mediaclient","viewName":"nmLanding","messages":{"default":"free_plan_button_fuji"}}]},{"image":{"numberOfLoops":"continuous","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Fvlv3\x2F9f46b569-aff7-4975-9b8e-3212e4637f16\x2Fb5e570d2-ae63-44ab-a10c-730d4d95f0fa\x2FGB-en-20240415-popsignuptwoweeks-perspective_alpha_website_{size}.jpg"}],"tagMap":{}},"type":"concord"}],"thisIsNetflix":{"tabs":[{"tabHeader":{"icon":"icon-cancel","messages":{"headerSmall":"cancel_anytime_small_screen","header":"cancel_anytime"},"iconSmall":"icon-cancel"},"tabBody":{"header":{},"body":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_cancelanytime_withdevice.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"cancel_anytime_content"}}},"renderType":"cancelAnytime"},{"tabHeader":{"icon":"icon-cross-device-screens-desktop","messages":{"headerSmall":"watch_anywhere_mobile_optimized","header":"watch_anywhere"},"iconSmall":"icon-cross-device-screens-small"},"tabBody":{"header":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_NFLX_app_icon.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_anywhere_logo_content"}},"body":{"devices":[{"image":{"alt":"watch_anywhere_tv_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_TV_UI.png"}]},"messages":{"subhead":"watch_anywhere_tv_content_chromecast","headline":"watch_anywhere_tv_content_hd"}},{"image":{"alt":"watch_anywhere_download_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_mobile_tablet_UI_2.png"}]},"messages":{"subhead":"watch_anywhere_download_generic","headline":"watch_anywhere_download_hd"}},{"image":{"alt":"watch_anywhere_laptop_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_website_UI.png"}]},"messages":{"subhead":"watch_anywhere_laptop_content","headline":"watch_anywhere_laptop_content_hd"}}]}},"renderType":"device"},{"tabHeader":{"icon":"icon-price-tag","messages":{"headerSmall":"watch_pricing_small_screen","header":"watch_pricing"},"iconSmall":"icon-price-tag"},"tabBody":{"header":{"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_pricing_content"}},"body":{}},"renderType":"price"}],"messages":[{"headerSmall":"learn_more_about_netflix_small_screen","header":"learn_more_about_netflix"}],"type":"thisIsNetflix","variation":"dark","activeTab":"0"},"fuji":{"cards":["card_hero","card_watchOnTv","card_watchOnDevice","card_kidsValueProp","card_downloadAndWatch","card_watchContentSampling","card_faq"]},"fuji_ctas":{"messages":{"ctaButton":"button_get_started","ctaButton_never":"button_finishsignup_capitalized","ctaButton_former":"button_restart_your_membership_capitalized"}},"card_kidsValueProp":{"cardType":"animation","name":"kidsValueProp","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fcards\x2FkidsValueProp.png","labels":{"headline":{"string":"kids_profile_title"},"subHeadline":{"string":"kids_profile_body"}},"flipped":false,"kidsValuePropCard":{"url":"https:\x2F\x2Focc-0-299-300.1.nflxso.net\x2Fdnm\x2Fapi\x2Fv6\x2F19OhWN2dO19C9txTON9tvTFtefw\x2FAAAABVr8nYuAg0xDpXDv0VI9HUoH7r2aGp4TKRCsKNQrMwxzTtr-NlwOHeS8bCI2oeZddmu3nMYr3j9MjYhHyjBASb1FaOGYZNYvPBCL.png\x3Fr\x3D54d"}},"card_faq":{"cardType":"faq","name":"faq","labels":{"headline":{"string":"faq_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}]},"card_downloadAndWatch":{"cardType":"animation","name":"downloadAndWatch","videoid":"80057281","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fmobile-0819.jpg","animation":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fboxshot.png","labels":{"headline":{"string":"download_headline_fuji"},"subHeadline":{"string":"ad_plan_supports_downloads_sub_headline"},"animationMessages":[{"string":"download_message_status_fuji"}]},"flipped":true,"downloadVideo":{"title":"Stranger\x20Things"}},"card_watchOnTv":{"cardType":"animation","name":"watchOnTv","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Ftv.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-tv-0819.m4v","labels":{"headline":{"string":"tv_headline_fuji"},"subHeadline":{"string":"tv_sub_headline_fuji"}}},"card_hero":{"cardType":"hero","name":"hero_fuji","image":"vlv","labels":{"headline":{"string":"hero_headline_fuji"},"subHeadline":{"string":"hero_sub_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}],"messageParams":{"planPricePREMIUM":"\u00A317.99","planPriceSTANDARD":"\u00A310.99","planPriceADS":"\u00A34.99","planPrice":"\u00A34.99"}},"card_watchOnDevice":{"cardType":"animation","name":"watchOnDevice","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fdevice-pile.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-devices.m4v","labels":{"headline":{"string":"device_headline_fuji"},"subHeadline":{"string":"device_sub_headline_fuji"}},"flipped":true},"card_freePlanAndroid":{"cardType":"animation","name":"freePlanAndroid","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fab36101\x2Fnmhp\x2Fen.jpg","labels":{"headline":{"string":"free_plan_mobile_headline_fuji"},"subHeadline":{"string":"free_plan_sub_headline_fuji"}},"ctas":[{"ctaType":"ctaLink","ctaStyle":"text_chevron","ctaPath":"https:\x2F\x2Fplay.google.com\x2Fstore\x2Fapps\x2Fdetails\x3Fid\x3Dcom.netflix.mediaclient","viewName":"nmLanding","messages":{"default":"free_plan_button_fuji"}}]},"debug":"","sessionData":""},"initialPathname":"\x2F\x3Flocale\x3Den-GB","trackingInfo":{"flow":"signupSimplicity","mode":"welcome","actions":["startAction","signInAction","saveAction"]},"customization":{"thisIsNetflix":{"tabs":[{"tabHeader":{"icon":"icon-cancel","messages":{"headerSmall":"cancel_anytime_small_screen","header":"cancel_anytime"},"iconSmall":"icon-cancel"},"tabBody":{"header":{},"body":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_cancelanytime_withdevice.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"cancel_anytime_content"}}},"renderType":"cancelAnytime"},{"tabHeader":{"icon":"icon-cross-device-screens-desktop","messages":{"headerSmall":"watch_anywhere_mobile_optimized","header":"watch_anywhere"},"iconSmall":"icon-cross-device-screens-small"},"tabBody":{"header":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_NFLX_app_icon.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_anywhere_logo_content"}},"body":{"devices":[{"image":{"alt":"watch_anywhere_tv_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_TV_UI.png"}]},"messages":{"subhead":"watch_anywhere_tv_content_chromecast","headline":"watch_anywhere_tv_content_hd"}},{"image":{"alt":"watch_anywhere_download_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_mobile_tablet_UI_2.png"}]},"messages":{"subhead":"watch_anywhere_download_generic","headline":"watch_anywhere_download_hd"}},{"image":{"alt":"watch_anywhere_laptop_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_website_UI.png"}]},"messages":{"subhead":"watch_anywhere_laptop_content","headline":"watch_anywhere_laptop_content_hd"}}]}},"renderType":"device"},{"tabHeader":{"icon":"icon-price-tag","messages":{"headerSmall":"watch_pricing_small_screen","header":"watch_pricing"},"iconSmall":"icon-price-tag"},"tabBody":{"header":{"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_pricing_content"}},"body":{}},"renderType":"price"}],"messages":[{"headerSmall":"learn_more_about_netflix_small_screen","header":"learn_more_about_netflix"}],"type":"thisIsNetflix","variation":"dark","activeTab":"0"},"fuji":{"cards":["card_hero","card_watchOnTv","card_watchOnDevice","card_kidsValueProp","card_downloadAndWatch","card_watchContentSampling","card_faq"],"type":"fuji"},"fuji_ctas":{"messages":{"ctaButton":"button_get_started","ctaButton_never":"button_finishsignup_capitalized","ctaButton_former":"button_restart_your_membership_capitalized"},"type":"fuji_ctas"},"card_kidsValueProp":{"type":"card_kidsValueProp","cardType":"animation","name":"kidsValueProp","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fcards\x2FkidsValueProp.png","labels":{"headline":{"string":"kids_profile_title"},"subHeadline":{"string":"kids_profile_body"}},"flipped":false,"kidsValuePropCard":{"url":"https:\x2F\x2Focc-0-299-300.1.nflxso.net\x2Fdnm\x2Fapi\x2Fv6\x2F19OhWN2dO19C9txTON9tvTFtefw\x2FAAAABVr8nYuAg0xDpXDv0VI9HUoH7r2aGp4TKRCsKNQrMwxzTtr-NlwOHeS8bCI2oeZddmu3nMYr3j9MjYhHyjBASb1FaOGYZNYvPBCL.png\x3Fr\x3D54d"}},"card_faq":{"type":"card_faq","cardType":"faq","name":"faq","labels":{"headline":{"string":"faq_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}]},"card_downloadAndWatch":{"type":"card_downloadAndWatch","cardType":"animation","name":"downloadAndWatch","videoid":"80057281","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fmobile-0819.jpg","animation":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fboxshot.png","labels":{"headline":{"string":"download_headline_fuji"},"subHeadline":{"string":"ad_plan_supports_downloads_sub_headline"},"animationMessages":[{"string":"download_message_status_fuji"}]},"flipped":true,"downloadVideo":{"title":"Stranger\x20Things"}},"card_watchOnTv":{"type":"card_watchOnTv","cardType":"animation","name":"watchOnTv","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Ftv.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-tv-0819.m4v","labels":{"headline":{"string":"tv_headline_fuji"},"subHeadline":{"string":"tv_sub_headline_fuji"}}},"card_hero":{"type":"card_hero","cardType":"hero","name":"hero_fuji","image":"vlv","labels":{"headline":{"string":"hero_headline_fuji"},"subHeadline":{"string":"hero_sub_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}],"messageParams":{"planPricePREMIUM":"\u00A317.99","planPriceSTANDARD":"\u00A310.99","planPriceADS":"\u00A34.99","planPrice":"\u00A34.99"}},"card_watchOnDevice":{"type":"card_watchOnDevice","cardType":"animation","name":"watchOnDevice","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fdevice-pile.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-devices.m4v","labels":{"headline":{"string":"device_headline_fuji"},"subHeadline":{"string":"device_sub_headline_fuji"}},"flipped":true},"card_freePlanAndroid":{"type":"card_freePlanAndroid","cardType":"animation","name":"freePlanAndroid","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fab36101\x2Fnmhp\x2Fen.jpg","labels":{"headline":{"string":"free_plan_mobile_headline_fuji"},"subHeadline":{"string":"free_plan_sub_headline_fuji"}},"ctas":[{"ctaType":"ctaLink","ctaStyle":"text_chevron","ctaPath":"https:\x2F\x2Fplay.google.com\x2Fstore\x2Fapps\x2Fdetails\x3Fid\x3Dcom.netflix.mediaclient","viewName":"nmLanding","messages":{"default":"free_plan_button_fuji"}}]},"concord":{"image":{"numberOfLoops":"continuous","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Fvlv3\x2F9f46b569-aff7-4975-9b8e-3212e4637f16\x2Fb5e570d2-ae63-44ab-a10c-730d4d95f0fa\x2FGB-en-20240415-popsignuptwoweeks-perspective_alpha_website_{size}.jpg"}],"tagMap":{}},"type":"concord"}},"thisIsNetflix":{"tabs":[{"tabHeader":{"icon":"icon-cancel","messages":{"headerSmall":"cancel_anytime_small_screen","header":"cancel_anytime"},"iconSmall":"icon-cancel"},"tabBody":{"header":{},"body":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_cancelanytime_withdevice.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"cancel_anytime_content"}}},"renderType":"cancelAnytime"},{"tabHeader":{"icon":"icon-cross-device-screens-desktop","messages":{"headerSmall":"watch_anywhere_mobile_optimized","header":"watch_anywhere"},"iconSmall":"icon-cross-device-screens-small"},"tabBody":{"header":{"image":{"imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_NFLX_app_icon.png"}]},"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_anywhere_logo_content"}},"body":{"devices":[{"image":{"alt":"watch_anywhere_tv_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_TV_UI.png"}]},"messages":{"subhead":"watch_anywhere_tv_content_chromecast","headline":"watch_anywhere_tv_content_hd"}},{"image":{"alt":"watch_anywhere_download_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_mobile_tablet_UI_2.png"}]},"messages":{"subhead":"watch_anywhere_download_generic","headline":"watch_anywhere_download_hd"}},{"image":{"alt":"watch_anywhere_laptop_content_hd_img_alt","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fhome\x2FthisIsNetflix\x2Fmodules\x2Fasset_website_UI.png"}]},"messages":{"subhead":"watch_anywhere_laptop_content","headline":"watch_anywhere_laptop_content_hd"}}]}},"renderType":"device"},{"tabHeader":{"icon":"icon-price-tag","messages":{"headerSmall":"watch_pricing_small_screen","header":"watch_pricing"},"iconSmall":"icon-price-tag"},"tabBody":{"header":{"messages":{"ctaButton":"button_join_free_for_a_month","headline":"watch_pricing_content"}},"body":{}},"renderType":"price"}],"messages":[{"headerSmall":"learn_more_about_netflix_small_screen","header":"learn_more_about_netflix"}],"type":"thisIsNetflix","variation":"dark","activeTab":"0"},"fuji":{"cards":["card_hero","card_watchOnTv","card_watchOnDevice","card_kidsValueProp","card_downloadAndWatch","card_watchContentSampling","card_faq"],"type":"fuji"},"fuji_ctas":{"messages":{"ctaButton":"button_get_started","ctaButton_never":"button_finishsignup_capitalized","ctaButton_former":"button_restart_your_membership_capitalized"},"type":"fuji_ctas"},"card_kidsValueProp":{"type":"card_kidsValueProp","cardType":"animation","name":"kidsValueProp","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fcards\x2FkidsValueProp.png","labels":{"headline":{"string":"kids_profile_title"},"subHeadline":{"string":"kids_profile_body"}},"flipped":false,"kidsValuePropCard":{"url":"https:\x2F\x2Focc-0-299-300.1.nflxso.net\x2Fdnm\x2Fapi\x2Fv6\x2F19OhWN2dO19C9txTON9tvTFtefw\x2FAAAABVr8nYuAg0xDpXDv0VI9HUoH7r2aGp4TKRCsKNQrMwxzTtr-NlwOHeS8bCI2oeZddmu3nMYr3j9MjYhHyjBASb1FaOGYZNYvPBCL.png\x3Fr\x3D54d"}},"card_faq":{"type":"card_faq","cardType":"faq","name":"faq","labels":{"headline":{"string":"faq_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}]},"card_downloadAndWatch":{"type":"card_downloadAndWatch","cardType":"animation","name":"downloadAndWatch","videoid":"80057281","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fmobile-0819.jpg","animation":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fboxshot.png","labels":{"headline":{"string":"download_headline_fuji"},"subHeadline":{"string":"ad_plan_supports_downloads_sub_headline"},"animationMessages":[{"string":"download_message_status_fuji"}]},"flipped":true,"downloadVideo":{"title":"Stranger\x20Things"}},"card_watchOnTv":{"type":"card_watchOnTv","cardType":"animation","name":"watchOnTv","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Ftv.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-tv-0819.m4v","labels":{"headline":{"string":"tv_headline_fuji"},"subHeadline":{"string":"tv_sub_headline_fuji"}}},"card_hero":{"type":"card_hero","cardType":"hero","name":"hero_fuji","image":"vlv","labels":{"headline":{"string":"hero_headline_fuji"},"subHeadline":{"string":"hero_sub_headline_fuji"}},"ctas":[{"ctaType":"emailForm","ctaStyle":"default_chevron"}],"messageParams":{"planPricePREMIUM":"\u00A317.99","planPriceSTANDARD":"\u00A310.99","planPriceADS":"\u00A34.99","planPrice":"\u00A34.99"}},"card_watchOnDevice":{"type":"card_watchOnDevice","cardType":"animation","name":"watchOnDevice","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fdevice-pile.png","video":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2FourStory\x2Ffuji\x2Fdesktop\x2Fvideo-devices.m4v","labels":{"headline":{"string":"device_headline_fuji"},"subHeadline":{"string":"device_sub_headline_fuji"}},"flipped":true},"card_freePlanAndroid":{"type":"card_freePlanAndroid","cardType":"animation","name":"freePlanAndroid","image":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Facquisition\x2Fab36101\x2Fnmhp\x2Fen.jpg","labels":{"headline":{"string":"free_plan_mobile_headline_fuji"},"subHeadline":{"string":"free_plan_sub_headline_fuji"}},"ctas":[{"ctaType":"ctaLink","ctaStyle":"text_chevron","ctaPath":"https:\x2F\x2Fplay.google.com\x2Fstore\x2Fapps\x2Fdetails\x3Fid\x3Dcom.netflix.mediaclient","viewName":"nmLanding","messages":{"default":"free_plan_button_fuji"}}]},"concord":{"image":{"numberOfLoops":"continuous","imageSet":[{"cdnUrl":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui\x2Fvlv3\x2F9f46b569-aff7-4975-9b8e-3212e4637f16\x2Fb5e570d2-ae63-44ab-a10c-730d4d95f0fa\x2FGB-en-20240415-popsignuptwoweeks-perspective_alpha_website_{size}.jpg"}],"tagMap":{}},"type":"concord"}},"type":"Model"},"akiraBrowserCheck":{"data":{"capable":true,"supportsHTML5withDRM":"no","supportsHTML5":"no","isMobile":false},"type":"Model"},"truths":{"data":{"isAdsPlanAvailable":true,"shouldShowDoNotSellInfoLink":false,"isInEU":true,"shouldShowAdChoicesLink":true,"isIELt12":false,"isIELt10":false,"isIELt9":false,"isIELt8":false,"isIpadSafariLt8":false,"isSafariLt8":false,"isSafariGt5":false,"isChromeLt47":false,"isAndroidBrowserLt4":false,"isIELt9AndIpadLt8":false,"isBrowserFirefox":false,"isBrowserEdge":false,"isBrowserIE":false,"isBrowserChrome":false,"isBrowserSafari":false,"isBrowserOpera":false,"isAutomation":false,"isBaselineCluster":false,"takesProdTraffic":true,"masquerading":false,"inApp":false,"showCookieDisclosure":false,"showCompatibilityDisclosure":false,"showDisclosures":false,"windowOnErrorLoggingEnabled":true,"consolLoggingEnabled":true,"extendedDiacriticsLanguage":false,"isGreekAndSafari":false,"cursiveScript":false,"performanceMeasurementsEnabled":false,"devCommandLineEnabled":false,"showDevInfoConsole":false,"shouldAutofillSignup":false,"logBrowserPerformance":false,"routeTrafficThroughFTL":false,"routeAPIRequestsThroughFTL":false,"routeDocRequestsThroughFTL":false,"useServiceWorker":false,"serviceWorkerInvestigation":false,"serviceWorkerEmptyHandlers":false,"proxyRequestsThroughMemberAPI":false,"logDetailedReactErrors":true,"isOpenInPromptEligible":false,"showOpenInAppPrompt":false,"isInternal":false,"logCriticalResourceTiming":true,"akiraPage":false,"notAkiraPage":true,"isBrowseAllowed":false,"isAdsPlan":false,"canActivateProfileTransfers":false,"canManageAddOns":true,"isJqueryRequired":true,"isFakiraOrAccountPage":true,"showRatings":true,"lazyLoadLolomoDOM":true,"currentProfileIsKids":false,"showKoreanMaturityRatings":false,"showCommonSense":false,"showBroadcaster":false,"descriptiveTranscriptEnabled":true,"showKidsLink":false,"inAppNotificationsPollingEnabled":true,"profileOnrampEnabled":true,"isCl2LoggingEnabledForDiscoveryPlayback":true,"isCl2TrackingInfoMigrated":true,"renoEnabled":true,"websocketsEnabled":true,"dynamicMessagesEnabled":true,"identifierCheckEnabled":true,"akiraTtlEnabled":true,"xhrHooksEnabled":true,"profileMisMatchDetectionEnabled":true,"accountLevelPinCountries":["ID","SG","TR"],"forceStaticBillboards":false,"volatileBillboardsEnabled":true,"enablePushNotifications":false,"latestTabFirstInNav":false,"enableSafariTouchRedirect":false,"isTop10Supported":true,"isTop10KidsSupported":false,"isCreatorHomeEnabled":true,"showHeaderNotifications":true,"showAdultSwitchButton":false,"showSwitchButton":false,"allowMyListAddFromMLT":true,"hasSmallerButtons":true,"canSeeAllEpisodes":true,"redesignFollowup1Holdback":false,"redesignFollowup1HoldbackControl":false,"disableCollectionsUma":false,"enableCreatorHome":false,"newAndPopularLabel":true,"logPrefetchRowsTTLAndError":true,"enableLolomoPrefetchSixRows":false,"logDeviceAndBrowserPreference":true,"enablePageTitles":true,"enableGalleryModal":true,"moreVisibleRowHeaderLink":true,"enableAroGenreModal":true,"enableExpandableAroGenreModal":true,"enableAvifImageFormat":false,"enablePlayPrediction":false,"enableBillboardPrepare":false,"enableBillboardTitlePrepare":false,"enableDetailsTitlePrepare":false,"moreInfoMiniDPEnabled":false,"doubleThumbsRedesignEnabled":false,"enableGraphqlPreviewModal":true,"enableGraphqlClient":true,"enableNapaSearch":true,"enableKidsBrandRealignment":true,"enableAdtechPpid":false,"enableConcurrentStreamMigration":true,"enableMobileUpsellMigration":false,"showOnboardingKidsUpsell":true,"enableNewBFGHeader":false,"hasUmaMessage":false,"requireAttemptsToSkipVerifyPhoneNumberUMA":false,"ANONYMOUS":true,"CURRENT_MEMBER":false,"FORMER_MEMBER":false,"NEVER_MEMBER":false,"isPlaybackAllowed":false,"mdx2Enabled":false,"mdxEnabledWithTestAccount":null,"requiresNFPlayer":false,"playbackAdvisoriesEnabled":true,"skipCreditsEnabled":true,"playerUIMilestonesEnabled":false,"seamlessPlaybackEnabledForUI":true,"isPlayerPerformanceReportingEnabled":true,"reportAProblemControlEnabled":true,"playerUseUmaContainer":true,"watchingInteractiveTitle":false,"interactiveDebugEnabled":false,"cropContentLetterboxing":true,"preferUnletterboxedContent":true,"callVideoPlayerEngageMethod":true,"interactiveSeekControlsDisabled":false,"interactiveSkipTutorialDisabled":false,"enableProductizedPlayerUI":false,"showUpsellLegalDisclaimer":false,"playbackSpeedEnabled":true,"reportAProblemEnabled":true,"reportAProblemShowSensitivityCheckbox":true,"disableGlobalKeyboardScrub":false,"useDGSContentPreviewPin":false,"useDGSDisplayCodeInterstitial":true,"pauseAdsForecastingEnabled":true,"playerPauseAdsAlphaEnabled":false,"pauseAdsInvisibleRequestsEnabled":false,"isIosInAppSourced":false,"redirectOnIosInAppSourced":false,"showReferralLegacyModal":false,"isSimpleDroid":false,"isGiftCardFlow":false,"shouldShowEmailVerifiedBanner":false,"shouldShowEmailVerifyFailedBanner":false,"isGiftCardMemberMode":false,"isSignupSimplicity":true,"isMemberSimplicity":false,"isOnboardingSimplicity":false,"isPartnerConnectSimplicity":false,"isBeneficiaryGraduate":false,"isPartnerBilled":false,"blockAndroidIntent":false,"mockPaymentRequestEnabled":null,"mockItunesPaymentEnabled":null,"isInApp":false,"isIOSInApp":false,"netflixClientPlatform":"browser","isReferralSignupFlow":false,"showPartnerHeader":false,"isValidOriginalsLinkCountry":false,"isNonMemberManualFontDetectionNeeded":false,"isLanguageSelectorInHeader":false,"require_additional_cookie_consent":true,"includeOneTrustScript":true,"forceOneTrustEnglishLocalization":false,"shouldIncludeLanguageDisclaimer":false,"isAB36101Enabled":true,"isAdsPlanRichBannerEnabled":true,"isAdsLandingRedirectEnabled":false,"isReferredByAndroidApp":false,"isClipsDeepLink":false,"isExtrasDeepLink":false,"isSupplementalDeepLink":false,"isNmContentPage":false,"isNmTitlePage":false,"logHighCardinalityTitlePageMetrics":null,"isNmCollectionsPage":false,"showNmCollectionsPages":true,"hideExternalLogin":false,"clearMslDataOnLogout":true,"isVideoMerchEnabled":false,"hasVideoMerchInBob":false,"hasVideoMerchInJaw":false,"userDisabledVideoMerchInSettings":false,"isArabic":false,"isThai":false,"useManualFontDetection":true,"mopVerificationForChangeEmailEnabled":true,"fromIOSApp":false,"isProfileTransferPage":false,"shouldAllowDeferredUpgrades":false,"isiOSOpenExternalLinkEnabled":true,"isAccountRedesignEnabled":false,"isAccountRedesignPhaseOnePointFiveEnabled":false,"isEmailVerificationEnabled":true,"isAccountRedesignPhaseTwoEnabled":false,"isCloudGamesEnabled":true}},"services":{"data":{"api":{"protocol":"https","hostname":"www.netflix.com","name":"api","path":["api","shakti"],"apiRoot":"api"},"akiraBuildIdentifier":{"protocol":"https","hostname":"www.netflix.com","name":"akiraBuildIdentifier","path":["\x2Fakira\x2FbuildIdentifier"]},"memberapi":{"protocol":"https","hostname":"www.netflix.com","path":["\x2Fnq\x2Fwebsite\x2Fmemberapi\x2Fvd18c8b6b"],"isNodequark":true}},"type":"Model"},"consolidatedLogging":{"data":{"loggingConstants":{"pageName":"nmLanding","locale":"en-GB","sessionLength":30,"uiMode":"nonmember","ownerToken":null,"accept-language":""},"enabled":true},"type":"Model"},"evidon":{"data":{},"type":"Model"},"actionData":{"data":{"pageName":"fuji","useExpandedFooter":true},"type":"Model"},"countryCodes":{"data":{"codeName":"S-Icarus-6.Bart-2","codes":[{"id":"AF","code":"93","name":"Afghanistan"},{"id":"AX","code":"358","name":"\u00C5land\x20Islands"},{"id":"AL","code":"355","name":"Albania"},{"id":"DZ","code":"213","name":"Algeria"},{"id":"AS","code":"1","name":"American\x20Samoa"},{"id":"AD","code":"376","name":"Andorra"},{"id":"AO","code":"244","name":"Angola"},{"id":"AI","code":"1","name":"Anguilla"},{"id":"AQ","code":"672","name":"Antarctica"},{"id":"AG","code":"1","name":"Antigua\x20\x26\x20Barbuda"},{"id":"AR","code":"54","name":"Argentina"},{"id":"AM","code":"374","name":"Armenia"},{"id":"AW","code":"297","name":"Aruba"},{"id":"AU","code":"61","name":"Australia"},{"id":"AT","code":"43","name":"Austria"},{"id":"AZ","code":"994","name":"Azerbaijan"},{"id":"BS","code":"1","name":"Bahamas"},{"id":"BH","code":"973","name":"Bahrain"},{"id":"BD","code":"880","name":"Bangladesh"},{"id":"BB","code":"1","name":"Barbados"},{"id":"BY","code":"375","name":"Belarus"},{"id":"BE","code":"32","name":"Belgium"},{"id":"BZ","code":"501","name":"Belize"},{"id":"BJ","code":"229","name":"Benin"},{"id":"BM","code":"1","name":"Bermuda"},{"id":"BT","code":"975","name":"Bhutan"},{"id":"BO","code":"591","name":"Bolivia"},{"id":"BA","code":"387","name":"Bosnia\x20\x26\x20Herzegovina"},{"id":"BW","code":"267","name":"Botswana"},{"id":"BV","code":"47","name":"Bouvet\x20Island"},{"id":"BR","code":"55","name":"Brazil"},{"id":"IO","code":"246","name":"British\x20Indian\x20Ocean\x20Territory"},{"id":"VG","code":"1","name":"British\x20Virgin\x20Islands"},{"id":"BN","code":"673","name":"Brunei"},{"id":"BG","code":"359","name":"Bulgaria"},{"id":"BF","code":"226","name":"Burkina\x20Faso"},{"id":"BI","code":"257","name":"Burundi"},{"id":"KH","code":"855","name":"Cambodia"},{"id":"CM","code":"237","name":"Cameroon"},{"id":"CA","code":"1","name":"Canada"},{"id":"CV","code":"238","name":"Cape\x20Verde"},{"id":"BQ","code":"599","name":"Caribbean\x20Netherlands"},{"id":"KY","code":"1","name":"Cayman\x20Islands"},{"id":"CF","code":"236","name":"Central\x20African\x20Republic"},{"id":"TD","code":"235","name":"Chad"},{"id":"CL","code":"56","name":"Chile"},{"id":"CN","code":"86","name":"China"},{"id":"CX","code":"61","name":"Christmas\x20Island"},{"id":"CC","code":"61","name":"Cocos\x20\x28Keeling\x29\x20Islands"},{"id":"CO","code":"57","name":"Colombia"},{"id":"KM","code":"269","name":"Comoros"},{"id":"CG","code":"242","name":"Congo\x20-\x20Brazzaville"},{"id":"CD","code":"243","name":"Congo\x20-\x20Kinshasa"},{"id":"CK","code":"682","name":"Cook\x20Islands"},{"id":"CR","code":"506","name":"Costa\x20Rica"},{"id":"CI","code":"225","name":"C\u00F4te\x20d\u2019Ivoire"},{"id":"HR","code":"385","name":"Croatia"},{"id":"CU","code":"53","name":"Cuba"},{"id":"AN","code":"599","name":"Cura\u00E7ao"},{"id":"CW","code":"599","name":"Cura\u00E7ao"},{"id":"CY","code":"357","name":"Cyprus"},{"id":"CZ","code":"420","name":"Czechia"},{"id":"DK","code":"45","name":"Denmark"},{"id":"DJ","code":"253","name":"Djibouti"},{"id":"DM","code":"1","name":"Dominica"},{"id":"DO","code":"1","name":"Dominican\x20Republic"},{"id":"EC","code":"593","name":"Ecuador"},{"id":"EG","code":"20","name":"Egypt"},{"id":"SV","code":"503","name":"El\x20Salvador"},{"id":"GQ","code":"240","name":"Equatorial\x20Guinea"},{"id":"ER","code":"291","name":"Eritrea"},{"id":"EE","code":"372","name":"Estonia"},{"id":"SZ","code":"268","name":"Eswatini"},{"id":"ET","code":"251","name":"Ethiopia"},{"id":"FK","code":"500","name":"Falkland\x20Islands"},{"id":"FO","code":"298","name":"Faroe\x20Islands"},{"id":"FJ","code":"679","name":"Fiji"},{"id":"FI","code":"358","name":"Finland"},{"id":"FR","code":"33","name":"France"},{"id":"GF","code":"594","name":"French\x20Guiana"},{"id":"PF","code":"689","name":"French\x20Polynesia"},{"id":"TF","code":"262","name":"French\x20Southern\x20Territories"},{"id":"GA","code":"241","name":"Gabon"},{"id":"GM","code":"220","name":"Gambia"},{"id":"GE","code":"995","name":"Georgia"},{"id":"DE","code":"49","name":"Germany"},{"id":"GH","code":"233","name":"Ghana"},{"id":"GI","code":"350","name":"Gibraltar"},{"id":"GR","code":"30","name":"Greece"},{"id":"GL","code":"299","name":"Greenland"},{"id":"GD","code":"1","name":"Grenada"},{"id":"GP","code":"590","name":"Guadeloupe"},{"id":"GU","code":"1","name":"Guam"},{"id":"GT","code":"502","name":"Guatemala"},{"id":"GG","code":"44","name":"Guernsey"},{"id":"GN","code":"224","name":"Guinea"},{"id":"GW","code":"245","name":"Guinea-Bissau"},{"id":"GY","code":"592","name":"Guyana"},{"id":"HT","code":"509","name":"Haiti"},{"id":"HM","code":"672","name":"Heard\x20\x26\x20McDonald\x20Islands"},{"id":"HN","code":"504","name":"Honduras"},{"id":"HK","code":"852","name":"Hong\x20Kong\x20SAR\x20China"},{"id":"HU","code":"36","name":"Hungary"},{"id":"IS","code":"354","name":"Iceland"},{"id":"IN","code":"91","name":"India"},{"id":"ID","code":"62","name":"Indonesia"},{"id":"IR","code":"98","name":"Iran"},{"id":"IQ","code":"964","name":"Iraq"},{"id":"IE","code":"353","name":"Ireland"},{"id":"IM","code":"44","name":"Isle\x20of\x20Man"},{"id":"IL","code":"972","name":"Israel"},{"id":"IT","code":"39","name":"Italy"},{"id":"JM","code":"1","name":"Jamaica"},{"id":"JP","code":"81","name":"Japan"},{"id":"JE","code":"44","name":"Jersey"},{"id":"JO","code":"962","name":"Jordan"},{"id":"KZ","code":"7","name":"Kazakhstan"},{"id":"KE","code":"254","name":"Kenya"},{"id":"KI","code":"686","name":"Kiribati"},{"id":"XK","code":"383","name":"Kosovo"},{"id":"KW","code":"965","name":"Kuwait"},{"id":"KG","code":"996","name":"Kyrgyzstan"},{"id":"LA","code":"856","name":"Laos"},{"id":"LV","code":"371","name":"Latvia"},{"id":"LB","code":"961","name":"Lebanon"},{"id":"LS","code":"266","name":"Lesotho"},{"id":"LR","code":"231","name":"Liberia"},{"id":"LY","code":"218","name":"Libya"},{"id":"LI","code":"423","name":"Liechtenstein"},{"id":"LT","code":"370","name":"Lithuania"},{"id":"LU","code":"352","name":"Luxembourg"},{"id":"MO","code":"853","name":"Macao\x20SAR\x20China"},{"id":"MG","code":"261","name":"Madagascar"},{"id":"MW","code":"265","name":"Malawi"},{"id":"MY","code":"60","name":"Malaysia"},{"id":"MV","code":"960","name":"Maldives"},{"id":"ML","code":"223","name":"Mali"},{"id":"MT","code":"356","name":"Malta"},{"id":"MH","code":"692","name":"Marshall\x20Islands"},{"id":"MQ","code":"596","name":"Martinique"},{"id":"MR","code":"222","name":"Mauritania"},{"id":"MU","code":"230","name":"Mauritius"},{"id":"YT","code":"262","name":"Mayotte"},{"id":"MX","code":"52","name":"Mexico"},{"id":"FM","code":"691","name":"Micronesia"},{"id":"MD","code":"373","name":"Moldova"},{"id":"MC","code":"377","name":"Monaco"},{"id":"MN","code":"976","name":"Mongolia"},{"id":"ME","code":"382","name":"Montenegro"},{"id":"MS","code":"1","name":"Montserrat"},{"id":"MA","code":"212","name":"Morocco"},{"id":"MZ","code":"258","name":"Mozambique"},{"id":"MM","code":"95","name":"Myanmar\x20\x28Burma\x29"},{"id":"NA","code":"264","name":"Namibia"},{"id":"NR","code":"674","name":"Nauru"},{"id":"NP","code":"977","name":"Nepal"},{"id":"NL","code":"31","name":"Netherlands"},{"id":"NC","code":"687","name":"New\x20Caledonia"},{"id":"NZ","code":"64","name":"New\x20Zealand"},{"id":"NI","code":"505","name":"Nicaragua"},{"id":"NE","code":"227","name":"Niger"},{"id":"NG","code":"234","name":"Nigeria"},{"id":"NU","code":"683","name":"Niue"},{"id":"NF","code":"672","name":"Norfolk\x20Island"},{"id":"MP","code":"1","name":"Northern\x20Mariana\x20Islands"},{"id":"KP","code":"850","name":"North\x20Korea"},{"id":"MK","code":"389","name":"North\x20Macedonia"},{"id":"NO","code":"47","name":"Norway"},{"id":"OM","code":"968","name":"Oman"},{"id":"PK","code":"92","name":"Pakistan"},{"id":"PW","code":"680","name":"Palau"},{"id":"PS","code":"970","name":"Palestinian\x20Territories"},{"id":"PA","code":"507","name":"Panama"},{"id":"PG","code":"675","name":"Papua\x20New\x20Guinea"},{"id":"PY","code":"595","name":"Paraguay"},{"id":"PE","code":"51","name":"Peru"},{"id":"PH","code":"63","name":"Philippines"},{"id":"PN","code":"64","name":"Pitcairn\x20Islands"},{"id":"PL","code":"48","name":"Poland"},{"id":"PT","code":"351","name":"Portugal"},{"id":"PR","code":"1","name":"Puerto\x20Rico"},{"id":"QA","code":"974","name":"Qatar"},{"id":"RE","code":"262","name":"R\u00E9union"},{"id":"RO","code":"40","name":"Romania"},{"id":"RU","code":"7","name":"Russia"},{"id":"RW","code":"250","name":"Rwanda"},{"id":"WS","code":"685","name":"Samoa"},{"id":"SM","code":"378","name":"San\x20Marino"},{"id":"ST","code":"239","name":"S\u00E3o\x20Tom\u00E9\x20\x26\x20Pr\u00EDncipe"},{"id":"SA","code":"966","name":"Saudi\x20Arabia"},{"id":"SN","code":"221","name":"Senegal"},{"id":"RS","code":"381","name":"Serbia"},{"id":"SC","code":"248","name":"Seychelles"},{"id":"SL","code":"232","name":"Sierra\x20Leone"},{"id":"SG","code":"65","name":"Singapore"},{"id":"SX","code":"1","name":"Sint\x20Maarten"},{"id":"SK","code":"421","name":"Slovakia"},{"id":"SI","code":"386","name":"Slovenia"},{"id":"SB","code":"677","name":"Solomon\x20Islands"},{"id":"SO","code":"252","name":"Somalia"},{"id":"ZA","code":"27","name":"South\x20Africa"},{"id":"GS","code":"500","name":"South\x20Georgia\x20\x26\x20South\x20Sandwich\x20Islands"},{"id":"KR","code":"82","name":"South\x20Korea"},{"id":"SS","code":"211","name":"South\x20Sudan"},{"id":"ES","code":"34","name":"Spain"},{"id":"LK","code":"94","name":"Sri\x20Lanka"},{"id":"BL","code":"590","name":"St\x20Barth\u00E9lemy"},{"id":"SH","code":"290","name":"St\x20Helena"},{"id":"KN","code":"1","name":"St\x20Kitts\x20\x26\x20Nevis"},{"id":"LC","code":"1","name":"St\x20Lucia"},{"id":"MF","code":"590","name":"St\x20Martin"},{"id":"PM","code":"508","name":"St\x20Pierre\x20\x26\x20Miquelon"},{"id":"VC","code":"1","name":"St\x20Vincent\x20\x26\x20the\x20Grenadines"},{"id":"SD","code":"249","name":"Sudan"},{"id":"SR","code":"597","name":"Suriname"},{"id":"SJ","code":"47","name":"Svalbard\x20\x26\x20Jan\x20Mayen"},{"id":"SE","code":"46","name":"Sweden"},{"id":"CH","code":"41","name":"Switzerland"},{"id":"SY","code":"963","name":"Syria"},{"id":"TW","code":"886","name":"Taiwan"},{"id":"TJ","code":"992","name":"Tajikistan"},{"id":"TZ","code":"255","name":"Tanzania"},{"id":"TH","code":"66","name":"Thailand"},{"id":"TL","code":"670","name":"Timor-Leste"},{"id":"TG","code":"228","name":"Togo"},{"id":"TK","code":"690","name":"Tokelau"},{"id":"TO","code":"676","name":"Tonga"},{"id":"TT","code":"1","name":"Trinidad\x20\x26\x20Tobago"},{"id":"TN","code":"216","name":"Tunisia"},{"id":"TR","code":"90","name":"T\u00FCrkiye"},{"id":"TM","code":"993","name":"Turkmenistan"},{"id":"TC","code":"1","name":"Turks\x20\x26\x20Caicos\x20Islands"},{"id":"TV","code":"688","name":"Tuvalu"},{"id":"UG","code":"256","name":"Uganda"},{"id":"UA","code":"380","name":"Ukraine"},{"id":"AE","code":"971","name":"United\x20Arab\x20Emirates"},{"id":"GB","code":"44","name":"United\x20Kingdom"},{"id":"US","code":"1","name":"United\x20States"},{"id":"UY","code":"598","name":"Uruguay"},{"id":"UM","code":"1","name":"US\x20Outlying\x20Islands"},{"id":"VI","code":"1","name":"US\x20Virgin\x20Islands"},{"id":"UZ","code":"998","name":"Uzbekistan"},{"id":"VU","code":"678","name":"Vanuatu"},{"id":"VA","code":"379","name":"Vatican\x20City"},{"id":"VE","code":"58","name":"Venezuela"},{"id":"VN","code":"84","name":"Vietnam"},{"id":"WF","code":"681","name":"Wallis\x20\x26\x20Futuna"},{"id":"EH","code":"212","name":"Western\x20Sahara"},{"id":"YE","code":"967","name":"Yemen"},{"id":"ZM","code":"260","name":"Zambia"},{"id":"ZW","code":"263","name":"Zimbabwe"}]},"type":"api"},"ctaHyperlink":{"data":{"ctaParams":{"locale":"en-GB"},"ctaPath":"\x2Fsignup","fullURL":"\x2Fsignup\x3Flocale\x3Den-GB","allCTAPaths":{}},"type":"Model"},"customizationModel":{"data":{"0":{"headerSmall":"learn_more_about_netflix_small_screen","header":"learn_more_about_netflix"},"headerTitleMessage":{"fieldType":"Message","string":"headline_choose_plan_right_for_you"},"headerSubtitleMessage":{"fieldType":"Message","string":"text_downgrade_anytime"},"ctaButton":"button_get_started","textDisclaimer":{"fieldType":"Message","string":"text_disclaimer_with_resolution_fhd_uhd_hdr"},"streamDisclaimer":{"fieldType":"Message","string":"text_disclaimer_people_swasp_mhu"},"ctaButton_never":"button_finishsignup_capitalized","ctaButton_former":"button_restart_your_membership_capitalized"},"type":"Model"},"layoutClassesModel":{"data":{"dark":true,"is-mobile-optimized":false,"argo":false},"type":"Model"},"landingpagePinger":{"data":{},"type":"Model"},"adtech":{"data":{"iframeLocation":"https:\x2F\x2Fae.nflximg.net\x2Fmonet\x2Fscripts\x2Fadtech_iframe_target_05.html","doFlushBuffer":true,"gclid":"","iframeData":{"membership_status":"ANONYMOUS","country":"GB","region_code":"LND"}},"type":"Model"},"fastProps":{"data":{"netflix.window.onerror.max.count":10,"ui.iframeCommunicator.bwaTracking.isActive":true,"ui.iframeCommunicator.locations.aidsvc":"https:\x2F\x2Faidsvc.netflix.com\x2Fx","netflix.ui.akira.graphql.clientURL":"https:\x2F\x2Fweb.prod.cloud.netflix.com\x2Fgraphql","netflix.ui.akira.graphql.serverVIP":"bfgstreaming-secure","netflix.ui.akira.graphql.serverVIPSecure":true,"ui.iframeCommunicator.maxLifetimeMs":10000,"ui.iframeCommunicator.isActive":true,"shakti.cookies.autoExtendCookiesMaxAge":7776000,"netflix.ui.cookie.disclosure.privacy.url":"https:\x2F\x2Fhelp.netflix.com\x2Fen\x2Flegal\x2Fprivacy\x23cookies","web.ui.client.support.help.url.follower":"https:\x2F\x2Fhelp.netflix.com\x2Fnode\x2F30081","netflix.ui.ads.sellInfo.footerLink.url":"https:\x2F\x2Fwww.netflix.com\x2Fdnsspi","netflix.ui.ads.adchoice.footerLink.url.us":"https:\x2F\x2Fnetflix.com\x2Fadchoices-us","netflix.ui.ads.adchoice.footerLink.url.ca":"https:\x2F\x2Fnetflix.com\x2Fadchoices","netflix.ui.ads.adchoice.footerLink.url.eu":"https:\x2F\x2Fnetflix.com\x2Fadchoices","web.ui.fonts.nkufi.timeout.ms":5000,"web.ui.fonts.graphik.timeout.ms":5000,"web.ui.fonts.netflix.sans.timeout.ms":5000,"shakti.fallback.esn.enabled":false,"shakti.fallback.esn.value":"WWW-BROWSE-","netflix.graphLabs.auiDgs.baseUrl":"https:\x2F\x2Fsgw.test.cloud.netflix.com\x2F","web.ui.ab58123.heroTitles":{"global":[80237957,80996601],"IN":[81436990,80996601]},"NETFLIX_STACK":"prod","netflix.ui.signup.simplicity.log_signup_customization_fallback":true,"netflix.ui.signup.simplesilver.log_signup_customization_fallback":true,"netflix.ui.signup.quicksilver.iosAdTrackingEnabled":true,"netflix.ui.signup.inapp.androidAdTrackingDisabled":null,"web.ui.signup.falcor.client.timeout.ms":30000,"shakti.consolidated.logging.enabled":true,"shakti.consolidatedLogging.source":"www","shakti.consolidatedLogging.sendRetries":5,"shakti.consolidatedLogging.sendBackoffMs":1000,"shakti.consolidatedLogging.batchIntervalMs":5000,"shakti.consolidatedLogging.batchSize":20,"shakti.consolidatedLogging.userInputTime":1000,"shakti.safeRedirectHostnames":["netflix.com","www.netflix.com","tudum.netflix.com","help.netflix.com"],"NETFLIX_APP":"nq_website_nonmember","shakti.webVitals.enabledApps":["nq_website_core","nq_website_pulse","nq_website_nonmember"],"shakti.consolidatedLogging.endpointBasePath":"https:\x2F\x2Flogs.netflix.com\x2Flog","shakti.clear.cookies.on.403.client":true,"web.ui.missing_strings.enabled":true,"AUI_NQ_ENDPOINT_VERSION_OVERRIDE":null,"netflix.ui.cookie.useOneTrustBanner":true,"netflix.shakti.payment.publickey.digicertEndpoint":"https:\x2F\x2Fncds.nflxext.com\x2Fv1\x2F2\x2Fjsonp\x2Fcurrent"}},"assetHosts":{"data":{"ASSETS_HOST":"https:\x2F\x2Fassets.nflxext.com","IMGPATH":"https:\x2F\x2Fassets.nflxext.com\x2Fen_us","CDNPATH":"https:\x2F\x2Fassets.nflxext.com\x2Fffe\x2Fsiteui"},"type":"Model"},"shakespeareStrings":{"data":{"core\x2Fnfse-v2":{},"_a\x2Fsignup_simplicity":{},"common\x2FpageTitles":{},"common\x2FfooterResponsive":{},"signup\x2Fcommon":{},"signup\x2FpartnerVanityHeader":{},"_a\x2Fsignup_nmhp":{},"common\x2FcookieDisclosure":{},"common\x2FclientSupportCategories":{},"_a\x2Fcomponents":{},"_a\x2Fab_54612":{},"signup\x2Fsimplicity\x2FformFields":{},"signup\x2FourStory":{},"signup\x2Fads":{},"signup\x2Fhome_customized":{},"signup\x2Fsimplicity\x2FserverErrors":{},"signup\x2Fsimplicity\x2Fregistration":{},"common\x2FtermsOfUse":{},"_a\x2Freact":{},"_a\x2Faccount_sapphire":{}},"type":"api"},"i18nStrings":{"data":{"core\x2Fnfse-v2":{"nfse.header":"Something\x20went\x20wrong","nfse.body":"Sorry,\x20we\x27re\x20having\x20trouble\x20with\x20your\x20request.\x20You\x27ll\x20find\x20loads\x20to\x20explore\x20on\x20the\x20home\x20page.","ctaButtonHome":"Netflix\x20Home","ctaButtonHelp":"Learn\x20More","errorCode":"Error\x20Code\x20\x3Cstrong\x3E{errorCode}\x3C\x2Fstrong\x3E","imageSource":"FROM\x20\x3Cstrong\x3E{title}\x3C\x2Fstrong\x3E","imageSourceNailedIt":"NAILED\x20IT\x21"},"_a\x2Fsignup_simplicity":{"q\x2Fuq77":"We\x20couldn\x27t\x20verify\x20your\x20email.\x20Please\x20try\x20again\x20later.","mLZ\x2BcF":"Your\x20email\x20has\x20been\x20verified.","DtlZp3":"Name\x20on\x20card","d4MFqa":"Preferred\x20way\x20to\x20process\x20payment","Z0oZ1s":"How\x20should\x20we\x20process\x20payment\x3F"},"common\x2FpageTitles":{"page.title.default":"Netflix","page.title.accountSettings":"Account\x20Settings\x20-\x20Netflix","page.title.languageSettings":"Language\x20Settings\x20-\x20Account\x20-\x20Netflix","page.title.contentRestrictionSettings":"Viewing\x20Restrictions\x20-\x20Account\x20-\x20Netflix","page.title.profileLockSettings":"Profile\x20Lock\x20-\x20Account\x20-\x20Netflix","page.title.viewingActivity":"Viewing\x20Activity\x20-\x20Account\x20-\x20Netflix","page.title.ratingActivity":"Rating\x20Activity\x20-\x20Account\x20-\x20Netflix","page.title.subtitleSettings":"Subtitle\x20Appearance\x20-\x20Account\x20-\x20Netflix","page.title.playbackSettings":"Playback\x20Settings\x20-\x20Account\x20-\x20Netflix","page.title.communicationSettings":"Communication\x20Settings\x20-\x20Account\x20-\x20Netflix","page.title.marketingPrefs":"Marketing\x20Communications\x20-\x20Account\x20-\x20Netflix"},"common\x2FfooterResponsive":{"footer.responsive.questions":"Questions\x3F\x20Call\x20{SUPPORT_NUMBER}","footer.responsive.questionsUrl":"Questions\x3F\x20Contact\x20us.","footer.responsive.disclaimer.kr.update2019.csphone":"Netflix\x20Services\x20Korea\x20Ltd.\x20E-Commerce\x20Registration\x20Number:\x20Je\x202018-Seoul\x20Jong-ro-0426\x20Ho.\x20Phone:\x20{SUPPORT_NUMBER}","footer.responsive.disclaimer.kr.rep_email":"Email:\x20{REP_EMAIL}","footer.responsive.disclaimer.kr.rep_name":"Representative:\x20Reginald\x20Shawn\x20Thompson","footer.responsive.disclaimer.kr.address":"Address:\x2020F,\x20Tower\x20A,\x20Centropolis\x20Building\x2026,\x20Ujeongguk-ro,\x20Jongno-gu,\x20Seoul,\x2003161\x20Republic\x20of\x20Korea","footer.responsive.disclaimer.kr.business_registration":"Business\x20registration\x20number:\x20165-87-00119","footer.responsive.disclaimer.kr.hosted_by":"Hosted\x20by:\x20Amazon\x20Web\x20Services\x20Inc.","footer.responsive.disclaimer.kr.link_kftc.v3":"\x3Ca\x20href\x3D\"http:\x2F\x2Fwww.ftc.go.kr\x2FbizCommPop.do\x3Fwrkr_no\x3D1658700119\"\x3EKFTC\x20website\x3C\x2Fa\x3E","footer.responsive.language_picker.label":"Select\x20language","footer.responsive.link.cookies_separate_link":"Cookie\x20Preferences","footer.responsive.commercial.jp":"Act\x20on\x20Specified\x20Commercial\x20Transactions","footer.responsive.link.faq":"FAQ","footer.responsive.link.help":"Help\x20Centre","footer.responsive.link.account":"Account","footer.responsive.link.gift.card":"Gift\x20Cards","footer.responsive.link.media.center":"Media\x20Centre","footer.responsive.link.audio.and.subtitles":"Audio\x20and\x20Subtitles","footer.responsive.link.relations":"Investor\x20Relations","footer.responsive.link.jobs":"Jobs","footer.responsive.link.blog":"Blog","footer.responsive.link.freeTrial":"Free\x20Trial\x20Offer\x20Details","footer.responsive.link.gift":"Gift\x20Cards","footer.responsive.link.gift.redeem":"Redeem\x20gift\x20cards","footer.responsive.link.gift.buy":"Buy\x20gift\x20cards","footer.responsive.link.waysToWatch":"Ways\x20to\x20Watch","footer.responsive.link.terms":"Terms\x20of\x20Use","footer.responsive.link.terms_updated":"\x3Cspan\x20class\x3D\"terms-updated\"\x3E\x2AUpdated\x2A\x3C\x2Fspan\x3E\x20Terms\x20of\x20Use","footer.responsive.link.giftTerms":"Gift\x20Card\x20Terms","footer.responsive.link.privacy":"Privacy\x20Statement","footer.responsive.link.privacy_updated":"\x3Cspan\x20class\x3D\"privacy-updated\"\x3E\x2AUpdated\x2A\x3C\x2Fspan\x3E\x20Privacy\x20Statement","footer.responsive.link.privacy_separate_link":"Privacy","footer.responsive.link.cookies":"Cookies\x20\x26\x20Adverts","footer.responsive.link.gift_card_terms":"Gift\x20Card\x20Terms","footer.responsive.link.contact_details":"Contact\x20Details","footer.responsive.link.originals":"Originals","footer.responsive.link.speed_test":"Speed\x20Test","footer.responsive.link.corporate_information":"Corporate\x20Information","footer.responsive.link.corporate_information_impressum":"Impressum","footer.responsive.link.contact_us":"Contact\x20Us","footer.responsive.link.legal.notices":"Legal\x20Notices","footer.responsive.link.only_on_netflix":"Only\x20on\x20Netflix","footer.responsive.link.legal.guarantee":"Legal\x20Guarantee","footer.responsive.link.cancel_membership":"Cancel\x20Membership"},"signup\x2Fcommon":{"footer_with_country":"Netflix\x20{country}","button_sign_in":"Sign\x20In","header_signout":"Sign\x20Out","metaDescriptionSignupEntryPoint":"Choose\x20a\x20Netflix\x20subscription\x20plan\x20that\x27s\x20right\x20for\x20you.\x20Downgrade,\x20upgrade\x20or\x20cancel\x20any\x20time.","metaDescription":"Watch\x20Netflix\x20films\x20\x26\x20TV\x20programmes\x20online\x20or\x20stream\x20right\x20to\x20your\x20smart\x20TV,\x20game\x20console,\x20PC,\x20Mac,\x20mobile,\x20tablet\x20and\x20more.","metaKeywords":"watch\x20films,\x20watch\x20movies,\x20films\x20online,\x20movies\x20online,\x20watch\x20TV,\x20TV\x20online,\x20TV\x20programmes\x20online,\x20watch\x20TV\x20programmes\x20stream\x20movies,\x20stream\x20films,\x20stream\x20TV,\x20instant\x20streaming,\x20watch\x20online,\x20films,\x20movies,\x20watch\x20films\x20{country},\x20watch\x20TV\x20online,\x20no\x20download,\x20fullfull-length\x20movies,\x20TV\x20programmes","metaDescriptionTitleSynopsis":"{synopsis}{title}\x20on\x20Netflix.","metaTitleTitlePageWatch":"{title}\x20\x7C\x20Watch\x20on\x20Netflix","metaTitleTitlePage":"Watch\x20{title}\x20Online\x20\x7C\x20Netflix","metaTitleTitlePageNoIndex":"{title}\x20\x7C\x20Netflix","metaTitleSignupEntryPoint":"Netflix\x20Plans,\x20Pricing\x20\x26\x20Sign-up","metaTitle":"Netflix\x20\u2013\x20Watch\x20TV\x20Programmes\x20Online,\x20Watch\x20Films\x20Online","metaTitleTVSignup":"Netflix\x20\u2013\x20sign\x20up\x20with\x20a\x20TV\x20code.","metaTitleWithCountry":"Netflix\x20{country}\x20\u2013\x20Watch\x20TV\x20Programmes\x20Online,\x20Watch\x20Films\x20Online"},"signup\x2FpartnerVanityHeader":{"bpi":"Enjoy\x20up\x20to\x206\x20months\x20of\x20Netflix\x20on\x20us","brctv":"Watch\x20on\x20your\x20Blue\x20Ridge\x20TV\x20set\x20top\x20box","cableone":"Watch\x20on\x20your\x20Cable\x20One\x20set\x20top\x20box","chromecast":"Watch\x20on\x20your\x20Chromecast\x20device","cogeco":"Watch\x20on\x20your\x20Cogeco\x20set\x20top\x20box","comhem":"Watch\x20on\x20your\x20Comhem\x20set\x20top\x20box","dish":"Watch\x20on\x20your\x20DISH\x20set\x20top\x20box","dlive":"Watch\x20on\x20your\x20D\x27Live\x20set\x20top\x20box","dodofetchtv":"Watch\x20on\x20your\x20Dodo\x20set\x20top\x20box","fetchtv":"Watch\x20on\x20your\x20Fetch\x20TV\x20set\x20top\x20box","fibe":"Watch\x20on\x20your\x20Bell\x20Fibe\x20TV\x20set\x20top\x20box","fibreop":"Bell\x20Aliant\x20FibreOP\x20TV\x20set\x20top\x20box","frontiercommunications":"Powered\x20by\x20Frontier\u00AE\x20Internet","gci":"Watch\x20on\x20your\x20GCI\x20TV\x20set\x20top\x20box","grande":"Watch\x20on\x20your\x20Grande\x20set\x20top\x20box","hisense":"Watch\x20on\x20your\x20Hisense\x20Smart\x20TV","hdfc":"3-month\x20gift\x20of\x20Netflix","krungsri":"Enjoy\x20up\x20to\x20an\x20extra\x202\x20months\x20of\x20Netflix\x20on\x20us","lg":"Watch\x20on\x20your\x20LG\x20Smart\x20TV","iinet":"Watch\x20on\x20your\x20iiNet\x20set\x20top\x20box","iinetfetchtv":"Watch\x20on\x20your\x20iiNet\x20set\x20top\x20box","midcontinent":"Watch\x20on\x20your\x20Midcontinent\x20set\x20top\x20box","mts":"Watch\x20on\x20your\x20Bell\x20MTS\x20Fibe\x20TV\x20set\x20top\x20box","optusfetchtv":"Watch\x20on\x20your\x20Optus\x20set\x20top\x20box","philips":"Watch\x20on\x20your\x20Philips\x20Smart\x20TV","rcn":"Watch\x20on\x20your\x20RCN\x20set\x20top\x20box","roku":"Watch\x20on\x20your\x20Roku\x20device","samsung":"Watch\x20on\x20your\x20Samsung\x20Smart\x20TV","sasktel":"Watch\x20on\x20your\x20Sasktel\x20set\x20top\x20box","sharp":"Watch\x20on\x20your\x20Sharp\x20Smart\x20TV","shinhan":"Binge\x20Netflix\x20with\x20Shinhan\x20Card","sony":"Watch\x20on\x20your\x20Sony\x20Smart\x20TV","suddenlink":"Watch\x20on\x20your\x20Suddenlink\x20set\x20top\x20box","telecentro":"Watch\x20on\x20your\x20Telecentro\x20set\x20top\x20box","telus":"Watch\x20on\x20your\x20TELUS\x20set\x20top\x20box","totalplay":"Watch\x20on\x20your\x20Totalplay\x20set\x20top\x20box","virginmedia":"Virgin\x20Media:\x20TiVo\u00AE\x20Box","wow":"Watch\x20on\x20your\x20WOW\x20set\x20top\x20box","logo_alt_text":"Partner\x20Logo"},"_a\x2Fsignup_nmhp":{"uoIQMI":"Netflix\x20Shop","XYK4ez":"Unlimited\x20films,\x20TV\x20programmes\x20and\x20more","lfMo2U":"Unlimited\x20films,\x20TV\x20programmes\x20and\x20anime","alAmTk":"Download\x20your\x20programmes\x20to\x20watch\x20offline","imgfSf":"Enjoy\x20on\x20your\x20TV","26Gm\x2BU":"Watch\x20everywhere","tV0lf3":"Create\x20profiles\x20for\x20children","guHk9H":"Stream\x20unlimited\x20films\x20and\x20TV\x20programmes\x20on\x20your\x20phone,\x20tablet,\x20laptop\x20and\x20TV.","E84xuh":"The\x20Netflix\x20you\x20love\x20for\x20just\x20{planPrice}.","85i84r":"{planId,select,5200\x20{Get\x20the\x20Standard\x20with\x20adverts\x20plan.}\x20other\x20{Get\x20the\x20{planName}\x20plan.}}","AEPv4u":"Learn\x20More","u1PiAa":"Sign\x20up\x20or\x20restart\x20your\x20membership\x20with\x20Netflix.","cD2ob\x2F":"Ready\x20to\x20watch\x3F\x20Enter\x20your\x20email\x20address\x20or\x20mobile\x20number\x20to\x20create\x20or\x20restart\x20your\x20membership.","6obogB":"Please\x20enter\x20a\x20valid\x20mobile\x20number.","\x2FVcVkb":"Please\x20enter\x20a\x20valid\x20email\x20address.","VOdKIv":"This\x20mobile\x20number\x20is\x20already\x20in\x20use.\x20Please\x20use\x20a\x20different\x20number\x20or\x20sign\x20in\x20using\x20your\x20email\x20address.","6AQdTE":"This\x20number\x20isn\x27t\x20eligible.\x20Please\x20use\x20a\x20different\x20mobile\x20number\x20or\x20email\x20address.","DX8smA":"Sorry,\x20something\x20went\x20wrong.\x20Please\x20try\x20again\x20later.","Uj07B4":"Country","zWpxoj":"Email\x20address\x20or\x20mobile\x20number","GOBzPK":"Email\x20address\x20or\x20mobile\x20number\x20required.","\x2BxMLDK":"Please\x20enter\x20a\x20valid\x20mobile\x20number."},"common\x2FcookieDisclosure":{"button.accept":"Accept","button.reject":"Reject","button.change.cookie.preferences.202105":"Personalise\x20my\x20choices","disclosure.long.row":"Netflix\x20uses\x20cookies\x20for\x20personalisation,\x20to\x20customise\x20its\x20online\x20advertisements,\x20and\x20for\x20other\x20purposes.\x20\x3Ca\x20href\x3D\"\x2Fcookies\"\x3ELearn\x20more\x3C\x2Fa\x3E\x20or\x20\x3Cspan\x20data-id\x3D\"onetrust\"\x3Echange\x20your\x20cookie\x20preferences\x3C\x2Fspan\x3E.\x20Netflix\x20supports\x20the\x20Digital\x20Advertising\x20Alliance\x20principles.\x20By\x20interacting\x20with\x20this\x20site,\x20you\x20agree\x20to\x20our\x20use\x20of\x20cookies.","disclosure.short.row":"We\x20use\x20cookies\x20\x28\x3Ca\x20href\x3D\"\x2Fcookies\"\x3Ewhy\x3F\x3C\x2Fa\x3E\x29.\x20You\x20can\x20change\x20\x3Cspan\x20data-id\x3D\"onetrust\"\x3Ecookie\x20preferences\x3C\x2Fspan\x3E\x3B\x20continued\x20site\x20use\x20signifies\x20consent.","disclosure.long.eu.202105":"Netflix\x20and\x20\x3Cspan\x20data-id\x3D\"onetrust\"\x3Ethird\x20parties\x3C\x2Fspan\x3E\x20use\x20\x3Ca\x20href\x3D\"{COOKIE_PRIVACY}\"\x3Ecookies\x20and\x20similar\x20technologies\x3C\x2Fa\x3E\x20on\x20this\x20website\x20to\x20collect\x20information\x20about\x20your\x20browsing\x20activities,\x20which\x20we\x20use\x20to\x20analyse\x20your\x20use\x20of\x20the\x20website,\x20to\x20personalise\x20our\x20services\x20and\x20to\x20customise\x20our\x20online\x20advertisements.\x20When\x20your\x20consent\x20is\x20required,\x20you\x20can\x20accept,\x20refuse\x20or\x20personalise\x20your\x20choices.\x20You\x20can\x20also\x20change\x20your\x20preferences\x20at\x20any\x20time\x20by\x20clicking\x20\u201CCookie\x20Preferences\u201D\x20in\x20the\x20footer\x20of\x20each\x20page.\x20Netflix\x20supports\x20the\x20Digital\x20Advertising\x20Alliance\x20Principles.\x20\x3Cspan\x20data-id\x3D\"onetrust\"\x3ELearn\x20more\x20about\x20our\x20use\x20of\x20cookies\x20and\x20information.\x3C\x2Fspan\x3E","disclosure.short.eu.202105":"Netflix\x20and\x20third\x20parties\x20use\x20cookies\x20\x3Cspan\x20data-id\x3D\"onetrust\"\x3E\x28why\x3F\x29\x3C\x2Fspan\x3E.\x20You\x20can\x20change\x20\x3Cspan\x20data-id\x3D\"onetrust\"\x3Eyour\x20cookie\x20preferences\x3C\x2Fspan\x3E.","disclosure.long.ru":"We\x20use\x20\x3Ca\x20href\x3D\"{COOKIE_PRIVACY}\"\x3Ecookies\x20and\x20similar\x20technologies\x3C\x2Fa\x3E\x20on\x20this\x20website\x20to\x20collect\x20information\x20about\x20your\x20browsing\x20activities\x20which\x20we\x20use\x20to\x20analyse\x20your\x20use\x20of\x20the\x20website,\x20to\x20personalise\x20our\x20services\x20and\x20to\x20customise\x20our\x20online\x20advertisements.\x20\x3Cspan\x20data-id\x3D\"onetrust\"\x3ELearn\x20more\x20about\x20our\x20use\x20of\x20cookies\x20and\x20your\x20information\x3C\x2Fspan\x3E.\x20By\x20interacting\x20with\x20this\x20site,\x20you\x20agree\x20to\x20our\x20use\x20of\x20cookies.","disclosure.short.ru":"We\x20use\x20cookies\x20\x28\x3Ca\x20href\x3D\"{COOKIE_PRIVACY}\"\x3Ewhy\x3F\x3C\x2Fa\x3E\x29.\x20You\x20can\x20change\x20\x3Cspan\x20data-id\x3D\"onetrust\"\x3Ecookie\x20preferences\x3C\x2Fspan\x3E\x3B\x20by\x20clicking\x20accept,\x20you\x20accept\x20all\x20cookies.","button.close":"Close"},"common\x2FclientSupportCategories":{"disclosure.umbrella.msg":"The\x20Netflix\x20experience\x20works\x20best\x20in\x20a\x20newer\x20version\x20of\x20your\x20browser.\x20Learn\x20more\x20about\x20updating\x20your\x20browser\x20\x3Ca\x20href\x3D\"{HELP_LINK}\"\x3Ehere\x3C\x2Fa\x3E."},"_a\x2Fcomponents":{"QRwOg0":"Do\x20not\x20sell\x20or\x20share\x20my\x20personal\x20information","TcNyBn":"Advert\x20choices"},"_a\x2Fab_54612":{"IYNuAT":"Netflix\x20{country}","GgtdnQ":"Get\x20more\x20from\x20your\x20membership","1Ux48k":"Mobile\x20games\x20now\x20included\x20in\x20every\x20plan","au4V\x2BT":"No\x20adverts,\x20extra\x20fees\x20or\x20in-app\x20purchases.\x20Enjoy\x20unlimited\x20access\x20to\x20a\x20growing\x20catalogue\x20of\x20popular\x20and\x20exclusive\x20games.","N4OsaH":"More\x20reasons\x20to\x20join","xYCxoj":"Enjoy\x20on\x20your\x20TV","3hXUkq":"Watch\x20on\x20smart\x20TVs,\x20PlayStation,\x20Xbox,\x20Chromecast,\x20Apple\x20TV,\x20Blu-ray\x20players\x20and\x20more.","gRjOJ2":"Download\x20your\x20programmes\x20to\x20watch\x20offline","y2TIKi":"Save\x20your\x20favourites\x20easily\x20and\x20always\x20have\x20something\x20to\x20watch.","BKieY9":"Watch\x20everywhere","oqXL1o":"Stream\x20unlimited\x20films\x20and\x20TV\x20programmes\x20on\x20your\x20phone,\x20tablet,\x20laptop\x20and\x20TV.","3OKyH0":"Create\x20profiles\x20for\x20children","p0J2NE":"Send\x20children\x20on\x20adventures\x20with\x20their\x20favourite\x20characters\x20in\x20a\x20space\x20made\x20just\x20for\x20them\x20\u2014\x20free\x20with\x20your\x20membership.","68qk34":"Stories\x20tailored\x20to\x20your\x20taste","73TZOM":"Cancel\x20or\x20switch\x20plans\x20anytime","L57V47":"A\x20place\x20just\x20for\x20children","u\x2B6Ntq":"For\x20your\x20phone,\x20tablet,\x20laptop\x20and\x20TV","7v9Z\x2Bi":"Trending\x20now","7alqq\x2B":"Learn\x20More","E84xuh":"The\x20Netflix\x20you\x20love\x20for\x20just\x20{planPrice}.","VlmlLz":"Get\x20our\x20most\x20affordable,\x20advert-supported\x20plan.","nzz0Cm":"Plans\x20to\x20suit\x20your\x20needs\x20and\x20your\x20budget","t\x2Br\x2BBq":"Enjoy\x20Netflix\x20starting\x20at\x20just\x20{planPrice}.","hbrsmA":"The\x20Netflix\x20you\x20love\x20starting\x20at\x20{planPrice}\x21","XMtr\x2Fq":"Enjoy\x20savings\x20and\x20Netflix\x20with\x20a\x20few\x20advert\x20breaks.","l1nhNt":"Get\x20started","jZkt7q":"A\x20plan\x20to\x20suit\x20your\x20needs","Nb42Jt":"Questions\x3F\x20Call\x20\x3Ca\x20href\x3D\"tel:{SUPPORT_NUMBER}\"\x3E{SUPPORT_NUMBER}\x3C\x2Fa\x3E","AFh7PI":"Questions\x3F\x20Contact\x20us.","\x2ByOidm":"Global","Ujyrxk":"Films","2F7O0M":"TV\x20Programmes","loAjAK":"Films\x20\u2013\x20English","assPT0":"Films\x20\u2013\x20other\x20languages","lZij\x2B\x2B":"TV\x20programmes\x20\u2013\x20English","wOd\x2Fxa":"TV\x20programmes\x20\u2013\x20other\x20languages","W168R1":"Discover\x20what\u2019s\x20trending\x20now","JjS1yr":"Region","VTXAZa":"Content","hVLDF7":"Trending\x20title\x20preview","4lsS9H":"Learn\x20more\x20about\x20this\x20popular\x20title","yJJTm\x2B":"Close","7t5nM\x2B":"Loading","OVS8He":"A\x20cinematic\x20experience\x20with\x20the\x20best\x20picture\x20and\x20audio\x20quality.","cw84vi":"All\x20the\x20entertainment\x20you\x20love,\x20in\x20Full\x20HD\x20video\x20quality.","98IC\x2F9":"All\x20the\x20entertainment\x20plus\x20downloads,\x20to\x20enjoy\x20it\x20all\x20on\x20the\x20go.","HF3\x2Bn8":"The\x20best\x20savings\x20to\x20enjoy\x20Netflix\x20with\x20a\x20few\x20advert\x20breaks.","hhCTKY":"A\x20great\x20way\x20to\x20enjoy\x20all\x20your\x20favourite\x20programmes\x20and\x20films\x20on\x20a\x20budget.","W\x2BskHt":"A\x20travel-friendly\x20option\x20for\x20your\x20mobile\x20devices.","pup8yv":"{planPrice}\x2Fmonth","C232xz":"Unlimited\x20films,\x20TV\x20programmes\x20and\x20more","HVUePF":"Starts\x20at\x20{PRICE}.\x20Cancel\x20at\x20any\x20time.","4\x2FPWxy":"Trending\x20now","u06TNf":"Film","K7AkdL":"Programme","uHUzC7":"Episode","3wSEx3":"Season","drdFcs":"Trailer","IN\x2F7MY":"Next","4xiR90":"Previous","zB7VoA":"Pause","rqlZtM":"Play","\x2FLXkJh":"\x28Current\x20slide\x29","msi0W4":"Get\x20started"},"signup\x2Fsimplicity\x2FformFields":{"label_firstName_caseCorrected":"First\x20name","label_lastName_20210517":"Last\x20name","label_name":"Name","label_creditCardNumber_20210517":"Card\x20number","label_zipcode_20221110":"Postal\x20code","label_cvv_20221110":"CVV","label_expirationMonthYear_20210517":"Expiry\x20date\x20\x28MM\x2FYY\x29","label_expirationDate_20221109":"Expiry\x20date","label_creditExpirationYear":"Expiry\x20year","label_debitCardNumber":"Card\x20Number","label_birthDate":"Birthdate","label_birthMonth":"Birth\x20Month","label_birthYear":"Birth\x20Year","label_debitCardExpirationYear":"Expiry\x20year","label_allowChainingDebit_v2":"If\x20payment\x20fails\x20as\x20credit,\x20change\x20the\x20charge\x20option\x20to\x20debit,\x20if\x20available.","label_allowChainingCredit_v2":"If\x20payment\x20fails\x20as\x20debit,\x20change\x20the\x20charge\x20option\x20to\x20credit,\x20if\x20available.","label_allowCartesBancairesProcessing":"Allow\x20processing\x20with\x20Cartes\x20Bancaires","label_customerIdentification_optional":"CPF\x20\x28Optional\x29","label_code":"Gift\x20Card\x20PIN\x20or\x20Code","label_zipcode":"Postcode","label_postPaidMobileNumber":"Contract\x20Mobile\x20Phone\x20Number","label_mobileNumber_v2":"Mobile\x20number","label_upiId":"UPI\x20ID","label_bankChoice":"Bank\x20Choice","label_deDebitPostalCode":"Postcode","label_deDebitAccountNumber":"IBAN","label_deDebitBirthDate":"Birthdate","label_deDebitBirthMonth":"Birth\x20Month","label_deDebitBirthYear":"Birth\x20Year","label_deDebitStreet":"Street\x20\x2B\x20Number","label_deDebitCity":"City","68XX1l":"Payment\x20process\x20type\x20is\x20required.","placeholder_expirationDate_20221110":"MM\x2FYY","label_newBillingDay":"Day","error_required_firstName_20210517":"Please\x20enter\x20a\x20first\x20name.","error_required_lastName_20210517":"Please\x20enter\x20a\x20last\x20name.","wkRfY7":"Name\x20is\x20required.","rRGFfS":"Birthdate\x20is\x20required.","pQkHNI":"Birth\x20month\x20is\x20required.","ZxideB":"Birth\x20year\x20is\x20required.","error_required_creditCardNumber_20210517":"Please\x20enter\x20a\x20card\x20number.","tXVsxs":"Card\x20number\x20should\x20be\x20between\x20{minLength}\x20and\x20{maxLength}\x20characters.","jEBk1z":"Card\x20number\x20should\x20be\x20{length}\x20characters.","invalid_format_creditCardNumber_20210517":"Please\x20enter\x20a\x20valid\x20credit\x20card\x20number.","invalid_length_creditCardNumber_20210517":"Please\x20enter\x20a\x20valid\x20credit\x20card\x20number.","error_required_creditZipcode_20210517":"Please\x20enter\x20a\x20billing\x20postal\x20code.","zhAaZ\x2B":"Please\x20enter\x20a\x20postcode.","2qaHm1":"Please\x20enter\x20a\x20valid\x20postcode.","zKNk\x2FJ":"Please\x20enter\x20a\x20CVV.","invalid_length_creditCardSecurityCode_20210517":"Please\x20enter\x20a\x20valid\x20CVV\x20code.","invalid_format_creditCardSecurityCode_20210517":"Please\x20enter\x20a\x20valid\x20CVV\x20code.","uaM21z":"Please\x20enter\x20a\x20valid\x20first\x20name.","2abpL1":"Please\x20enter\x20a\x20valid\x20last\x20name.","gMIY91":"Please\x20enter\x20a\x20valid\x20name.","Zn2\x2B6\x2B":"Birth\x20date\x20must\x20be\x20between\x20{minValue}\x20and\x20{maxValue}.","8QnGAO":"Please\x20enter\x20a\x20valid\x20birth\x20date.","Ds\x2FdcL":"Birth\x20month\x20must\x20be\x20between\x20{minValue}\x20and\x20{maxValue}.","O3L2dI":"Please\x20enter\x20a\x20valid\x20birth\x20month.","Cu7Cnd":"Birth\x20year\x20must\x20be\x20between\x20{minValue}\x20and\x20{maxValue}.","a\x2BPiww":"Please\x20enter\x20a\x20valid\x20birth\x20year.","error_required_expirationDate_20221107":"Please\x20enter\x20an\x20expiry\x20date.","7bzBks":"Expiry\x20month\x20must\x20be\x20between\x20{minValue}\x20and\x20{maxValue}.","invalid_custom_error_creditExpirationMonth":"The\x20expiry\x20date\x20you\x20entered\x20is\x20in\x20the\x20past.","invalid_format_creditExpirationMonth_20210517":"Please\x20enter\x20a\x20valid\x20expiry\x20month.","invalid_custom_error_creditExpirationYear":"The\x20expiry\x20date\x20you\x20entered\x20is\x20in\x20the\x20past.","invalid_format_creditExpirationYear_20210517":"Please\x20enter\x20a\x20valid\x20expiry\x20year.","error_required_debitCardNumber_20210517":"Please\x20enter\x20a\x20card\x20number.","invalid_format_debitCardNumber_20210517":"Please\x20enter\x20a\x20valid\x20debit\x20card\x20number.","invalid_length_debitCardNumber_20210517":"Please\x20enter\x20a\x20valid\x20debit\x20card\x20number.","invalid_custom_error_debitCardExpirationMonth":"The\x20expiry\x20date\x20you\x20entered\x20is\x20in\x20the\x20past.","eqHmz8":"Expiry\x20year\x20must\x20be\x20between\x20{minValue}\x20and\x20{maxValue}.","invalid_custom_error_debitCardExpirationYear":"The\x20expiry\x20date\x20you\x20entered\x20is\x20in\x20the\x20past.","jfWA5L":"CPF\x20should\x20be\x20between\x20{minLength}\x20and\x20{maxLength}\x20characters.","JFKdQ5":"CPF\x20should\x20be\x20{length}\x20characters.","0eUJv\x2F":"Postcode\x20is\x20required.","invalid_length_zipcode_20210517":"Please\x20enter\x20a\x20valid\x20postal\x20code.","Kmjc8A":"Gift\x20card\x20PIN\x20or\x20code\x20is\x20required.","Jb1p4d":"Gift\x20card\x20PIN\x20or\x20code\x20should\x20be\x20{length}\x20characters.","aoogr9":"Gift\x20card\x20PIN\x20or\x20code\x20should\x20be\x20between\x20{minLength}\x20and\x20{maxLength}\x20characters.","2KMiAB":"Please\x20enter\x20a\x20valid\x20gift\x20card\x20PIN\x20or\x20code.","error_required_smsCode":"Code\x20is\x20required.","invalid_length_smsCode":"Incorrect\x20code.","invalid_format_smsCode":"Incorrect\x20code.","FGSjme":"Mobile\x20phone\x20number\x20is\x20required.","invalid_format_phoneNumber":"Please\x20enter\x20a\x20valid\x20mobile\x20number.","invalid_length_phoneNumber":"Please\x20enter\x20a\x20valid\x20mobile\x20number.","error_required_upiId":"Please\x20enter\x20a\x20valid\x20UPI\x20ID.","HqRYf6":"Postcode\x20is\x20required.","\x2BA5C\x2F2":"Please\x20enter\x20a\x20valid\x20postcode.","dSb\x2FOs":"IBAN\x20is\x20required.","Cizruf":"IBAN\x20should\x20be\x20between\x20{minLength}\x20and\x20{maxLength}\x20characters.","3Sunth":"IBAN\x20should\x20be\x20{length}\x20characters.","4sxILe":"Street\x20\x2B\x20number\x20is\x20required.","ZwXlQT":"Street\x20\x2B\x20number\x20should\x20be\x20between\x20{minLength}\x20and\x20{maxLength}\x20characters.","jtcwz0":"Street\x20\x2B\x20number\x20should\x20be\x20{length}\x20characters.","8HS9Px":"City\x20is\x20required.","TPw0EK":"City\x20should\x20be\x20between\x20{minLength}\x20and\x20{maxLength}\x20characters.","506hym":"City\x20should\x20be\x20{length}\x20characters.","fd\x2FobB":"Bank\x20choice\x20is\x20required.","helper_learnMore":"\x3Ca\x20href\x3D\"{LEARN_MORE_URL}\"\x3ELearn\x20More\x3C\x2Fa\x3E","label_email_address":"Email\x20address","fkXIQC":"Email\x20is\x20required.","wRfFd2":"Please\x20enter\x20a\x20valid\x20email\x20address.","label_password":"Password","VGrwob":"Password\x20is\x20required.","YsQMju":"Password\x20should\x20not\x20contain\x20tilde\x20\x28\x7E\x29.","YZGcq7":"Password\x20should\x20be\x20between\x20{minLength}\x20and\x20{maxLength}\x20characters.","invalid_custom_error_password":"Please\x20shorten\x20your\x20password\x20to\x2060\x20characters\x20or\x20fewer."},"signup\x2FourStory":{"faq_headline_fuji":"Frequently\x20Asked\x20Questions","faq_question_what_is_netflix":"What\x20is\x20Netflix\x3F","faq_answer_what_is_netflix":"Netflix\x20is\x20a\x20streaming\x20service\x20that\x20offers\x20a\x20wide\x20variety\x20of\x20award-winning\x20TV\x20programmes,\x20films,\x20anime,\x20documentaries\x20and\x20more\x20\u2013\x20on\x20thousands\x20of\x20internet-connected\x20devices.\x3Cbr\x3E\x3Cbr\x3EYou\x20can\x20watch\x20as\x20much\x20as\x20you\x20want,\x20whenever\x20you\x20want,\x20without\x20a\x20single\x20advert\x20\u2013\x20all\x20for\x20one\x20low\x20monthly\x20price.\x20There\x27s\x20always\x20something\x20new\x20to\x20discover,\x20and\x20new\x20TV\x20programmes\x20and\x20films\x20are\x20added\x20every\x20week\x21","faq_question_cost":"How\x20much\x20does\x20Netflix\x20cost\x3F","faq_answer_cost_plans":"Watch\x20Netflix\x20on\x20your\x20smartphone,\x20tablet,\x20smart\x20TV,\x20laptop\x20or\x20streaming\x20device,\x20all\x20for\x20one\x20fixed\x20monthly\x20fee.\x20Plans\x20range\x20from\x20{LOW_PRICE}\x20to\x20{HIGH_PRICE}\x20a\x20month.\x20No\x20extra\x20costs,\x20no\x20contracts.","faq_answer_cost_plans_pretax":"Watch\x20Netflix\x20on\x20your\x20smartphone,\x20tablet,\x20smart\x20TV,\x20laptop\x20or\x20streaming\x20device,\x20all\x20for\x20one\x20fixed\x20monthly\x20fee.\x20Plans\x20range\x20from\x20{LOW_PRICE}\x20to\x20{HIGH_PRICE}\x20a\x20month\x20\x28pre-tax\x29.\x20No\x20extra\x20costs,\x20no\x20contracts.","faq_question_where_to_watch":"Where\x20can\x20I\x20watch\x3F","faq_answer_where_to_watch_v3":"Watch\x20anywhere,\x20anytime.\x20Sign\x20in\x20with\x20your\x20Netflix\x20account\x20to\x20watch\x20instantly\x20on\x20the\x20web\x20at\x20netflix.com\x20from\x20your\x20personal\x20computer\x20or\x20on\x20any\x20internet-connected\x20device\x20that\x20offers\x20the\x20Netflix\x20app,\x20including\x20smart\x20TVs,\x20smartphones,\x20tablets,\x20streaming\x20media\x20players\x20and\x20game\x20consoles.\x3Cbr\x3E\x3Cbr\x3EYou\x20can\x20also\x20download\x20your\x20favourite\x20programmes\x20with\x20the\x20iOS,\x20Android,\x20or\x20Windows\x2010\x20app.\x20Use\x20downloads\x20to\x20watch\x20while\x20you\x27re\x20on\x20the\x20go\x20and\x20without\x20an\x20internet\x20connection.\x20Take\x20Netflix\x20with\x20you\x20anywhere.","faq_question_cancel":"How\x20do\x20I\x20cancel\x3F","faq_answer_cancel":"Netflix\x20is\x20flexible.\x20There\x20are\x20no\x20annoying\x20contracts\x20and\x20no\x20commitments.\x20You\x20can\x20easily\x20cancel\x20your\x20account\x20online\x20in\x20two\x20clicks.\x20There\x20are\x20no\x20cancellation\x20fees\x20\u2013\x20start\x20or\x20stop\x20your\x20account\x20at\x20any\x20time.","faq_question_what_to_watch":"What\x20can\x20I\x20watch\x20on\x20Netflix\x3F","faq_answer_what_to_watch_nft":"Netflix\x20has\x20an\x20extensive\x20library\x20of\x20feature\x20films,\x20documentaries,\x20TV\x20programmes,\x20anime,\x20award-winning\x20Netflix\x20originals,\x20and\x20more.\x20Watch\x20as\x20much\x20as\x20you\x20want,\x20any\x20time\x20you\x20want.","faq_answer_what_to_watch_originals_link_nft":"Netflix\x20has\x20an\x20extensive\x20library\x20of\x20feature\x20films,\x20documentaries,\x20TV\x20programmes,\x20anime,\x20award-winning\x20Netflix\x20originals\x20and\x20more.\x20Watch\x20as\x20much\x20as\x20you\x20want,\x20anytime\x20you\x20want.\x3Cbr\x3E\x3Cbr\x3E\x3Ca\x20href\x3D\"{ORIGINALS_LINK}\"\x3ECheck\x20out\x20some\x20of\x20our\x20content\x3C\x2Fa\x3E.","faq_question_kids_value_prop":"Is\x20Netflix\x20good\x20for\x20children\x3F","faq_answer_kids_value_prop":"The\x20Netflix\x20Children\x27s\x20experience\x20is\x20included\x20in\x20your\x20membership\x20to\x20give\x20parents\x20control\x20while\x20children\x20enjoy\x20family-friendly\x20TV\x20programmes\x20and\x20films\x20in\x20their\x20own\x20space.\x3Cbr\x3E\x3Cbr\x3EChildren\x27s\x20profiles\x20come\x20with\x20PIN-protected\x20parental\x20controls\x20that\x20let\x20you\x20restrict\x20the\x20maturity\x20rating\x20of\x20content\x20children\x20can\x20watch\x20and\x20block\x20specific\x20titles\x20you\x20don\u2019t\x20want\x20children\x20to\x20see.","faq_language_disclaimer_question":"Why\x20am\x20I\x20seeing\x20this\x20language\x3F","faq_language_disclaimer_answer":"Your\x20browser\x20preferences\x20determine\x20the\x20language\x20shown\x20here.","hero_headline_upgrade_landing":"Ready\x20to\x20upgrade\x3F","hero_headline_upgrade_landing_legacy":"Please\x20update\x20your\x20browser.","hero_sub_headline_fuji":"Watch\x20anywhere.\x20Cancel\x20at\x20any\x20time.","hero_subline_upgrade_landing":"Switch\x20to\x20a\x20paid\x20plan\x20to\x20access\x20everything\x20Netflix\x20has\x20to\x20offer.\x20We\x20promise\x20it\u2019ll\x20only\x20take\x20a\x20few\x20clicks\x21","hero_subline_upgrade_landing_legacy":"Looks\x20like\x20you\u2019re\x20using\x20an\x20older\x20version.\x20Once\x20you\x27ve\x20updated\x20your\x20browser,\x20you\x20can\x20finish\x20upgrading\x20your\x20Netflix\x20account.","hero_subline_ads_prominent_pricing":"Plans\x20now\x20start\x20at\x20just\x20{planPrice}.","content_headline_fuji":"Endless\x20entertainment,\x20anytime,\x20anywhere.","free_plan_mobile_headline_fuji":"Have\x20an\x20Android\x20phone\x3F\x20Get\x20our\x20new\x20free\x20plan\x21","content_sub_headline_fuji":"Watch\x20these\x20and\x20many\x20more,\x20as\x20much\x20as\x20you\x20want,\x20whenever\x20you\x20want.","download_sub_headline_offline_fuji":"Save\x20your\x20favourites\x20easily\x20and\x20always\x20have\x20something\x20to\x20watch.","tv_sub_headline_fuji":"Watch\x20on\x20smart\x20TVs,\x20PlayStation,\x20Xbox,\x20Chromecast,\x20Apple\x20TV,\x20Blu-ray\x20players\x20and\x20more.","device_sub_headline_fuji_mobile_only":"Stream\x20unlimited\x20films\x20and\x20TV\x20programmes\x20on\x20your\x20phone,\x20tablet,\x20laptop\x20and\x20TV.","kids_sub_headline_fuji":"Send\x20children\x20on\x20adventures\x20with\x20their\x20favourite\x20characters\x20in\x20a\x20space\x20made\x20just\x20for\x20them\x20\u2013\x20free\x20with\x20your\x20membership.","free_plan_sub_headline_fuji":"Watch\x20a\x20selection\x20of\x20new\x20films\x20and\x20TV\x20programmes\x20without\x20adding\x20any\x20payment\x20details\x21","download_message_status_fuji":"Downloading...","free_plan_button_fuji":"Get\x20the\x20app","button_sign_in_to_upgrade":"Sign\x20in\x20to\x20upgrade"},"signup\x2Fads":{"pjH9lz":"What\u2019s\x20different\x20on\x20an\x20advert-supported\x20plan\x3F","a\x2FPEWm":"An\x20advert-supported\x20plan\x20is\x20a\x20great\x20way\x20to\x20enjoy\x20films\x20and\x20TV\x20programmes\x20at\x20a\x20lower\x20price.\x20You\x20can\x20stream\x20your\x20favourites\x20with\x20limited\x20advert\x20breaks\x20\x28some\x20location\x20and\x20device\x20restrictions\x20apply\x29.\x20Downloads\x20are\x20not\x20supported\x20and\x20a\x20limited\x20number\x20of\x20films\x20and\x20TV\x20programmes\x20are\x20not\x20available\x20due\x20to\x20licensing\x20restrictions.\x20\x3Ca\x20href\x3D\"{LEARN_MORE_LINK}\"\x3ELearn\x20more\x3C\x2Fa\x3E.","9Hxp2S":"Netflix\x20is\x20a\x20streaming\x20service\x20that\x20offers\x20a\x20wide\x20variety\x20of\x20award-winning\x20TV\x20programmes,\x20films,\x20anime,\x20documentaries\x20and\x20more\x20on\x20thousands\x20of\x20internet-connected\x20devices.\x3Cbr\x3E\x3Cbr\x3EYou\x20can\x20watch\x20as\x20much\x20as\x20you\x20want,\x20whenever\x20you\x20want\x20\u2013\x20all\x20for\x20one\x20low\x20monthly\x20price.\x20There\x27s\x20always\x20something\x20new\x20to\x20discover,\x20and\x20new\x20TV\x20programmes\x20and\x20films\x20are\x20added\x20every\x20week\x21","h9Df8S":"Watch\x20on\x20a\x20plane,\x20train\x20or\x20submarine..."},"signup\x2Fhome_customized":{"reg_welcome_back":"Welcome\x20back\x21","reg_welcome_back_greetname":"Welcome\x20back,\x20{visitorName}\x21","title_enter_email_v3":"Ready\x20to\x20watch\x3F\x20Enter\x20your\x20email\x20to\x20create\x20or\x20restart\x20your\x20membership.","button_get_started_tc":"Get\x20Started","button_try_it_now":"TRY\x20IT\x20NOW","button_finish_sign_up_title_case":"Finish\x20Sign-up","button_restart_your_membership_tc":"Restart\x20Your\x20Membership","button_join_now":"JOIN\x20NOW"},"signup\x2Fsimplicity\x2FserverErrors":{"required_data_is_invalid_or_missing":"Sorry,\x20something\x20went\x20wrong.\x20Please\x20try\x20again\x20later."},"signup\x2Fsimplicity\x2Fregistration":{"label_email_consent_opt_in":"Yes,\x20please\x20email\x20me\x20Netflix\x20special\x20offers.","label_email_consent_opt_out":"Please\x20do\x20not\x20email\x20me\x20Netflix\x20special\x20offers."},"common\x2FtermsOfUse":{"tou.recaptcha.disclosure_v3":"The\x20information\x20collected\x20by\x20Google\x20reCAPTCHA\x20is\x20subject\x20to\x20the\x20Google\x20\x3Ca\x20href\x3D\"https:\x2F\x2Fpolicies.google.com\x2Fprivacy\"\x20id\x3D\"recaptcha-privacy-link\"\x20data-uia\x3D\"recaptcha-privacy-link\"\x20target\x3D\"_blank\"\x3EPrivacy\x20Policy\x3C\x2Fa\x3E\x20and\x20\x3Ca\x20href\x3D\"https:\x2F\x2Fpolicies.google.com\x2Fterms\"\x20id\x3D\"recaptcha-tos-link\"\x20data-uia\x3D\"recaptcha-tos-link\"\x20target\x3D\"_blank\"\x3ETerms\x20of\x20Service\x3C\x2Fa\x3E,\x20and\x20is\x20used\x20for\x20providing,\x20maintaining\x20and\x20improving\x20the\x20reCAPTCHA\x20service\x20and\x20for\x20general\x20security\x20purposes\x20\x28it\x20is\x20not\x20used\x20for\x20personalised\x20advertising\x20by\x20Google\x29.","4re3\x2Fs":"Learn\x20more.","eSuFS3":"This\x20page\x20is\x20protected\x20by\x20Google\x20reCAPTCHA\x20to\x20ensure\x20you\x27re\x20not\x20a\x20bot."},"_a\x2Freact":{"a9XhEv":"A\x20world\x20of\x20entertainment\x20with\x20just\x20a\x20few\x20short\x20advert\x20breaks.\x20Learn\x20more\x20about\x20the\x20Standard\x20with\x20adverts\x20plan\x20on\x20Netflix","ZCJ1E3":"Netflix\x20with\x20adverts,\x20starting\x20at\x20{planPrice}","Xg4PnR":"Verify\x20phone\x20number\x20-\x20Account\x20-\x20Netflix","X0Ra6L":"Manage\x20account\x20access\x20-\x20Account\x20-\x20Netflix"},"_a\x2Faccount_sapphire":{"yJWU8Z":"Account\x20membership\x20-\x20Netflix","BAcIuH":"Account\x20security\x20-\x20Netflix","Xpw3R3":"Account\x20devices\x20-\x20Netflix","iVRGYh":"Account\x20profiles\x20-\x20Netflix"}}},"graphql":{"data":{}}}};</script><script></script><script src="https://assets.nflxext.com/web/ffe/wp/signup/nmhp/nmhpFrameworkClient.js.93afb21616a15ee266c2.js"></script></div><script>
if ('serviceWorker' in navigator && navigator.serviceWorker.getRegistrations) {
    navigator.serviceWorker.getRegistrations().then(function(registrations) {
        if (registrations) {
            registrations.forEach(function (registration) {
                registration.unregister().catch(function () {});
            });
        }
    }).catch(function () {});
}
</script></body></html>

Latest requests

# Url Url Source Date
1 https://www.netflix.com/gb/ 2024-04-25 12:46:38
2 https://thebolditalic.com/?gi=c1ab… 2024-04-25 12:46:33
3 https://thebolditalic.com/?gi=0247… 2024-04-25 12:46:30
4 https://thebolditalic.com/?gi=81d7… 2024-04-25 12:46:26
5 https://thebolditalic.com/?gi=d6e3… 2024-04-25 12:46:22
6 https://thebolditalic.com/?gi=80f0… 2024-04-25 12:46:18
7 https://thebolditalic.com/?gi=10d0… 2024-04-25 12:46:15
8 https://thebolditalic.com/?gi=c00c… 2024-04-25 12:46:10
9 https://thebolditalic.com/?gi=cd7c… 2024-04-25 12:46:06
10 https://thebolditalic.com/?gi=2d78… 2024-04-25 12:46:05
11 https://thebolditalic.com/?gi=61e5… 2024-04-25 12:46:02
12 https://thebolditalic.com/?gi=5939… 2024-04-25 12:45:58
13 https://thebolditalic.com/?gi=a300… 2024-04-25 12:45:55
14 https://thebolditalic.com/?gi=ef44… 2024-04-25 12:45:52
15 https://thebolditalic.com/?gi=90cd… 2024-04-25 12:45:48
16 https://thebolditalic.com/?gi=0eb2… 2024-04-25 12:45:46
17 https://thebolditalic.com/?gi=1831… 2024-04-25 12:45:44
18 https://thebolditalic.com/?gi=b4ac… 2024-04-25 12:45:38
19 https://thebolditalic.com/?gi=8553… 2024-04-25 12:45:34
20 https://thebolditalic.com/?gi=449b… 2024-04-25 12:45:30