{"version":3,"file":"index-CMqp8CgO.js","sources":["../../Client/node_modules/detect-browser/es/index.js","../../Client/node_modules/nprogress/nprogress.js","../../Client/node_modules/whatwg-fetch/fetch.js","../../Client/api/ApiCaller.ts","../../Client/legacy/Renderer.ts","../../Client/legacy/Components/Modals/WaitModal/index.tsx","../../Client/legacy/Components/Modals/Progress.tsx","../../Client/shared/Constants/ElementGroupNames.ts","../../Client/shared/Models/index.ts","../../Client/api/HOApi.ts","../../Client/api/MembershipApi.ts","../../Client/node_modules/@remix-run/router/dist/router.js","../../Client/app/Views/index.tsx","../../Client/business/CommonSets/common.ts","../../Client/business/CommonSets/AmBestRating/index.ts","../../Client/business/CommonSets/DemotechRating/index.ts","../../Client/business/CommonSets/CarrierCode/index.ts","../../Client/business/CommonSets/ProductLine/index.ts","../../Client/shared/Storage/index.ts","../../Client/node_modules/credit-card-type/dist/lib/card-types.js","../../Client/node_modules/credit-card-type/dist/lib/clone.js","../../Client/node_modules/credit-card-type/dist/lib/matches.js","../../Client/node_modules/credit-card-type/dist/lib/add-matching-cards-to-results.js","../../Client/node_modules/credit-card-type/dist/lib/is-valid-input-type.js","../../Client/node_modules/credit-card-type/dist/lib/find-best-match.js","../../Client/node_modules/credit-card-type/dist/index.js","../../Client/node_modules/card-validator/dist/cardholder-name.js","../../Client/node_modules/card-validator/dist/luhn-10.js","../../Client/node_modules/card-validator/dist/card-number.js","../../Client/node_modules/card-validator/dist/expiration-year.js","../../Client/node_modules/card-validator/dist/lib/is-array.js","../../Client/node_modules/card-validator/dist/lib/parse-date.js","../../Client/node_modules/card-validator/dist/expiration-month.js","../../Client/node_modules/card-validator/dist/expiration-date.js","../../Client/node_modules/card-validator/dist/cvv.js","../../Client/node_modules/card-validator/dist/postal-code.js","../../Client/node_modules/card-validator/dist/index.js","../../Client/node_modules/dompurify/dist/purify.es.mjs","../../Client/node_modules/libphonenumber-js/metadata.min.json.js","../../Client/node_modules/libphonenumber-js/min/exports/withMetadataArgument.js","../../Client/node_modules/libphonenumber-js/es6/ParseError.js","../../Client/node_modules/libphonenumber-js/es6/constants.js","../../Client/node_modules/libphonenumber-js/es6/tools/semver-compare.js","../../Client/node_modules/libphonenumber-js/es6/helpers/isObject.js","../../Client/node_modules/libphonenumber-js/es6/metadata.js","../../Client/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js","../../Client/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js","../../Client/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js","../../Client/node_modules/libphonenumber-js/es6/helpers/parseDigits.js","../../Client/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js","../../Client/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js","../../Client/node_modules/libphonenumber-js/es6/isPossible.js","../../Client/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js","../../Client/node_modules/libphonenumber-js/es6/helpers/getNumberType.js","../../Client/node_modules/libphonenumber-js/es6/isValid.js","../../Client/node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.js","../../Client/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js","../../Client/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js","../../Client/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js","../../Client/node_modules/libphonenumber-js/es6/helpers/RFC3966.js","../../Client/node_modules/libphonenumber-js/es6/format.js","../../Client/node_modules/libphonenumber-js/es6/PhoneNumber.js","../../Client/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js","../../Client/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../../Client/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js","../../Client/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../../Client/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js","../../Client/node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.js","../../Client/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js","../../Client/node_modules/libphonenumber-js/es6/helpers/extractPhoneContext.js","../../Client/node_modules/libphonenumber-js/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","../../Client/node_modules/libphonenumber-js/es6/parse.js","../../Client/node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.js","../../Client/node_modules/libphonenumber-js/es6/normalizeArguments.js","../../Client/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js","../../Client/node_modules/libphonenumber-js/es6/isValidPhoneNumber.js","../../Client/node_modules/libphonenumber-js/min/exports/isValidPhoneNumber.js","../../Client/node_modules/numeral/numeral.js","../../Client/node_modules/stackframe/stackframe.js","../../Client/node_modules/error-stack-parser/error-stack-parser.js","../../Client/node_modules/stack-generator/stack-generator.js","../../Client/node_modules/stacktrace-gps/node_modules/source-map/lib/util.js","../../Client/node_modules/stacktrace-gps/node_modules/source-map/lib/binary-search.js","../../Client/node_modules/stacktrace-gps/node_modules/source-map/lib/array-set.js","../../Client/node_modules/stacktrace-gps/node_modules/source-map/lib/base64.js","../../Client/node_modules/stacktrace-gps/node_modules/source-map/lib/base64-vlq.js","../../Client/node_modules/stacktrace-gps/node_modules/source-map/lib/quick-sort.js","../../Client/node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-consumer.js","../../Client/node_modules/stacktrace-gps/stacktrace-gps.js","../../Client/node_modules/stacktrace-js/stacktrace.js","../../Client/shared/Common/index.ts"],"sourcesContent":["var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, factory) {\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.NProgress = factory();\n }\n\n})(this, function() {\n var NProgress = {};\n\n NProgress.version = '0.2.0';\n\n var Settings = NProgress.settings = {\n minimum: 0.08,\n easing: 'ease',\n positionUsing: '',\n speed: 200,\n trickle: true,\n trickleRate: 0.02,\n trickleSpeed: 800,\n showSpinner: true,\n barSelector: '[role=\"bar\"]',\n spinnerSelector: '[role=\"spinner\"]',\n parent: 'body',\n template: '<div class=\"bar\" role=\"bar\"><div class=\"peg\"></div></div><div class=\"spinner\" role=\"spinner\"><div class=\"spinner-icon\"></div></div>'\n };\n\n /**\n * Updates configuration.\n *\n * NProgress.configure({\n * minimum: 0.1\n * });\n */\n NProgress.configure = function(options) {\n var key, value;\n for (key in options) {\n value = options[key];\n if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;\n }\n\n return this;\n };\n\n /**\n * Last number.\n */\n\n NProgress.status = null;\n\n /**\n * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.\n *\n * NProgress.set(0.4);\n * NProgress.set(1.0);\n */\n\n NProgress.set = function(n) {\n var started = NProgress.isStarted();\n\n n = clamp(n, Settings.minimum, 1);\n NProgress.status = (n === 1 ? null : n);\n\n var progress = NProgress.render(!started),\n bar = progress.querySelector(Settings.barSelector),\n speed = Settings.speed,\n ease = Settings.easing;\n\n progress.offsetWidth; /* Repaint */\n\n queue(function(next) {\n // Set positionUsing if it hasn't already been set\n if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();\n\n // Add transition\n css(bar, barPositionCSS(n, speed, ease));\n\n if (n === 1) {\n // Fade out\n css(progress, { \n transition: 'none', \n opacity: 1 \n });\n progress.offsetWidth; /* Repaint */\n\n setTimeout(function() {\n css(progress, { \n transition: 'all ' + speed + 'ms linear', \n opacity: 0 \n });\n setTimeout(function() {\n NProgress.remove();\n next();\n }, speed);\n }, speed);\n } else {\n setTimeout(next, speed);\n }\n });\n\n return this;\n };\n\n NProgress.isStarted = function() {\n return typeof NProgress.status === 'number';\n };\n\n /**\n * Shows the progress bar.\n * This is the same as setting the status to 0%, except that it doesn't go backwards.\n *\n * NProgress.start();\n *\n */\n NProgress.start = function() {\n if (!NProgress.status) NProgress.set(0);\n\n var work = function() {\n setTimeout(function() {\n if (!NProgress.status) return;\n NProgress.trickle();\n work();\n }, Settings.trickleSpeed);\n };\n\n if (Settings.trickle) work();\n\n return this;\n };\n\n /**\n * Hides the progress bar.\n * This is the *sort of* the same as setting the status to 100%, with the\n * difference being `done()` makes some placebo effect of some realistic motion.\n *\n * NProgress.done();\n *\n * If `true` is passed, it will show the progress bar even if its hidden.\n *\n * NProgress.done(true);\n */\n\n NProgress.done = function(force) {\n if (!force && !NProgress.status) return this;\n\n return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);\n };\n\n /**\n * Increments by a random amount.\n */\n\n NProgress.inc = function(amount) {\n var n = NProgress.status;\n\n if (!n) {\n return NProgress.start();\n } else {\n if (typeof amount !== 'number') {\n amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);\n }\n\n n = clamp(n + amount, 0, 0.994);\n return NProgress.set(n);\n }\n };\n\n NProgress.trickle = function() {\n return NProgress.inc(Math.random() * Settings.trickleRate);\n };\n\n /**\n * Waits for all supplied jQuery promises and\n * increases the progress as the promises resolve.\n *\n * @param $promise jQUery Promise\n */\n (function() {\n var initial = 0, current = 0;\n\n NProgress.promise = function($promise) {\n if (!$promise || $promise.state() === \"resolved\") {\n return this;\n }\n\n if (current === 0) {\n NProgress.start();\n }\n\n initial++;\n current++;\n\n $promise.always(function() {\n current--;\n if (current === 0) {\n initial = 0;\n NProgress.done();\n } else {\n NProgress.set((initial - current) / initial);\n }\n });\n\n return this;\n };\n\n })();\n\n /**\n * (Internal) renders the progress bar markup based on the `template`\n * setting.\n */\n\n NProgress.render = function(fromStart) {\n if (NProgress.isRendered()) return document.getElementById('nprogress');\n\n addClass(document.documentElement, 'nprogress-busy');\n \n var progress = document.createElement('div');\n progress.id = 'nprogress';\n progress.innerHTML = Settings.template;\n\n var bar = progress.querySelector(Settings.barSelector),\n perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),\n parent = document.querySelector(Settings.parent),\n spinner;\n \n css(bar, {\n transition: 'all 0 linear',\n transform: 'translate3d(' + perc + '%,0,0)'\n });\n\n if (!Settings.showSpinner) {\n spinner = progress.querySelector(Settings.spinnerSelector);\n spinner && removeElement(spinner);\n }\n\n if (parent != document.body) {\n addClass(parent, 'nprogress-custom-parent');\n }\n\n parent.appendChild(progress);\n return progress;\n };\n\n /**\n * Removes the element. Opposite of render().\n */\n\n NProgress.remove = function() {\n removeClass(document.documentElement, 'nprogress-busy');\n removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');\n var progress = document.getElementById('nprogress');\n progress && removeElement(progress);\n };\n\n /**\n * Checks if the progress bar is rendered.\n */\n\n NProgress.isRendered = function() {\n return !!document.getElementById('nprogress');\n };\n\n /**\n * Determine which positioning CSS rule to use.\n */\n\n NProgress.getPositioningCSS = function() {\n // Sniff on document.body.style\n var bodyStyle = document.body.style;\n\n // Sniff prefixes\n var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :\n ('MozTransform' in bodyStyle) ? 'Moz' :\n ('msTransform' in bodyStyle) ? 'ms' :\n ('OTransform' in bodyStyle) ? 'O' : '';\n\n if (vendorPrefix + 'Perspective' in bodyStyle) {\n // Modern browsers with 3D support, e.g. Webkit, IE10\n return 'translate3d';\n } else if (vendorPrefix + 'Transform' in bodyStyle) {\n // Browsers without 3D support, e.g. IE9\n return 'translate';\n } else {\n // Browsers without translate() support, e.g. IE7-8\n return 'margin';\n }\n };\n\n /**\n * Helpers\n */\n\n function clamp(n, min, max) {\n if (n < min) return min;\n if (n > max) return max;\n return n;\n }\n\n /**\n * (Internal) converts a percentage (`0..1`) to a bar translateX\n * percentage (`-100%..0%`).\n */\n\n function toBarPerc(n) {\n return (-1 + n) * 100;\n }\n\n\n /**\n * (Internal) returns the correct CSS for changing the bar's\n * position given an n percentage, and speed and ease from Settings\n */\n\n function barPositionCSS(n, speed, ease) {\n var barCSS;\n\n if (Settings.positionUsing === 'translate3d') {\n barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };\n } else if (Settings.positionUsing === 'translate') {\n barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };\n } else {\n barCSS = { 'margin-left': toBarPerc(n)+'%' };\n }\n\n barCSS.transition = 'all '+speed+'ms '+ease;\n\n return barCSS;\n }\n\n /**\n * (Internal) Queues a function to be executed.\n */\n\n var queue = (function() {\n var pending = [];\n \n function next() {\n var fn = pending.shift();\n if (fn) {\n fn(next);\n }\n }\n\n return function(fn) {\n pending.push(fn);\n if (pending.length == 1) next();\n };\n })();\n\n /**\n * (Internal) Applies css properties to an element, similar to the jQuery \n * css method.\n *\n * While this helper does assist with vendor prefixed property names, it \n * does not perform any manipulation of values prior to setting styles.\n */\n\n var css = (function() {\n var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function(match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n\n var i = cssPrefixes.length,\n capName = name.charAt(0).toUpperCase() + name.slice(1),\n vendorName;\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function(element, properties) {\n var args = arguments,\n prop, \n value;\n\n if (args.length == 2) {\n for (prop in properties) {\n value = properties[prop];\n if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n }\n })();\n\n /**\n * (Internal) Determines if an element or space separated list of class names contains a class name.\n */\n\n function hasClass(element, name) {\n var list = typeof element == 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n }\n\n /**\n * (Internal) Adds a class to an element.\n */\n\n function addClass(element, name) {\n var oldList = classList(element),\n newList = oldList + name;\n\n if (hasClass(oldList, name)) return; \n\n // Trim the opening space.\n element.className = newList.substring(1);\n }\n\n /**\n * (Internal) Removes a class from an element.\n */\n\n function removeClass(element, name) {\n var oldList = classList(element),\n newList;\n\n if (!hasClass(element, name)) return;\n\n // Replace the class name.\n newList = oldList.replace(' ' + name + ' ', ' ');\n\n // Trim the opening and closing spaces.\n element.className = newList.substring(1, newList.length - 1);\n }\n\n /**\n * (Internal) Gets a space separated list of the class names on the element. \n * The list is wrapped with a single space on each end to facilitate finding \n * matches within the list.\n */\n\n function classList(element) {\n return (' ' + (element.className || '') + ' ').replace(/\\s+/gi, ' ');\n }\n\n /**\n * (Internal) Removes an element from the DOM.\n */\n\n function removeElement(element) {\n element && element.parentNode && element.parentNode.removeChild(element);\n }\n\n return NProgress;\n});\n\n","/* eslint-disable no-prototype-builtins */\nvar g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {}\n\nvar support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type)\n var encoding = match ? match[1] : 'utf-8'\n reader.readAsText(blob, encoding)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._noBody = true;\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n try {\n headers.append(key, value)\n } catch (error) {\n console.warn('Response ' + error.message)\n }\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 200, statusText: ''})\n response.ok = false\n response.status = 0\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = g.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name))\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value)\n }\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!g.fetch) {\n g.fetch = fetch\n g.Headers = Headers\n g.Request = Request\n g.Response = Response\n}\n","import * as Constants from '@shared/Constants';\r\nimport * as Models from '@shared/Models';\r\nimport * as browser from 'detect-browser';\r\nimport * as NProgress from 'nprogress';\r\nimport 'whatwg-fetch';\r\n\r\ndeclare const window: Constants.ISwyfftWindow;\r\nwindow.swyfftApiCalls = 0;\r\n\r\nexport enum Verb {\r\n Get = 'GET',\r\n Post = 'POST',\r\n Delete = 'DELETE',\r\n Put = 'PUT',\r\n Patch = 'PATCH',\r\n}\r\n\r\nexport class AbortableResponse<Model> {\r\n private aborted: boolean;\r\n private completed: boolean;\r\n private controller: AbortController;\r\n private readonly data: Promise<Response>;\r\n\r\n constructor(controller: AbortController, data: Promise<Response>) {\r\n this.controller = controller;\r\n this.data = data;\r\n this.aborted = false;\r\n }\r\n\r\n public abort() {\r\n if (this.completed) return;\r\n\r\n this.aborted = true;\r\n this.controller.abort();\r\n }\r\n\r\n public async json(): Promise<Model> {\r\n const result = await this.data;\r\n if (result.status !== 200) throw new Error(`Response failed with status ${result.status}.`);\r\n\r\n const json = (await result.json()) as Model;\r\n this.completed = true;\r\n return json;\r\n }\r\n\r\n isAborted = () => this.aborted;\r\n isCompleted = () => this.completed;\r\n}\r\n\r\n//#region Support Methods\r\nexport function $get(\r\n url: string,\r\n progressBar: Constants.IProgressBar | null = NProgress,\r\n actionToLog: string | null = null,\r\n data: any = null\r\n) {\r\n if (data) Object.keys(data).forEach((k, i) => (url += `${i === 0 ? '?' : '&'}${k}=${data[k]}`));\r\n return callApi(url, Verb.Get, null, progressBar, actionToLog);\r\n}\r\n\r\nexport function $post(\r\n url: string,\r\n data: any,\r\n progressBar: Constants.IProgressBar | null = NProgress,\r\n actionToLog: string | null = null\r\n) {\r\n return callApi(url, Verb.Post, data, progressBar, actionToLog);\r\n}\r\n\r\nexport function $put(\r\n url: string,\r\n data: any,\r\n progressBar: Constants.IProgressBar | null = NProgress,\r\n actionToLog: string | null = null\r\n) {\r\n return callApi(url, Verb.Put, data, progressBar, actionToLog);\r\n}\r\n\r\nexport function $delete(\r\n url: string,\r\n data: any,\r\n progressBar: Constants.IProgressBar | null = NProgress,\r\n actionToLog: string | null = null\r\n) {\r\n return callApi(url, Verb.Delete, data, progressBar, actionToLog);\r\n}\r\n\r\nexport function $patch(\r\n url: string,\r\n data: any,\r\n progressBar: Constants.IProgressBar | null = NProgress,\r\n actionToLog: string | null = null\r\n) {\r\n return callApi(url, Verb.Patch, data, progressBar, actionToLog);\r\n}\r\n\r\nexport function createPdfFromReact(\r\n url: string,\r\n queryUrl: string,\r\n fileName: string,\r\n fileType: string,\r\n input: HTMLInputElement,\r\n link: HTMLAnchorElement,\r\n actionToLog: string\r\n) {\r\n return callApiBlob(url, queryUrl, fileName, fileType, input, link, NProgress, actionToLog);\r\n}\r\n\r\n//#endregion\r\n\r\nexport function logError(error: Models.ApiError): Promise<void> {\r\n const browserInstance = browser.detect();\r\n error.browser = browserInstance?.name || '';\r\n error.browserVersion = browserInstance?.version || '';\r\n error.uri = error.uri || window.location.href;\r\n error.referrer = error.uri ? window.location.href : document.referrer || '';\r\n error.raw = JSON.stringify(error);\r\n return $post('api/log', error, null, 'log error');\r\n}\r\n\r\n/**\r\n * Call a Swyfft API endpoint.\r\n * @param url The URL to call\r\n * @param verb The verb to call (GET, POST, PUT, PATCH)\r\n * @param data Any data to pass (optional)\r\n * @param progressBar Whether to show a progress indicator on the page while the call is in progress (defaults to true)\r\n * @param actionToLog The actionToLog to log. Nothing is logged if it is null; will otherwise be logged both to GA and to EFApiCallLogs.\r\n * @param logDetails Defaults to true. If false, no details of the API call will be logged, e.g., for security reasons.\r\n */\r\nexport async function callApi(\r\n url: string,\r\n verb: string,\r\n data: any,\r\n progressBar: Constants.IProgressBar | null,\r\n actionToLog: string | null,\r\n logDetails: boolean = true\r\n): Promise<any> {\r\n if (progressBar) progressBar.start();\r\n const start = new Date().getTime();\r\n const params: JQueryAjaxSettings = {\r\n url: `/${url}`,\r\n type: verb.toUpperCase(),\r\n contentType: 'application/json; charset=utf-8',\r\n };\r\n if (data) {\r\n params.data = JSON.stringify(data);\r\n }\r\n try {\r\n const result = await $.ajax(params);\r\n\r\n // Note that this logs both to Google Analytics and to our own EFApiCallLogs table.\r\n if (actionToLog) {\r\n $logToGa(actionToLog, 'success');\r\n let details = logDetails ? (verb === 'GET' ? url : (params.data || '').toString()) : '';\r\n await $logPerformance(actionToLog, details, start);\r\n }\r\n\r\n return result;\r\n } catch (err) {\r\n if (actionToLog) {\r\n $logToGa(actionToLog, 'failure');\r\n }\r\n\r\n err.uri = url;\r\n err.httpMethod = verb;\r\n\r\n throw err;\r\n } finally {\r\n window.swyfftApiCalls++;\r\n if (progressBar) {\r\n progressBar.done(true);\r\n }\r\n }\r\n}\r\n\r\nexport function callApiWithAbort<Model>(url: string, verb: Verb): AbortableResponse<Model> {\r\n const controller = new AbortController();\r\n\r\n try {\r\n const response = fetch(`/${url}`, {\r\n method: verb,\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json; charset=utf-8',\r\n },\r\n });\r\n\r\n return new AbortableResponse<Model>(controller, response);\r\n } catch (e) {\r\n e.uri = url;\r\n e.httpMethod = verb;\r\n throw e;\r\n }\r\n}\r\n\r\n//* This Api caller can be used to download files from a blob url returned by a post request. See how ReactToPdf/Index.tsx uses $postDownload (above) to get a pdf from the backend based on html input. */\r\nexport async function callApiBlob(\r\n url: string,\r\n queryUrl: string,\r\n fileName: string,\r\n fileType: string,\r\n input: HTMLInputElement,\r\n link: HTMLAnchorElement,\r\n progressBar: Constants.IProgressBar | null,\r\n action: string | null = null,\r\n logPerformance: boolean = true\r\n): Promise<void> {\r\n if (progressBar) progressBar.start();\r\n\r\n const start = new Date().getTime();\r\n try {\r\n await $requestBlob(url, queryUrl, fileName, fileType, input, link, progressBar);\r\n\r\n if (action) {\r\n $logToGa(action, 'success');\r\n if (logPerformance) {\r\n let details = (input.value || '').toString();\r\n await $logPerformance(action, details, start);\r\n }\r\n }\r\n } catch (err) {\r\n if (action) $logToGa(action, 'failure');\r\n\r\n err.uri = url;\r\n err.httpMethod = 'POST';\r\n throw err;\r\n }\r\n}\r\n\r\n/**\r\n * Call a POST method using a navigator.sendBeacon() call if it's available, otherwise use an <img src=\"\"> tag - the\r\n * point of both being that it allows us to make a reliable-ish API call when the page is unloading. (In theory the\r\n * <img> tag method should be reliable, but testing has indicated some problems with it on Firefox; unfortunately,\r\n * the navigator.sendBeacon() method isn't available on all browsers.) See https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon\r\n * and http://stackoverflow.com/a/4531276/68231. Note also that this means that the endpoint needs to support both GET\r\n * and POST verbs, and also that we're passing all the information along as URL params rather than in the POST body. dataInstance type is set to any to match ApiCaller data param type.\r\n */\r\nexport function $sendBeacon(url: string, dataInstance?: any) {\r\n if (typeof navigator['sendBeacon'] === 'function') {\r\n const data = dataInstance || undefined;\r\n navigator['sendBeacon'](url, data);\r\n } else {\r\n const i = new Image(1, 1);\r\n i.src = url;\r\n }\r\n}\r\n\r\n/**\r\n * Call Google Analytics to log an event.\r\n */\r\nexport function $logToGa(action: string, label: string) {\r\n try {\r\n if (typeof ga !== 'function') return;\r\n ga('send', 'event', 'api', action, label);\r\n } catch (err) {\r\n console.error('Error logging event: ' + err);\r\n }\r\n}\r\n\r\n/**\r\n * Call our own backend system to log an event (along with how long it took in milliseconds).\r\n */\r\nexport async function $logPerformance(action: string, details: string, start: number) {\r\n try {\r\n const now = new Date().getTime();\r\n const elapsed = now - start;\r\n if (details.length > 100) {\r\n details = details.substring(0, 100);\r\n }\r\n const log: Models.ApiCallMessage = {\r\n ApiCall: action,\r\n Details: details,\r\n ElapsedMilliseconds: elapsed,\r\n };\r\n\r\n // It's critical to call this with 'actionToLog:null', as it will otherwise trigger an infinite loop.\r\n await callApi('api/log/apicall', Verb.Post, log, null, null);\r\n } catch (e) {\r\n console.error('Error logging API call performance via sendBeacon: ' + e);\r\n }\r\n}\r\n\r\n//* This function runs a different type of POST request designed to return a file as a blob url. In order for this to work, input and anchor elements need to be passed in. For an example of this see ReactToPdf/Index.tsx */\r\nexport async function $requestBlob(\r\n url: string,\r\n queryUrl: string,\r\n fileName: string,\r\n fileType: string,\r\n input: HTMLInputElement,\r\n link: HTMLAnchorElement,\r\n progressBar?: Constants.IProgressBar | null\r\n): Promise<void> {\r\n return new Promise(resolve => {\r\n // Open xhr request and set it up to return a blob.\r\n const request = new XMLHttpRequest();\r\n request.open('POST', url, true);\r\n request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\r\n request.responseType = 'blob';\r\n\r\n request.onload = () => {\r\n window.swyfftApiCalls++;\r\n\r\n // Process the response as a blob and specify the file type from fileType parameter.\r\n const blob = new Blob([request.response], { type: fileType });\r\n\r\n // Create the blob url\r\n const url = URL.createObjectURL(blob);\r\n\r\n // Conditional logic for IE. It has its own function to open/save files from blob urls.\r\n const view = document.defaultView;\r\n if (view) link.href = url;\r\n if (view && view.window.navigator && (view.window.navigator as any).msSaveOrOpenBlob) {\r\n // IE doesn't set the file extension by the content type, so we're doing it manually here with the split() and pop() string methods\r\n (view.window.navigator as any).msSaveOrOpenBlob(blob, `${fileName}.${fileType.split('/').pop()}`);\r\n } else {\r\n // If not IE, add the link element to the body, click it to run the download, and then remove it.\r\n document.body.appendChild(link);\r\n link.setAttribute('download', fileName);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n if (progressBar) progressBar.done(true);\r\n\r\n resolve();\r\n };\r\n\r\n request.send(queryUrl + encodeURIComponent(input.value) + `&title=${fileName}`);\r\n\r\n // After we're done with the url, we need to delete it from memory.\r\n URL.revokeObjectURL(link.href);\r\n });\r\n}\r\n\r\n//#endregion\r\n","import { createElement } from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\n\r\n/** Returns a Node based on a provided React element so the component can be loaded on a non-React page. */\r\nexport const renderComponentInNode = (component: React.ReactElement): Node => {\r\n const container = document.createElement('div'),\r\n root = createRoot(container);\r\n\r\n root.render(createElement('div', null, component));\r\n\r\n return container;\r\n};\r\n","import { renderComponentInNode } from '@legacy/Renderer';\r\nimport { useClassName } from '@shared/Hooks/ClassName';\r\nimport type * as CSS from 'csstype';\r\nimport * as React from 'react';\r\nimport './style.scss';\r\n\r\nexport interface WaitModalProps {\r\n isVisible: boolean;\r\n children: React.ReactNode;\r\n title?: string;\r\n className?: string;\r\n}\r\n\r\nconst visibleStyle: CSS.Properties = {\r\n visibility: 'visible',\r\n display: 'flex',\r\n opacity: 1,\r\n};\r\n\r\nconst hiddenStyle: CSS.Properties = {\r\n visibility: 'hidden',\r\n display: 'none',\r\n opacity: 0,\r\n};\r\n\r\nconst WaitModal: React.FC<WaitModalProps> = props => {\r\n const style = props.isVisible ? visibleStyle : hiddenStyle;\r\n const className = useClassName('wait-modal', [props.className]);\r\n\r\n return (\r\n <div className={className} style={style}>\r\n <div className='wait-modal-content'>\r\n {props.title && <div className='wait-modal-title'>{props.title}</div>}\r\n <div className='wait-modal-body'>\r\n <div className='infinite-scroll-loader-cp'></div>\r\n <div>{props.children}</div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WaitModal;\r\n\r\nconst waitModalId = 'wait-modal';\r\n\r\nexport const renderWaitModal = (props: WaitModalProps) => {\r\n const node = renderComponentInNode(<WaitModal {...props}>{props.children}</WaitModal>);\r\n const container = document.createElement('div');\r\n container.id = waitModalId;\r\n document.body.appendChild(container);\r\n container.appendChild(node);\r\n};\r\n\r\nexport const removeWaitModal = () => {\r\n const waitModal = document.getElementById(waitModalId);\r\n if (waitModal) document.body.removeChild(waitModal);\r\n};\r\n","import { IProgressBar } from '@shared/Constants';\r\nimport { removeWaitModal, renderWaitModal } from './WaitModal';\r\n\r\n/* We might want to refactor this further or eliminate it when we refactor our api caller to use\r\n * fetch instead of JQuery. TODO Darius 2023/01/19 SW-22035 */\r\nexport class ProgressModal implements IProgressBar {\r\n public message: string;\r\n\r\n constructor(message: string = 'Loading...') {\r\n this.message = message;\r\n }\r\n\r\n start() {\r\n renderWaitModal({\r\n isVisible: true,\r\n className: 'align-start',\r\n children: this.message,\r\n });\r\n }\r\n\r\n done(forceShow?: boolean) {\r\n removeWaitModal();\r\n }\r\n}\r\n","/* @deprecated Use app/Business/CommonSets/ElementGroupName instead */\r\nexport const ElementGroupNames = {\r\n Features: 'Features',\r\n PropertyCoverages: 'Property Coverages',\r\n Deductibles: 'Deductibles',\r\n AdditionalCoverages: 'Additional Coverages',\r\n ConstructionRiskCharacteristics: 'Construction and Risk Characteristics',\r\n Agents: 'Agents',\r\n Admin: 'Admin',\r\n};\r\n","import { ComparisonQuotesModel } from '@shared/Models/ComparisonQuoteModels';\r\nimport { ReactElement } from 'react';\r\n\r\nexport * from './ComparisonQuoteModels';\r\n\r\n//Syntax note: Keys starting with uppercase should correspond to values generated on the BE. Keys starting with lowercase should correspond to values that are set/tracked on the UI.\r\n\r\nexport type NullableNumber = number | null | undefined;\r\nexport type NullableString = string | null | undefined;\r\nexport type Guid = string;\r\nexport type Mutable<T> = { -readonly [P in keyof T]: Mutable<T[P]> };\r\nexport type Immutable<T> = { readonly [P in keyof T]: Immutable<T[P]> };\r\n\r\n// ReSharper disable InconsistentNaming\r\nexport interface ILogin {\r\n UserName: string;\r\n Password: string;\r\n RememberMe: boolean;\r\n IsLoggedInFromQueryString: boolean;\r\n}\r\n\r\nexport interface LoginResponse {\r\n token: string;\r\n roles: number[];\r\n hasJwt: boolean;\r\n details: LoginDetails;\r\n}\r\n\r\nexport interface LoginDetails {\r\n isManagerOfAgents: boolean;\r\n agencyName: string;\r\n userName: string;\r\n agentName: string;\r\n agentPhoneNumber: string;\r\n appointedProductLineId: number;\r\n}\r\n\r\nexport interface QuoteCreateRequest {\r\n AddressKey: string;\r\n LivingSpace?: NullableNumber;\r\n YearBuilt?: NullableNumber;\r\n RoofAge?: NullableNumber;\r\n Address: string;\r\n NonSingleFamilyResidenceConfirmed?: boolean;\r\n UtmCampaign?: string;\r\n UtmSource?: string;\r\n UtmMedium?: string;\r\n RatingType?: string;\r\n InsuredNameFirst: string;\r\n InsuredNameMiddle?: string;\r\n InsuredNameLast: string;\r\n IsRelatedToAdmittedDecline?: boolean;\r\n DeclineLogId?: number;\r\n}\r\n\r\nexport interface CommercialQuoteCreateRequest extends IPhysicalAddress {\r\n AddressKey: string;\r\n BuildingAddress: string;\r\n BuildingType: string;\r\n Occupancy: string;\r\n ConstructionType: string;\r\n GeneralLiabilityCoverage: string;\r\n BuildingValue: number;\r\n TargetAnnualPremium: number;\r\n BusinessIncomeLimit: number;\r\n YearBuilt: number;\r\n SquareFootage: number;\r\n NumberOfUnits?: number;\r\n NumberOfStories: number;\r\n BusinessPersonalPropertyLimit: number;\r\n SwimmingPoolCount?: number;\r\n WindExclusion: boolean;\r\n NumberOfBuildings: number;\r\n RatingType: string;\r\n IsLessorsRisk: boolean;\r\n}\r\n\r\nexport interface QuotePatchRequest {\r\n QuoteId: string;\r\n ManualPremiumAdjustment?: number;\r\n ConfiguredOn?: Date | string | null;\r\n Elements: QuoteElement[];\r\n Claims?: any;\r\n gaEventAction?: string;\r\n IsComparisonQuote?: boolean;\r\n}\r\n\r\nexport interface CommercialQuotePatchRequestBase {\r\n HiredNonOwnedAutoCoverage?: boolean;\r\n OrdinanceOrLawCoverage?: boolean;\r\n PropertyBroadeningFormCoverage?: boolean;\r\n EmployeeBenefitsCoverage?: boolean;\r\n TerrorismCoverage?: boolean;\r\n OrdinanceOrLawCoverageB?: boolean;\r\n OrdinanceOrLawCoverageBLimit?: number;\r\n OrdinanceOrLawCoverageC?: boolean;\r\n OrdinanceOrLawCoverageCLimit?: number;\r\n OrdinanceOrLawCombinedLimits?: number;\r\n OrdinanceOrLawCombinedBAndCCoverage?: boolean;\r\n OrdinanceOrLawSeparateBAndCCoverage?: boolean;\r\n PropertyBroadeningFormChoice?: string;\r\n Deductible?: number;\r\n BusinessIncomeLimit?: number;\r\n BusinessPersonalPropertyLimit?: number;\r\n EquipmentBreakdownCoverage?: boolean;\r\n CommercialLossClaims?: CommercialLossClaimSummary[];\r\n IndoorOrSubterraneanParking?: boolean;\r\n IndoorOrSubterraneanParkingSquareFootage?: number;\r\n SwimmingPoolCount?: number;\r\n yearBuilt?: number;\r\n squareFootage?: number;\r\n numberOfUnits?: number;\r\n numberOfStories?: number;\r\n constructionType?: string;\r\n protectionClass?: number;\r\n EmployeeTheftCoverage?: boolean;\r\n EmployeeTheftLimit?: number;\r\n EmployeeTheftDeductible?: number;\r\n ForgeryOrAlterationCoverage?: boolean;\r\n ForgeryOrAlterationLimit?: number;\r\n ForgeryOrAlterationDeductible?: number;\r\n InsidePremisesTheftCoverage?: boolean;\r\n InsidePremisesTheftLimit?: number;\r\n InsidePremisesTheftDeductible?: number;\r\n InsidePremisesRobberyCoverage?: boolean;\r\n InsidePremisesRobberyLimit?: number;\r\n InsidePremisesRobberyDeductible?: number;\r\n OutsidePremisesCoverage?: boolean;\r\n OutsidePremisesLimit?: number;\r\n OutsidePremisesDeductible?: number;\r\n ComputerFundsFraudCoverage?: boolean;\r\n ComputerFundsFraudLimit?: number;\r\n ComputerFundsFraudDeductible?: number;\r\n CounterfeitMoneyCoverage?: boolean;\r\n CounterfeitMoneyLimit?: number;\r\n CounterfeitMoneyDeductible?: number;\r\n IrpmManagementValue?: number;\r\n IrpmLocationValue?: number;\r\n IrpmBuildingFeaturesValue?: number;\r\n IrpmPremisesEquipmentValue?: number;\r\n IrpmEmployeesValue?: number;\r\n IrpmProtectionValue?: number;\r\n effectiveDate?: Date | string;\r\n buildingValue?: number;\r\n NumberOfBuildings?: number;\r\n GeneralLiabilityCoverage?: string;\r\n EarthquakeCoverage?: boolean;\r\n FloodCoverage?: boolean;\r\n EarthquakeCoverageSublimit?: number;\r\n FloodCoverageSublimit?: number;\r\n}\r\n\r\nexport interface CommercialQuotePatchRequest extends CommercialQuotePatchRequestBase {\r\n QuoteId: string;\r\n PolicyAge?: number;\r\n ConfiguredOn?: Date | string | null;\r\n gaEventAction?: string;\r\n}\r\n\r\nexport interface CommercialPatchInstance {\r\n name: string;\r\n value: string | number | boolean | Date;\r\n}\r\n\r\nexport interface IContactUnderwriterRequest {\r\n name: string;\r\n email: string;\r\n reason: string;\r\n message?: string;\r\n productLineId: number;\r\n}\r\n\r\nexport interface EmailTemplateInfoModel {\r\n Email: string;\r\n Phone?: string | null;\r\n Name?: string | null;\r\n ProductLineId: number;\r\n}\r\n\r\nexport interface QuoteModelBase {\r\n QuoteId: string;\r\n LastAgentUserId?: string;\r\n LastAgencyName?: string;\r\n StateCode: string;\r\n CreatedOn: Date | string;\r\n ModifiedOn: Date | string;\r\n PurchasedOn?: Date | null | undefined;\r\n ConfiguredOn: Date | string | null;\r\n EffectiveDate: Date | null;\r\n Insureds?: QuoteInsured[];\r\n Lines: QuoteLine[];\r\n QuotePremiumErrors: QuotePremiumError[];\r\n QuoteFees: QuoteFee[];\r\n QuoteWarnings: QuoteWarning[];\r\n AcceptedOn?: Date;\r\n RepricedOn?: Date;\r\n ManualPremiumAdjustment?: number;\r\n AnnualPremium: number;\r\n GrossAnnualPayment: number;\r\n AnnualFeesTotal: number;\r\n Purchased: boolean;\r\n Repriced: boolean;\r\n Notes?: string;\r\n IsReadOnly: boolean;\r\n IsCancel?: boolean;\r\n IsRewrite?: boolean;\r\n Elements: QuoteElement[];\r\n Params: QuoteParameters;\r\n IsNew?: boolean;\r\n ProducerLocationName: string;\r\n}\r\n\r\nexport interface AlternateQuotesModel {\r\n CarrierCode: string;\r\n Premium: number;\r\n QuoteId: string;\r\n LastModifiedBy?: string;\r\n LastModifiedOn: string;\r\n CanBind: boolean;\r\n SoftDeclines: number;\r\n CoverageA: number;\r\n CoverageB: number;\r\n CoverageC: number;\r\n CoverageD: number;\r\n AopDeductible: number;\r\n WindDeductible: number;\r\n NamedStormDeductible: number;\r\n}\r\n\r\nexport interface CreateQuoteResponse<\r\n TQuoteModel extends HomeownerQuoteModel | CommercialQuoteModel | ComparisonQuotesModel\r\n> {\r\n error: CreateQuoteError | null;\r\n comparisonModel: TQuoteModel | null;\r\n}\r\n\r\nexport interface CreateQuoteError {\r\n ErrorMessage: string;\r\n ErrorCode: number;\r\n}\r\n\r\nexport interface HomeownerQuoteModel extends QuoteModelBase {\r\n QuoteDefinition: string;\r\n QuoteDefinitionId?: number;\r\n AddressKey: string;\r\n AlternateQuotes: AlternateQuotesModel[] | null;\r\n TerritoryCode: string;\r\n PrimaryElementName: string;\r\n CalculatedReplacementCost?: number;\r\n CalculatedReplacementCostPerSquareFoot?: number;\r\n ParentMonthlyInstallmentFee?: number;\r\n DownPayment: number;\r\n DownPaymentMonthCount: number;\r\n MonthlyInstallmentFee: number;\r\n MonthlyPayment: number;\r\n ProRataPremium?: number;\r\n GrossDownPayment: number;\r\n CarrierCode: string;\r\n QuoteProperty: HOPropertyData;\r\n CalculationMethodology: string;\r\n RatingType?: string;\r\n AvailablePaymentTypes: string;\r\n NewPurchase?: boolean;\r\n PremiumType?: string;\r\n InsuredNameFirst: string | null;\r\n InsuredNameMiddle: string | null;\r\n InsuredNameLast: string | null;\r\n RawAnnualPremium?: number;\r\n AgentPhone?: number;\r\n NcfGuid?: string;\r\n IsMepState?: boolean;\r\n HasEAndSOffer?: boolean;\r\n CanOfferEAndS?: boolean;\r\n ShowChangeInsuredName: boolean;\r\n ShowYearBuiltOnConfirmationModal: boolean;\r\n CanDisplayPremium: boolean;\r\n ExpiresOn: string;\r\n Claims: HOClaimSummary[];\r\n DisplayAdverseActionNotice: boolean;\r\n IsUpcomingRenewalQuote: boolean;\r\n ImsPolicyNumber: string;\r\n UpcomingRenewalImsPolicyNumber: string;\r\n UpcomingRenewalQuoteId: string | null | undefined;\r\n UpcomingRenewalHasLatestQuoteDef: boolean;\r\n InsuranceScoreAddressKey: string;\r\n FlatInstallmentFee?: number;\r\n}\r\n\r\nexport interface CommercialQuoteModel extends QuoteModelBase {\r\n BuildingType: string;\r\n BuildingValue: number;\r\n BuildingAddress: string;\r\n Locations: CommercialQuoteLocation[];\r\n Elements: CommercialElement[];\r\n CarrierCode: string;\r\n HiredNonOwnedAutoCoverage: boolean;\r\n EmployeeBenefitsCoverage: boolean;\r\n TerrorismCoverage: boolean;\r\n TerrorismPremium: number;\r\n OrdinanceOrLawCoverage: boolean;\r\n OrdinanceOrLawLimit: number;\r\n UseCombinedOrdinanceOrLawBC: boolean;\r\n OrdinanceOrLawBLimit: number;\r\n OrdinanceOrLawCLimit: number;\r\n OrdinanceOrLawCombinedBCLimit: number;\r\n PropertyBroadeningFormCoverage: boolean;\r\n PropertyBroadeningFormChoice: string;\r\n Deductible: number;\r\n HurricaneDeductible: number;\r\n BusinessIncomeLimit: number;\r\n BusinessPersonalPropertyLimit: number;\r\n EquipmentBreakdownCoverage: boolean;\r\n CommercialLossClaims: CommercialLossClaimSummary[];\r\n IndoorOrSubterraneanParking: boolean;\r\n IndoorOrSubterraneanParkingSquareFootage: number;\r\n SwimmingPoolCount: number;\r\n YearBuilt: number;\r\n SquareFootage: number;\r\n NumberOfUnits: number;\r\n NumberOfStories: number;\r\n ConstructionType: string;\r\n ProtectionClass: number;\r\n LastAgencyId: string;\r\n CrimeCoverage: boolean;\r\n CrimeCoverageLimit: number;\r\n EmployeeTheftCoverage: boolean;\r\n EmployeeTheftLimit: number;\r\n EmployeeTheftDeductible: number;\r\n ForgeryOrAlterationCoverage: boolean;\r\n ForgeryOrAlterationLimit: number;\r\n ForgeryOrAlterationDeductible: number;\r\n InsidePremisesTheftCoverage: boolean;\r\n InsidePremisesTheftLimit: number;\r\n InsidePremisesTheftDeductible: number;\r\n InsidePremisesRobberyCoverage: boolean;\r\n InsidePremisesRobberyLimit: number;\r\n InsidePremisesRobberyDeductible: number;\r\n OutsidePremisesCoverage: boolean;\r\n OutsidePremisesLimit: number;\r\n OutsidePremisesDeductible: number;\r\n ComputerFundsFraudCoverage: boolean;\r\n ComputerFundsFraudLimit: number;\r\n ComputerFundsFraudDeductible: number;\r\n CounterfeitMoneyCoverage: boolean;\r\n CounterfeitMoneyLimit: number;\r\n CounterfeitMoneyDeductible: number;\r\n IrpmManagementMin: number;\r\n IrpmManagementMax: number;\r\n IrpmManagementValue: number;\r\n IrpmLocationMin: number;\r\n IrpmLocationMax: number;\r\n IrpmLocationValue: number;\r\n IrpmBuildingFeaturesMin: number;\r\n IrpmBuildingFeaturesMax: number;\r\n IrpmBuildingFeaturesValue: number;\r\n IrpmPremisesEquipmentMin: number;\r\n IrpmPremisesEquipmentMax: number;\r\n IrpmPremisesEquipmentValue: number;\r\n IrpmEmployeesMin: number;\r\n IrpmEmployeesMax: number;\r\n IrpmEmployeesValue: number;\r\n IrpmProtectionMin: number;\r\n IrpmProtectionMax: number;\r\n IrpmProtectionValue: number;\r\n IrpmTotal: number;\r\n IrpmAdmin: number;\r\n PropertyPremium: number;\r\n GeneralLiabilityPremium: number;\r\n IsOk: boolean;\r\n ErrorMessage?: string;\r\n Severity?: SeverityLevel;\r\n LiabilityPremium: number;\r\n WindExclusion: boolean;\r\n ProspectiveInsuredName?: string;\r\n ProbableEffectiveDate: string;\r\n NumberOfBuildings: number;\r\n GeneralLiabilityCoverage: string;\r\n EarthquakeCoverage: boolean;\r\n FloodCoverage: boolean;\r\n EarthquakeSublimit: number;\r\n FloodSublimit: number;\r\n IrpmReason: string;\r\n IrpmAdminReason: string;\r\n RatingType: string;\r\n BroadeningASewerLimit: number;\r\n BroadeningBSewerLimit: number;\r\n QuoteElementMessages?: Object | null;\r\n CrimePremium: number;\r\n NewPurchase: boolean;\r\n OptionalSinkhole: boolean;\r\n ExpiresOn: Date;\r\n MercantileSquareFootage: number;\r\n ParkingSquareFootage: number;\r\n IsRenewal: boolean;\r\n LeadExclusion: boolean;\r\n CarrierName: string;\r\n LatestInsuredName: string;\r\n ImsPolicyNumber: string;\r\n MinOwnerOccupied: string | null;\r\n HurricaneDamageConfirmation: boolean;\r\n StopGapCoverage: boolean;\r\n StateConfigName?: string;\r\n WaterDamageDeductible: number | null;\r\n WaterDamageDeductibleFrequency: string | null;\r\n}\r\n\r\nexport interface SeverityLevel {\r\n m_levelValue: number;\r\n m_levelName: string;\r\n m_levelDisplayName: string;\r\n}\r\n\r\nexport interface QuoteParameters {\r\n MaxReplacementCost: number;\r\n RequiredElements: QuoteElement[];\r\n}\r\n\r\nexport interface CustomerInfo {\r\n Email: string | null;\r\n Phone: string | null;\r\n}\r\n\r\nexport interface CommercialLossClaimSummary {\r\n Year?: string;\r\n Amount?: string;\r\n Type?: string;\r\n initialRenderState?: boolean;\r\n QuoteId?: string;\r\n}\r\n\r\nexport interface HOClaimSummary {\r\n Date: string;\r\n Amount: string;\r\n Type: string;\r\n initialRenderState?: boolean;\r\n}\r\n\r\nexport interface CommercialQuoteLocation {\r\n TerritoryCode: string;\r\n BuildingValue: number;\r\n QuoteProperty: CommercialPropertyData;\r\n}\r\n\r\nexport interface CommercialElement extends QuoteElement {\r\n Description: string;\r\n ElementValueType?: string;\r\n RawPercentageDefaultValue?: string;\r\n IsDefaultValueInitialized?: boolean;\r\n PercentageValue?: number;\r\n PercentageDefaultValue?: number;\r\n AccessFlag?: string;\r\n PercentageMinValue?: number;\r\n PercentageMaxValue?: number;\r\n}\r\n\r\nexport interface QuoteElement {\r\n ElementName: string;\r\n Value: string | null;\r\n /**\r\n * The element's visible label\r\n */\r\n ElementDisplay?: string;\r\n DisplayFormat?: string;\r\n OrderBy?: number;\r\n Group?: string;\r\n ElementType?: string;\r\n RawDefaultValue?: string;\r\n DefaultValue?: string;\r\n Editable?: boolean;\r\n Viewable?: boolean;\r\n MinValue?: number;\r\n MaxValue?: number;\r\n CorrectValue?: boolean;\r\n Increment?: number;\r\n UpdatedOn?: string;\r\n Choices?: QuoteChoice[];\r\n ParentElementName?: string;\r\n ShowIfParentElementValues?: string;\r\n ParentElementValue?: string;\r\n showPremiumErrorIcon?: boolean;\r\n replacementCost?: number | undefined;\r\n Description?: string;\r\n IsDefaultValueInitialized?: boolean;\r\n PreviousValue?: string | null;\r\n RoundDefaultValueDown?: boolean;\r\n ShowOnPrimary?: boolean;\r\n}\r\n\r\nexport interface QuoteChoice {\r\n Name?: string;\r\n Value?: string;\r\n ImageUrl?: string | null;\r\n OrderBy?: number;\r\n ShowOnPrimary?: boolean;\r\n}\r\n\r\nexport interface QuotePremiumError {\r\n ElementGroup: string;\r\n ElementName: string;\r\n Header: string;\r\n Message: string;\r\n OrderNumber: number;\r\n CreatedOn: string;\r\n}\r\n\r\nexport interface QuoteFee {\r\n Name: string;\r\n DisplayName: string;\r\n Type: string;\r\n Value: number;\r\n OrderNumber: number;\r\n}\r\n\r\nexport interface QuoteWarning {\r\n ElementName: string;\r\n Warning: string;\r\n}\r\n\r\nexport interface ElementGroup {\r\n StateCode?: string;\r\n GroupCode: string;\r\n Description: string;\r\n ElementNames: string[];\r\n}\r\n\r\nexport interface ElementDescriptions {\r\n [elementName: string]: string;\r\n}\r\n\r\nexport interface IQuoteDetails {\r\n QuoteId: string;\r\n Address?: string;\r\n CreateDate: Date | string;\r\n ModifiedOn: Date | string;\r\n QuoteEvents: IQuoteEvent[];\r\n}\r\n\r\nexport interface IQuoteEvent {\r\n Agency: string | null;\r\n Agent: string | null;\r\n AnnualPremium: number;\r\n CreatedOn: Date | string;\r\n Event: string;\r\n IpAddress: string;\r\n IsAdminEvent: boolean;\r\n Location: string;\r\n Notes: string;\r\n}\r\n\r\nexport interface ICommercialQuoteEvent {\r\n Agent: string | null;\r\n Agency: string | null;\r\n Event: string;\r\n Notes: string;\r\n AnnualPremium: number;\r\n IpAddress: string | null;\r\n Location: string | null;\r\n CreateDate: string;\r\n}\r\n\r\nexport interface QuoteInsured {\r\n FirstName: string;\r\n LastName: string;\r\n NameOnPolicy: string;\r\n IsPrimary?: boolean;\r\n Race: string | null;\r\n Gender: string | null;\r\n OptOut: boolean | null;\r\n}\r\n\r\nexport interface ILocation {\r\n latitude: number;\r\n longitude: number;\r\n}\r\n\r\nexport interface PropertyData extends IOptionalMappableSwyfftAddress {\r\n FullAddress: string;\r\n\r\n //County?: string;\r\n LivingSpace?: number | null;\r\n CalculatedImprovements?: number | null;\r\n AppraisedImprovements?: number | null;\r\n Phone?: string | null;\r\n Email?: string | null;\r\n IsSingleFamilyResidence: boolean;\r\n SaleDate?: Date | null;\r\n}\r\n\r\n//HG 1/18/18: These are empty for now, but will eventually include values specific to Comm / HO\r\nexport interface CommercialPropertyData extends PropertyData {}\r\n\r\nexport interface HOPropertyData extends PropertyData {\r\n TimeZoneOffset: number;\r\n County: string | undefined;\r\n}\r\n\r\nexport interface IAddressOverride {\r\n Id: number;\r\n Rule: string;\r\n AddressKey: string;\r\n QuoteProperty: IPropertyModel;\r\n CreatedOn: Date;\r\n ModifiedOn: Date;\r\n DeletedOn: Date | null;\r\n ExpiresOn: Date;\r\n Agent: EFAgent;\r\n Comment: string;\r\n}\r\n\r\nexport interface QuoteLine {\r\n Id?: number;\r\n DisplayName?: string;\r\n Comment?: string;\r\n Value?: string;\r\n IsDetail?: boolean;\r\n}\r\n\r\nexport interface IPaymentAddress {\r\n BillingAddress?: IPhysicalAddress;\r\n MailingAddress?: IPhysicalAddress;\r\n}\r\n\r\nexport interface PurchaseRequest extends IPaymentAddress {\r\n QuoteId: string;\r\n EffectiveDate: Date;\r\n ChangePayment?: boolean;\r\n TwoMonthDownAddress?: boolean;\r\n OldBusiness?: boolean;\r\n PremiumType: string;\r\n PaymentType: string | null;\r\n Insured: QuoteInsured;\r\n AdditionalInsureds: QuoteInsured[];\r\n CreditCard?: CreditCardModel;\r\n ECheck?: ECheckModel;\r\n PaymentAuthorization?: string;\r\n MortgageInfo: MortgageInfo | null;\r\n NewPurchase: boolean;\r\n StateCode: string;\r\n BackdateLimit?: number;\r\n ProductLineId: number;\r\n}\r\n\r\nexport interface CreditCardModel {\r\n Number: string;\r\n Expires: string;\r\n Cvv: string;\r\n FirstName: string;\r\n LastName: string;\r\n Phone: string;\r\n Email: string;\r\n AuthToken?: string;\r\n}\r\n\r\nexport interface ECheckModel {\r\n AccountOwner: string;\r\n AccountType: string;\r\n RoutingNumber: string;\r\n AccountNumber: string;\r\n}\r\n\r\nexport interface IPhysicalAddress {\r\n Street1: string;\r\n Street2?: string | null;\r\n City: string;\r\n StateCode: string;\r\n Zip: string;\r\n}\r\n\r\nexport interface IPhysicalAddressWithBuildingNumber extends IPhysicalAddress {\r\n PhysicalBuildingNo: string;\r\n}\r\n\r\n/**\r\n * Simplified QuoteProperty used on QuoteSummary\r\n */\r\nexport interface PhysicalAddress extends IPhysicalAddress {\r\n Lat: number;\r\n Lon: number;\r\n}\r\n\r\n/**\r\n * Simplified QuoteProperty used for addresses retrieved from \\api\\properties\r\n */\r\nexport interface IPropertyModel extends IPhysicalAddress {\r\n AddressKey: string;\r\n FullAddress?: string;\r\n}\r\n\r\nexport interface ISwyfftAddress extends IPhysicalAddress {\r\n AddressKey: string;\r\n}\r\n\r\nexport interface IOptionalMappableSwyfftAddress extends ISwyfftAddress {\r\n Latitude?: number | null;\r\n Longitude?: number | null;\r\n}\r\n\r\nexport interface IEmailQuoteInfo {\r\n Email: string;\r\n Phone: string;\r\n ProductLineId: number;\r\n Message?: string;\r\n Name?: string;\r\n PurchaseUrl?: string;\r\n ModifyUrl?: string;\r\n ImageBaseUrl?: string;\r\n}\r\n\r\nexport interface MortgageInfo {\r\n ContactBankRequested: boolean;\r\n BankName: string;\r\n BankStreet1: string;\r\n BankStreet2: string;\r\n BankCity: string;\r\n BankStateCode: string;\r\n BankZip: string;\r\n BankFax: string;\r\n BankEmail: string;\r\n LoanNumber: string;\r\n}\r\n\r\nexport interface AdditionalInterestInfo extends MortgageInfo {\r\n AdditionalInterestControl: number;\r\n}\r\n\r\nexport interface QuoteLookup {\r\n productLine: number;\r\n filter: string;\r\n start: number;\r\n count: number;\r\n onlyMyQuotes: boolean;\r\n search: string;\r\n}\r\n\r\nexport class ApiError {\r\n /* The HTTP error code */\r\n code: string;\r\n /* The definitive error code that determines why a given error happened. */\r\n subCode: string;\r\n lastAddressKey: string | null;\r\n lastAddress: string | null;\r\n browser: string;\r\n browserVersion: string;\r\n uri: string;\r\n httpMethod: string;\r\n reference: string | undefined;\r\n errorType: ApiErrorTypes | string;\r\n declineLogId: number | null;\r\n ncfId: string | null | undefined;\r\n referrer: string | null | undefined;\r\n raw: string | undefined;\r\n\r\n /**\r\n * Instantiate a new instance of the common ApiError class.\r\n * @param code The HTTP error code.\r\n * @param severity Severity of the error as a string: \"ERROR\", \"WARN\", \"INFO\" primarily. See log4net.Level for details.\r\n * @param message The message that will be displayed to users\r\n * @param subCode The definitive code that provides the information about how the error should be handled.\r\n * @param details Additional debugging details that will be shown in our logs, but not to the user.\r\n * @param reference An identifier that can be used to find details of this error in logs.\r\n * @param errorType HTTP error or Swyfft error.\r\n * @param uri The URI that was requested when the error occurred.\r\n * @param httpMethod The HTTP method that was used when the error occurred.\r\n * @param declineLogId an Id that is included when a quote is allowed via E&S but not Admitted.\r\n * @param ncfId the id for getting ncf adverse action reasons\r\n * @param referrer the previous url and referral source for a given user\r\n */\r\n constructor(\r\n code: number | string,\r\n public severity: string | null,\r\n public message: string,\r\n subCode?: number | string | null,\r\n public details?: string,\r\n reference?: string,\r\n errorType?: ApiErrorTypes | string | null,\r\n uri?: string,\r\n httpMethod?: string,\r\n declineLogId?: number | null,\r\n ncfId?: string | null,\r\n referrer?: string | null\r\n ) {\r\n this.code = code.toString();\r\n if (subCode != null) {\r\n this.subCode = subCode.toString();\r\n }\r\n\r\n this.reference = reference;\r\n this.severity = severity;\r\n\r\n if (errorType != null) {\r\n this.errorType = errorType;\r\n } else {\r\n this.errorType = ApiErrorTypes.SwyfftErrorCode;\r\n }\r\n\r\n if (uri != null) {\r\n this.uri = uri;\r\n }\r\n\r\n if (httpMethod != null) {\r\n this.httpMethod = httpMethod;\r\n }\r\n\r\n if (declineLogId != null) {\r\n this.declineLogId = declineLogId;\r\n }\r\n\r\n if (referrer != null) {\r\n this.referrer = referrer;\r\n }\r\n\r\n this.ncfId = ncfId;\r\n }\r\n}\r\n\r\nexport enum ApiErrorTypes {\r\n HttpStatusCode = 'HttpStatusCode',\r\n SwyfftErrorCode = 'SwyfftErrorCode',\r\n UnexpectedError = 'UnexpectedError',\r\n}\r\n\r\n/**\r\n * Corresponds to C# Swyfft.Web.Api.Models.QuoteRequestEvent\r\n */\r\nexport interface QuoteRequestEvent {\r\n EventName: string;\r\n Address: string;\r\n AddressKey?: string;\r\n Description?: string;\r\n}\r\n\r\n/**\r\n * Corresponds to Swyfft.Services.Models.RepriceModel\r\n */\r\nexport interface RepriceModel {\r\n CurrentImsQuoteGuid?: string;\r\n ProducerContactGuid?: string;\r\n PremiumType: string;\r\n ImsQuoteHistory: string[];\r\n SetupInstallmentBilling: boolean;\r\n IsRenewal: boolean;\r\n InternalRewrite?: boolean;\r\n SkipVaveReprice: boolean;\r\n ProductLineId: number;\r\n IsComparison: boolean;\r\n}\r\n\r\nexport interface QuotesResult {\r\n Results: QuoteSummary[];\r\n Page: number;\r\n TotalPages: number;\r\n TotalResults: number;\r\n ResultsPerPage: number;\r\n}\r\n\r\n/*\r\n * A list of quotes used on the History page.\r\n */\r\nexport interface ISearchResponse {\r\n Start: number;\r\n Total: number;\r\n Results: QuoteSummary[];\r\n}\r\n\r\n/*\r\n * A brief summary of a quote used on the History page.\r\n */\r\nexport interface QuoteSummary {\r\n QuoteId: string;\r\n Purchased: boolean;\r\n Endorsement: boolean;\r\n IsEmailed: boolean;\r\n LastAgent?: string;\r\n PrimaryInsured?: string;\r\n ProspectiveInsuredName?: string;\r\n Premium: number;\r\n CreatedOn: Date;\r\n PurchasedOn?: Date;\r\n RepricedOn?: Date;\r\n PolicyNumber?: string;\r\n Address: PhysicalAddress;\r\n PremiumType?: string;\r\n PaymentType?: string;\r\n RatingType?: string;\r\n CarrierName: string;\r\n AlternateQuotes: number;\r\n IsRenewedPolicy: boolean;\r\n IsExpiredPolicy: boolean;\r\n IsCancelledPolicy: boolean;\r\n BindingRequirements: string[];\r\n}\r\n\r\n/**\r\n * Client-side representation of EFZipCode\r\n */\r\nexport interface ZipInfo {\r\n ZipCode: string;\r\n City: string;\r\n StateCode: string;\r\n}\r\n\r\nexport enum DocType {\r\n Policy = 'Policy',\r\n Invoice = 'Invoice',\r\n Payment = 'Payment',\r\n ChecklistOfCoverage = 'ChecklistOfCoverage',\r\n}\r\n\r\n/**\r\n * A brief summary of a policy used on the History page.\r\n */\r\nexport interface PolicySummary {\r\n QuoteId: string;\r\n EffectiveDate: Date;\r\n ImsPolicyNumber: string;\r\n PrimaryInsured?: string;\r\n PrimaryInsuredEmail: string;\r\n PrimaryInsuredPhone: string;\r\n PremiumType?: string;\r\n PaymentType?: string;\r\n RatingType?: string;\r\n PrimaryInsuredAddress: PhysicalAddress;\r\n PropertyAddress: PhysicalAddress;\r\n Documents: DocType[];\r\n UpcomingRenewalQuoteId: string | null | undefined;\r\n StateCode: string;\r\n IsRenewalPolicy: boolean;\r\n HasRenewalPolicy: boolean;\r\n PolicyStatus: string | null;\r\n NocReason: string | null;\r\n RenewalState: string | null;\r\n}\r\n\r\nexport interface ContactModel {\r\n ContactType: string;\r\n Name: string;\r\n Email: string;\r\n PolicyNumber?: string;\r\n PolicyZip?: string;\r\n Address: string;\r\n City: string;\r\n StateId: string;\r\n Zip: string;\r\n Date: string;\r\n Phone: string;\r\n FaxNumber: string;\r\n Subject: string;\r\n Message: string;\r\n CancelSigned: boolean;\r\n UpdateAddress: boolean;\r\n CancelReason: string;\r\n CancelDetail: string;\r\n}\r\n\r\nexport interface VerifyModel {\r\n EmailAddress: string;\r\n PolicyNumber?: string;\r\n ZipCode: string;\r\n FaxNumber: string;\r\n}\r\n\r\nexport interface AdditionalInterest {\r\n InterestControlId: number;\r\n InterestGuid: string;\r\n UnderwritingLocation: string;\r\n InterestName: string;\r\n Interest: string;\r\n Address1: string;\r\n Address2: string;\r\n City: string;\r\n StateId: string;\r\n CountryCode: string;\r\n ZipCode: string;\r\n Billable: boolean;\r\n Phone: string;\r\n Fax: string;\r\n Email: string;\r\n PolicyNumber: string;\r\n InterestTypes: string;\r\n}\r\n\r\nexport interface PolicyAdditionalInterest {\r\n PolicyNumber: string;\r\n AdditionalInterests: AdditionalInterest[];\r\n}\r\n\r\nexport interface QuoteAdditionalInterest {\r\n AdditionalInterestControlId: number;\r\n AdditionalInterestTypeId: number;\r\n Address1: string;\r\n Address2: string;\r\n Billable: boolean;\r\n City: string;\r\n Email: string;\r\n Fax: string;\r\n ID: number;\r\n Interest: string;\r\n InterestName: string;\r\n ModificationCode: string;\r\n Phone: string;\r\n QuoteId: number;\r\n StateId: string;\r\n ZipCode: string;\r\n}\r\n\r\nexport interface AdditionalInterestUpdateRequest {\r\n PolicyNumber: string;\r\n Updates: AdditionalInterest[];\r\n Adds: AdditionalInterest[];\r\n Removes: number[];\r\n}\r\n\r\nexport interface PolicyFaxPageData {\r\n PolicyNumber: string;\r\n ImsQuoteGuid: string;\r\n Address: string;\r\n InsuredName: string;\r\n AdditionalInterests: QuoteAdditionalInterest[];\r\n}\r\n\r\nexport interface Mortgagee {\r\n Id: string;\r\n CompanyName: string;\r\n Street1: string;\r\n Street2: string;\r\n City: string;\r\n StateCode: string;\r\n Zip: string;\r\n ZipPlus: string;\r\n Email: string;\r\n Phone: string;\r\n Fax: string;\r\n CSRName: string;\r\n CSREmail: string;\r\n CSRPhone: string;\r\n CSRFax: string;\r\n PolicyEmail: string;\r\n PolicyFax: string;\r\n}\r\n\r\nexport interface Appointed {\r\n Code: string;\r\n Agency: string;\r\n LicenseName: string;\r\n FEIN: string;\r\n NPN: string;\r\n LicenseNumber: string;\r\n LicenseType: string;\r\n ExpirationDate: string;\r\n LicenseState: string;\r\n AppointedDate: string;\r\n LicenseId: string;\r\n}\r\n\r\nexport interface EFAgent {\r\n AgentId: number;\r\n UserId: string;\r\n CreatedOn?: Date;\r\n ModifiedOn?: Date;\r\n DeletedOn: Date | null;\r\n ProducerContact: EFProducerContact;\r\n AgentRoles: EFAgentRole[];\r\n}\r\n\r\nexport interface EFProducerContact {\r\n ProducerContactId: number;\r\n ProducerContactGuid: string;\r\n ProductLine: number;\r\n AgentId: number | null;\r\n AgencyId: number;\r\n UserId: string;\r\n FName: string;\r\n LName: string;\r\n CreatedOn?: Date;\r\n ModifiedOn?: Date;\r\n DeletedOn: Date | null;\r\n Agent: EFAgent;\r\n Agency: EFAgency;\r\n}\r\n\r\nexport interface EFAgentRole {\r\n AgentId: number;\r\n RoleCode: string;\r\n}\r\n\r\nexport interface EFAgency {\r\n AgencyId: number;\r\n ProducerGuid: string;\r\n Name: string;\r\n ProductLine: number;\r\n CreatedOn: Date;\r\n ModifiedOn: Date;\r\n DeletedOn: Date | null;\r\n ProducerContacts: EFProducerContact[];\r\n}\r\n\r\nexport interface AgentInfo {\r\n AgentId: number;\r\n EmailAddress: string;\r\n PhoneNumber: string;\r\n FirstName: string;\r\n LastName: string;\r\n FullName: string;\r\n AgencyName: string;\r\n ProductLines: number[];\r\n}\r\n\r\nexport interface IDropdownItem {\r\n label: string;\r\n value: string;\r\n baseMak?: string;\r\n street1?: string;\r\n street2?: string;\r\n city?: string;\r\n stateCode?: string;\r\n zip?: string;\r\n}\r\n\r\nexport interface IDropdownQuoteSummaryItem {\r\n QuoteId: Guid;\r\n Address: IPhysicalAddress;\r\n}\r\n\r\n/** These are properties that can be calculated quickly on the backend, and which are necessary to display at the top-level for the policy review page. */\r\nexport class PolicyInfo {\r\n ImsPolicyNumber: string;\r\n ImsQuoteGuid: string;\r\n RenewalState: string;\r\n Street1: string;\r\n City: string;\r\n StateCode: string;\r\n Zip: string;\r\n DisplayStatus: string;\r\n Insured: string;\r\n ExpirationDate: Date;\r\n NocIssuanceDate?: Date;\r\n NocDueDate?: Date;\r\n EffectiveDate: Date;\r\n OrderByDate?: Date;\r\n}\r\n\r\n/** These are more detailed properties of a policy, and which cannot be calculated quickly.\r\n * Therefore we only calculate them when pulling open the detailed view for a policy on the policy review page.\r\n */\r\nexport class PolicyDetail extends PolicyInfo {\r\n PolicyType: string;\r\n Agent: string;\r\n PolicyHistory: PolicyNote[];\r\n PolicyClaims: RenewalClaim[];\r\n Claims: number;\r\n VaveClaimCount?: number;\r\n}\r\n\r\nexport interface PolicyNote {\r\n ImsPolicyNumber: string;\r\n DeclineReasonIds: number[] | null;\r\n Note: string;\r\n PolicyStatus: string;\r\n CreatedBy: string;\r\n CreatedOn: Date;\r\n}\r\n\r\nexport interface PolicyStatusChange {\r\n ImsPolicyNumber: string;\r\n Status: string;\r\n Substatus: string;\r\n DeclineReasonIds: number[] | null;\r\n Note: string;\r\n}\r\n\r\nexport interface RenewalClaim {\r\n Source: string;\r\n ClaimNumber: string;\r\n Status: string;\r\n LossDate: Date;\r\n LossType: string;\r\n LossIncurred: number;\r\n IsRelevant: boolean;\r\n RelevanceMessage: string;\r\n IsCatastrophe: boolean;\r\n Notes: string;\r\n}\r\n\r\nexport interface EFPolicy {\r\n Id: number;\r\n ImsPolicyNumber: string;\r\n PolicyState: string;\r\n PolicySubstate?: string | null;\r\n RenewalState: string;\r\n ProductLineId: number;\r\n CreatedOn: Date;\r\n ModifiedOn: Date;\r\n DeletedOn?: Date | null;\r\n ExpiresOn?: Date | null;\r\n ProposedClaimCount?: number | null;\r\n}\r\n\r\n/**\r\n * ks 4/7/16 - Note that this only includes the likely relevant fields.\r\n */\r\nexport interface EFQuotePaymentProfile {\r\n PremiumType: string;\r\n PaymentType: string;\r\n FirstName: string | null;\r\n LastName: string | null;\r\n NameOnPolicy: string;\r\n InsuranceCompanyName: string;\r\n BankName: string;\r\n BankLoanNumber: string;\r\n BankStreet1: string;\r\n BankStreet2: string;\r\n BankCity: string;\r\n BankStateCode: string;\r\n BankZip: string;\r\n BankFax: string;\r\n CreditCardNumber: string | null;\r\n CreditCardExpires: string | null;\r\n ECheckAccountType: string | null;\r\n ECheckAccountOwner: string | null;\r\n ECheckRoutingNumber: string | null;\r\n ECheckAccountNumber: string | null;\r\n}\r\n\r\nexport interface PolicyPaymentInvoice {\r\n paymentProfile: EFQuotePaymentProfile;\r\n dueDate: string;\r\n amountDueCredit: string;\r\n amountDueNonCredit: string;\r\n quoteId: string;\r\n invoiceNumber: number | null;\r\n quoteStatus: string;\r\n}\r\n\r\nexport interface ImsPurchaseRequest {\r\n QuoteId: string;\r\n ImsPolicyNumber: string;\r\n NameOnPolicy?: string;\r\n FullAddress: string;\r\n CreatedOn: Date;\r\n ProcessingStartedOn?: Date;\r\n ProcessingFinishedOn?: Date;\r\n ProcessingStatus: string;\r\n Details: string;\r\n ProductLineId: number;\r\n}\r\n\r\nexport interface FailedTask {\r\n Id: number;\r\n BaseUrl: string;\r\n TaskType: string;\r\n Details?: string;\r\n Notes?: string;\r\n PolicyNumber: string;\r\n Address: string;\r\n InsuredName: string;\r\n StartBy?: Date;\r\n StartedOn?: Date;\r\n CompletedOn?: Date;\r\n DeletedOn?: Date;\r\n FailedOn?: Date;\r\n Status: string;\r\n IsJob: boolean;\r\n}\r\n\r\nexport interface EFJob {\r\n JobId: number;\r\n Name: string;\r\n Description: string;\r\n Notes?: string;\r\n StartBy: Date;\r\n StartedOn: Date;\r\n FailedOn: Date;\r\n LastError: string;\r\n Policy: EFPolicy;\r\n}\r\n\r\nexport interface EFLockboxQueuePayment {\r\n Id: number;\r\n PolicyNumberOriginal: string;\r\n InvoiceNumberOriginal: number;\r\n CheckAmountOriginal: number;\r\n CheckNumberOriginal: string;\r\n PolicyNumberEdited: string;\r\n InvoiceNumberEdited: number;\r\n CheckAmountEdited: number;\r\n CheckNumberEdited: string;\r\n StartBy?: Date;\r\n StartedOn?: Date;\r\n CompletedOn?: Date;\r\n DeletedOn?: Date;\r\n FailedOn?: Date;\r\n Details: string;\r\n}\r\n\r\nexport interface JobRestartResult {\r\n JobsRestarted: number;\r\n JobsFailedToRestart: number;\r\n}\r\n\r\nexport interface TaskRestartResult {\r\n TasksRestarted: number;\r\n TasksFailedToRestart: number;\r\n}\r\n\r\nexport interface FailedLockboxPayment extends EFLockboxQueuePayment {}\r\n\r\nexport interface FailedClaimPayment {\r\n JobId: number;\r\n PolicyNumber: string;\r\n ResPayId: number;\r\n ResPayAmount: number;\r\n AdjusterName: string;\r\n DatePaid: Date;\r\n ClaimNumber: string;\r\n CarrierId: string;\r\n IsCore: Boolean;\r\n SkipDocument: Boolean;\r\n LastError: string;\r\n CompletedOn?: Date;\r\n StartBy?: Date;\r\n FailedOn?: Date;\r\n}\r\n\r\nexport interface PolicyExpiration {\r\n FirstName: string;\r\n LastName: string;\r\n Phone: string;\r\n Expires: string;\r\n PolicyId: number;\r\n ControlNumber: number;\r\n PolicyNumber: string;\r\n}\r\n\r\nexport interface ApiCallMessage {\r\n ApiCall: string;\r\n ElapsedMilliseconds: number;\r\n Details: string;\r\n}\r\n\r\nexport interface PartnerAgent {\r\n AgentId: number;\r\n UserId: string;\r\n FirstName: string;\r\n LastName: string;\r\n Agency: PartnerAgency;\r\n}\r\n\r\nexport interface PartnerAgency {\r\n AgencyId: number;\r\n Name: string;\r\n}\r\n\r\nexport interface PartnerAccount {\r\n PartnerAccountId: string;\r\n ContactEmail: string;\r\n AgentId: number;\r\n Name: string;\r\n Company: string;\r\n ContactFirstName: string;\r\n ContactLastName: string;\r\n ImsAgentName: string;\r\n ApiKey?: string;\r\n}\r\n\r\n// RiskMap\r\nexport enum MapLayerType {\r\n Unknown = 0,\r\n ActiveBrushfire,\r\n ActiveBrushfireOriginal,\r\n RedFlagWarning,\r\n UserDefinedPolygon,\r\n QuoteProperty,\r\n PurchaseMoratorium,\r\n BrushfireHazardFivePoint,\r\n BrushfireHazardFourPoint,\r\n ActiveState,\r\n ActiveCounty,\r\n InactiveCounty,\r\n}\r\n\r\n// It can be mapped to google.maps.LatLngBoundsLiteral\r\nexport class MapBounds {\r\n readonly East: number;\r\n readonly North: number;\r\n readonly South: number;\r\n readonly West: number;\r\n}\r\n\r\n// Swyfft.Services.Models.MapViewPolygonInfo\r\nexport class MapViewPolygonInfo {\r\n readonly Zoom: number;\r\n\r\n readonly MapLayerType: MapLayerType;\r\n\r\n readonly Id?: string;\r\n readonly Name: string;\r\n\r\n readonly PolygonCenter: number[];\r\n readonly PolygonPointsNumber?: number;\r\n readonly PolygonAreaSqMeters?: number;\r\n\r\n public static cloneMapViewPolygonInfo(obj: MapViewPolygonInfo): MapViewPolygonInfo {\r\n return {\r\n Zoom: obj.Zoom,\r\n MapLayerType: obj.MapLayerType,\r\n Id: obj.Id,\r\n Name: obj.Name,\r\n PolygonCenter: obj.PolygonCenter,\r\n PolygonPointsNumber: obj.PolygonPointsNumber,\r\n PolygonAreaSqMeters: obj.PolygonAreaSqMeters,\r\n } as MapViewPolygonInfo;\r\n }\r\n}\r\n\r\n// Swyfft.Services.Models.MapViewPolygon\r\nexport class MapViewPolygon extends MapViewPolygonInfo {\r\n Description?: string | null;\r\n readonly CreatedOn: Date;\r\n readonly ModifiedOn: Date;\r\n readonly DeletedOn?: Date | null;\r\n\r\n readonly Properties?: any | null;\r\n\r\n // Point=[x,y]\r\n // Ring=Point[]\r\n // Polygon=Ring[] (first ring is exterior ring, all other rings are interior (holes))\r\n // MPolygon=Polygon[]\r\n // MPolygon = [polygon][ring][point][x,y]\r\n readonly MultiPolygon: number[][][][];\r\n}\r\n\r\n// Swyfft.Services.Models.GetMapPolygonsRequest\r\nexport class GetMapPolygonsRequest {\r\n readonly Zoom: number;\r\n\r\n readonly MapLayerType: MapLayerType;\r\n\r\n readonly MapBounds: MapBounds;\r\n\r\n // List of existing polygons on the requested layer.\r\n // Same polygon can be listed more than once for different zoom level.\r\n readonly ExistingPolygons: MapViewPolygonInfo[];\r\n}\r\n\r\n// Swyfft.Services.Models.GetMapPolygonsResponse\r\nexport class GetMapPolygonsResponse {\r\n readonly Zoom: number;\r\n\r\n readonly MapLayerType: MapLayerType;\r\n\r\n readonly Polygons: MapViewPolygon[];\r\n readonly DeletedPolygonIds: string[];\r\n}\r\n\r\nexport class AuthorizePaymentResponse {\r\n readonly TransactionId: string;\r\n}\r\n\r\nexport interface StringValueType {\r\n Value: string;\r\n}\r\n\r\nexport class ExistingClaim {\r\n readonly ClaimNumber: string;\r\n readonly IsCatastrophe: boolean;\r\n readonly IsActOfGod: boolean;\r\n readonly IsFlood: boolean;\r\n readonly IsRelevant: boolean;\r\n readonly LossDate: Date;\r\n readonly LossIncurred: number;\r\n readonly LossType: string;\r\n readonly Notes: string | null;\r\n readonly PolicyNumber: string;\r\n readonly RelevanceMessage: string;\r\n readonly RelevanceRule: string;\r\n readonly Source: string;\r\n readonly Status: string;\r\n readonly SubjectAddress: string;\r\n readonly SubjectFirstName: string;\r\n readonly SubjectLastName: string;\r\n}\r\n\r\nexport interface ExistingClaimResult {\r\n Claims: ExistingClaim[];\r\n Policy: EFPolicy;\r\n EarliestRelevantDate: Date;\r\n PolicyTerm: string;\r\n FullAddress: string;\r\n}\r\n\r\nexport interface IPurchaseSuccessModalDetails {\r\n startDate: string;\r\n email: string;\r\n}\r\n\r\nexport interface PurchaseMoratorium {\r\n Id: number;\r\n StateCode: string;\r\n CountyName: string;\r\n CarrierCode: string;\r\n WarningText: string;\r\n StartDate: Date;\r\n EndDate: Date;\r\n ProductLine: number;\r\n}\r\n\r\nexport interface PurchaseMoratoriaAdd {\r\n CountyCodes: number[];\r\n CarrierCodes: string[];\r\n WarningText: string;\r\n StartDate: Date;\r\n EndDate: Date;\r\n ProductLine: number;\r\n}\r\n\r\nexport interface PurchaseMoratoriaUpdate {\r\n MoratoriumIds: number[];\r\n WarningText: string;\r\n StartDate: Date;\r\n EndDate: Date;\r\n ProductLine: number;\r\n}\r\n\r\nexport interface County {\r\n StateCode: string;\r\n Code: number;\r\n Name: string;\r\n}\r\n\r\nexport interface Carrier {\r\n Code: string;\r\n Name: string;\r\n}\r\n\r\nexport interface State {\r\n Code: string;\r\n Name: string;\r\n}\r\n\r\nexport interface CommercialBindQuoteRequest {\r\n QuoteId: string;\r\n EffectiveDate: string;\r\n PrimaryInsured: CommercialBindQuotePerson;\r\n AdditionalInterests: CommercialBindQuoteMortgagee[];\r\n PropertyManager?: CommercialBindQuotePerson | null;\r\n InspectionContact: CommercialBindQuoteInspectionContact;\r\n}\r\n\r\nexport interface CommercialBindQuotePerson {\r\n Name: string;\r\n Address: string;\r\n City: string;\r\n StateCode: string;\r\n ZipCode: string;\r\n}\r\n\r\nexport interface CommercialBindQuoteMortgagee {\r\n Name: string;\r\n Address: string;\r\n City: string;\r\n StateCode: string;\r\n ZipCode: string;\r\n LoanNumber: string;\r\n IsLossPayee: boolean;\r\n IsAdditionalInsured: boolean;\r\n}\r\n\r\nexport interface CommercialBindQuoteInspectionContact {\r\n Name: string;\r\n EmailAddress: string;\r\n PhoneNumber: string;\r\n}\r\n\r\nexport interface CommercialBindQuoteInsured extends CommercialBindQuoteMortgagee {\r\n PhoneNumber: string;\r\n EmailAddress: string;\r\n LegalEntity: string;\r\n}\r\n\r\nexport interface ValidateCityStateZipModel {\r\n Valid: boolean;\r\n SuggestedZips: string[];\r\n}\r\n\r\nexport interface PolicyDeclineReason {\r\n Id: number;\r\n InternalReason: string;\r\n ExternalReason: string;\r\n RequiresNote: boolean;\r\n}\r\n\r\nexport interface TableRequest {\r\n Start: number;\r\n Count: number;\r\n Search: string;\r\n}\r\n\r\nexport interface FailedFnolIsoRequest {\r\n FnolIsoRequestId: string;\r\n ClaimNumber: string;\r\n ImsPolicyNumber: string;\r\n AccidentType: number;\r\n AccidentTypeDesc: string;\r\n LossDate: Date;\r\n LossDescription: string;\r\n FirstName: string;\r\n LastName: string;\r\n Street1: string;\r\n Street2: string;\r\n City: string;\r\n StateCode: string;\r\n Zip: string;\r\n CreatedOn: Date;\r\n StartedOn: Date;\r\n FailedOn: Date;\r\n Details: string;\r\n}\r\n\r\nexport interface User {\r\n Name: string;\r\n EmailAddress: string;\r\n}\r\n\r\nexport enum EmailRouting {\r\n AgentOnly = 0,\r\n AgencyOnly = 1,\r\n AgentAndAgency = 2,\r\n}\r\n\r\nexport interface ProducerAgreementInformation {\r\n ProducerGuid: string;\r\n Requirement: string;\r\n ValidThroughDate: Date;\r\n SignedAsOfDate: Date;\r\n}\r\n\r\nexport interface EAndOInformation {\r\n PolicyNumber: string;\r\n CoverageLimit: number;\r\n CompanyName: string;\r\n ExpirationDate: Date;\r\n LocationGuid: string;\r\n}\r\n\r\nexport interface LicenseInformation {\r\n ProducerLicenseGuid: string;\r\n LicenseNumber: string;\r\n StateCode: string;\r\n ExpirationDate: Date;\r\n ProducerContactGuid: string;\r\n ProducerLocationGuid: string;\r\n LineName: string;\r\n LineGuid: string | null;\r\n}\r\n\r\nexport interface ImsProductLine {\r\n Name: string;\r\n Guid: string;\r\n}\r\n\r\nexport interface EandOInformation {\r\n PolicyNumber: string;\r\n ExpirationDate: Date;\r\n CompanyName: string;\r\n CoverageLimit: number;\r\n}\r\n\r\nexport interface ProducerDto {\r\n // IMS Data\r\n ProducerGuid: Guid;\r\n ProducerCode: number;\r\n ProducerName: string;\r\n ProducerLocations: ProducerLocationDto[];\r\n EAndOInformation: EAndOInformation;\r\n LicenseInformation: LicenseInformation[];\r\n ProducerAgreementInformation: ProducerAgreementInformation;\r\n\r\n // Swyfft data\r\n AreLocationsIndependent: boolean;\r\n EmailRoutingDestination: number;\r\n IvansAccountNumber: string | null;\r\n IvansUserId: string | null;\r\n ActivePolicies: number;\r\n}\r\n\r\nexport interface ProducerLocationDto extends IPhysicalAddress {\r\n // Ims data\r\n ProducerLocationGuid: Guid;\r\n ProducerLocationId: number;\r\n LocationCode: string;\r\n IsPrimary: boolean;\r\n LocationName: string;\r\n NiprName: string;\r\n Street1: string;\r\n Street2: string;\r\n City: string;\r\n StateCode: string;\r\n Zip: string;\r\n County: string;\r\n LocationEmail: string;\r\n LocationPhone: string;\r\n LicensedForStates: string[];\r\n LicenseNotRequired: boolean;\r\n ProducerContactCount: number;\r\n Npn: string;\r\n Fein: string;\r\n GrossWrittenPremium: number;\r\n LicenseInformation: LicenseInformation[];\r\n PaymentMethodId: number;\r\n Status: string;\r\n EAndOInformation: EAndOInformation;\r\n\r\n // Swyfft data\r\n EmailRoutingDestination?: EmailRouting | null;\r\n IvansAccountNumber: string;\r\n IvansUserId: string;\r\n IsPartnerApiAccount: AgencyPartnerApiAccountDto | null;\r\n Owner?: string;\r\n BlockLogin: boolean;\r\n BlockLoginReason: string;\r\n Ranking: string;\r\n OwnerName: string;\r\n ActivePolicies: number;\r\n LastQuoteDate: Date;\r\n}\r\n\r\nexport interface ProducerContactDto {\r\n ProducerContactGuid: Guid;\r\n ProducerLocationGuid: Guid;\r\n ProducerLocationName: string;\r\n ProducerGuid: Guid;\r\n ProducerName: string;\r\n Email: string;\r\n PhoneNumber: string;\r\n PhoneExtension: string;\r\n Npn: string;\r\n FirstName: string;\r\n LastName: string;\r\n NiprName: string;\r\n Roles: string[];\r\n CanHaveAdminRole: boolean;\r\n InactiveReason: string;\r\n Password: string | null;\r\n ProducerContactId?: number;\r\n BlockLogin: boolean;\r\n BlockLoginReason: string;\r\n ActivePolicies: number;\r\n LastQuoteDate: Date;\r\n}\r\n\r\nexport interface AgencyPartnerApiAccountDto {\r\n PartnerAccountGuid: Guid;\r\n ContactFirstName: string;\r\n ContactLastName: string;\r\n ContactEmail: string;\r\n PartnerApiKey: string;\r\n}\r\n\r\nexport interface HomeownerAffidavitRequest {\r\n QuoteId: string;\r\n FilingHandledByAgency: boolean;\r\n FilingHandledBySwyfft: boolean;\r\n IsAffidavitUploaded: boolean;\r\n PremiumType: string;\r\n PaymentType: string;\r\n ChargeAmount: number;\r\n}\r\n\r\nexport interface AdverseActionReason {\r\n code: number;\r\n description: string;\r\n}\r\n\r\nexport interface AdverseActionNotice {\r\n ncfReferenceNumber: string;\r\n reasons: AdverseActionReason[];\r\n}\r\n\r\nexport interface AdverseActionQuoteDetails {\r\n ncfId: string;\r\n createdOn?: Date | string;\r\n firstName: string | null;\r\n middleName: string | null | undefined;\r\n lastName: string | null;\r\n address: string;\r\n}\r\n\r\n/** @deprecated use Business/CommonSets/RatingType */\r\nexport enum RatingType {\r\n Admitted = 'Admitted',\r\n EAndS = 'E&S',\r\n}\r\n\r\nexport interface PolicyCancelResult {\r\n Success: boolean;\r\n Emails: string[];\r\n RefundPremiumAmount: number;\r\n RefundFeesAmount: number;\r\n MinimumEarnedPercentage?: number;\r\n VaveRefundAmount?: number;\r\n ErrorMessage: string;\r\n}\r\n\r\nexport interface IvansData {\r\n IvansAccountNumber: string;\r\n IvansUserId: string;\r\n LocationName: string;\r\n}\r\n\r\nexport enum EnvType {\r\n Beta = 'Beta',\r\n Demo = 'Demo',\r\n Development = 'Development',\r\n Local = 'Local',\r\n Production = 'Production',\r\n}\r\n\r\nexport interface IImsUser {\r\n FirstName: string;\r\n LastName: string;\r\n UserGuid: string;\r\n}\r\n\r\nexport interface StatusChangeReason {\r\n Id: number;\r\n Reason: string;\r\n}\r\n\r\nexport abstract class Serializable {\r\n fromJson(parsed: any) {\r\n parsed &&\r\n Object.keys(this).forEach(k => {\r\n if (this[k].set) this[k].set(parsed[k]);\r\n else if (this[k].fromJson) this[k].fromJson(parsed[k]);\r\n else this[k] = parsed[k];\r\n });\r\n }\r\n\r\n toJson() {\r\n return JSON.stringify(this);\r\n }\r\n}\r\n\r\nexport interface Position {\r\n left: number;\r\n top: number;\r\n width: number;\r\n}\r\n\r\nexport interface IUtmParameters {\r\n source: string;\r\n medium: string;\r\n campaign: string;\r\n}\r\n\r\nexport interface IAutocompleteProps {\r\n className?: string | undefined;\r\n label?: string | undefined;\r\n labelClassName?: string | undefined;\r\n inputWrapperClassName?: string | undefined;\r\n inputClassName?: string | undefined;\r\n selectorClassName?: string | undefined;\r\n id?: string | undefined;\r\n maxResults?: number | undefined;\r\n hideOnBodyClick?: boolean;\r\n placeholder?: string | undefined;\r\n hideCompletions?: boolean | undefined;\r\n customSelector?: any;\r\n defaultValue?: string;\r\n debounceDelay?: number;\r\n\r\n onChange?: Function | undefined;\r\n onDebouncedChange?: Function | undefined;\r\n onSelect?: Function | undefined;\r\n onBlur?: Function | undefined;\r\n onFocus?: Function | undefined;\r\n onKeyUp?: Function | undefined;\r\n}\r\n\r\nexport interface IAutocompleteMethodProps<TModel> {\r\n get: (search: string | undefined, results?: number) => Promise<TModel[]>;\r\n display?: (record: TModel) => string | ReactElement | undefined;\r\n map?: (record: TModel) => string | undefined;\r\n}\r\n\r\nexport class Address implements IPhysicalAddress {\r\n AddressKey: string;\r\n Street1: string;\r\n City: string;\r\n StateCode: string;\r\n Zip: string;\r\n LivingSpace: number;\r\n\r\n public static fromFormData(data: FormData): Address {\r\n const address = new Address();\r\n address.AddressKey = data.get('address-key')?.toString() || '';\r\n address.Street1 = data.get('street-address')?.toString() || '';\r\n address.City = data.get('city')?.toString() || '';\r\n address.StateCode = data.get('state-code')?.toString() || '';\r\n address.Zip = data.get('zip-code')?.toString() || '';\r\n address.LivingSpace = parseInt(data.get('living-space')?.toString() || '');\r\n return address;\r\n }\r\n\r\n public static toString = (address: IPhysicalAddress) =>\r\n `${address.Street1} ${address.City} ${address.StateCode} ${address.Zip}`;\r\n}\r\n\r\nexport enum UploadTime {\r\n Now = 1,\r\n Later = 2,\r\n}\r\n\r\nexport interface PaymentModel {\r\n PolicyNumber: string;\r\n PolicyZip: string;\r\n PaymentAmount: string;\r\n Authorization: string;\r\n AnnualNewBusiness: boolean;\r\n IsCard: boolean;\r\n\r\n AccountNumber?: string;\r\n RoutingNumber?: string;\r\n AccountName?: string;\r\n BankAccountType?: string;\r\n BankName?: string;\r\n\r\n CreditCard?: string;\r\n Cvv?: string;\r\n ExpMonth?: string;\r\n ExpYear?: string;\r\n FirstName?: string;\r\n LastName?: string;\r\n}\r\n\r\nexport type AccountType = 'checking' | 'savings';\r\n\r\n/** See DeactivateProducerLocationRequestModel.cs */\r\nexport type DeactivateProducerLocationRequestModel = {\r\n ProducerLocationGuid: string;\r\n StatusChangeReasonId: number;\r\n StatusChangeComment: string;\r\n};\r\n\r\n/** See CommercialOccupancyTypeOptionsModel.cs */\r\nexport type CommercialOccupancyTypeOptionsModel = {\r\n Category: string;\r\n Items: string[];\r\n};\r\n","import { ProgressModal } from '@legacy/Components/Modals/Progress';\r\nimport * as Constants from '@shared/Constants';\r\nimport * as Models from '@shared/Models';\r\nimport { ComparisonQuotesModel } from '@shared/Models';\r\nimport * as NProgress from 'nprogress';\r\nimport * as ApiCaller from './ApiCaller';\r\n\r\n/** The Swyfft.Api namespace holds the various static methods used to access the Swyfft REST API */\r\n\r\n// QuotesController\r\nexport function getQuoteByQuoteId(\r\n quoteId: string,\r\n showProgressBar: boolean = true\r\n): Promise<Models.HomeownerQuoteModel> {\r\n return ApiCaller.$get(`api/quotes/quoteid/${quoteId}`, showProgressBar ? NProgress : null, 'get quote by quoteId');\r\n}\r\n\r\n// QuotesController\r\nexport function getQuoteByQuoteIdNoRisk(quoteId: string): Promise<Models.HomeownerQuoteModel> {\r\n return ApiCaller.$get(`api/quotes/quoteid/${quoteId}?checkRisk=false`, NProgress, 'get quote by quoteId');\r\n}\r\n\r\n// QuotesController\r\nexport function getCustomerInfo(quoteId: string): Promise<Models.CustomerInfo> {\r\n const url = `api/quotes/${quoteId}/customerinfo`;\r\n return ApiCaller.$get(url);\r\n}\r\n\r\n// QuotesController\r\nexport async function patchQuote(\r\n patch: Models.QuotePatchRequest,\r\n showProgressBar: boolean = true\r\n): Promise<Models.HomeownerQuoteModel> {\r\n patch.IsComparisonQuote = false;\r\n return (await patchQuoteInternal(patch, showProgressBar)) as Models.HomeownerQuoteModel;\r\n}\r\n\r\n// QuotesController\r\nexport async function patchComparisonQuote(\r\n patch: Models.QuotePatchRequest,\r\n showProgressBar: boolean = false\r\n): Promise<ComparisonQuotesModel> {\r\n patch.IsComparisonQuote = true;\r\n return (await patchQuoteInternal(patch, showProgressBar)) as ComparisonQuotesModel;\r\n}\r\n\r\nasync function patchQuoteInternal(\r\n patch: Models.QuotePatchRequest,\r\n showProgressBar: boolean = true\r\n): Promise<ComparisonQuotesModel | Models.HomeownerQuoteModel> {\r\n const gaEventAction = patch.gaEventAction || 'update quote';\r\n const url = `api/quotes`;\r\n return ApiCaller.$patch(url, patch, showProgressBar ? NProgress : null, gaEventAction);\r\n}\r\n\r\n/**\r\n * Creates and retrieves an E&S quote after admitted nonrenewal\r\n */\r\nexport function getEAndSFromAdmittedNonRenewal(\r\n quoteId: string,\r\n isGuaranteed: boolean = false\r\n): Promise<ComparisonQuotesModel> {\r\n const url = `api/quotes/${\r\n isGuaranteed ? 'createGuaranteedEAndSFromAdmittedNonRenewal' : 'createEAndSFromAdmittedNonRenewal'\r\n }/${quoteId}`;\r\n return ApiCaller.$get(url);\r\n}\r\n\r\n/**\r\n * Retrieves the set of element descriptions for a given stateCode\r\n */\r\n// ElementsController\r\nexport function getElementDescriptions(\r\n product: string,\r\n stateKey: string,\r\n carrier: string | null\r\n): Promise<Models.ElementDescriptions> {\r\n const url = `api/elements/descriptions/${product}/${stateKey}/${carrier}`;\r\n return ApiCaller.$get(url);\r\n}\r\n\r\nexport function purchasePolicy(quoteId: string, paymentInfo: Models.PurchaseRequest, activity: string): Promise<void> {\r\n let postfix = '';\r\n if (activity in Constants.reentries) postfix = `/${activity}`;\r\n const url = `api/quotes/${quoteId}/purchase${postfix}`;\r\n return ApiCaller.$post(url, paymentInfo, new ProgressModal('Purchasing your policy...'), 'purchase');\r\n}\r\n\r\nexport function initiateReprice(\r\n repriceModel: Models.RepriceModel,\r\n hideProgress?: boolean\r\n): Promise<Models.ComparisonQuotesModel> {\r\n const url = `api/quotes/initiatereprice`;\r\n return ApiCaller.$post(\r\n url,\r\n repriceModel,\r\n hideProgress ? null : new ProgressModal('Initiating quote reprice...'),\r\n 'initiate reprice'\r\n );\r\n}\r\n\r\nexport function acceptReprice(quoteId: string, repriceModel: Models.RepriceModel): Promise<void> {\r\n const url = `api/quotes/${quoteId}/acceptreprice`;\r\n return ApiCaller.$post(url, repriceModel, new ProgressModal('Accepting quote reprice...'), 'accept reprice');\r\n}\r\n\r\nexport function updatePropertyLocation(\r\n addressKey: string,\r\n latitude: string | number | undefined | null,\r\n longitude: string | number | undefined | null\r\n): Promise<void> {\r\n const url = `api/propertyLocation/`;\r\n return ApiCaller.$put(url, {\r\n AddressKey: addressKey,\r\n Latitude: latitude,\r\n Longitude: longitude,\r\n });\r\n}\r\n\r\nexport function getProperty(addressKey: string, showProgress = true): Promise<Models.PropertyData> {\r\n const url = `api/property/${encodeURIComponent(addressKey)}`;\r\n return ApiCaller.$get(url, showProgress ? NProgress : null);\r\n}\r\n\r\nexport function putProperty(pd: Models.PropertyData): Promise<Models.PropertyData> {\r\n const url = 'api/property/';\r\n return ApiCaller.$put(url, pd);\r\n}\r\n\r\nexport function getProperties(address: string, max?: number): Promise<Models.PropertyData[]> {\r\n address = address ? address.substring(0, 100).trim() : '';\r\n if (!address) {\r\n return Promise.resolve([]);\r\n }\r\n\r\n let url = `api/properties?address=${encodeURIComponent(address)}`;\r\n if (max) url += `&max=${max}`;\r\n return ApiCaller.$get(url, null, 'get properties');\r\n}\r\n\r\n/** Searches homeowner property address data for a match, with optional max result count and filter for active quoting states.\r\n * @param partialAddress {string} The partial address string to search by (trimmed and encoded for the url).\r\n * @param max {number} Optional maximum number of results to return.\r\n * @param activeStatesOnly {boolean} Optional flag to filter by addresses in active quoting states only (defaults to false). */\r\nexport async function searchHomeownerAddresses(\r\n partialAddress: string,\r\n max?: number,\r\n activeStatesOnly: boolean = false\r\n): Promise<Models.PropertyData[]> {\r\n try {\r\n return search();\r\n } catch (e) {\r\n const error = new Models.ApiError(\r\n 'HOApi.searchHomeownerAddresses',\r\n 'ERROR',\r\n 'HOApi.searchHomeownerAddresses failed',\r\n null,\r\n e\r\n );\r\n await ApiCaller.logError(error);\r\n return [];\r\n }\r\n\r\n function search() {\r\n if (!!partialAddress) {\r\n const trimmedAddress = partialAddress.substring(0, 100).trim(),\r\n encodedAddress = encodeURIComponent(trimmedAddress);\r\n let url = `api/property/addressMatches?productLine=1&partialAddress=${encodedAddress}&activeStatesOnly=${activeStatesOnly}`;\r\n if (max) url += `&max=${max}`;\r\n return ApiCaller.$get(url, null, 'get homeowner address matches');\r\n }\r\n\r\n return Promise.resolve([]);\r\n }\r\n}\r\n\r\nexport function parseAddress(address: string): Promise<Models.IPhysicalAddress> {\r\n const url = `api/address?address=${encodeURIComponent(address)}`;\r\n return ApiCaller.$get(url, null);\r\n}\r\n\r\nexport function updatePurchaseForReentry(\r\n quoteId: string,\r\n oldQuoteId: string,\r\n purchaseRequest: Models.PurchaseRequest\r\n): Promise<void> {\r\n const url = `api/quotes/${quoteId}/updatepurchase?oldQuoteId=${oldQuoteId}`;\r\n return ApiCaller.$post(url, purchaseRequest, new ProgressModal('Accepting quote reprice...'), 'accept reprice');\r\n}\r\n\r\nexport function getPurchaseRequestForReprice(\r\n lastBoundImsQuoteGuid: string,\r\n quoteHistory: string[]\r\n): Promise<Models.PurchaseRequest> {\r\n const url = `api/quotes/${lastBoundImsQuoteGuid}/purchaserequest`;\r\n return ApiCaller.$post(url, quoteHistory, new ProgressModal(), 'get purchase request');\r\n}\r\n\r\nexport function getZip(zip: string | number): Promise<Models.ZipInfo> {\r\n const url = `api/zip/${zip}`;\r\n return ApiCaller.$get(url);\r\n}\r\n\r\nexport function getQuoteByAddressKey(addressKey: string): Promise<Models.HomeownerQuoteModel> {\r\n return ApiCaller.$get(`api/quotes/addresskey/${addressKey}`, NProgress, 'get quote by address key');\r\n}\r\n\r\n// PaymentsController\r\nexport function getPolicyPaymentInvoice(policyNumber: string, zip: string): Promise<Models.PolicyPaymentInvoice> {\r\n const url = `api/payments/get-policy-payment-invoice/${policyNumber}/${zip}`;\r\n return ApiCaller.$get(url, NProgress, 'get policy payment information');\r\n}\r\n\r\nexport async function getCountiesByStateCode(stateCode: string) {\r\n return await ApiCaller.$get(`api/counties?stateCode=${stateCode}`);\r\n}\r\n\r\n/** Gets the NCF Reference number and a list of adverse action reasons. */\r\nexport const getAdverseActionNotice = async (ncfId: string): Promise<Models.AdverseActionNotice> => {\r\n const url = `api/quotes/adversereasons/${ncfId}`;\r\n return ApiCaller.$get(url);\r\n};\r\n\r\nexport const createEAndSFromAdmitted = async (\r\n quoteId: string,\r\n showProgress: boolean = false\r\n): Promise<ComparisonQuotesModel> => {\r\n const url = `api/quotes/createEAndSFromAdmitted/${quoteId}`;\r\n return ApiCaller.$get(url, showProgress ? NProgress : null, 'create e-and-s quote from admitted');\r\n};\r\n\r\nexport async function createEAndSFromAdmittedAgentRequest(quoteId: string): Promise<ComparisonQuotesModel> {\r\n const url = `api/quotes/createEAndSFromAdmittedAgentRequest/${quoteId}`;\r\n return ApiCaller.$get(url, NProgress, 'create e-and-s quote from admitted agent request');\r\n}\r\n\r\nexport const createUpcomingRenewalQuote = (quoteId: string): Promise<string> => {\r\n const url = `api/quotes/upcomingRenewal/create/${quoteId}`;\r\n return ApiCaller.$get(url, new ProgressModal('Creating URQ...'), 'create upcoming renewal quote');\r\n};\r\n\r\n/** Creates a new upcoming renewal quote based on the current URQ QuoteId and returns the new URQ QuoteId. */\r\nexport const resetUpcomingRenewalQuote = (quoteId: string, showProgress: boolean = false): Promise<string> => {\r\n const url = `api/quotes/upcomingRenewal/reset/${quoteId}`;\r\n return ApiCaller.$post(url, null, showProgress ? new ProgressModal('Resetting URQ...') : null);\r\n};\r\n","import { fetchAndLog } from '@api/Fetch';\r\nimport * as Models from '@shared/Models';\r\nimport * as NProgress from 'nprogress';\r\nimport * as ApiCaller from './ApiCaller';\r\n\r\n//login method\r\nexport function login(login: Models.ILogin): Promise<Models.LoginResponse> {\r\n const url = 'api/login';\r\n\r\n // SZ 2018-01-03. Security. Invoke callApi() instead of $post() to avoid logging performance, which sends data (with user credentials) over.\r\n //return ApiCaller.$post(url, login, NProgress, 'login');\r\n const logPerformance = false;\r\n return ApiCaller.callApi(url, ApiCaller.Verb.Post, login, NProgress, 'login', logPerformance);\r\n}\r\n\r\nexport function validateContactInfo(\r\n userId: string,\r\n password: string\r\n): Promise<{\r\n agentId: number;\r\n agentPhoneNumber: string;\r\n contactNpn: string;\r\n locationNpn: string;\r\n npnRequired: boolean;\r\n}> {\r\n return ApiCaller.$post('api/login/validate-contact-info', {\r\n UserName: userId,\r\n Password: password,\r\n });\r\n}\r\n\r\nexport function resetPassword(token: string, password: string): Promise<void> {\r\n return ApiCaller.$post('api/login/resetpassword', {\r\n Token: token,\r\n Password: password,\r\n });\r\n}\r\n\r\nexport function requestPasswordResetEmail(email: string): Promise<void> {\r\n return ApiCaller.$post('api/agents/resetpassword', email);\r\n}\r\n\r\nexport function agentEOValid(): Promise<boolean> {\r\n return ApiCaller.$get('api/agents/eAndOValid', null, 'check if agent e-and-o is valid');\r\n}\r\n\r\nexport function agentLicenseValid(state: string): Promise<boolean> {\r\n const url = `api/agents/licenseValid/${state}`;\r\n return ApiCaller.$get(url, null, 'check if agent license is valid');\r\n}\r\n\r\nexport function agentEOExpires(daysFromNow: number): Promise<boolean> {\r\n const url = `api/agents/eAndOExpires/${daysFromNow}`;\r\n return ApiCaller.$get(url, null, 'check if agent e-and-o is expired');\r\n}\r\n\r\nexport function logout(): Promise<void> {\r\n return ApiCaller.$get('api/logout', null, 'logout');\r\n}\r\n\r\nexport function getLoggedInAgentInfo(progress: boolean = true): Promise<Models.AgentInfo> {\r\n return ApiCaller.$get('api/agents/logged-in-info', progress ? NProgress : null, 'get logged in agent info');\r\n}\r\n\r\nexport function getUsers(filter: string, max: number): Promise<Models.User[]> {\r\n return ApiCaller.$get(`api/users?filter=${filter}&max=${max}`, null);\r\n}\r\n\r\nexport function searchCommercialAgents(state: string, partialEmail: string): Promise<Models.AgentInfo[]> {\r\n return ApiCaller.$get(`api/agents/commercial/${state}/${partialEmail}`, null);\r\n}\r\n\r\nexport const updateAgentPhoneNumber = async (agentId: number, phoneNumber: string, extension: string) =>\r\n await fetchAndLog(`api/agents/${agentId}/phone?phoneNumber=${phoneNumber}&extension=${extension}`, 'update phone', {\r\n method: 'PUT',\r\n });\r\n\r\nexport const updateContactAndLocationNpn = async (agentId: number, contactNpn: string, locationNpn: string) =>\r\n await fetchAndLog(`api/agents/${agentId}/npn?contactNpn=${contactNpn}&locationNpn=${locationNpn}`, 'update npn', {\r\n method: 'PUT',\r\n });\r\n","/**\n * @remix-run/router v1.13.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Actions represent the type of change to a location value.\n */\nvar Action;\n(function (Action) {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Action[\"Pop\"] = \"POP\";\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Action[\"Push\"] = \"PUSH\";\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\nconst PopStateEventType = \"popstate\";\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nfunction createMemoryHistory(options) {\n if (options === void 0) {\n options = {};\n }\n let {\n initialEntries = [\"/\"],\n initialIndex,\n v5Compat = false\n } = options;\n let entries; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index === 0 ? \"default\" : undefined));\n let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n let action = Action.Pop;\n let listener = null;\n function clampIndex(n) {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation() {\n return entries[index];\n }\n function createMemoryLocation(to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n return location;\n }\n function createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n let history = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\"\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 1\n });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 0\n });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: nextLocation,\n delta\n });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nfunction createBrowserHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createBrowserLocation(window, globalHistory) {\n let {\n pathname,\n search,\n hash\n } = window.location;\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createBrowserHref(window, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nfunction createHashHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createHashLocation(window, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window.location.hash.substr(1));\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route (<Route path=\"*\">) since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createHashHref(window, to) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n function validateHashLocation(location, to) {\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n }\n return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index\n };\n}\n/**\n * Creates a Location object with a unique key from the given Path\n */\nfunction createLocation(current, to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = _extends({\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\"\n }, typeof to === \"string\" ? parsePath(to) : to, {\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: to && to.key || key || createKey()\n });\n return location;\n}\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nfunction createPath(_ref) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = _ref;\n if (search && search !== \"?\") pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\") pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n if (options === void 0) {\n options = {};\n }\n let {\n window = document.defaultView,\n v5Compat = false\n } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener = null;\n let index = getIndex();\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), \"\");\n }\n function getIndex() {\n let state = globalHistory.state || {\n idx: null\n };\n return state.idx;\n }\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: history.location,\n delta\n });\n }\n }\n function push(to, state) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 1\n });\n }\n }\n function replace(to, state) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 0\n });\n }\n }\n function createURL(to) {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n return new URL(href, base);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\n//#endregion\n\nvar ResultType;\n(function (ResultType) {\n ResultType[\"data\"] = \"data\";\n ResultType[\"deferred\"] = \"deferred\";\n ResultType[\"redirect\"] = \"redirect\";\n ResultType[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\nconst immutableRouteKeys = new Set([\"lazy\", \"caseSensitive\", \"path\", \"id\", \"index\", \"children\"]);\nfunction isIndexRoute(route) {\n return route.index === true;\n}\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {\n if (parentPath === void 0) {\n parentPath = [];\n }\n if (manifest === void 0) {\n manifest = {};\n }\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n invariant(!manifest[id], \"Found a route id collision on id \\\"\" + id + \"\\\". Route \" + \"id's must be globally unique within Data Router usages\");\n if (isIndexRoute(route)) {\n let indexRoute = _extends({}, route, mapRouteProperties(route), {\n id\n });\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {\n id,\n children: undefined\n });\n manifest[id] = pathOrLayoutRoute;\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);\n }\n return pathOrLayoutRoute;\n }\n });\n}\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nfunction matchRoutes(routes, locationArg, basename) {\n if (basename === void 0) {\n basename = \"/\";\n }\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n if (pathname == null) {\n return null;\n }\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname));\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let {\n route,\n pathname,\n params\n } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n if (branches === void 0) {\n branches = [];\n }\n if (parentsMeta === void 0) {\n parentsMeta = [];\n }\n if (parentPath === void 0) {\n parentPath = \"\";\n }\n let flattenRoute = (route, index, relativePath) => {\n let meta = {\n relativePath: relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(meta.relativePath.startsWith(parentPath), \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\");\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\"));\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n };\n routes.forEach((route, index) => {\n var _route$path;\n // coarse-grain check for optional params\n if (route.path === \"\" || !((_route$path = route.path) != null && _route$path.includes(\"?\"))) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n return branches;\n}\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(...restExploded.map(subpath => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n // for absolute paths, ensure `/` instead of empty segment\n return result.map(exploded => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = s => s === \"*\";\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n if (index) {\n initialScore += indexRouteValue;\n }\n return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ?\n // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1] :\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\nfunction matchRouteBranch(branch, pathname) {\n let {\n routesMeta\n } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end\n }, remainingPathname);\n if (!match) return null;\n Object.assign(matchedParams, match.params);\n let route = meta.route;\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nfunction generatePath(originalPath, params) {\n if (params === void 0) {\n params = {};\n }\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(false, \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n path = path.replace(/\\*$/, \"/*\");\n }\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify = p => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n const segments = path.split(/\\/+/).map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n // Apply the splat\n return stringify(params[star]);\n }\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, \"Missing \\\":\" + key + \"\\\" param\");\n return stringify(param);\n }\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter(segment => !!segment);\n return prefix + segments.join(\"/\");\n}\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = {\n path: pattern,\n caseSensitive: false,\n end: true\n };\n }\n let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = compiledParams.reduce((memo, _ref, index) => {\n let {\n paramName,\n isOptional\n } = _ref;\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = safelyDecodeURIComponent(value || \"\", paramName);\n }\n return memo;\n }, {});\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive, end) {\n if (caseSensitive === void 0) {\n caseSensitive = false;\n }\n if (end === void 0) {\n end = true;\n }\n warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)(\\?)?/g, (_, paramName, isOptional) => {\n params.push({\n paramName,\n isOptional: isOptional != null\n });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n });\n if (path.endsWith(\"*\")) {\n params.push({\n paramName: \"*\"\n });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else ;\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n return [matcher, params];\n}\nfunction safelyDecodeURI(value) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(false, \"The URL path \\\"\" + value + \"\\\" could not be decoded because it is is a \" + \"malformed URL segment. This is probably due to a bad percent \" + (\"encoding (\" + error + \").\"));\n return value;\n }\n}\nfunction safelyDecodeURIComponent(value, paramName) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(false, \"The value for the URL param \\\"\" + paramName + \"\\\" will not be decoded because\" + (\" the string \\\"\" + value + \"\\\" is a malformed URL segment. This is probably\") + (\" due to a bad percent encoding (\" + error + \").\"));\n return value;\n }\n}\n/**\n * @private\n */\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nfunction resolvePath(to, fromPathname) {\n if (fromPathname === void 0) {\n fromPathname = \"/\";\n }\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"]. Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + \"a string in <Link to=\\\"...\\\"> and the router will parse it for you.\";\n}\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\" element={<Link to=\"..\"}>\n * </Route>\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\">\n * <Route element={<AccountsLayout />}> // <-- Does not contribute\n * <Route index element={<Link to=\"..\"} /> // <-- Does not contribute\n * </Route\n * </Route>\n * </Route>\n */\nfunction getPathContributingMatches(matches) {\n return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\n/**\n * @private\n */\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n if (isPathRelative === void 0) {\n isPathRelative = false;\n }\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = _extends({}, toArg);\n invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else if (isPathRelative) {\n let fromSegments = routePathnames[routePathnames.length - 1].replace(/^\\//, \"\").split(\"/\");\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n // With relative=\"path\", each leading .. segment means \"go up one URL segment\"\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n fromSegments.pop();\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = \"/\" + fromSegments.join(\"/\");\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how <a href> works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\n/**\n * @private\n */\nfunction getToPathname(to) {\n // Empty strings should be treated the same as / paths\n return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nconst json = function json(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n return new Response(JSON.stringify(data), _extends({}, responseInit, {\n headers\n }));\n};\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n constructor(data, responseInit) {\n this.pendingKeysSet = new Set();\n this.subscribers = new Set();\n this.deferredKeys = [];\n invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject;\n this.abortPromise = new Promise((_, r) => reject = r);\n this.controller = new AbortController();\n let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n this.data = Object.entries(data).reduce((acc, _ref2) => {\n let [key, value] = _ref2;\n return Object.assign(acc, {\n [key]: this.trackPromise(key, value)\n });\n }, {});\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n this.init = responseInit;\n }\n trackPromise(key, value) {\n if (!(value instanceof Promise)) {\n return value;\n }\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n return promise;\n }\n onSettle(promise, key, error, data) {\n if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n return Promise.reject(error);\n }\n this.pendingKeysSet.delete(key);\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\"Deferred data for key \\\"\" + key + \"\\\" resolved/rejected with `undefined`, \" + \"you must resolve/reject with a value or `null`.\");\n Object.defineProperty(promise, \"_error\", {\n get: () => undefinedError\n });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n this.emit(false, key);\n return Promise.reject(error);\n }\n Object.defineProperty(promise, \"_data\", {\n get: () => data\n });\n this.emit(false, key);\n return data;\n }\n emit(aborted, settledKey) {\n this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));\n }\n subscribe(fn) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n async resolveData(signal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise(resolve => {\n this.subscribe(aborted => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n get unwrappedData() {\n invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n return Object.entries(this.data).reduce((acc, _ref3) => {\n let [key, value] = _ref3;\n return Object.assign(acc, {\n [key]: unwrapTrackedPromise(value)\n });\n }, {});\n }\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\nfunction isTrackedPromise(value) {\n return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\nconst defer = function defer(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n return new DeferredData(data, responseInit);\n};\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirect = function redirect(url, init) {\n if (init === void 0) {\n init = 302;\n }\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, _extends({}, responseInit, {\n headers\n }));\n};\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nclass ErrorResponseImpl {\n constructor(status, statusText, data, internal) {\n if (internal === void 0) {\n internal = false;\n }\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\nconst validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validMutationMethods = new Set(validMutationMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_FETCHER = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined\n};\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst defaultMapRouteProperties = route => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a router and listen to history POP navigations\n */\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : undefined;\n const isBrowser = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n let mapRouteProperties;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Routes keyed by ID\n let manifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future = _extends({\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_prependBasename: false\n }, init.future);\n // Cleanup function for history\n let unlistenHistory = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from <ScrollRestoration /> until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors = null;\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let {\n matches,\n route\n } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = {\n [route.id]: error\n };\n }\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some(m => m.route.lazy) && (\n // And we have to either have no loaders or have been provided hydrationData\n !initialMatches.some(m => m.route.loader) || init.hydrationData != null);\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: new Map(),\n blockers: new Map()\n };\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction = Action.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController;\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions = new Map();\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener = null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads = [];\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(_ref => {\n let {\n action: historyAction,\n location,\n delta\n } = _ref;\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location \" + \"that was not created by @remix-run/router. This will fail silently in \" + \"production. This can happen if you are navigating outside the router \" + \"via `window.history.pushState`/`window.location.hash` instead of using \" + \"router navigation APIs. This can also happen if you are using \" + \"createHashRouter and the user manually changes the URL.\");\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return startNavigation(historyAction, location);\n });\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(Action.Pop, state.location);\n }\n return router;\n }\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n // Subscribe to state updates for the router\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n // Update our state and notify the calling context of the change\n function updateState(newState, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state = _extends({}, state, newState);\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers = [];\n let deletedFetchersKeys = [];\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach(subscriber => subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true\n }));\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach(key => state.fetchers.delete(key));\n deletedFetchersKeys.forEach(key => deleteFetcher(key));\n }\n }\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(location, newState, _temp) {\n var _location$state, _location$state2;\n let {\n flushSync\n } = _temp === void 0 ? {} : _temp;\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === Action.Replace) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === Action.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(_extends({}, newState, {\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset,\n blockers\n }), {\n viewTransitionOpts,\n flushSync: flushSync === true\n });\n // Reset stateful navigation vars\n pendingAction = Action.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(to, opts) {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n let historyAction = Action.Push;\n if (userReplace === true) {\n historyAction = Action.Replace;\n } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = Action.Replace;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync\n });\n }\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({\n revalidation: \"loading\"\n });\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return;\n }\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n overrideNavigation: state.navigation\n });\n }\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(historyAction, location, opts) {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n }, {\n flushSync\n });\n return;\n }\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a <Form method=\"post\">\n // which will default to a navigation to /page\n if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, {\n matches\n }, {\n flushSync\n });\n return;\n }\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);\n let pendingActionData;\n let pendingError;\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError\n };\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(request, location, opts.submission, matches, {\n replace: opts.replace,\n flushSync\n });\n if (actionOutput.shortCircuited) {\n return;\n }\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // Create a GET request for the loaders\n request = new Request(request.url, {\n signal: request.signal\n });\n }\n // Call loaders\n let {\n shortCircuited,\n loaderData,\n errors\n } = await handleLoaders(request, location, matches, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, flushSync, pendingActionData, pendingError);\n if (shortCircuited) {\n return;\n }\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n completeNavigation(location, _extends({\n matches\n }, pendingActionData ? {\n actionData: pendingActionData\n } : {}, {\n loaderData,\n errors\n }));\n }\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(request, location, submission, matches, opts) {\n if (opts === void 0) {\n opts = {};\n }\n interruptActiveLoads();\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({\n navigation\n }, {\n flushSync: opts.flushSync === true\n });\n // Call our action and get the result\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n result = await callLoaderOrAction(\"action\", request, actionMatch, matches, manifest, mapRouteProperties, basename);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n }\n if (isRedirectResult(result)) {\n let replace;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace = result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, {\n submission,\n replace\n });\n return {\n shortCircuited: true\n };\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = Action.Push;\n }\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: {\n [boundaryMatch.route.id]: result.error\n }\n };\n }\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n return {\n pendingActionData: {\n [actionMatch.route.id]: result.data\n }\n };\n }\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(request, location, matches, overrideNavigation, submission, fetcherSubmission, replace, flushSync, pendingActionData, pendingError) {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionData, pendingError);\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));\n pendingNavigationLoadId = ++incrementingLoadId;\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, _extends({\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null\n }, pendingActionData ? {\n actionData: pendingActionData\n } : {}, updatedFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n return {\n shortCircuited: true\n };\n }\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach(rf => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState(_extends({\n navigation: loadingNavigation\n }, actionData ? Object.keys(actionData).length === 0 ? {\n actionData: null\n } : {\n actionData\n } : {}, revalidatingFetchers.length > 0 ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n }\n revalidatingFetchers.forEach(rf => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n let {\n results,\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, request);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, {\n replace\n });\n return {\n shortCircuited: true\n };\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, matches, matchesToLoad, loaderResults, pendingError, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe(aborted => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return _extends({\n loaderData,\n errors\n }, shouldUpdateFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {});\n }\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(key, routeId, href, opts) {\n if (isServer) {\n throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. \" + \"You are likely calling a useFetcher() method in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n }\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, routeId, opts == null ? void 0 : opts.relative);\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n if (!matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: normalizedPath\n }), {\n flushSync\n });\n return;\n }\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);\n if (error) {\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n let match = getTargetMatch(matches, path);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, flushSync, submission);\n return;\n }\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, {\n routeId,\n path\n });\n handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission);\n }\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(key, routeId, path, match, requestMatches, flushSync, submission) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId\n });\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\"action\", fetchRequest, match, requestMatches, manifest, mapRouteProperties, basename);\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission\n });\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n invariant(matches, \"Didn't find any matches after fetcher action\");\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, {\n [match.route.id]: actionResult.data\n }, undefined // No need to send through errors since we short circuit above\n );\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({\n fetchers: new Map(state.fetchers)\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));\n abortController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n let {\n results,\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, state.matches, matchesToLoad, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n abortStaleFetchLoads(loadId);\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers)\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {\n flushSync\n });\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let result = await callLoaderOrAction(\"loader\", fetchRequest, match, matches, manifest, mapRouteProperties, basename);\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;\n }\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(state, redirect, _temp2) {\n let {\n submission,\n fetcherSubmission,\n replace\n } = _temp2 === void 0 ? {} : _temp2;\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true\n });\n invariant(redirectLocation, \"Expected a location on the redirect navigation\");\n if (isBrowser) {\n let isDocumentReload = false;\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n let redirectHistoryAction = replace === true ? Action.Replace : Action.Push;\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let {\n formMethod,\n formAction,\n formEncType\n } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: _extends({}, activeSubmission, {\n formAction: redirect.location\n }),\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(redirectLocation, submission);\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n }\n }\n async function callLoadersAndMaybeResolveData(currentMatches, matches, matchesToLoad, fetchersToLoad, request) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([...matchesToLoad.map(match => callLoaderOrAction(\"loader\", request, match, matches, manifest, mapRouteProperties, basename)), ...fetchersToLoad.map(f => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\"loader\", createClientSideRequest(init.history, f.path, f.controller.signal), f.match, f.matches, manifest, mapRouteProperties, basename);\n } else {\n let error = {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n };\n return error;\n }\n })]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n await Promise.all([resolveDeferredResults(currentMatches, matchesToLoad, loaderResults, loaderResults.map(() => request.signal), false, state.loaderData), resolveDeferredResults(currentMatches, fetchersToLoad.map(f => f.match), fetcherResults, fetchersToLoad.map(f => f.controller ? f.controller.signal : null), true)]);\n return {\n results,\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n function updateFetcherState(key, fetcher, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state.fetchers.set(key, fetcher);\n updateState({\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function setFetcherError(key, routeId, error, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error\n },\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function getFetcher(key) {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n function deleteFetcherAndUpdateState(key) {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({\n fetchers: new Map(state.fetchers)\n });\n }\n function abortFetcher(key) {\n let controller = fetchControllers.get(key);\n invariant(controller, \"Expected fetch controller: \" + key);\n controller.abort();\n fetchControllers.delete(key);\n }\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n function markFetchRedirectsDone() {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n function getBlocker(key, fn) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n return blocker;\n }\n function deleteBlocker(key) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\", \"Invalid blocker state transition: \" + blocker.state + \" -> \" + newBlocker.state);\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({\n blockers\n });\n }\n function shouldBlockNavigation(_ref2) {\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = _ref2;\n if (blockerFunctions.size === 0) {\n return;\n }\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({\n currentLocation,\n nextLocation,\n historyAction\n })) {\n return blockerKey;\n }\n }\n function cancelActiveDeferreds(predicate) {\n let cancelledRouteIds = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the <ScrollRestoration> component\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered <ScrollRestoration/>\n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({\n restoreScrollPosition: y\n });\n }\n }\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);\n }\n router = {\n get basename() {\n return basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: to => init.history.createHref(to),\n encodeLocation: to => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes\n };\n return router;\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\nconst UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\nfunction createStaticHandler(routes, opts) {\n invariant(routes.length > 0, \"You must provide a non-empty routes array to createStaticHandler\");\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties;\n if (opts != null && opts.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts != null && opts.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(request, _temp3) {\n let {\n requestContext\n } = _temp3 === void 0 ? {} : _temp3;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, {\n method\n });\n let {\n matches: methodNotAllowedMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return _extends({\n location,\n basename\n }, result);\n }\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(request, _temp4) {\n let {\n routeId,\n requestContext\n } = _temp4 === void 0 ? {} : _temp4;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, {\n method\n });\n } else if (!matches) {\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let result = await queryImpl(request, location, matches, requestContext, match);\n if (isResponse(result)) {\n return result;\n }\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n if (result.loaderData) {\n var _result$activeDeferre;\n let data = Object.values(result.loaderData)[0];\n if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n return undefined;\n }\n async function queryImpl(request, location, matches, requestContext, routeMatch) {\n invariant(request.signal, \"query()/queryRoute() requests must contain an AbortController signal\");\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, routeMatch != null);\n return result;\n }\n let result = await loadRouteData(request, matches, requestContext, routeMatch);\n return isResponse(result) ? result : _extends({}, result, {\n actionData: null,\n actionHeaders: {}\n });\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, isRouteRequest) {\n let result;\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n } else {\n result = await callLoaderOrAction(\"action\", request, actionMatch, matches, manifest, mapRouteProperties, basename, {\n isStaticRequest: true,\n isRouteRequest,\n requestContext\n });\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n }\n }\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location\n }\n });\n }\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, {\n type: \"defer-action\"\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n }\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: {\n [actionMatch.route.id]: result.data\n },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(request, matches, requestContext, undefined, {\n [boundaryMatch.route.id]: result.error\n });\n // action status codes take precedence over loader status codes\n return _extends({}, context, {\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : 500,\n actionData: null,\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n return _extends({}, context, result.statusCode ? {\n statusCode: result.statusCode\n } : {}, {\n actionData: {\n [actionMatch.route.id]: result.data\n },\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n async function loadRouteData(request, matches, requestContext, routeMatch, pendingActionError) {\n let isRouteRequest = routeMatch != null;\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch == null ? void 0 : routeMatch.route.id\n });\n }\n let requestMatches = routeMatch ? [routeMatch] : getLoaderMatchesUntilBoundary(matches, Object.keys(pendingActionError || {})[0]);\n let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce((acc, m) => Object.assign(acc, {\n [m.route.id]: null\n }), {}),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null\n };\n }\n let results = await Promise.all([...matchesToLoad.map(match => callLoaderOrAction(\"loader\", request, match, matches, manifest, mapRouteProperties, basename, {\n isStaticRequest: true,\n isRouteRequest,\n requestContext\n }))]);\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n }\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(matches, matchesToLoad, results, pendingActionError, activeDeferreds);\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));\n matches.forEach(match => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n return _extends({}, context, {\n matches,\n activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null\n });\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nfunction getStaticContextFromError(routes, context, error) {\n let newContext = _extends({}, context, {\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error\n }\n });\n return newContext;\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== undefined);\n}\nfunction normalizeTo(location, matches, basename, prependBasename, to, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n // Resolve the relative path\n let path = resolveTo(to ? to : \".\", getPathContributingMatches(contextualMatches).map(m => m.pathnameBase), stripBasename(location.pathname, basename) || location.pathname, relative === \"path\");\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n // Add an ?index param for matched index routes if we don't already have one\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch && activeRouteMatch.route.index && !hasNakedIndexQuery(path.search)) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return {\n path\n };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, {\n method: opts.formMethod\n })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, {\n type: \"invalid-body\"\n })\n });\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce((acc, _ref3) => {\n let [name, value] = _ref3;\n return \"\" + acc + name + \"=\" + value + \"\\n\";\n }, \"\") : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n try {\n let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(typeof FormData === \"function\", \"FormData is not available in this environment\");\n let searchParams;\n let formData;\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n let submission = {\n formMethod,\n formAction,\n formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined\n };\n if (isMutationMethod(submission.formMethod)) {\n return {\n path,\n submission\n };\n }\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = \"?\" + searchParams;\n return {\n path: createPath(parsedPath),\n submission\n };\n}\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex(m => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionData, pendingError) {\n let actionResult = pendingError ? Object.values(pendingError)[0] : pendingActionData ? Object.values(pendingActionData)[0] : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n // Always call the loader on new route instances and pending defer cancellations\n if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {\n return true;\n }\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n return shouldRevalidateLoader(match, _extends({\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params\n }, submission, {\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n }));\n });\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {\n return;\n }\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null\n });\n return;\n }\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === undefined) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params\n }, submission, {\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired\n }));\n }\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController()\n });\n }\n });\n return [navigationMatches, revalidatingFetchers];\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return arg.defaultShouldRevalidate;\n}\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(route, mapRouteProperties, manifest) {\n if (!route.lazy) {\n return;\n }\n let lazyRoute = await route.lazy();\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isPropertyStaticallyDefined = staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n warning(!isPropertyStaticallyDefined, \"Route \\\"\" + routeToUpdate.id + \"\\\" has a static property \\\"\" + lazyRouteProperty + \"\\\" \" + \"defined but its lazy function is also returning a value for this property. \" + (\"The lazy route property \\\"\" + lazyRouteProperty + \"\\\" will be ignored.\"));\n if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n }\n }\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {\n lazy: undefined\n }));\n}\nasync function callLoaderOrAction(type, request, match, matches, manifest, mapRouteProperties, basename, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let resultType;\n let result;\n let onReject;\n let runHandler = handler => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject;\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([handler({\n request,\n params: match.params,\n context: opts.requestContext\n }), abortPromise]);\n };\n try {\n let handler = match.route[type];\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch(e => {\n handlerError = e;\n }), loadLazyRouteModule(match.route, mapRouteProperties, manifest)]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return {\n type: ResultType.data,\n data: undefined\n };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname\n });\n } else {\n result = await runHandler(handler);\n }\n invariant(result !== undefined, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + (\"\\\"\" + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n if (isResponse(result)) {\n let status = result.status;\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(new URL(request.url), matches.slice(0, matches.indexOf(match) + 1), basename, true, location);\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\") ? new URL(currentUrl.protocol + location) : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null\n };\n }\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse = {\n type: resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result\n };\n throw queryRouteResponse;\n }\n let data;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers\n };\n }\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: result\n };\n }\n if (isDeferredData(result)) {\n var _result$init, _result$init2;\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status,\n headers: ((_result$init2 = result.init) == null ? void 0 : _result$init2.headers) && new Headers(result.init.headers)\n };\n }\n return {\n type: ResultType.data,\n data: result\n };\n}\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = {\n signal\n };\n if (submission && isMutationMethod(submission.formMethod)) {\n let {\n formMethod,\n formEncType\n } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({\n \"Content-Type\": formEncType\n });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n let searchParams = new URLSearchParams();\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\nfunction processRouteLoaderData(matches, matchesToLoad, results, pendingError, activeDeferreds) {\n // Fill in loaderData/errors from our loaders\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n errors = errors || {};\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, matchesToLoad, results, pendingError, revalidatingFetchers, fetcherResults, activeDeferreds) {\n let {\n loaderData,\n errors\n } = processRouteLoaderData(matches, matchesToLoad, results, pendingError, activeDeferreds);\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let {\n key,\n match,\n controller\n } = revalidatingFetchers[index];\n invariant(fetcherResults !== undefined && fetcherResults[index] !== undefined, \"Did not find corresponding fetcher result\");\n let result = fetcherResults[index];\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = _extends({}, errors, {\n [boundaryMatch.route.id]: result.error\n });\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n return {\n loaderData,\n errors\n };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = _extends({}, newLoaderData);\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(matches, routeId) {\n let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];\n return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === \"/\") || {\n id: \"__shim-error-route__\"\n };\n return {\n matches: [{\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }],\n route\n };\n}\nfunction getInternalRouterError(status, _temp5) {\n let {\n pathname,\n routeId,\n method,\n type\n } = _temp5 === void 0 ? {} : _temp5;\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide a `loader` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = \"Route \\\"\" + routeId + \"\\\" does not match URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = \"No route matches URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method.toUpperCase() + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide an `action` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (method) {\n errorMessage = \"Invalid request method \\\"\" + method.toUpperCase() + \"\\\"\";\n }\n }\n return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);\n}\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results) {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return {\n result,\n idx: i\n };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath(_extends({}, parsedPath, {\n hash: \"\"\n }));\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\nfunction isDeferredResult(result) {\n return result.type === ResultType.deferred;\n}\nfunction isErrorResult(result) {\n return result.type === ResultType.error;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === ResultType.redirect;\n}\nfunction isDeferredData(value) {\n let deferred = value;\n return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectResponse(result) {\n if (!isResponse(result)) {\n return false;\n }\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\nfunction isQueryRouteResponse(obj) {\n return obj && isResponse(obj.response) && (obj.type === ResultType.data || obj.type === ResultType.error);\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toLowerCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toLowerCase());\n}\nasync function resolveDeferredResults(currentMatches, matchesToLoad, results, signals, isFetcher, currentLoaderData) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(signal, \"Expected an AbortSignal for revalidating fetcher deferred result\");\n await resolveDeferredData(result, signal, isFetcher).then(result => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\nasync function resolveDeferredData(result, signal, unwrap) {\n if (unwrap === void 0) {\n unwrap = false;\n }\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e\n };\n }\n }\n return {\n type: ResultType.data,\n data: result.deferredData.data\n };\n}\nfunction hasNakedIndexQuery(search) {\n return new URLSearchParams(search).getAll(\"index\").some(v => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let {\n formMethod,\n formAction,\n formEncType,\n text,\n formData,\n json\n } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined\n };\n }\n}\nfunction getLoadingNavigation(location, submission) {\n if (submission) {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n } else {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n };\n return navigation;\n }\n}\nfunction getSubmittingNavigation(location, submission) {\n let navigation = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n}\nfunction getLoadingFetcher(submission, data) {\n if (submission) {\n let fetcher = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n let fetcher = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined\n };\n return fetcher;\n}\nfunction getDoneFetcher(data) {\n let fetcher = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n if (transitions.size > 0) {\n let json = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));\n } catch (error) {\n warning(false, \"Failed to save applied view transitions in sessionStorage (\" + error + \").\");\n }\n }\n}\n//#endregion\n\nexport { AbortedDeferredError, Action, IDLE_BLOCKER, IDLE_FETCHER, IDLE_NAVIGATION, UNSAFE_DEFERRED_SYMBOL, DeferredData as UNSAFE_DeferredData, ErrorResponseImpl as UNSAFE_ErrorResponseImpl, convertRouteMatchToUiMatch as UNSAFE_convertRouteMatchToUiMatch, convertRoutesToDataRoutes as UNSAFE_convertRoutesToDataRoutes, getPathContributingMatches as UNSAFE_getPathContributingMatches, invariant as UNSAFE_invariant, warning as UNSAFE_warning, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, createRouter, createStaticHandler, defer, generatePath, getStaticContextFromError, getToPathname, isDeferredData, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, parsePath, redirect, redirectDocument, resolvePath, resolveTo, stripBasename };\n//# sourceMappingURL=router.js.map\n","import { generatePath } from 'react-router-dom-v5-compat';\r\n\r\nexport type UrlParams = {\r\n quoteId: string;\r\n product: string;\r\n policyNumber: string;\r\n carriers?: string;\r\n};\r\n\r\nexport enum Path {\r\n AddressManagement = '/address',\r\n AdjusterQueueManagement = '/admin/adjuster-queue-management',\r\n AgencyDashboard = '/agency-dashboard/*',\r\n BindingRequirements = '/:product/binding-requirements/:policyNumber',\r\n CatCodes = '/admin/cat-codes',\r\n ClaimsDashboard = '/claims-dashboard/*',\r\n CommercialLanding = '/commercial',\r\n CompareCustomize = '/:product/:quoteId/compare-customize/:carriers?',\r\n ConfirmQuote = '/:product/:quoteId/confirm-quote',\r\n ConfirmSingleFamilyResidence = '/:product/address/:address/single-family-residence',\r\n CreateAddress = '/:product/address/:address',\r\n CreateAddressNoQuote = '/address/create/:address?',\r\n Customize = '/:product/:quoteId/customize',\r\n DeepLinkQuote = '/:product/quote/:address',\r\n EditAddress = '/address/edit/:address',\r\n HomeownerLanding = '/',\r\n Hover = '/admin/hover',\r\n IsoForms = '/admin/iso-forms',\r\n LoginAs = '/admin/login-as',\r\n MakeAPayment = '/make-a-payment/:policyNumber?/:zip?',\r\n MissingPropertyData = '/:product/address/:address/missing-data',\r\n PreciseLocation = '/:product/address/:address/location',\r\n PreciseLocationNoQuote = '/address/:address/location',\r\n ProductLanding = '/:product',\r\n QuoteList = '/:product/:quoteId/quotes',\r\n RenewalEAndSOffer = '/:product/:quoteId/renewal-offer',\r\n RequestEAndSQuote = '/:product/:quoteId/request-e-and-s-quote',\r\n Shop = '/shop',\r\n SignUp = '/:product/sign-up/*',\r\n SignUpEntry = '/:product/sign-up',\r\n UnderwritingGuidelines = '/:product/:quoteId/underwriting-guidelines',\r\n UnsupportedProperty = '/:product/address/:address/unsupported',\r\n UpcomingRenewalQuote = '/:product/:quoteId/urq',\r\n ZipCodeSuggestions = '/:product/address/:address/zip-code-suggestions',\r\n ZipCodeSuggestionsNoQuote = '/address/:address/zip-code-suggestions',\r\n}\r\n\r\n/** Returns the route base path for quotes based on the number of quotes and whether it is a purchased quote or not. */\r\nexport function getQuotePath(quoteCount?: number, isPurchasedQuote: boolean = false): Path {\r\n quoteCount = quoteCount || 1;\r\n if (quoteCount === 1) return Path.Customize;\r\n if (quoteCount === 2 || isPurchasedQuote) return Path.CompareCustomize;\r\n if (quoteCount > 2) return Path.QuoteList;\r\n return Path.CompareCustomize;\r\n}\r\n\r\nexport function getPath(path: Path | string, params?: Record<string, string>): string {\r\n return generatePath(path as string, params);\r\n}\r\n","export class FinancialRating {\r\n readonly key: number;\r\n readonly value: string;\r\n readonly displayName: string;\r\n readonly imagePath: string;\r\n\r\n protected constructor(key: number, value: string, displayName: string, imagePath: string) {\r\n this.key = key;\r\n this.value = value;\r\n this.displayName = displayName;\r\n this.imagePath = imagePath;\r\n }\r\n}\r\n","import { FinancialRating } from '../common';\r\n\r\nexport class AmBestRating extends FinancialRating {\r\n public static readonly APlusPlusSuperior = new AmBestRating(\r\n 1,\r\n 'A++ (Excellent)',\r\n 'Rated A++ (Superior) by AM Best',\r\n '/images/am_best_logo_a_plus_plus.png',\r\n );\r\n\r\n public static readonly APlusSuperior = new AmBestRating(\r\n 2,\r\n 'A+ (Superior)',\r\n 'Rated A+ (Superior) by AM Best',\r\n '/images/am_best_logo_a_plus.png',\r\n );\r\n\r\n public static readonly AExcellent = new AmBestRating(\r\n 3,\r\n 'A (Excellent)',\r\n 'Rated A (Excellent) by AM Best',\r\n '/images/am_best_logo_a.png',\r\n );\r\n\r\n public static readonly AMinusExcellent = new AmBestRating(\r\n 4,\r\n 'A- (Excellent)',\r\n 'Rated A- (Excellent) by AM Best',\r\n '/images/am_best_logo_a_minus.png',\r\n );\r\n\r\n public static readonly BPlusPlusGood = new AmBestRating(\r\n 5,\r\n 'B++ (Good)',\r\n 'Rated B++ (Good) by AM Best',\r\n '/images/am_best_logo_b_plus_plus.png',\r\n );\r\n\r\n public static readonly BPlusGood = new AmBestRating(\r\n 6,\r\n 'B+ (Good)',\r\n 'Rated B+ (Good) by AM Best',\r\n '/images/am_best_logo_b_plus.png',\r\n );\r\n\r\n public static readonly BFair = new AmBestRating(\r\n 7,\r\n 'B (Fair)',\r\n 'Rated B (Fair) by AM Best',\r\n '/images/am_best_logo_b.png',\r\n );\r\n\r\n public static readonly BMinusFair = new AmBestRating(\r\n 8,\r\n 'B- (Fair)',\r\n 'Rated B- (Fair) by AM Best',\r\n '/images/am_best_logo_b_minus.png',\r\n );\r\n\r\n public static readonly CPlusPlusMarginal = new AmBestRating(\r\n 9,\r\n 'C++ (Marginal)',\r\n 'Rated C++ (Marginal) by AM Best',\r\n '/images/am_best_logo_c_plus_plus.png',\r\n );\r\n\r\n public static readonly CPlusMarginal = new AmBestRating(\r\n 10,\r\n 'C+ (Marginal)',\r\n 'Rated C+ (Marginal) by AM Best',\r\n '/images/am_best_logo_c_plus.png',\r\n );\r\n\r\n public static readonly CWeak = new AmBestRating(\r\n 11,\r\n 'C (Weak)',\r\n 'Rated C (Weak) by AM Best',\r\n '/images/am_best_logo_c.png',\r\n );\r\n\r\n public static readonly CMinusWeak = new AmBestRating(\r\n 12,\r\n 'C- (Weak)',\r\n 'Rated C- (Weak) by AM Best',\r\n '/images/am_best_logo_c_minus.png',\r\n );\r\n\r\n public static readonly DPoor = new AmBestRating(\r\n 13,\r\n 'D (Poor)',\r\n 'Rated D (Poor) by AM Best',\r\n '/images/am_best_logo_d.png',\r\n );\r\n}\r\n","import { FinancialRating } from '../common';\r\n\r\nexport class DemotechRating extends FinancialRating {\r\n public static readonly ADoublePrimeUnsurpassed = new DemotechRating(\r\n 1,\r\n \"A'' (Unsurpassed)\",\r\n \"Rated A'' (Unsurpassed) by Demotech\",\r\n '/images/demotech_logo_a_double_prime.png',\r\n );\r\n\r\n public static readonly APrimeUnsurpassed = new DemotechRating(\r\n 2,\r\n \"A' (Unsurpassed)\",\r\n \"Rated A' (Unsurpassed) by Demotech\",\r\n '/images/demotech_logo_a_prime.png',\r\n );\r\n\r\n public static readonly AExceptional = new DemotechRating(\r\n 3,\r\n 'A (Exceptional)',\r\n 'Rated A (Exceptional) by Demotech',\r\n '/images/demotech_logo_a.png',\r\n );\r\n\r\n public static readonly Substantial = new DemotechRating(\r\n 4,\r\n 'S (Substantial)',\r\n 'Rated S (Substantial) by Demotech',\r\n '/images/demotech_logo_s.png',\r\n );\r\n\r\n public static readonly Moderate = new DemotechRating(\r\n 5,\r\n 'M (Moderate)',\r\n 'Rated M (Moderate) by Demotech',\r\n '/images/demotech_logo_m.png',\r\n );\r\n\r\n public static readonly Licensed = new DemotechRating(\r\n 6,\r\n 'L (Licensed)',\r\n 'Rated L (Licensed) by Demotech',\r\n '/images/demotech_logo_l.png',\r\n );\r\n}\r\n","import { AmBestRating } from '../AmBestRating';\r\nimport { FinancialRating } from '../common';\r\nimport { DemotechRating } from '../DemotechRating';\r\n\r\nexport class CarrierCode {\r\n readonly id: number;\r\n readonly value: string;\r\n readonly abbreviation: string;\r\n readonly sarName: string;\r\n readonly name: string;\r\n readonly imsName: string;\r\n readonly displayName: string;\r\n readonly amBestRating: AmBestRating | null;\r\n readonly demotechRating: DemotechRating | null;\r\n readonly logoPath: string;\r\n\r\n public getFinancialRating(): FinancialRating | null {\r\n // If the AM Best rating for a carrier is an \"A-\" or above (which equates to a key of 4 or less), return the AM Best rating.\r\n if (this.amBestRating && this.amBestRating.key <= 4) return this.amBestRating;\r\n\r\n // If the AM Best rating is not available or is below an \"A-\" rating, return the Demotech rating if it is available and is an \"A\" or above.\r\n if (this.demotechRating && this.demotechRating.key <= 3) return this.demotechRating;\r\n\r\n // If neither rating is available or is below an \"A\" rating, return null.\r\n return null;\r\n }\r\n\r\n private constructor(\r\n id: number,\r\n value: string,\r\n abbreviation: string,\r\n sarName: string,\r\n name: string,\r\n imsName: string,\r\n displayName: string,\r\n amBestRating: FinancialRating | null,\r\n demotechRating: FinancialRating | null,\r\n logoPath: string\r\n ) {\r\n this.id = id;\r\n this.value = value;\r\n this.abbreviation = abbreviation;\r\n this.sarName = sarName;\r\n this.name = name;\r\n this.imsName = imsName;\r\n this.displayName = displayName;\r\n this.amBestRating = amBestRating;\r\n this.demotechRating = demotechRating;\r\n this.logoPath = logoPath;\r\n }\r\n\r\n public static readonly ClearBlue = new CarrierCode(\r\n 1,\r\n 'ClearBlue',\r\n 'CB',\r\n 'ClearBlue',\r\n 'Clear Blue Insurance Company',\r\n 'Clear Blue Insurance Company',\r\n 'Clear Blue Insurance Company',\r\n AmBestRating.AMinusExcellent,\r\n null,\r\n '/images/clear-blue-logo.webp'\r\n );\r\n\r\n public static readonly ClearBlueSpecialty = new CarrierCode(\r\n 2,\r\n 'ClearBSpec',\r\n 'CBS',\r\n 'ClearBlue',\r\n 'Clear Blue Specialty Insurance Company',\r\n 'Clear Blue Specialty Insurance',\r\n 'Clear Blue Specialty Insurance',\r\n AmBestRating.AMinusExcellent,\r\n null,\r\n '/images/clear-blue-logo.webp'\r\n );\r\n\r\n public static readonly Benchmark = new CarrierCode(\r\n 3,\r\n 'BIC',\r\n 'BIC',\r\n 'Benchmark',\r\n 'Benchmark Insurance Company',\r\n 'Benchmark Insurance Company',\r\n 'Benchmark Insurance Company',\r\n AmBestRating.AExcellent,\r\n null,\r\n '/images/benchmark-logo.webp'\r\n );\r\n\r\n public static readonly Vave = new CarrierCode(\r\n 4,\r\n 'Vave',\r\n 'VAVE',\r\n 'Vave',\r\n 'Vave',\r\n `Certain Underwriters at Lloyd's of London`,\r\n `Lloyd's of London - Vave`,\r\n AmBestRating.APlusSuperior,\r\n null,\r\n '/images/vave-logo.webp'\r\n );\r\n\r\n public static readonly Topa = new CarrierCode(\r\n 5,\r\n 'Topa',\r\n 'TOPA',\r\n 'Topa',\r\n 'Topa Insurance Company',\r\n 'Topa Insurance Company',\r\n 'Topa Insurance Company',\r\n AmBestRating.BPlusPlusGood,\r\n DemotechRating.AExceptional,\r\n '/images/topa-logo.webp'\r\n );\r\n\r\n public static readonly Hiscox = new CarrierCode(\r\n 7,\r\n 'Hiscox',\r\n 'HC',\r\n 'Hiscox',\r\n 'Hiscox',\r\n 'Hiscox',\r\n `Lloyd's of London - Hiscox`,\r\n AmBestRating.AExcellent,\r\n null,\r\n '/images/hiscox-logo.webp'\r\n );\r\n\r\n public static readonly Nfip = new CarrierCode(\r\n 8,\r\n 'NFIP',\r\n 'NFIP',\r\n 'NFIP',\r\n 'NFIP',\r\n 'NFIP',\r\n 'National Flood Insurance Program',\r\n AmBestRating.AMinusExcellent,\r\n null,\r\n '/images/fema-logo.webp'\r\n );\r\n\r\n public static readonly Brit = new CarrierCode(\r\n 9,\r\n 'Brit',\r\n 'BRIT',\r\n 'Brit',\r\n 'Brit',\r\n \"Certain Underwriters at Lloyd's of London, Syn 2987\",\r\n \"Lloyd's of London - Brit\",\r\n AmBestRating.AExcellent,\r\n null,\r\n '/images/brit-logo.webp'\r\n );\r\n\r\n public static readonly Dorchester = new CarrierCode(\r\n 10,\r\n 'Dorchester',\r\n 'DOR',\r\n 'Dorchester',\r\n 'Dorchester Insurance Company',\r\n 'Dorchester Insurance Company, Ltd.',\r\n 'Dorchester Insurance Company, Ltd.',\r\n null,\r\n DemotechRating.APrimeUnsurpassed,\r\n '/images/dorchester-logo.webp'\r\n );\r\n\r\n public static readonly BenchmarkSpecialty = new CarrierCode(\r\n 11,\r\n 'BSIC',\r\n 'BSIC',\r\n 'Benchmark',\r\n 'Benchmark Specialty Insurance Company',\r\n 'Benchmark Specialty Insurance Company',\r\n 'Benchmark Specialty Insurance Company',\r\n AmBestRating.AExcellent,\r\n null,\r\n '/images/benchmark-specialty-logo.webp'\r\n );\r\n\r\n public static readonly Granada = new CarrierCode(\r\n 12,\r\n 'Granada',\r\n 'GRA',\r\n 'Granada',\r\n 'Granada Insurance Company',\r\n 'Granada Insurance Company',\r\n 'Granada Insurance Company',\r\n AmBestRating.AMinusExcellent,\r\n null,\r\n '/images/granada-logo.webp'\r\n );\r\n\r\n public static readonly EmeraldBay = new CarrierCode(\r\n 13,\r\n 'EmeraldBay',\r\n 'EB',\r\n 'EmeraldBay',\r\n 'Emerald Bay Insurance Company',\r\n 'Emerald Bay Insurance Company',\r\n 'Emerald Bay Insurance Company',\r\n AmBestRating.AMinusExcellent,\r\n null,\r\n '/images/emerald-bay-logo.webp'\r\n );\r\n\r\n public switch<T>({\r\n onBrit,\r\n onClearBlue,\r\n onClearBlueSpecialty,\r\n onBenchmark,\r\n onVave,\r\n onTopa,\r\n onHiscox,\r\n onNfip,\r\n onDorchester,\r\n onBenchmarkSpecialty,\r\n onGranada,\r\n onEmeraldBay,\r\n }: {\r\n onBrit: () => T;\r\n onClearBlue: () => T;\r\n onClearBlueSpecialty: () => T;\r\n onBenchmark: () => T;\r\n onVave: () => T;\r\n onTopa: () => T;\r\n onHiscox: () => T;\r\n onNfip: () => T;\r\n onDorchester: () => T;\r\n onBenchmarkSpecialty: () => T;\r\n onGranada: () => T;\r\n onEmeraldBay: () => T;\r\n }): T {\r\n switch (this) {\r\n case CarrierCode.Brit:\r\n return onBrit();\r\n case CarrierCode.ClearBlue:\r\n return onClearBlue();\r\n case CarrierCode.ClearBlueSpecialty:\r\n return onClearBlueSpecialty();\r\n case CarrierCode.Benchmark:\r\n return onBenchmark();\r\n case CarrierCode.Vave:\r\n return onVave();\r\n case CarrierCode.Topa:\r\n return onTopa();\r\n case CarrierCode.Hiscox:\r\n return onHiscox();\r\n case CarrierCode.Nfip:\r\n return onNfip();\r\n case CarrierCode.Dorchester:\r\n return onDorchester();\r\n case CarrierCode.BenchmarkSpecialty:\r\n return onBenchmarkSpecialty();\r\n case CarrierCode.Granada:\r\n return onGranada();\r\n case CarrierCode.EmeraldBay:\r\n return onEmeraldBay();\r\n default:\r\n throw new Error(`CarrierCode case not implemented: ${this}`);\r\n }\r\n }\r\n}\r\n\r\nexport namespace CarrierCode {\r\n export function all(): CarrierCode[] {\r\n return [\r\n CarrierCode.Brit,\r\n CarrierCode.ClearBlue,\r\n CarrierCode.ClearBlueSpecialty,\r\n CarrierCode.Benchmark,\r\n CarrierCode.Vave,\r\n CarrierCode.Topa,\r\n CarrierCode.Hiscox,\r\n CarrierCode.Nfip,\r\n CarrierCode.Dorchester,\r\n CarrierCode.BenchmarkSpecialty,\r\n CarrierCode.Granada,\r\n CarrierCode.EmeraldBay,\r\n ];\r\n }\r\n\r\n export function parseOrDefault(value: string | number | undefined | null): CarrierCode | null {\r\n if (typeof value === 'number') {\r\n return all().find(cc => cc.id === value) || null;\r\n }\r\n\r\n if (typeof value === 'string') {\r\n return (\r\n all().find(cc =>\r\n [cc.value, cc.name, cc.abbreviation, cc.displayName, cc.imsName, cc.sarName].some(\r\n v => v.toLowerCase() === value.toLowerCase()\r\n )\r\n ) || null\r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n export function parse(value: string | number | undefined | null): CarrierCode {\r\n const result = parseOrDefault(value);\r\n if (!result) {\r\n throw new Error(`Could not parse any CarrierCode from the value: ${value}`);\r\n }\r\n return result;\r\n }\r\n}\r\n","type ParseValue = string | number | null | undefined;\r\n\r\n/** The client-side closed set of products we support, with all the properties and extension methods we need to use them.\r\n * Sync with server-side version in ProductLine.cs as much as possible. */\r\nexport class ProductLine {\r\n /** The numeric id of the ProductLine. */\r\n readonly key: number;\r\n\r\n /** The name of the ProductLine on the Swyfft side. */\r\n readonly value: string;\r\n\r\n /** The name of the ProductLine used in places like URL paths and CSS classes. */\r\n readonly lowercaseName: string;\r\n\r\n /** The name of the ProductLine on the IMS side. */\r\n readonly imsName: string;\r\n\r\n private constructor(id: number, name: string, imsName: string) {\r\n this.key = id;\r\n this.value = name;\r\n this.lowercaseName = name.toLowerCase();\r\n this.imsName = imsName;\r\n }\r\n\r\n public static readonly Homeowner = new ProductLine(1, 'Homeowner', 'Homeowners');\r\n public static readonly Commercial = new ProductLine(2, 'Commercial', 'Package');\r\n public static readonly Flood = new ProductLine(3, 'Flood', 'Flood');\r\n public static readonly Dbb = new ProductLine(4, 'DBB', 'DBB');\r\n\r\n /** Provide a function to run on each ProductLine. Formatted as an object because typescript does not support named\r\n * arguments, but we want to be precise about naming the product to switch on here. */\r\n public switch<T>({\r\n onHomeowner,\r\n onCommercial,\r\n onFlood,\r\n onDbb,\r\n }: {\r\n onHomeowner: () => T;\r\n onCommercial: () => T;\r\n onFlood: () => T;\r\n onDbb?: () => T;\r\n }): T {\r\n switch (this) {\r\n case ProductLine.Homeowner:\r\n return onHomeowner();\r\n case ProductLine.Commercial:\r\n return onCommercial();\r\n case ProductLine.Flood:\r\n return onFlood();\r\n case ProductLine.Dbb:\r\n if (onDbb) return onDbb();\r\n throw new Error(`Invalid ProductLine: ${this}`);\r\n default:\r\n throw new Error(`Invalid ProductLine: ${this}`);\r\n }\r\n }\r\n\r\n /** Throws an error for a product that is not implemented. */\r\n public throwNotImplementedError(): never {\r\n throw new Error(`Not implemented for ProductLine: ${this.value}`);\r\n }\r\n\r\n /** Throws an error for an unsupported product. */\r\n public throwUnsupportedError(): never {\r\n throw new Error(`Unsupported ProductLine: ${this.value}`);\r\n }\r\n}\r\n\r\n// This namespace allows us to add extension methods to the ProductLine class that can be used without instantiating it.\r\nexport namespace ProductLine {\r\n /** Returns an array of all enabled ProductLine members. */\r\n export function all(): ProductLine[] {\r\n const activeProducts = [ProductLine.Homeowner, ProductLine.Commercial, ProductLine.Flood];\r\n\r\n if (isDeductibleBuyBackEnabled()) {\r\n activeProducts.push(ProductLine.Dbb);\r\n }\r\n\r\n return activeProducts;\r\n }\r\n\r\n export function sorted(): ProductLine[] {\r\n return all().sort((a, b) => a.lowercaseName.localeCompare(b.lowercaseName));\r\n }\r\n\r\n /** Returns an array of all ProductLine values which ar. */\r\n export function values(): string[] {\r\n return all().map(p => p.value);\r\n }\r\n\r\n /** Returns an array of all ACTIVE ProductLine keys. */\r\n export function keys(): ReadonlyArray<number> {\r\n return all().map(p => p.key);\r\n }\r\n\r\n /** Returns a ProductLine instance with matching value or null. */\r\n export function parseOrDefault(value: ParseValue): ProductLine | null {\r\n if (typeof value === 'number') {\r\n return all().find(productLine => value === productLine.key) || null;\r\n }\r\n\r\n if (typeof value === 'string') {\r\n const normalized = value.toLowerCase();\r\n return (\r\n all().find(\r\n productLine =>\r\n normalized === productLine.lowercaseName || normalized === productLine.imsName.toLowerCase()\r\n ) || null\r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /** Gets a product line based on the value or throws an error. */\r\n export function parse(value: ParseValue): ProductLine {\r\n const productLine = parseOrDefault(value);\r\n if (productLine === null) {\r\n throw new Error(`Could not parse ProductLine from ${value}`);\r\n }\r\n return productLine;\r\n }\r\n\r\n /** Returns true if the given value is there and matches ProductLine by Id, Name, UrlName, or ImsName. */\r\n export function matches(value: ParseValue, productLine: ProductLine): boolean {\r\n const match = parseOrDefault(value);\r\n return match !== null && match.key === productLine.key;\r\n }\r\n\r\n function isDeductibleBuyBackEnabled() {\r\n const enabled = (window as any).deductibleBuyBackFeatureFlag;\r\n if (typeof enabled === 'string') return enabled.toLowerCase() === 'true';\r\n return enabled;\r\n }\r\n}\r\n","import * as Constants from '@shared/Constants';\r\nimport * as Models from '@shared/Models';\r\n\r\n//#region Generic Methods\r\n/**\r\n * Saves a value to local storage\r\n */\r\nexport function saveLocalData(key: string, value: string | number | boolean | Date | null) {\r\n try {\r\n if (value === null || typeof value === 'undefined') {\r\n value = '';\r\n }\r\n localStorage.setItem(key, value.toString());\r\n } catch (e) {\r\n throw new Models.ApiError(\r\n 'Local Storage',\r\n 'We are unable to process your request. This can sometimes be caused by private browsing mode in some browsers.',\r\n `Unable to set local storage key ${key} to value ${value} (err=${e})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Saves a value to session storage\r\n */\r\nexport function saveSessionData(key: string, value: string | number | boolean | Date | null) {\r\n try {\r\n if (value === null || typeof value === 'undefined') {\r\n value = '';\r\n }\r\n sessionStorage.setItem(key, value.toString());\r\n } catch (e) {\r\n throw new Models.ApiError(\r\n 'Local Storage',\r\n 'We are unable to process your request. This can sometimes be caused by private browsing mode in some browsers.',\r\n `Unable to set local storage key ${key} to value ${value} (err=${e})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Returns a value from local storage.\r\n */\r\nexport function getLocalData(key: string) {\r\n return localStorage.getItem(key);\r\n}\r\n\r\n/**\r\n * Returns a value from session storage.\r\n */\r\nexport function getSessionData(key: string) {\r\n return sessionStorage.getItem(key);\r\n}\r\n\r\n/**\r\n * Clears out both local and session storage\r\n */\r\nexport function clear() {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n}\r\n\r\n/**\r\n * Removes a value from session storage\r\n */\r\nexport function removeFromSession(key: string) {\r\n sessionStorage.removeItem(key);\r\n}\r\n\r\n/**\r\n * Removes a value from local storage\r\n */\r\nexport function removeFromLocal(key: string) {\r\n localStorage.removeItem(key);\r\n}\r\n\r\n/**\r\n * Saves a value to the site's cookies\r\n */\r\nexport function setCookie(cname: string, cvalue: string | null, exdays: number) {\r\n let cookie: string;\r\n cvalue = encodeURIComponent(cvalue || '');\r\n if (exdays > 0) {\r\n const d = new Date();\r\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n const expires = 'expires=' + d.toUTCString();\r\n cookie = [cname, '=', cvalue, ';', expires].join('');\r\n } else {\r\n cookie = [cname, '=', cvalue].join('');\r\n }\r\n cookie += '; path=/; SameSite=Strict';\r\n document.cookie = cookie;\r\n}\r\n\r\n/**\r\n * Retrieves a value from the site's cookies\r\n */\r\nexport function getCookie(cname: string): string | null {\r\n const result = document.cookie.match(new RegExp(cname + '=([^;]+)'));\r\n if (result) {\r\n return decodeURIComponent(result[1]);\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Deletes a value from the site's cookies\r\n */\r\nexport function deleteCookie(cname: string) {\r\n document.cookie = cname + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/';\r\n}\r\n\r\n/**\r\n * If no names are passed in, clears all cookies.\r\n * If names are passed in, clears just those cookies matching the names.\r\n */\r\nexport function clearCookies(...names: string[]) {\r\n if (names && names.length) {\r\n for (let name of names) {\r\n deleteCookie(name);\r\n }\r\n } else {\r\n const cookies = document.cookie.split(';');\r\n for (let cookie of cookies) {\r\n const eqPos = cookie.indexOf('=');\r\n const name = eqPos > -1 ? cookie.substring(0, eqPos) : cookie;\r\n deleteCookie(name);\r\n }\r\n }\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Typed Methods\r\nexport function setRememberMe(val: boolean) {\r\n saveLocalData('rememberMe', val);\r\n}\r\n\r\nexport function getRememberMe(): boolean {\r\n return getLocalData('rememberMe') === 'true';\r\n}\r\n\r\nexport function setIsRenderedAgain(val: boolean) {\r\n saveLocalData('isRenderedAgain', val);\r\n}\r\n\r\nexport function getIsRenderedAgain(): boolean {\r\n return getLocalData('isRenderedAgain') === 'true';\r\n}\r\n\r\nexport function setLastCancellationRequest(quoteId: string) {\r\n saveLocalData('lastCancellationRequest', quoteId);\r\n}\r\n\r\nexport function getLastCancellationRequest(): number | null {\r\n const cancellationRequest = getLocalData('lastCancellationRequest');\r\n if (cancellationRequest === null) return null;\r\n\r\n const parsed = parseFloat(cancellationRequest);\r\n return isNaN(parsed) ? null : parsed;\r\n}\r\n\r\nexport function getUserName() {\r\n if (!hasAuth()) return null;\r\n\r\n const localUserName = getLocalData('username');\r\n const loginDetails = getLoginDetails();\r\n\r\n //HG 9/29/17: Temporary logic that grabs the username from localStorage.\r\n if (localUserName) {\r\n if (loginDetails) {\r\n loginDetails.userName = localUserName;\r\n removeFromLocal('username');\r\n }\r\n const user = { userName: localUserName };\r\n saveLocalData('loginDetails', JSON.stringify(user));\r\n removeFromLocal('username');\r\n }\r\n\r\n //HG 9/29/17: Permanent logic that grabs the username from loginDetails.\r\n return loginDetails ? loginDetails.userName : null;\r\n}\r\n\r\nexport function getAgentName() {\r\n if (!hasAuth()) return null;\r\n\r\n const localAgentName = getLocalData('agentname');\r\n const loginDetails = getLoginDetails();\r\n\r\n //HG 9/29/17: Temporary logic that grabs the username from localStorage.\r\n if (localAgentName) {\r\n if (loginDetails) {\r\n loginDetails.agentName = localAgentName;\r\n removeFromLocal('agentname');\r\n }\r\n const user = { agentName: localAgentName };\r\n saveLocalData('loginDetails', JSON.stringify(user));\r\n removeFromLocal('agentname');\r\n }\r\n\r\n //HG 9/29/17: Permanent logic that grabs the username from loginDetails.\r\n return loginDetails ? loginDetails.agentName : null;\r\n}\r\n\r\nexport function setHubContacted(val: string) {\r\n saveSessionData('hubContacted', val);\r\n}\r\n\r\nexport function getHubContacted() {\r\n return getSessionData('hubContacted');\r\n}\r\n\r\nexport function getAgencyFromLoginDetails() {\r\n if (!hasAuth()) return null;\r\n\r\n let loginDetails = getLocalData('loginDetails');\r\n\r\n if (!loginDetails) return null;\r\n loginDetails = JSON.parse(loginDetails);\r\n\r\n //conditional below is needed for successful TS compile.\r\n if (!loginDetails) return null;\r\n return loginDetails['agencyName'];\r\n}\r\n\r\nexport function getAgencyFromSessionData(): string | null {\r\n if (!hasAuth()) return null;\r\n\r\n const agencySessionDetails = getSessionData('agencyName');\r\n\r\n return agencySessionDetails ? agencySessionDetails : null;\r\n}\r\n\r\nexport function setAgencyToSessionData(val: string | undefined) {\r\n if (typeof val === 'undefined') return;\r\n saveSessionData('agencyName', val);\r\n}\r\n\r\nexport function setLoginDetails(val: Models.LoginDetails) {\r\n saveLocalData('loginDetails', JSON.stringify(val));\r\n}\r\n\r\nexport function getLoginDetails(): Models.LoginDetails | null {\r\n if (!hasAuth()) return null;\r\n const json = getLocalData('loginDetails');\r\n if (!json) return null;\r\n return JSON.parse(json);\r\n}\r\n\r\nexport function setRepriceModel(val: Models.RepriceModel) {\r\n saveLocalData('repriceApiModel', JSON.stringify(val));\r\n}\r\n\r\nexport function getRepriceModel(): Models.RepriceModel | null {\r\n const json = getLocalData('repriceApiModel');\r\n if (!json) return null;\r\n return JSON.parse(json);\r\n}\r\n\r\nexport function setRepriceQuoteId(quoteId: string) {\r\n saveLocalData('repriceQuoteId', quoteId);\r\n}\r\n\r\nexport function getRepriceQuoteId(): string | null {\r\n return getLocalData('repriceQuoteId');\r\n}\r\n\r\nexport function setAddressKey(val: string) {\r\n saveLocalData('addressKey', val);\r\n}\r\n\r\nexport function getAddressKey() {\r\n return getLocalData('addressKey');\r\n}\r\n\r\nexport function setInsuranceScoreAddressKey(val: string) {\r\n saveSessionData('insuranceScoreAddressKey', val);\r\n}\r\n\r\nexport function getInsuranceScoreAddressKey() {\r\n return getSessionData('insuranceScoreAddressKey');\r\n}\r\n\r\nexport function setEmail(val: string) {\r\n saveLocalData('email', val);\r\n}\r\n\r\nexport function getEmail() {\r\n return getLocalData('email');\r\n}\r\n\r\nexport function setErrorCode(val: string | null) {\r\n saveLocalData('errorCode', val);\r\n}\r\n\r\nexport function getErrorCode() {\r\n return getLocalData('errorCode');\r\n}\r\n\r\nexport function setErrorText(val: string | null) {\r\n saveLocalData('errorText', val);\r\n}\r\n\r\nexport function getErrorText() {\r\n return getLocalData('errorText');\r\n}\r\n\r\nexport function setCoverageDate(coverageDate: Date) {\r\n saveLocalData('coverageDate', coverageDate);\r\n}\r\n\r\nexport function getCoverageDate(): Date | null {\r\n const coverageDate = getLocalData('coverageDate');\r\n return coverageDate ? new Date(coverageDate) : null;\r\n}\r\n\r\n/**\r\n * Checks if we are using JWT authentication / authorization.\r\n */\r\nexport function useJsonWebToken() {\r\n try {\r\n let useJsonWebToken = (window as any).UseJsonWebToken;\r\n return useJsonWebToken != null && !!useJsonWebToken;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Stores the user's authentication token in a cookie.\r\n */\r\nexport function setAuth(auth: string | null, rememberMe: boolean, hasJwt: boolean = false) {\r\n const timeout = rememberMe ? 30 : 0;\r\n if (!hasJwt) setCookie('authorization', auth, timeout);\r\n setRememberMe(rememberMe);\r\n}\r\n\r\n/**\r\n * Returns a boolean representing whether we have a valid JWT.\r\n */\r\nexport function hasJwtAuth() {\r\n return !!getCookie('jwt-valid');\r\n}\r\n\r\nexport function hasCookieAuth() {\r\n return !!getCookie('authorization');\r\n}\r\n\r\n/**\r\n * Returns a boolean representing whether the user is logged in or not.\r\n * Note that it does NOT check the *validity* of the login, so don't use this for any security checks, but only for UI\r\n * customization purposes.\r\n */\r\nexport function hasAuth() {\r\n return useJsonWebToken() ? hasJwtAuth() : hasCookieAuth();\r\n}\r\n\r\n/**\r\n * Stores the role passed down by the last successful API call\r\n */\r\nexport function setRoles(roles: Constants.AccessRole[]) {\r\n const json = JSON.stringify(roles);\r\n saveLocalData('roles', json);\r\n}\r\n\r\n/**\r\n * Returns the role passed down by the last successful API call.\r\n * This will be accurate, God willing and the creek don't rise and nobody's messed with it,\r\n * but should NOT be relied upon for genuine security.\r\n */\r\nexport function getRoles(): Constants.AccessRole[] {\r\n if (!hasAuth()) return [];\r\n const json = getLocalData('roles');\r\n if (!json) return [];\r\n return JSON.parse(json);\r\n}\r\n\r\nexport function setAddress(address: string) {\r\n saveLocalData('address', address);\r\n}\r\n\r\nexport function getAddress(): string {\r\n const address = getLocalData('address');\r\n return address || '';\r\n}\r\n\r\nexport function setInsuranceScoreAddress(address: string) {\r\n saveSessionData('insuranceScoreAddress', address);\r\n}\r\n\r\nexport function getInsuranceScoreAddress(): string {\r\n const address = getSessionData('insuranceScoreAddress');\r\n return address || '';\r\n}\r\n\r\nexport function setSessionLivingSpace(livingSpace: number) {\r\n saveSessionData('livingSpace', livingSpace);\r\n}\r\n\r\nexport function getSessionLivingSpace(): number | undefined {\r\n const livingSpace = getSessionData('livingSpace');\r\n return livingSpace ? parseFloat(livingSpace) : undefined;\r\n}\r\n\r\nexport function setSessionSingleFamilyResidence(singleFamilyResidence: boolean) {\r\n saveSessionData('SingleFamilyResidence', singleFamilyResidence);\r\n}\r\n\r\nexport function getSessionSingleFamilyResidence(): boolean {\r\n const singleFamilyResidence = getSessionData('singleFamilyResidence') == 'true';\r\n\r\n return singleFamilyResidence || false;\r\n}\r\n\r\nexport function setOnlyMyQuotes(value: boolean) {\r\n saveLocalData('onlyMyQuotes', value);\r\n}\r\n\r\nexport function getOnlyMyQuotes(): boolean {\r\n return getLocalData('onlyMyQuotes') === 'true';\r\n}\r\n\r\nexport function setQuoteId(quoteId: string) {\r\n saveSessionData('quoteId', quoteId);\r\n}\r\n\r\nexport function getQuoteId(): string {\r\n return getSessionData('quoteId') || '';\r\n}\r\n\r\nexport function setElementDescriptions(descriptions) {\r\n saveSessionData('elementDescriptions', JSON.stringify(descriptions));\r\n}\r\n\r\nexport function getElementDescriptions(): Models.ElementDescriptions {\r\n let descriptions = getSessionData('elementDescriptions');\r\n return descriptions ? JSON.parse(descriptions) : {};\r\n}\r\n\r\nexport function setCalculationMethodology(instance: string) {\r\n saveSessionData('calculationMethodology', JSON.stringify(instance));\r\n}\r\n\r\nexport function getCalculationMethodology(): string {\r\n let methodology = getSessionData('calculationMethodology');\r\n return methodology ? JSON.parse(methodology) : '';\r\n}\r\n\r\nexport function setQuote(quote: Models.HomeownerQuoteModel) {\r\n // As a fail-safe: sometimes we try to store an error in place of a legitimate quote object.\r\n if (quote.hasOwnProperty('readyState')) {\r\n throw 'Invalid quote object';\r\n }\r\n saveLocalData('quoteData', JSON.stringify(quote));\r\n}\r\n\r\nexport function getQuote(): Models.HomeownerQuoteModel | null {\r\n const json = getLocalData('quoteData');\r\n return json ? JSON.parse(json) : null;\r\n}\r\n\r\nexport function setQuoteDetails(details: Models.IQuoteDetails) {\r\n // As a fail-safe: sometimes we try to store an error in place of a legitimate quote object.\r\n if (details.hasOwnProperty('readyState')) {\r\n throw 'Invalid quote details object';\r\n }\r\n saveLocalData('quoteDetailsData', JSON.stringify(details));\r\n}\r\n\r\nexport function getQuoteDetails(): Models.IQuoteDetails | null {\r\n const json = getLocalData('quoteDetailsData');\r\n return json ? JSON.parse(json) : null;\r\n}\r\n\r\nexport function setLastLocation(location: Models.ILocation) {\r\n saveLocalData('lastLocation', JSON.stringify(location));\r\n}\r\n\r\nexport function getLastLocation(): Models.ILocation | null {\r\n const json = getLocalData('lastLocation');\r\n return json ? JSON.parse(json) : null;\r\n}\r\n\r\nexport function setLivingSpaceChecked(addressKey: string) {\r\n try {\r\n saveLocalData('livingSpaceChecked', addressKey);\r\n } catch (e) {\r\n if (!(e instanceof Models.ApiError)) {\r\n throw e;\r\n }\r\n }\r\n}\r\n\r\nexport function getLivingSpaceChecked(addressKey: string) {\r\n return addressKey === getLocalData('livingSpaceChecked');\r\n}\r\n\r\nexport function setConfirmRangeValues(value: boolean) {\r\n saveSessionData('confirmRangeValues', value);\r\n}\r\n\r\nexport function getConfirmRangeValues() {\r\n const rangeValueConfirm = getSessionData('confirmRangeValues') || '';\r\n return JSON.parse(rangeValueConfirm);\r\n}\r\n\r\nexport function setConfirmElementGroup(group: Models.ElementGroup) {\r\n saveSessionData('confirmElementGroup', JSON.stringify(group));\r\n}\r\n\r\nexport function getConfirmElementGroup() {\r\n const confirmElementGroup = getSessionData('confirmElementGroup');\r\n if (confirmElementGroup && confirmElementGroup.length > 0) return JSON.parse(confirmElementGroup);\r\n else return '';\r\n}\r\n\r\nexport function setPropertyDetailsModalValue(name: string, value: number) {\r\n saveSessionData(name, JSON.stringify(value));\r\n}\r\n\r\nexport function getPropertyDetailsModalValue(name: string) {\r\n const storedValue = getSessionData(name);\r\n return !!storedValue ? JSON.parse(storedValue) : '';\r\n}\r\n\r\nexport function clearPropertyDetailsModalStorage() {\r\n Constants.propertyDetailsStorageKeysArray.forEach(key =>\r\n saveSessionData(Constants.propertyDetailsStorageKeys[key], null)\r\n );\r\n}\r\n\r\n//#endregion\r\n\r\nconst isComparisonQuoteKey = 'isComparisonQuote';\r\n\r\nexport function setIsComparisonQuote() {\r\n saveSessionData(isComparisonQuoteKey, true);\r\n}\r\n\r\nexport function getIsComparisonQuote() {\r\n return getSessionData(isComparisonQuoteKey) === 'true';\r\n}\r\n\r\nexport function clearIsComparisonQuote() {\r\n removeFromSession(isComparisonQuoteKey);\r\n}\r\n","\"use strict\";\nvar cardTypes = {\n visa: {\n niceType: \"Visa\",\n type: \"visa\",\n patterns: [4],\n gaps: [4, 8, 12],\n lengths: [16, 18, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n mastercard: {\n niceType: \"Mastercard\",\n type: \"mastercard\",\n patterns: [[51, 55], [2221, 2229], [223, 229], [23, 26], [270, 271], 2720],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n \"american-express\": {\n niceType: \"American Express\",\n type: \"american-express\",\n patterns: [34, 37],\n gaps: [4, 10],\n lengths: [15],\n code: {\n name: \"CID\",\n size: 4,\n },\n },\n \"diners-club\": {\n niceType: \"Diners Club\",\n type: \"diners-club\",\n patterns: [[300, 305], 36, 38, 39],\n gaps: [4, 10],\n lengths: [14, 16, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n discover: {\n niceType: \"Discover\",\n type: \"discover\",\n patterns: [6011, [644, 649], 65],\n gaps: [4, 8, 12],\n lengths: [16, 19],\n code: {\n name: \"CID\",\n size: 3,\n },\n },\n jcb: {\n niceType: \"JCB\",\n type: \"jcb\",\n patterns: [2131, 1800, [3528, 3589]],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n unionpay: {\n niceType: \"UnionPay\",\n type: \"unionpay\",\n patterns: [\n 620,\n [624, 626],\n [62100, 62182],\n [62184, 62187],\n [62185, 62197],\n [62200, 62205],\n [622010, 622999],\n 622018,\n [622019, 622999],\n [62207, 62209],\n [622126, 622925],\n [623, 626],\n 6270,\n 6272,\n 6276,\n [627700, 627779],\n [627781, 627799],\n [6282, 6289],\n 6291,\n 6292,\n 810,\n [8110, 8131],\n [8132, 8151],\n [8152, 8163],\n [8164, 8171],\n ],\n gaps: [4, 8, 12],\n lengths: [14, 15, 16, 17, 18, 19],\n code: {\n name: \"CVN\",\n size: 3,\n },\n },\n maestro: {\n niceType: \"Maestro\",\n type: \"maestro\",\n patterns: [\n 493698,\n [500000, 504174],\n [504176, 506698],\n [506779, 508999],\n [56, 59],\n 63,\n 67,\n 6,\n ],\n gaps: [4, 8, 12],\n lengths: [12, 13, 14, 15, 16, 17, 18, 19],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n elo: {\n niceType: \"Elo\",\n type: \"elo\",\n patterns: [\n 401178,\n 401179,\n 438935,\n 457631,\n 457632,\n 431274,\n 451416,\n 457393,\n 504175,\n [506699, 506778],\n [509000, 509999],\n 627780,\n 636297,\n 636368,\n [650031, 650033],\n [650035, 650051],\n [650405, 650439],\n [650485, 650538],\n [650541, 650598],\n [650700, 650718],\n [650720, 650727],\n [650901, 650978],\n [651652, 651679],\n [655000, 655019],\n [655021, 655058],\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVE\",\n size: 3,\n },\n },\n mir: {\n niceType: \"Mir\",\n type: \"mir\",\n patterns: [[2200, 2204]],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: \"CVP2\",\n size: 3,\n },\n },\n hiper: {\n niceType: \"Hiper\",\n type: \"hiper\",\n patterns: [637095, 63737423, 63743358, 637568, 637599, 637609, 637612],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n hipercard: {\n niceType: \"Hipercard\",\n type: \"hipercard\",\n patterns: [606282],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n};\nmodule.exports = cardTypes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clone = void 0;\nfunction clone(originalObject) {\n if (!originalObject) {\n return null;\n }\n return JSON.parse(JSON.stringify(originalObject));\n}\nexports.clone = clone;\n","\"use strict\";\n/*\n * Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42\n * */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matches = void 0;\nfunction matchesRange(cardNumber, min, max) {\n var maxLengthToCheck = String(min).length;\n var substr = cardNumber.substr(0, maxLengthToCheck);\n var integerRepresentationOfCardNumber = parseInt(substr, 10);\n min = parseInt(String(min).substr(0, substr.length), 10);\n max = parseInt(String(max).substr(0, substr.length), 10);\n return (integerRepresentationOfCardNumber >= min &&\n integerRepresentationOfCardNumber <= max);\n}\nfunction matchesPattern(cardNumber, pattern) {\n pattern = String(pattern);\n return (pattern.substring(0, cardNumber.length) ===\n cardNumber.substring(0, pattern.length));\n}\nfunction matches(cardNumber, pattern) {\n if (Array.isArray(pattern)) {\n return matchesRange(cardNumber, pattern[0], pattern[1]);\n }\n return matchesPattern(cardNumber, pattern);\n}\nexports.matches = matches;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addMatchingCardsToResults = void 0;\nvar clone_1 = require(\"./clone\");\nvar matches_1 = require(\"./matches\");\nfunction addMatchingCardsToResults(cardNumber, cardConfiguration, results) {\n var i, patternLength;\n for (i = 0; i < cardConfiguration.patterns.length; i++) {\n var pattern = cardConfiguration.patterns[i];\n if (!matches_1.matches(cardNumber, pattern)) {\n continue;\n }\n var clonedCardConfiguration = clone_1.clone(cardConfiguration);\n if (Array.isArray(pattern)) {\n patternLength = String(pattern[0]).length;\n }\n else {\n patternLength = String(pattern).length;\n }\n if (cardNumber.length >= patternLength) {\n clonedCardConfiguration.matchStrength = patternLength;\n }\n results.push(clonedCardConfiguration);\n break;\n }\n}\nexports.addMatchingCardsToResults = addMatchingCardsToResults;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidInputType = void 0;\nfunction isValidInputType(cardNumber) {\n return typeof cardNumber === \"string\" || cardNumber instanceof String;\n}\nexports.isValidInputType = isValidInputType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findBestMatch = void 0;\nfunction hasEnoughResultsToDetermineBestMatch(results) {\n var numberOfResultsWithMaxStrengthProperty = results.filter(function (result) { return result.matchStrength; }).length;\n /*\n * if all possible results have a maxStrength property that means the card\n * number is sufficiently long enough to determine conclusively what the card\n * type is\n * */\n return (numberOfResultsWithMaxStrengthProperty > 0 &&\n numberOfResultsWithMaxStrengthProperty === results.length);\n}\nfunction findBestMatch(results) {\n if (!hasEnoughResultsToDetermineBestMatch(results)) {\n return null;\n }\n return results.reduce(function (bestMatch, result) {\n if (!bestMatch) {\n return result;\n }\n /*\n * If the current best match pattern is less specific than this result, set\n * the result as the new best match\n * */\n if (Number(bestMatch.matchStrength) < Number(result.matchStrength)) {\n return result;\n }\n return bestMatch;\n });\n}\nexports.findBestMatch = findBestMatch;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar cardTypes = require(\"./lib/card-types\");\nvar add_matching_cards_to_results_1 = require(\"./lib/add-matching-cards-to-results\");\nvar is_valid_input_type_1 = require(\"./lib/is-valid-input-type\");\nvar find_best_match_1 = require(\"./lib/find-best-match\");\nvar clone_1 = require(\"./lib/clone\");\nvar customCards = {};\nvar cardNames = {\n VISA: \"visa\",\n MASTERCARD: \"mastercard\",\n AMERICAN_EXPRESS: \"american-express\",\n DINERS_CLUB: \"diners-club\",\n DISCOVER: \"discover\",\n JCB: \"jcb\",\n UNIONPAY: \"unionpay\",\n MAESTRO: \"maestro\",\n ELO: \"elo\",\n MIR: \"mir\",\n HIPER: \"hiper\",\n HIPERCARD: \"hipercard\",\n};\nvar ORIGINAL_TEST_ORDER = [\n cardNames.VISA,\n cardNames.MASTERCARD,\n cardNames.AMERICAN_EXPRESS,\n cardNames.DINERS_CLUB,\n cardNames.DISCOVER,\n cardNames.JCB,\n cardNames.UNIONPAY,\n cardNames.MAESTRO,\n cardNames.ELO,\n cardNames.MIR,\n cardNames.HIPER,\n cardNames.HIPERCARD,\n];\nvar testOrder = clone_1.clone(ORIGINAL_TEST_ORDER);\nfunction findType(cardType) {\n return customCards[cardType] || cardTypes[cardType];\n}\nfunction getAllCardTypes() {\n return testOrder.map(function (cardType) { return clone_1.clone(findType(cardType)); });\n}\nfunction getCardPosition(name, ignoreErrorForNotExisting) {\n if (ignoreErrorForNotExisting === void 0) { ignoreErrorForNotExisting = false; }\n var position = testOrder.indexOf(name);\n if (!ignoreErrorForNotExisting && position === -1) {\n throw new Error('\"' + name + '\" is not a supported card type.');\n }\n return position;\n}\nfunction creditCardType(cardNumber) {\n var results = [];\n if (!is_valid_input_type_1.isValidInputType(cardNumber)) {\n return results;\n }\n if (cardNumber.length === 0) {\n return getAllCardTypes();\n }\n testOrder.forEach(function (cardType) {\n var cardConfiguration = findType(cardType);\n add_matching_cards_to_results_1.addMatchingCardsToResults(cardNumber, cardConfiguration, results);\n });\n var bestMatch = find_best_match_1.findBestMatch(results);\n if (bestMatch) {\n return [bestMatch];\n }\n return results;\n}\ncreditCardType.getTypeInfo = function (cardType) {\n return clone_1.clone(findType(cardType));\n};\ncreditCardType.removeCard = function (name) {\n var position = getCardPosition(name);\n testOrder.splice(position, 1);\n};\ncreditCardType.addCard = function (config) {\n var existingCardPosition = getCardPosition(config.type, true);\n customCards[config.type] = config;\n if (existingCardPosition === -1) {\n testOrder.push(config.type);\n }\n};\ncreditCardType.updateCard = function (cardType, updates) {\n var originalObject = customCards[cardType] || cardTypes[cardType];\n if (!originalObject) {\n throw new Error(\"\\\"\" + cardType + \"\\\" is not a recognized type. Use `addCard` instead.'\");\n }\n if (updates.type && originalObject.type !== updates.type) {\n throw new Error(\"Cannot overwrite type parameter.\");\n }\n var clonedCard = clone_1.clone(originalObject);\n clonedCard = __assign(__assign({}, clonedCard), updates);\n customCards[clonedCard.type] = clonedCard;\n};\ncreditCardType.changeOrder = function (name, position) {\n var currentPosition = getCardPosition(name);\n testOrder.splice(currentPosition, 1);\n testOrder.splice(position, 0, name);\n};\ncreditCardType.resetModifications = function () {\n testOrder = clone_1.clone(ORIGINAL_TEST_ORDER);\n customCards = {};\n};\ncreditCardType.types = cardNames;\nmodule.exports = creditCardType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cardholderName = void 0;\nvar CARD_NUMBER_REGEX = /^[\\d\\s-]*$/;\nvar MAX_LENGTH = 255;\nfunction verification(isValid, isPotentiallyValid) {\n return { isValid: isValid, isPotentiallyValid: isPotentiallyValid };\n}\nfunction cardholderName(value) {\n if (typeof value !== \"string\") {\n return verification(false, false);\n }\n if (value.length === 0) {\n return verification(false, true);\n }\n if (value.length > MAX_LENGTH) {\n return verification(false, false);\n }\n if (CARD_NUMBER_REGEX.test(value)) {\n return verification(false, true);\n }\n return verification(true, true);\n}\nexports.cardholderName = cardholderName;\n","/* eslint-disable */\n/*\n * Luhn algorithm implementation in JavaScript\n * Copyright (c) 2009 Nicholas C. Zakas\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\"use strict\";\nfunction luhn10(identifier) {\n var sum = 0;\n var alt = false;\n var i = identifier.length - 1;\n var num;\n while (i >= 0) {\n num = parseInt(identifier.charAt(i), 10);\n if (alt) {\n num *= 2;\n if (num > 9) {\n num = (num % 10) + 1; // eslint-disable-line no-extra-parens\n }\n }\n alt = !alt;\n sum += num;\n i--;\n }\n return sum % 10 === 0;\n}\nmodule.exports = luhn10;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cardNumber = void 0;\nvar luhn10 = require(\"./luhn-10\");\nvar getCardTypes = require(\"credit-card-type\");\nfunction verification(card, isPotentiallyValid, isValid) {\n return {\n card: card,\n isPotentiallyValid: isPotentiallyValid,\n isValid: isValid,\n };\n}\nfunction cardNumber(value, options) {\n if (options === void 0) { options = {}; }\n var isPotentiallyValid, isValid, maxLength;\n if (typeof value !== \"string\" && typeof value !== \"number\") {\n return verification(null, false, false);\n }\n var testCardValue = String(value).replace(/-|\\s/g, \"\");\n if (!/^\\d*$/.test(testCardValue)) {\n return verification(null, false, false);\n }\n var potentialTypes = getCardTypes(testCardValue);\n if (potentialTypes.length === 0) {\n return verification(null, false, false);\n }\n else if (potentialTypes.length !== 1) {\n return verification(null, true, false);\n }\n var cardType = potentialTypes[0];\n if (options.maxLength && testCardValue.length > options.maxLength) {\n return verification(cardType, false, false);\n }\n if (options.skipLuhnValidation === true ||\n (cardType.type === getCardTypes.types.UNIONPAY &&\n options.luhnValidateUnionPay !== true)) {\n isValid = true;\n }\n else {\n isValid = luhn10(testCardValue);\n }\n maxLength = Math.max.apply(null, cardType.lengths);\n if (options.maxLength) {\n maxLength = Math.min(options.maxLength, maxLength);\n }\n for (var i = 0; i < cardType.lengths.length; i++) {\n if (cardType.lengths[i] === testCardValue.length) {\n isPotentiallyValid = testCardValue.length < maxLength || isValid;\n return verification(cardType, isPotentiallyValid, isValid);\n }\n }\n return verification(cardType, testCardValue.length < maxLength, false);\n}\nexports.cardNumber = cardNumber;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expirationYear = void 0;\nvar DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE = 19;\nfunction verification(isValid, isPotentiallyValid, isCurrentYear) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n isCurrentYear: isCurrentYear || false,\n };\n}\nfunction expirationYear(value, maxElapsedYear) {\n if (maxElapsedYear === void 0) { maxElapsedYear = DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE; }\n var isCurrentYear;\n if (typeof value !== \"string\") {\n return verification(false, false);\n }\n if (value.replace(/\\s/g, \"\") === \"\") {\n return verification(false, true);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n var len = value.length;\n if (len < 2) {\n return verification(false, true);\n }\n var currentYear = new Date().getFullYear();\n if (len === 3) {\n // 20x === 20x\n var firstTwo = value.slice(0, 2);\n var currentFirstTwo = String(currentYear).slice(0, 2);\n return verification(false, firstTwo === currentFirstTwo);\n }\n if (len > 4) {\n return verification(false, false);\n }\n var numericValue = parseInt(value, 10);\n var twoDigitYear = Number(String(currentYear).substr(2, 2));\n var valid = false;\n if (len === 2) {\n if (String(currentYear).substr(0, 2) === value) {\n return verification(false, true);\n }\n isCurrentYear = twoDigitYear === numericValue;\n valid =\n numericValue >= twoDigitYear &&\n numericValue <= twoDigitYear + maxElapsedYear;\n }\n else if (len === 4) {\n isCurrentYear = currentYear === numericValue;\n valid =\n numericValue >= currentYear &&\n numericValue <= currentYear + maxElapsedYear;\n }\n return verification(valid, valid, isCurrentYear);\n}\nexports.expirationYear = expirationYear;\n","\"use strict\";\n// Polyfill taken from <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray#Polyfill>.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArray = void 0;\nexports.isArray = Array.isArray ||\n function (arg) {\n return Object.prototype.toString.call(arg) === \"[object Array]\";\n };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseDate = void 0;\nvar expiration_year_1 = require(\"../expiration-year\");\nvar is_array_1 = require(\"./is-array\");\nfunction getNumberOfMonthDigitsInDateString(dateString) {\n var firstCharacter = Number(dateString[0]);\n var assumedYear;\n /*\n if the first character in the string starts with `0`,\n we know that the month will be 2 digits.\n \n '0122' => {month: '01', year: '22'}\n */\n if (firstCharacter === 0) {\n return 2;\n }\n /*\n if the first character in the string starts with\n number greater than 1, it must be a 1 digit month\n \n '322' => {month: '3', year: '22'}\n */\n if (firstCharacter > 1) {\n return 1;\n }\n /*\n if the first 2 characters make up a number between\n 13-19, we know that the month portion must be 1\n \n '139' => {month: '1', year: '39'}\n */\n if (firstCharacter === 1 && Number(dateString[1]) > 2) {\n return 1;\n }\n /*\n if the first 2 characters make up a number between\n 10-12, we check if the year portion would be considered\n valid if we assumed that the month was 1. If it is\n not potentially valid, we assume the month must have\n 2 digits.\n \n '109' => {month: '10', year: '9'}\n '120' => {month: '1', year: '20'} // when checked in the year 2019\n '120' => {month: '12', year: '0'} // when checked in the year 2021\n */\n if (firstCharacter === 1) {\n assumedYear = dateString.substr(1);\n return (0, expiration_year_1.expirationYear)(assumedYear).isPotentiallyValid ? 1 : 2;\n }\n /*\n If the length of the value is exactly 5 characters,\n we assume a full year was passed in, meaning the remaining\n single leading digit must be the month value.\n \n '12202' => {month: '1', year: '2202'}\n */\n if (dateString.length === 5) {\n return 1;\n }\n /*\n If the length of the value is more than five characters,\n we assume a full year was passed in addition to the month\n and therefore the month portion must be 2 digits.\n \n '112020' => {month: '11', year: '2020'}\n */\n if (dateString.length > 5) {\n return 2;\n }\n /*\n By default, the month value is the first value\n */\n return 1;\n}\nfunction parseDate(datestring) {\n var date;\n if (/^\\d{4}-\\d{1,2}$/.test(datestring)) {\n date = datestring.split(\"-\").reverse();\n }\n else if (/\\//.test(datestring)) {\n date = datestring.split(/\\s*\\/\\s*/g);\n }\n else if (/\\s/.test(datestring)) {\n date = datestring.split(/ +/g);\n }\n if ((0, is_array_1.isArray)(date)) {\n return {\n month: date[0] || \"\",\n year: date.slice(1).join(),\n };\n }\n var numberOfDigitsInMonth = getNumberOfMonthDigitsInDateString(datestring);\n var month = datestring.substr(0, numberOfDigitsInMonth);\n return {\n month: month,\n year: datestring.substr(month.length),\n };\n}\nexports.parseDate = parseDate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expirationMonth = void 0;\nfunction verification(isValid, isPotentiallyValid, isValidForThisYear) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n isValidForThisYear: isValidForThisYear || false,\n };\n}\nfunction expirationMonth(value) {\n var currentMonth = new Date().getMonth() + 1;\n if (typeof value !== \"string\") {\n return verification(false, false);\n }\n if (value.replace(/\\s/g, \"\") === \"\" || value === \"0\") {\n return verification(false, true);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n var month = parseInt(value, 10);\n if (isNaN(Number(value))) {\n return verification(false, false);\n }\n var result = month > 0 && month < 13;\n return verification(result, result, result && month >= currentMonth);\n}\nexports.expirationMonth = expirationMonth;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expirationDate = void 0;\nvar parse_date_1 = require(\"./lib/parse-date\");\nvar expiration_month_1 = require(\"./expiration-month\");\nvar expiration_year_1 = require(\"./expiration-year\");\nfunction verification(isValid, isPotentiallyValid, month, year) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n month: month,\n year: year,\n };\n}\nfunction expirationDate(value, maxElapsedYear) {\n var date;\n if (typeof value === \"string\") {\n value = value.replace(/^(\\d\\d) (\\d\\d(\\d\\d)?)$/, \"$1/$2\");\n date = (0, parse_date_1.parseDate)(String(value));\n }\n else if (value !== null && typeof value === \"object\") {\n var fullDate = __assign({}, value);\n date = {\n month: String(fullDate.month),\n year: String(fullDate.year),\n };\n }\n else {\n return verification(false, false, null, null);\n }\n var monthValid = (0, expiration_month_1.expirationMonth)(date.month);\n var yearValid = (0, expiration_year_1.expirationYear)(date.year, maxElapsedYear);\n if (monthValid.isValid) {\n if (yearValid.isCurrentYear) {\n var isValidForThisYear = monthValid.isValidForThisYear;\n return verification(isValidForThisYear, isValidForThisYear, date.month, date.year);\n }\n if (yearValid.isValid) {\n return verification(true, true, date.month, date.year);\n }\n }\n if (monthValid.isPotentiallyValid && yearValid.isPotentiallyValid) {\n return verification(false, true, null, null);\n }\n return verification(false, false, null, null);\n}\nexports.expirationDate = expirationDate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cvv = void 0;\nvar DEFAULT_LENGTH = 3;\nfunction includes(array, thing) {\n for (var i = 0; i < array.length; i++) {\n if (thing === array[i]) {\n return true;\n }\n }\n return false;\n}\nfunction max(array) {\n var maximum = DEFAULT_LENGTH;\n var i = 0;\n for (; i < array.length; i++) {\n maximum = array[i] > maximum ? array[i] : maximum;\n }\n return maximum;\n}\nfunction verification(isValid, isPotentiallyValid) {\n return { isValid: isValid, isPotentiallyValid: isPotentiallyValid };\n}\nfunction cvv(value, maxLength) {\n if (maxLength === void 0) { maxLength = DEFAULT_LENGTH; }\n maxLength = maxLength instanceof Array ? maxLength : [maxLength];\n if (typeof value !== \"string\") {\n return verification(false, false);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n if (includes(maxLength, value.length)) {\n return verification(true, true);\n }\n if (value.length < Math.min.apply(null, maxLength)) {\n return verification(false, true);\n }\n if (value.length > max(maxLength)) {\n return verification(false, false);\n }\n return verification(true, true);\n}\nexports.cvv = cvv;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.postalCode = void 0;\nvar DEFAULT_MIN_POSTAL_CODE_LENGTH = 3;\nfunction verification(isValid, isPotentiallyValid) {\n return { isValid: isValid, isPotentiallyValid: isPotentiallyValid };\n}\nfunction postalCode(value, options) {\n if (options === void 0) { options = {}; }\n var minLength = options.minLength || DEFAULT_MIN_POSTAL_CODE_LENGTH;\n if (typeof value !== \"string\") {\n return verification(false, false);\n }\n else if (value.length < minLength) {\n return verification(false, true);\n }\n return verification(true, true);\n}\nexports.postalCode = postalCode;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar creditCardType = __importStar(require(\"credit-card-type\"));\nvar cardholder_name_1 = require(\"./cardholder-name\");\nvar card_number_1 = require(\"./card-number\");\nvar expiration_date_1 = require(\"./expiration-date\");\nvar expiration_month_1 = require(\"./expiration-month\");\nvar expiration_year_1 = require(\"./expiration-year\");\nvar cvv_1 = require(\"./cvv\");\nvar postal_code_1 = require(\"./postal-code\");\nvar cardValidator = {\n creditCardType: creditCardType,\n cardholderName: cardholder_name_1.cardholderName,\n number: card_number_1.cardNumber,\n expirationDate: expiration_date_1.expirationDate,\n expirationMonth: expiration_month_1.expirationMonth,\n expirationYear: expiration_year_1.expirationYear,\n cvv: cvv_1.cvv,\n postalCode: postal_code_1.postalCode,\n};\nmodule.exports = cardValidator;\n","/*! @license DOMPurify 3.2.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.3/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\nif (!construct) {\n construct = function construct(Func, args) {\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return construct(func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*}/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.2.3';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n let value = name === 'value' ? attrValue : stringTrim(attrValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {}\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint) {\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([457]\\\\d{6})$|1\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2457]\\\\d{6})$|1\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"([267]\\\\d{6})$|1\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"(183[12])|0\",0,0,0,[[\"(?:(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d|3(?:(?:[0-3589]\\\\d|6[1-9]|7[0-35-9])\\\\d|4(?:[0-578]\\\\d|90)))\\\\d\\\\d|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4])|3\\\\d\\\\d)|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|2[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"[025-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]]],\"BG\":[\"359\",\"00\",\"00800\\\\d{7}|[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9,12],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[02-4679]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"[24-689]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-689]\"]]]],\"BL\":[\"590\",\"00\",\"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|3[3-7]|5[12]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"8001\\\\d{5}|(?:[2-467]\\\\d|50)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[235]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-46-9]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([3-8]\\\\d{6})$|1\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"(?:[2-8]\\\\d|90)\\\\d{8}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|90[25])[2-9]\\\\d{6}\",[10]],[\"\",[10]],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",[10]],[\"900[2-9]\\\\d{6}\",[10]],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[125-9]|33|44|66|77|88)|622)[2-9]\\\\d{6}\",[10]],0,[\"310\\\\d{4}\",[7]],0,[\"600[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"[189]\\\\d{8}|[1-68]\\\\d{6}\",[7,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"(?:(?:1[03-689]|2\\\\d)\\\\d\\\\d|6)\\\\d{8}|1\\\\d{10}|[126]\\\\d{6}(?:\\\\d(?:\\\\d{2})?)?|86\\\\d{5,6}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{5,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]\",\"(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"(1(?:[12]\\\\d|79)\\\\d\\\\d)|0\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:60\\\\d\\\\d|9101)\\\\d{6}|(?:1\\\\d|3)\\\\d{9}\",[10,11],[[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|91\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"(?:[2-7]|8\\\\d\\\\d)\\\\d{7}|[2-47]\\\\d{6}|[34]\\\\d{5}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[56]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[03568]\",\"15(?:[0568]|31)\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{8})\",\"$1 $2\",[\"1\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\"],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-579]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-579]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{5})\",\"$1\",[\"20[2-59]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"(?:[1-3]0|[68])0|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[14]|2[09]|50|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"(?:1[49]|[2568])[1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0-35])|4(?:(?:[0-5]\\\\d|70)\\\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|50))\\\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d|1(?:[0-7]\\\\d|8[0-3]))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d)\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"[56]94\\\\d{6}|(?:80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[56]|9[47]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[89]\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"([25-9]\\\\d{5})$|0\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d|60)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\\\d)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"80\\\\d{6}|(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-8]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"(?:[2-8]\\\\d{3}|9008)\\\\d{3}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6|7[245]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-57]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"(?:[2-489]\\\\d|55)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([25-8]\\\\d{5})$|0\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:43|55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]|43\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\",[6,7,8,9,10,11]],[\"3[2-9]\\\\d{7,8}|(?:31|43)\\\\d{8}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],[\"3[2-8]\\\\d{9,10}\",[11,12]],0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([0-24-8]\\\\d{5})$|0\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97\\\\d))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[0459]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[26-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9]|9[29])|5(?:2|3(?:[045]|9[0-8])|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3(?:[29]|60)|49|51|6(?:[0-24]|36|5[0-3589]|7[23]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3(?:[045]|9(?:[0-58]|6[4-9]|7[0-35689]))|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|60|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[2-57-9]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|7(?:2[2-468]|3[78])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],\"0\",0,\"(000[259]\\\\d{6})$|(?:(?:003768)0?)|0\",\"$1\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|[235-9]\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"33|7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[0135-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-8]\\\\d{6})$|1\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"(1001)|0\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:[245]\\\\d|33|77|88)\\\\d{7}|(?:2\\\\d|[4-6])\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4[67]|[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(0-$1)\",1]],\"0\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-46-9]|3[3-9]|9)|8(?:0[89]|92)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5(?:2(?:[0-25-79]\\\\d|3[1-578]|4[02-46-8]|8[0235-7])|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|8[014-9]|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[0167]\\\\d|2[0-4]|5[01]|8[0-3]))\\\\d{6}\"],[\"80[0-7]\\\\d{6}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"(?:592(?:4[0-2]|93)|80[89]\\\\d\\\\d)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"([24-9]\\\\d{6})$|0\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"596\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"([34]\\\\d{6})$|1\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:[57]|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57]\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[34679]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[0467]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"2[0-24-9]\\\\d{8}|[78]\\\\d{10,13}|[7-9]\\\\d{9}|[1-9]\\\\d{7}|[124-7]\\\\d{6}\",[7,8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-6]|7(?:0[0-689]|[1-79])|8[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"20[129]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[4-7]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[1289]\\\\d{9}|50\\\\d{5}(?:\\\\d{2,3})?|[27-9]\\\\d{7,8}|(?:[34]\\\\d|6[0-35-9])\\\\d{6}|8\\\\d{4,6}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|8|90\",\"50(?:[0367]|88)|8|90\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[589]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"[45]\\\\d{5}|(?:708|80\\\\d)\\\\d{6}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"800\\\\d{4}|(?:2|800)\\\\d{6}|(?:0080|[3-7])\\\\d{7}\",[7,8,9,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[16]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]]],\"RE\":[\"262\",\"00\",\"(?:26|[689]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"26(?:2\\\\d\\\\d|3(?:0\\\\d|1[0-6]))\\\\d{4}\"],[\"69(?:2\\\\d\\\\d|3(?:[06][0-6]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))\\\\d{4}\"],[\"80\\\\d{7}\"],[\"89[1-37-9]\\\\d{6}\"],0,0,0,0,[\"9(?:399[0-3]|479[0-5]|76(?:2[278]|3[0-37]))\\\\d{4}\"],[\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\"RO\":[\"40\",\"00\",\"(?:[236-8]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[236-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"3[04-689]|[489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"]],\"0\"],\"SA\":[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"[6-9]\\\\d{6}|[1-6]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"(?:[2489]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-9]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|79)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"(?:2|90)4|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[348]|64|79|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6[0-35-9]|77|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[267]\\\\d{7}|(?:80\\\\d|900)\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"(5\\\\d{6})$|1\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-479]\\\\d{6})$|1\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|[689]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"[0-57-9]\\\\d{8}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"44[02-479]|[34]7\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[1245]|3[12])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],0,0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"(?:[1-6]\\\\d|71)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[67]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|61[06])\",\"5(?:[0-59]|61[06]1)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-46-8]\\\\d{6})$|1\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"(?:3052(?:0[0-8]|[1-9]\\\\d)|5056(?:[0-35-9]\\\\d|4[468])|7302[0-4]\\\\d)\\\\d{4}|(?:305[3-9]|472[24]|505[2-57-9]|7306|983[2-47-9])\\\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-47-9]|1[02-9]|2[013569]|3[0-24679]|4[167]|5[0-2]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,0,0,[\"305209\\\\d{4}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"0004\\\\d{2,9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",[6,7,8,9,10,11,12,13],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[49]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3 $4\",[\"0\"]]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"00\",\"(?:20|33|[5-79]\\\\d|88)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-9]\"]]]],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11,12],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-578]\\\\d{6})$|1\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[357-9]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[478]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"2\\\\d{7,8}|3\\\\d{7,11}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2|39\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7,10})\",\"$1 $2\",[\"3\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7(?:[24-6]|8[0-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"(?:80|9\\\\d)\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"269(?:0[0-467]|15|5[0-4]|6\\\\d|[78]0)\\\\d{4}\"],[\"639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])\\\\d{4}\"],[\"80\\\\d{7}\"],0,0,0,0,0,[\"9(?:(?:39|47)8[01]|769\\\\d)\\\\d{4}\"]]],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[35-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"6\\\\d{9}|[0-36-9]\\\\d{8}\",[9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-37-9]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{5,6})\",\"$1 $2 $3\",[\"6\"]]],0,0,0,0,0,0,[0,[\"6\\\\d{9}|[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|[19]\\\\d{7}|(?:[25]\\\\d\\\\d|4)\\\\d{7}(?:\\\\d{2})?\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"49\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"1[36]|9\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"16\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|23|3(?:[15]|4[57])|4|51\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-35]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|(?:3(?:2|47|7\\\\d{3})|50\\\\d{3})\\\\d{7}\",[7,8,9,10,12]],0,0,0,[\"348[57]\\\\d{7}\",[11]],0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:345\\\\d|9[89])\\\\d{6}|(?:10|2(?:3|85\\\\d)|3(?:[15]|[69]\\\\d\\\\d)|4[15-8]|51)\\\\d{8}\"]]],\"883\":[\"883\",0,\"(?:[1-4]\\\\d|51)\\\\d{6,10}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,8})\",\"$1 $2 $3\",[\"[14]|2[24-689]|3[02-689]|51[24-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"21\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[235]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:2(?:00\\\\d\\\\d|10)|(?:370[1-9]|51\\\\d0)\\\\d)\\\\d{7}|51(?:00\\\\d{5}|[24-9]0\\\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\\\d{5,9}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nexport default function withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n// https://stackoverflow.com/a/46971044/970769\n// \"Breaking changes in Typescript 2.1\"\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\nvar ParseError = /*#__PURE__*/function (_Error) {\n _inherits(ParseError, _Error);\n\n var _super = _createSuper(ParseError);\n\n function ParseError(code) {\n var _this;\n\n _classCallCheck(this, ParseError);\n\n _this = _super.call(this, code); // Set the prototype explicitly.\n // Any subclass of FooError will have to manually set the prototype as well.\n\n Object.setPrototypeOf(_assertThisInitialized(_this), ParseError.prototype);\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return _createClass(ParseError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexport { ParseError as default };\n//# sourceMappingURL=ParseError.js.map","// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\n\nexport var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code.\n\nexport var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\n\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\"; // `DASHES` will be right after the opening square bracket of the \"character class\"\n\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\"; // export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\n\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\"; // Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\n\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}\n//# sourceMappingURL=semver-compare.js.map","var objectConstructor = {}.constructor;\nexport default function isObject(object) {\n return object !== undefined && object !== null && object.constructor === objectConstructor;\n}\n//# sourceMappingURL=isObject.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport compare from './tools/semver-compare.js';\nimport isObject from './helpers/isObject.js'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n // The test case could be found by searching for \"nonGeographical\".\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n // In that metadata, there was no concept of \"non-geographic\" metadata\n // so metadata for `001` country code was stored along with other countries.\n // The test case can be found by searching for:\n // \"should work around `nonGeographic` metadata not existing\".\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n\n return Metadata;\n}();\n\nexport { Metadata as default };\n\nvar NumberingPlan = /*#__PURE__*/function () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // \"possible length\" data is always present in Google's metadata.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n\n return NumberingPlan;\n}();\n\nvar Format = /*#__PURE__*/function () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n\n this._format = format;\n this.metadata = metadata;\n }\n\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\n\nvar Type = /*#__PURE__*/function () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n\n this.type = type;\n this.metadata = metadata;\n }\n\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n\n return Type;\n}();\n\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n\n case 'MOBILE':\n return types[1];\n\n case 'TOLL_FREE':\n return types[2];\n\n case 'PREMIUM_RATE':\n return types[3];\n\n case 'PERSONAL_NUMBER':\n return types[4];\n\n case 'VOICEMAIL':\n return types[5];\n\n case 'UAN':\n return types[6];\n\n case 'PAGER':\n return types[7];\n\n case 'VOIP':\n return types[8];\n\n case 'SHARED_COST':\n return types[9];\n }\n}\n\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n\n if (!isObject(metadata) || !isObject(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(isObject(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + typeOf(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar typeOf = function typeOf(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries.hasOwnProperty(country);\n}\n\nfunction setVersion(metadata) {\n var version = metadata.version;\n\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n//# sourceMappingURL=metadata.js.map","import { VALID_DIGITS } from '../../constants.js'; // The RFC 3966 format for extensions.\n\nvar RFC3966_EXTN_PREFIX = ';ext=';\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\n\nvar getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) {\n return \"([\".concat(VALID_DIGITS, \"]{1,\").concat(maxLength, \"})\");\n};\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\n\n\nexport default function createExtensionPattern(purpose) {\n // We cap the maximum length of an extension based on the ambiguity of the way\n // the extension is prefixed. As per ITU, the officially allowed length for\n // extensions is actually 40, but we don't support this since we haven't seen real\n // examples and this introduces many false interpretations as the extension labels\n // are not standardized.\n\n /** @type {string} */\n var extLimitAfterExplicitLabel = '20';\n /** @type {string} */\n\n var extLimitAfterLikelyLabel = '15';\n /** @type {string} */\n\n var extLimitAfterAmbiguousChar = '9';\n /** @type {string} */\n\n var extLimitWhenNotSure = '6';\n /** @type {string} */\n\n var possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\xA0\\\\t,]*\"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n\n /** @type {string} */\n\n var possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\";\n /** @type {string} */\n\n var optionalExtnSuffix = \"#?\"; // Here the extension is called out in more explicit way, i.e mentioning it obvious\n // patterns like \"ext.\".\n\n /** @type {string} */\n\n var explicitExtLabels = \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\"; // One-character symbols that can be used to indicate an extension, and less\n // commonly used or more ambiguous extension labels.\n\n /** @type {string} */\n\n var ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\"; // When extension is not separated clearly.\n\n /** @type {string} */\n\n var ambiguousSeparator = \"[- ]+\"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n // comma as extension label may have it.\n\n /** @type {string} */\n\n var possibleSeparatorsNumberExtLabelNoComma = \"[ \\xA0\\\\t]*\"; // \",,\" is commonly used for auto dialling the extension when connected. First\n // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n // not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n // button with the extension number following.\n\n /** @type {string} */\n\n var autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n /** @type {string} */\n\n var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n /** @type {string} */\n\n var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n /** @type {string} */\n\n var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n /** @type {string} */\n\n var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + \"(?:,)+\" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added\n // using \";ext=\". The second more generic where extension is mentioned with explicit\n // labels like \"ext:\". In both the above cases we allow more numbers in extension than\n // any other extension labels. The third one captures when single character extension\n // labels or less commonly used labels are used. In such cases we capture fewer\n // extension digits in order to reduce the chance of falsely interpreting two\n // numbers beside each other as a number + extension. The fourth one covers the\n // special case of American numbers where the extension is written with a hash\n // at the end, such as \"- 503#\". The fifth one is exclusively for extension\n // autodialling formats which are used when dialling and in this case we accept longer\n // extensions. The last one is more liberal on the number of commas that acts as\n // extension labels, so we have a strict cap on the number of digits in such extensions.\n\n return rfcExtn + \"|\" + explicitExtn + \"|\" + ambiguousExtn + \"|\" + americanStyleExtnWithSuffix + \"|\" + autoDiallingExtn + \"|\" + onlyCommasExtn;\n}\n//# sourceMappingURL=createExtensionPattern.js.map","import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants.js';\nimport createExtensionPattern from './extension/createExtensionPattern.js'; // Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\n\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; //\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\n\nexport var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nvar VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i');\nexport var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER + // Phone number extensions\n'(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers:\n//\n\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\n\nexport default function isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n} // This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nexport function isViablePhoneNumberStart(number) {\n return VALID_PHONE_NUMBER_START_REG_EXP.test(number);\n}\n//# sourceMappingURL=isViablePhoneNumber.js.map","import createExtensionPattern from './createExtensionPattern.js'; // Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\n\nvar EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\n\nexport default function extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n\n if (start < 0) {\n return {};\n } // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n\n\n var numberWithoutExtension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n\n while (i < matches.length) {\n if (matches[i]) {\n return {\n number: numberWithoutExtension,\n ext: matches[i]\n };\n }\n\n i++;\n }\n}\n//# sourceMappingURL=extractExtension.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n\n};\nexport function parseDigit(character) {\n return DIGITS[character];\n}\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\n\nexport default function parseDigits(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n var digit = parseDigit(character);\n\n if (digit) {\n result += digit;\n }\n }\n\n return result;\n}\n//# sourceMappingURL=parseDigits.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { parseDigit } from './helpers/parseDigits.js';\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nexport default function parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n\n return result;\n}\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {function?} emitEvent - An optional \"emit event\" function.\r\n * @return {string?} The parsed character.\r\n */\n\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters, emitEvent) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n // `emitEvent` argument was added to this `export`ed function on Dec 26th, 2023.\n // Any 3rd-party code that used to `import` and call this function before that\n // won't be passing any `emitEvent` argument.\n //\n // The addition of the `emitEvent` argument was to fix the slightly-weird behavior\n // of parsing an input string when the user inputs something like `\"2+7\"\n // https://github.com/catamphetamine/react-phone-number-input/issues/437\n //\n // If the parser encounters an unexpected `+` in a string being parsed\n // then it simply discards that out-of-place `+` and any following characters.\n //\n if (typeof emitEvent === 'function') {\n emitEvent('end');\n }\n\n return;\n }\n\n return '+';\n } // Allow digits.\n\n\n return parseDigit(character);\n}\n//# sourceMappingURL=parseIncompletePhoneNumber.js.map","import mergeArrays from './mergeArrays.js';\nexport default function checkNumberLength(nationalNumber, metadata) {\n return checkNumberLengthForType(nationalNumber, undefined, metadata);\n} // Checks whether a number is possible for the country based on its length.\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\n\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\n var type_info = metadata.type(type); // There should always be \"<possiblePengths/>\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n }\n\n var mobile_type = metadata.type('MOBILE');\n\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n } // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n\n var actual_length = nationalNumber.length; // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n } // We skip the first element since we've already checked it.\n\n\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=checkNumberLength.js.map","import Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\n\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n metadata = new Metadata(metadata);\n\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n } // Old metadata (< 1.0.18) had no \"possible length\" data.\n\n\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n\n default:\n return false;\n }\n}\n//# sourceMappingURL=isPossible.js.map","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nexport default function matchesEntirely(text, regular_expression) {\n // If assigning the `''` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n//# sourceMappingURL=matchesEntirely.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returns an empty object — `{}` —\n // that means that the phone number is malformed,\n // so it can't possibly be valid.\n\n if (!input.country && !input.countryCallingCode) {\n return;\n }\n\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\n // For example, for \"US\" country.\n // Old metadata (< `1.0.18`) had a specific \"types\" data structure\n // that happened to be `undefined` for `MOBILE` in that case.\n // Newer metadata (>= `1.0.18`) has another data structure that is\n // not `undefined` for `MOBILE` in that case (it's just an empty array).\n // So this `if` is just for backwards compatibility with old metadata.\n\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n return 'FIXED_LINE';\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) {\n var type = _step.value;\n\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n\n return matchesEntirely(nationalNumber, type.pattern());\n}\n//# sourceMappingURL=getNumberType.js.map","import Metadata from './metadata.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport getNumberType from './helpers/getNumberType.js';\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nexport default function isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n } // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n\n\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(nationalNumber, metadata.nationalNumberPattern());\n}\n//# sourceMappingURL=isValid.js.map","import Metadata from '../metadata.js';\n/**\r\n * Returns a list of countries that the phone number could potentially belong to.\r\n * @param {string} callingCode — Calling code.\r\n * @param {string} nationalNumber — National (significant) number.\r\n * @param {object} metadata — Metadata.\r\n * @return {string[]} A list of possible countries.\r\n */\n\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\n var _metadata = new Metadata(metadata);\n\n var possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode);\n\n if (!possibleCountries) {\n return [];\n }\n\n return possibleCountries.filter(function (country) {\n return couldNationalNumberBelongToCountry(nationalNumber, country, metadata);\n });\n}\n\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {\n var _metadata = new Metadata(metadata);\n\n _metadata.selectNumberingPlan(country);\n\n if (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {\n return true;\n }\n\n return false;\n}\n//# sourceMappingURL=getPossibleCountriesForNumber.js.map","import { VALID_PUNCTUATION } from '../constants.js'; // Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\n\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n//# sourceMappingURL=applyInternationalSeparatorStyle.js.map","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'; // This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\n\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n\n return formattedNumber;\n}\n//# sourceMappingURL=formatNationalNumberUsingFormat.js.map","import Metadata from '../metadata.js';\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\n\nvar SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/; // For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\n\nexport default function getIddPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n\n if (countryMetadata.defaultIDDPrefix()) {\n return countryMetadata.defaultIDDPrefix();\n }\n\n if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n}\n//# sourceMappingURL=getIddPrefix.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport isViablePhoneNumber from './isViablePhoneNumber.js'; // https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nexport function parseRFC3966(text) {\n var number;\n var ext; // Replace \"tel:\" with \"tel=\" for parsing convenience.\n\n text = text.replace(/^tel:/, 'tel=');\n\n for (var _iterator = _createForOfIteratorHelperLoose(text.split(';')), _step; !(_step = _iterator()).done;) {\n var part = _step.value;\n\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n\n switch (name) {\n case 'tel':\n number = value;\n break;\n\n case 'ext':\n ext = value;\n break;\n\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n\n break;\n }\n } // If the phone number is not viable, then abort.\n\n\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n\n var result = {\n number: number\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\n\nexport function formatRFC3966(_ref) {\n var number = _ref.number,\n ext = _ref.ext;\n\n if (!number) {\n return '';\n }\n\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}\n//# sourceMappingURL=RFC3966.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nimport Metadata, { getCountryCallingCode } from './metadata.js';\nimport getIddPrefix from './helpers/getIddPrefix.js';\nimport { formatRFC3966 } from './helpers/RFC3966.js';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n }\n};\n/**\r\n * Formats a phone number.\r\n *\r\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\r\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\r\n *\r\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\r\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {string} format\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\n\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n\n metadata = new Metadata(metadata);\n\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\n\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n\n if (!format) {\n return number;\n }\n\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\n\nexport function chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = _createForOfIteratorHelperLoose(availableFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n\n // Validate leading digits.\n // The test case for \"else path\" could be found by searching for\n // \"format.leadingDigitsPatterns().length === 0\".\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\n\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code.\n\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n\n return formattedNumber;\n }\n\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}\n//# sourceMappingURL=format.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport Metadata from './metadata.js';\nimport isPossibleNumber from './isPossible.js';\nimport isValidNumber from './isValid.js'; // import checkNumberLength from './helpers/checkNumberLength.js'\n\nimport getNumberType from './helpers/getNumberType.js';\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js';\nimport formatNumber from './format.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar PhoneNumber = /*#__PURE__*/function () {\n /**\r\n * @param {string} countryOrCountryCallingCode\r\n * @param {string} nationalNumber\r\n * @param {object} metadata — Metadata JSON\r\n * @return {PhoneNumber}\r\n */\n function PhoneNumber(countryOrCountryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n\n if (!countryOrCountryCallingCode) {\n throw new TypeError('`country` or `countryCallingCode` not passed');\n }\n\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` not passed');\n }\n\n if (!metadata) {\n throw new TypeError('`metadata` not passed');\n }\n\n var _getCountryAndCountry = getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadata),\n country = _getCountryAndCountry.country,\n countryCallingCode = _getCountryAndCountry.countryCallingCode;\n\n this.country = country;\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber; // Exclude `metadata` property output from `PhoneNumber.toString()`\n // so that it doesn't clutter the console output of Node.js.\n // Previously, when Node.js did `console.log(new PhoneNumber(...))`,\n // it would output the whole internal structure of the `metadata` object.\n\n this.getMetadata = function () {\n return metadata;\n };\n }\n\n _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"getPossibleCountries\",\n value: function getPossibleCountries() {\n if (this.country) {\n return [this.country];\n }\n\n return getPossibleCountriesForNumber(this.countryCallingCode, this.nationalNumber, this.getMetadata());\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.getMetadata());\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\n // but later it was found out that it doesn't include the possible `TOO_SHORT` result\n // returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\n // so eventually I simply commented out this method from the `PhoneNumber` class\n // and just left the `validatePhoneNumberLength()` function, even though that one would require\n // and additional step to also validate the actual country / calling code of the phone number.\n // validateLength() {\n // \tconst metadata = new Metadata(this.getMetadata())\n // \tmetadata.selectNumberingPlan(this.countryCallingCode)\n // \tconst result = checkNumberLength(this.nationalNumber, metadata)\n // \tif (result !== 'IS_POSSIBLE') {\n // \t\treturn result\n // \t}\n // }\n\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }) : {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n\n return PhoneNumber;\n}();\n\nexport { PhoneNumber as default };\n\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\n\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\n var country;\n var countryCallingCode;\n var metadata = new Metadata(metadataJson); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n if (isCountryCode(countryOrCountryCallingCode)) {\n country = countryOrCountryCallingCode;\n metadata.selectNumberingPlan(country);\n countryCallingCode = metadata.countryCallingCode();\n } else {\n countryCallingCode = countryOrCountryCallingCode;\n /* istanbul ignore if */\n\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(countryCallingCode)) {\n country = '001';\n }\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode\n };\n}\n//# sourceMappingURL=PhoneNumber.js.map","import Metadata from '../metadata.js';\nimport { VALID_DIGITS } from '../constants.js';\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n } // Check if the number is IDD-prefixed.\n\n\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n } // Strip IDD prefix.\n\n\n number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix,\n // then those digits are a country calling code.\n // Since no country code starts with a `0`,\n // the code below validates that the next digit (if present) is not `0`.\n\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n\n return number;\n}\n//# sourceMappingURL=stripIddPrefix.js.map","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n if (number && metadata.numberingPlan.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n // If a `national_prefix_for_parsing` has any \"capturing groups\"\n // then it means that the national (significant) number is equal to\n // those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n // and nothing could be said about the actual national prefix:\n // what is it and was it even there.\n // If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n // then everything it matches is a national prefix.\n // To determine whether `national_prefix_for_parsing` matched any\n // \"capturing groups\", the value of the result of calling `.exec()`\n // is looked at, and if it has non-undefined values where there're\n // \"capturing groups\" in the regular expression, then it means\n // that \"capturing groups\" have been matched.\n // It's not possible to tell whether there'll be any \"capturing gropus\"\n // before the matching process, because a `national_prefix_for_parsing`\n // could exhibit both behaviors.\n\n var capturedGroupsCount = prefixMatch.length - 1;\n var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];\n\n if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group,\n // then carrier code is the second one.\n\n if (capturedGroupsCount > 1) {\n carrierCode = prefixMatch[1];\n }\n } // If there're no \"capturing groups\",\n // or if there're \"capturing groups\" but no\n // `national_prefix_transform_rule`,\n // then just strip the national prefix from the number,\n // and possibly a carrier code.\n // Seems like there could be more.\n else {\n // `prefixBeforeNationalNumber` is the whole substring matched by\n // the `national_prefix_for_parsing` regular expression.\n // There seem to be no guarantees that it's just a national prefix.\n // For example, if there's a carrier code, it's gonna be a\n // part of `prefixBeforeNationalNumber` too.\n var prefixBeforeNationalNumber = prefixMatch[0];\n nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group,\n // then carrier code is the first one.\n\n if (hasCapturedGroups) {\n carrierCode = prefixMatch[1];\n }\n } // Tries to guess whether a national prefix was present in the input.\n // This is not something copy-pasted from Google's library:\n // they don't seem to have an equivalent for that.\n // So this isn't an \"officially approved\" way of doing something like that.\n // But since there seems no other existing method, this library uses it.\n\n\n var nationalPrefix;\n\n if (hasCapturedGroups) {\n var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);\n var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`.\n // `prefixMatch[0]` is `01115`, and `$1` is `11`,\n // and the rest of the phone number is `23456789`.\n // The national number is transformed via `9$1` to `91123456789`.\n // National prefix `0` is detected being present at the start.\n // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n\n if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n nationalPrefix = metadata.numberingPlan.nationalPrefix();\n }\n } else {\n nationalPrefix = prefixMatch[0];\n }\n\n return {\n nationalNumber: nationalNumber,\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode\n };\n }\n }\n\n return {\n nationalNumber: number\n };\n}\n//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.js.map","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport checkNumberLength from './checkNumberLength.js';\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\nexport default function extractNationalNumber(number, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata),\n carrierCode = _extractNationalNumbe.carrierCode,\n nationalNumber = _extractNationalNumbe.nationalNumber;\n\n if (nationalNumber !== number) {\n if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n } // Check the national (significant) number length after extracting national prefix and carrier code.\n // Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\n\n\n if (metadata.possibleLengths()) {\n // The number remaining after stripping the national prefix and carrier code\n // should be long enough to have a possible length for the country.\n // Otherwise, don't strip the national prefix and carrier code,\n // since the original number could be a valid number.\n // This check has been copy-pasted \"as is\" from Google's original library:\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n // It doesn't check for the \"possibility\" of the original `number`.\n // I guess it's fine not checking that one. It works as is anyway.\n if (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n} // In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\n\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\n // The equivalent in Google's code is:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n if (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) && !matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\n return false;\n } // This \"is possible\" national number (length) check has been commented out\n // because it's superceded by the (effectively) same check done in the\n // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\n // In other words, why run the same check twice if it could only be run once.\n // // Check the national (significant) number length after extracting national prefix and carrier code.\n // // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\n // // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\n // if (metadata.possibleLengths()) {\n // \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\n // \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\n // \t\treturn false\n // \t}\n // }\n\n\n return true;\n}\n\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n return false;\n\n default:\n return true;\n }\n}\n//# sourceMappingURL=extractNationalNumber.js.map","import Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport extractNationalNumber from './extractNationalNumber.js';\nimport checkNumberLength from './checkNumberLength.js';\nimport getCountryCallingCode from '../getCountryCallingCode.js';\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\n\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) {\n var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode;\n\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country, callingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n\n var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata),\n possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber;\n\n var _extractNationalNumbe2 = extractNationalNumber(number, metadata),\n nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n}\n//# sourceMappingURL=extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map","import stripIddPrefix from './stripIddPrefix.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport Metadata from '../metadata.js';\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js';\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\n\nexport default function extractCountryCallingCode(number, country, callingCode, metadata) {\n if (!number) {\n return {};\n }\n\n var isNumberWithIddPrefix; // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n isNumberWithIddPrefix = true;\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || callingCode) {\n var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n shorterNumber = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n return {\n countryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n\n return {\n // No need to set it to `UNSPECIFIED`. It can be just `undefined`.\n // countryCallingCodeSource: 'UNSPECIFIED',\n number: number\n };\n }\n } // Fast abortion: country codes do not begin with a '0'\n\n\n if (number[1] === '0') {\n return {};\n }\n\n metadata = new Metadata(metadata); // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n\n var i = 2;\n\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(_countryCallingCode);\n return {\n countryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n\n i++;\n }\n\n return {};\n} // The possible values for the returned `countryCallingCodeSource` are:\n//\n// Copy-pasted from:\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\n//\n// // The source from which the country_code is derived. This is not set in the\n// // general parsing method, but in the method that parses and keeps raw_input.\n// // New fields could be added upon request.\n// enum CountryCodeSource {\n// // Default value returned if this is not set, because the phone number was\n// // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\n// // return false if this is the case.\n// UNSPECIFIED = 0;\n//\n// // The country_code is derived based on a phone number with a leading \"+\",\n// // e.g. the French number \"+33 1 42 68 53 00\".\n// FROM_NUMBER_WITH_PLUS_SIGN = 1;\n//\n// // The country_code is derived based on a phone number with a leading IDD,\n// // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\n// FROM_NUMBER_WITH_IDD = 5;\n//\n// // The country_code is derived based on a phone number without a leading\n// // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\n// // supplied as France.\n// FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\n//\n// // The country_code is derived NOT based on the phone number itself, but\n// // from the defaultCountry parameter provided in the parsing function by the\n// // clients. This happens mostly for numbers written in the national format\n// // (without country code). For example, this would be set when parsing the\n// // French number \"01 42 68 53 00\", when defaultCountry is supplied as\n// // France.\n// FROM_DEFAULT_COUNTRY = 20;\n// }\n//# sourceMappingURL=extractCountryCallingCode.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport getNumberType from './getNumberType.js';\nexport default function getCountryByNationalNumber(nationalPhoneNumber, _ref) {\n var countries = _ref.countries,\n defaultCountry = _ref.defaultCountry,\n metadata = _ref.metadata;\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata);\n var matchingCountries = [];\n\n for (var _iterator = _createForOfIteratorHelperLoose(countries), _step; !(_step = _iterator()).done;) {\n var country = _step.value;\n metadata.country(country); // \"Leading digits\" patterns are only defined for about 20% of all countries.\n // By definition, matching \"leading digits\" is a sufficient but not a necessary\n // condition for a phone number to belong to a country.\n // The point of \"leading digits\" check is that it's the fastest one to get a match.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\n // because of the intended use of that feature.\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n // If the `defaultCountry` is among the `matchingCountries` then return it.\n if (defaultCountry) {\n if (country === defaultCountry) {\n return country;\n }\n\n matchingCountries.push(country);\n } else {\n return country;\n }\n }\n } // Return the first (\"main\") one of the `matchingCountries`.\n\n\n if (matchingCountries.length > 0) {\n return matchingCountries[0];\n }\n}\n//# sourceMappingURL=getCountryByNationalNumber.js.map","import getCountryByNationalNumber from './getCountryByNationalNumber.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nexport default function getCountryByCallingCode(callingCode, _ref) {\n var nationalPhoneNumber = _ref.nationalNumber,\n defaultCountry = _ref.defaultCountry,\n metadata = _ref.metadata;\n\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n }\n\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n\n if (!possibleCountries) {\n return;\n } // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n\n\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n\n return getCountryByNationalNumber(nationalPhoneNumber, {\n countries: possibleCountries,\n defaultCountry: defaultCountry,\n metadata: metadata.metadata\n });\n}\n//# sourceMappingURL=getCountryByCallingCode.js.map","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\n// Example: `\"tel:12133734253;phone-context=+1\"`.\n// This function parses the full phone number from the local number and the `phone-context`\n// when the `phone-context` contains a `+` sign.\nimport { VALID_DIGITS // PLUS_CHARS\n} from '../constants.js';\nexport var PLUS_SIGN = '+';\nvar RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?';\nvar RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')';\nvar RFC3966_GLOBAL_NUMBER_DIGITS_ = '^' + '\\\\' + PLUS_SIGN + RFC3966_PHONE_DIGIT_ + '*' + '[' + VALID_DIGITS + ']' + RFC3966_PHONE_DIGIT_ + '*' + '$';\n/**\r\n * Regular expression of valid global-number-digits for the phone-context\r\n * parameter, following the syntax defined in RFC3966.\r\n */\n\nvar RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g'); // In this port of Google's library, we don't accept alpha characters in phone numbers.\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\n\nvar ALPHANUM_ = VALID_DIGITS;\nvar RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*';\nvar VALID_ALPHA_ = 'a-zA-Z';\nvar RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*';\nvar RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$';\n/**\r\n * Regular expression of valid domainname for the phone-context parameter,\r\n * following the syntax defined in RFC3966.\r\n */\n\nvar RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g');\nexport var RFC3966_PREFIX_ = 'tel:';\nexport var RFC3966_PHONE_CONTEXT_ = ';phone-context=';\nexport var RFC3966_ISDN_SUBADDRESS_ = ';isub=';\n/**\r\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\r\n * following the syntax defined in RFC3966.\r\n *\r\n * @param {string} numberToExtractFrom\r\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\r\n */\n\nexport default function extractPhoneContext(numberToExtractFrom) {\n var indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_); // If no phone-context parameter is present\n\n if (indexOfPhoneContext < 0) {\n return null;\n }\n\n var phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length; // If phone-context parameter is empty\n\n if (phoneContextStart >= numberToExtractFrom.length) {\n return '';\n }\n\n var phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart); // If phone-context is not the last parameter\n\n if (phoneContextEnd >= 0) {\n return numberToExtractFrom.substring(phoneContextStart, phoneContextEnd);\n } else {\n return numberToExtractFrom.substring(phoneContextStart);\n }\n}\n/**\r\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\r\n *\r\n * @param {string|null} phoneContext\r\n * @return {boolean}\r\n */\n\nexport function isPhoneContextValid(phoneContext) {\n if (phoneContext === null) {\n return true;\n }\n\n if (phoneContext.length === 0) {\n return false;\n } // Does phone-context value match pattern of global-number-digits or domainname.\n\n\n return RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) || RFC3966_DOMAINNAME_PATTERN_.test(phoneContext);\n}\n//# sourceMappingURL=extractPhoneContext.js.map","import extractPhoneContext, { isPhoneContextValid, PLUS_SIGN, RFC3966_PREFIX_, RFC3966_PHONE_CONTEXT_, RFC3966_ISDN_SUBADDRESS_ } from './extractPhoneContext.js';\nimport ParseError from '../ParseError.js';\n/**\r\n * @param {string} numberToParse\r\n * @param {string} nationalNumber\r\n * @return {}\r\n */\n\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, _ref) {\n var extractFormattedPhoneNumber = _ref.extractFormattedPhoneNumber;\n var phoneContext = extractPhoneContext(numberToParse);\n\n if (!isPhoneContextValid(phoneContext)) {\n throw new ParseError('NOT_A_NUMBER');\n }\n\n var phoneNumberString;\n\n if (phoneContext === null) {\n // Extract a possible number from the string passed in.\n // (this strips leading characters that could not be the start of a phone number)\n phoneNumberString = extractFormattedPhoneNumber(numberToParse) || '';\n } else {\n phoneNumberString = ''; // If the phone context contains a phone number prefix, we need to capture\n // it, whereas domains will be ignored.\n\n if (phoneContext.charAt(0) === PLUS_SIGN) {\n phoneNumberString += phoneContext;\n } // Now append everything between the \"tel:\" prefix and the phone-context.\n // This should include the national number, an optional extension or\n // isdn-subaddress component. Note we also handle the case when \"tel:\" is\n // missing, as we have seen in some of the phone number inputs.\n // In that case, we append everything from the beginning.\n\n\n var indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_);\n var indexOfNationalNumber; // RFC 3966 \"tel:\" prefix is preset at this stage because\n // `isPhoneContextValid()` requires it to be present.\n\n /* istanbul ignore else */\n\n if (indexOfRfc3966Prefix >= 0) {\n indexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length;\n } else {\n indexOfNationalNumber = 0;\n }\n\n var indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_);\n phoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext);\n } // Delete the isdn-subaddress and everything after it if it is present.\n // Note extension won't appear at the same time with isdn-subaddress\n // according to paragraph 5.3 of the RFC3966 spec.\n\n\n var indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_);\n\n if (indexOfIsdn > 0) {\n phoneNumberString = phoneNumberString.substring(0, indexOfIsdn);\n } // If both phone context and isdn-subaddress are absent but other\n // parameters are present, the parameters are left in nationalNumber.\n // This is because we are concerned about deleting content from a potential\n // number string when there is no strong evidence that the number is\n // actually written in RFC3966.\n\n\n if (phoneNumberString !== '') {\n return phoneNumberString;\n }\n}\n//# sourceMappingURL=extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js.map","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js';\nimport extractExtension from './helpers/extension/extractExtension.js';\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js';\nimport getCountryCallingCode from './getCountryCallingCode.js';\nimport { isPossibleNumber } from './isPossible.js'; // import { parseRFC3966 } from './helpers/RFC3966.js'\n\nimport PhoneNumber from './PhoneNumber.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractNationalNumber from './helpers/extractNationalNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js';\nimport extractFormattedPhoneNumberFromPossibleRfc3966NumberUri from './helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js'; // We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\n\nvar MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits.\n\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\n\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$');\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\n/**\r\n * Parses a phone number.\r\n *\r\n * parse('123456789', { defaultCountry: 'RU', v2: true }, metadata)\r\n * parse('123456789', { defaultCountry: 'RU' }, metadata)\r\n * parse('123456789', undefined, metadata)\r\n *\r\n * @param {string} input\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {object|PhoneNumber?} If `options.v2: true` flag is passed, it returns a `PhoneNumber?` instance. Otherwise, returns an object of shape `{ phone: '...', country: '...' }` (or just `{}` if no phone number was parsed).\r\n */\n\nexport default function parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // Validate `defaultCountry`.\n\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n } // Parse the phone number.\n\n\n var _parseInput = parseInput(text, options.v2, options.extract),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext,\n error = _parseInput.error; // If the phone number is not viable then return nothing.\n\n\n if (!formattedPhoneNumber) {\n if (options.v2) {\n if (error === 'TOO_SHORT') {\n throw new ParseError('TOO_SHORT');\n }\n\n throw new ParseError('NOT_A_NUMBER');\n }\n\n return {};\n }\n\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n countryCallingCodeSource = _parsePhoneNumber.countryCallingCodeSource,\n carrierCode = _parsePhoneNumber.carrierCode;\n\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n return {};\n } // Validate national (significant) number length.\n\n\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n } // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n\n\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n }\n\n if (options.v2) {\n var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n\n if (country) {\n phoneNumber.country = country;\n }\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n\n if (ext) {\n phoneNumber.ext = ext;\n }\n\n phoneNumber.__countryCallingCodeSource = countryCallingCodeSource;\n return phoneNumber;\n } // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n\n\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n\n if (!options.extended) {\n return valid ? result(country, nationalNumber, ext) : {};\n } // isInternational: countryCallingCode !== undefined\n\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\n\nfunction _extractFormattedPhoneNumber(text, extract, throwOnError) {\n if (!text) {\n return;\n }\n\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n\n return;\n }\n\n if (extract === false) {\n return text;\n } // Attempt to extract a possible number from the string passed in\n\n\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n\n if (startsAt < 0) {\n return;\n }\n\n return text // Trim everything to the left of the phone number\n .slice(startsAt) // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\n\nfunction parseInput(text, v2, extract) {\n // // Parse RFC 3966 phone number URI.\n // if (text && text.indexOf('tel:') === 0) {\n // \treturn parseRFC3966(text)\n // }\n // let number = extractFormattedPhoneNumber(text, extract, v2)\n var number = extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(text, {\n extractFormattedPhoneNumber: function extractFormattedPhoneNumber(text) {\n return _extractFormattedPhoneNumber(text, extract, v2);\n }\n }); // If the phone number is not viable, then abort.\n\n if (!number) {\n return {};\n }\n\n if (!isViablePhoneNumber(number)) {\n if (isViablePhoneNumberStart(number)) {\n return {\n error: 'TOO_SHORT'\n };\n }\n\n return {};\n } // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n\n\n var withExtensionStripped = extractExtension(number);\n\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n\n return {\n number: number\n };\n}\n/**\r\n * Creates `parse()` result object.\r\n */\n\n\nfunction result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\n\n\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCodeSource = _extractCountryCallin.countryCallingCodeSource,\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`.\n\n\n var country;\n\n if (countryCallingCode) {\n metadata.selectNumberingPlan(countryCallingCode);\n } // If `formattedPhoneNumber` is passed in \"national\" format\n // then `number` is defined and `countryCallingCode` is `undefined`.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n\n if (!number) {\n return {\n countryCallingCodeSource: countryCallingCodeSource,\n countryCallingCode: countryCallingCode\n };\n }\n\n var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n\n\n var exactCountry = getCountryByCallingCode(countryCallingCode, {\n nationalNumber: nationalNumber,\n defaultCountry: defaultCountry,\n metadata: metadata\n });\n\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n\n if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.country(country);\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n countryCallingCodeSource: countryCallingCodeSource,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n//# sourceMappingURL=parse.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parse from './parse.js';\nexport default function parsePhoneNumberWithError(text, options, metadata) {\n return parse(text, _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }), metadata);\n}\n//# sourceMappingURL=parsePhoneNumberWithError_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport isObject from './helpers/isObject.js'; // Extracts the following properties from function arguments:\n// * input `text`\n// * `options` object\n// * `metadata` JSON\n\nexport default function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n}\n//# sourceMappingURL=normalizeArguments.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parsePhoneNumberWithError from './parsePhoneNumberWithError_.js';\nimport ParseError from './ParseError.js';\nimport { isSupportedCountry } from './metadata.js';\nexport default function parsePhoneNumber(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: undefined\n });\n } // Parse phone number.\n\n\n try {\n return parsePhoneNumberWithError(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {//\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=parsePhoneNumber_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport normalizeArguments from './normalizeArguments.js';\nimport parsePhoneNumber from './parsePhoneNumber_.js';\nexport default function isValidPhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n var phoneNumber = parsePhoneNumber(text, options, metadata);\n return phoneNumber && phoneNumber.isValid() || false;\n}\n//# sourceMappingURL=isValidPhoneNumber.js.map","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isValidPhoneNumber as _isValidPhoneNumber } from '../../core/index.js'\r\n\r\nexport function isValidPhoneNumber() {\r\n\treturn withMetadataArgument(_isValidPhoneNumber, arguments)\r\n}","/*! @preserve\n * numeral.js\n * version : 2.0.6\n * author : Adam Draper\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else {\n global.numeral = factory();\n }\n}(this, function () {\n /************************************\n Variables\n ************************************/\n\n var numeral,\n _,\n VERSION = '2.0.6',\n formats = {},\n locales = {},\n defaults = {\n currentLocale: 'en',\n zeroFormat: null,\n nullFormat: null,\n defaultFormat: '0,0',\n scalePercentBy100: true\n },\n options = {\n currentLocale: defaults.currentLocale,\n zeroFormat: defaults.zeroFormat,\n nullFormat: defaults.nullFormat,\n defaultFormat: defaults.defaultFormat,\n scalePercentBy100: defaults.scalePercentBy100\n };\n\n\n /************************************\n Constructors\n ************************************/\n\n // Numeral prototype object\n function Numeral(input, number) {\n this._input = input;\n\n this._value = number;\n }\n\n numeral = function(input) {\n var value,\n kind,\n unformatFunction,\n regexp;\n\n if (numeral.isNumeral(input)) {\n value = input.value();\n } else if (input === 0 || typeof input === 'undefined') {\n value = 0;\n } else if (input === null || _.isNaN(input)) {\n value = null;\n } else if (typeof input === 'string') {\n if (options.zeroFormat && input === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && input === options.nullFormat || !input.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n for (kind in formats) {\n regexp = typeof formats[kind].regexps.unformat === 'function' ? formats[kind].regexps.unformat() : formats[kind].regexps.unformat;\n\n if (regexp && input.match(regexp)) {\n unformatFunction = formats[kind].unformat;\n\n break;\n }\n }\n\n unformatFunction = unformatFunction || numeral._.stringToNumber;\n\n value = unformatFunction(input);\n }\n } else {\n value = Number(input)|| null;\n }\n\n return new Numeral(input, value);\n };\n\n // version number\n numeral.version = VERSION;\n\n // compare numeral object\n numeral.isNumeral = function(obj) {\n return obj instanceof Numeral;\n };\n\n // helper functions\n numeral._ = _ = {\n // formats numbers separators, decimals places, signs, abbreviations\n numberToFormat: function(value, format, roundingFunction) {\n var locale = locales[numeral.options.currentLocale],\n negP = false,\n optDec = false,\n leadingCount = 0,\n abbr = '',\n trillion = 1000000000000,\n billion = 1000000000,\n million = 1000000,\n thousand = 1000,\n decimal = '',\n neg = false,\n abbrForce, // force abbreviation\n abs,\n min,\n max,\n power,\n int,\n precision,\n signed,\n thousands,\n output;\n\n // make sure we never format a null value\n value = value || 0;\n\n abs = Math.abs(value);\n\n // see if we should use parentheses for negative number or if we should prefix with a sign\n // if both are present we default to parentheses\n if (numeral._.includes(format, '(')) {\n negP = true;\n format = format.replace(/[\\(|\\)]/g, '');\n } else if (numeral._.includes(format, '+') || numeral._.includes(format, '-')) {\n signed = numeral._.includes(format, '+') ? format.indexOf('+') : value < 0 ? format.indexOf('-') : -1;\n format = format.replace(/[\\+|\\-]/g, '');\n }\n\n // see if abbreviation is wanted\n if (numeral._.includes(format, 'a')) {\n abbrForce = format.match(/a(k|m|b|t)?/);\n\n abbrForce = abbrForce ? abbrForce[1] : false;\n\n // check for space before abbreviation\n if (numeral._.includes(format, ' a')) {\n abbr = ' ';\n }\n\n format = format.replace(new RegExp(abbr + 'a[kmbt]?'), '');\n\n if (abs >= trillion && !abbrForce || abbrForce === 't') {\n // trillion\n abbr += locale.abbreviations.trillion;\n value = value / trillion;\n } else if (abs < trillion && abs >= billion && !abbrForce || abbrForce === 'b') {\n // billion\n abbr += locale.abbreviations.billion;\n value = value / billion;\n } else if (abs < billion && abs >= million && !abbrForce || abbrForce === 'm') {\n // million\n abbr += locale.abbreviations.million;\n value = value / million;\n } else if (abs < million && abs >= thousand && !abbrForce || abbrForce === 'k') {\n // thousand\n abbr += locale.abbreviations.thousand;\n value = value / thousand;\n }\n }\n\n // check for optional decimals\n if (numeral._.includes(format, '[.]')) {\n optDec = true;\n format = format.replace('[.]', '.');\n }\n\n // break number and format\n int = value.toString().split('.')[0];\n precision = format.split('.')[1];\n thousands = format.indexOf(',');\n leadingCount = (format.split('.')[0].split(',')[0].match(/0/g) || []).length;\n\n if (precision) {\n if (numeral._.includes(precision, '[')) {\n precision = precision.replace(']', '');\n precision = precision.split('[');\n decimal = numeral._.toFixed(value, (precision[0].length + precision[1].length), roundingFunction, precision[1].length);\n } else {\n decimal = numeral._.toFixed(value, precision.length, roundingFunction);\n }\n\n int = decimal.split('.')[0];\n\n if (numeral._.includes(decimal, '.')) {\n decimal = locale.delimiters.decimal + decimal.split('.')[1];\n } else {\n decimal = '';\n }\n\n if (optDec && Number(decimal.slice(1)) === 0) {\n decimal = '';\n }\n } else {\n int = numeral._.toFixed(value, 0, roundingFunction);\n }\n\n // check abbreviation again after rounding\n if (abbr && !abbrForce && Number(int) >= 1000 && abbr !== locale.abbreviations.trillion) {\n int = String(Number(int) / 1000);\n\n switch (abbr) {\n case locale.abbreviations.thousand:\n abbr = locale.abbreviations.million;\n break;\n case locale.abbreviations.million:\n abbr = locale.abbreviations.billion;\n break;\n case locale.abbreviations.billion:\n abbr = locale.abbreviations.trillion;\n break;\n }\n }\n\n\n // format number\n if (numeral._.includes(int, '-')) {\n int = int.slice(1);\n neg = true;\n }\n\n if (int.length < leadingCount) {\n for (var i = leadingCount - int.length; i > 0; i--) {\n int = '0' + int;\n }\n }\n\n if (thousands > -1) {\n int = int.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1' + locale.delimiters.thousands);\n }\n\n if (format.indexOf('.') === 0) {\n int = '';\n }\n\n output = int + decimal + (abbr ? abbr : '');\n\n if (negP) {\n output = (negP && neg ? '(' : '') + output + (negP && neg ? ')' : '');\n } else {\n if (signed >= 0) {\n output = signed === 0 ? (neg ? '-' : '+') + output : output + (neg ? '-' : '+');\n } else if (neg) {\n output = '-' + output;\n }\n }\n\n return output;\n },\n // unformats numbers separators, decimals places, signs, abbreviations\n stringToNumber: function(string) {\n var locale = locales[options.currentLocale],\n stringOriginal = string,\n abbreviations = {\n thousand: 3,\n million: 6,\n billion: 9,\n trillion: 12\n },\n abbreviation,\n value,\n i,\n regexp;\n\n if (options.zeroFormat && string === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && string === options.nullFormat || !string.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n value = 1;\n\n if (locale.delimiters.decimal !== '.') {\n string = string.replace(/\\./g, '').replace(locale.delimiters.decimal, '.');\n }\n\n for (abbreviation in abbreviations) {\n regexp = new RegExp('[^a-zA-Z]' + locale.abbreviations[abbreviation] + '(?:\\\\)|(\\\\' + locale.currency.symbol + ')?(?:\\\\))?)?$');\n\n if (stringOriginal.match(regexp)) {\n value *= Math.pow(10, abbreviations[abbreviation]);\n break;\n }\n }\n\n // check for negative number\n value *= (string.split('-').length + Math.min(string.split('(').length - 1, string.split(')').length - 1)) % 2 ? 1 : -1;\n\n // remove non numbers\n string = string.replace(/[^0-9\\.]+/g, '');\n\n value *= Number(string);\n }\n\n return value;\n },\n isNaN: function(value) {\n return typeof value === 'number' && isNaN(value);\n },\n includes: function(string, search) {\n return string.indexOf(search) !== -1;\n },\n insert: function(string, subString, start) {\n return string.slice(0, start) + subString + string.slice(start);\n },\n reduce: function(array, callback /*, initialValue*/) {\n if (this === null) {\n throw new TypeError('Array.prototype.reduce called on null or undefined');\n }\n\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n var t = Object(array),\n len = t.length >>> 0,\n k = 0,\n value;\n\n if (arguments.length === 3) {\n value = arguments[2];\n } else {\n while (k < len && !(k in t)) {\n k++;\n }\n\n if (k >= len) {\n throw new TypeError('Reduce of empty array with no initial value');\n }\n\n value = t[k++];\n }\n for (; k < len; k++) {\n if (k in t) {\n value = callback(value, t[k], k, t);\n }\n }\n return value;\n },\n /**\n * Computes the multiplier necessary to make x >= 1,\n * effectively eliminating miscalculations caused by\n * finite precision.\n */\n multiplier: function (x) {\n var parts = x.toString().split('.');\n\n return parts.length < 2 ? 1 : Math.pow(10, parts[1].length);\n },\n /**\n * Given a variable number of arguments, returns the maximum\n * multiplier that must be used to normalize an operation involving\n * all of them.\n */\n correctionFactor: function () {\n var args = Array.prototype.slice.call(arguments);\n\n return args.reduce(function(accum, next) {\n var mn = _.multiplier(next);\n return accum > mn ? accum : mn;\n }, 1);\n },\n /**\n * Implementation of toFixed() that treats floats more like decimals\n *\n * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present\n * problems for accounting- and finance-related software.\n */\n toFixed: function(value, maxDecimals, roundingFunction, optionals) {\n var splitValue = value.toString().split('.'),\n minDecimals = maxDecimals - (optionals || 0),\n boundedPrecision,\n optionalsRegExp,\n power,\n output;\n\n // Use the smallest precision value possible to avoid errors from floating point representation\n if (splitValue.length === 2) {\n boundedPrecision = Math.min(Math.max(splitValue[1].length, minDecimals), maxDecimals);\n } else {\n boundedPrecision = minDecimals;\n }\n\n power = Math.pow(10, boundedPrecision);\n\n // Multiply up by precision, round accurately, then divide and use native toFixed():\n output = (roundingFunction(value + 'e+' + boundedPrecision) / power).toFixed(boundedPrecision);\n\n if (optionals > maxDecimals - boundedPrecision) {\n optionalsRegExp = new RegExp('\\\\.?0{1,' + (optionals - (maxDecimals - boundedPrecision)) + '}$');\n output = output.replace(optionalsRegExp, '');\n }\n\n return output;\n }\n };\n\n // avaliable options\n numeral.options = options;\n\n // avaliable formats\n numeral.formats = formats;\n\n // avaliable formats\n numeral.locales = locales;\n\n // This function sets the current locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n numeral.locale = function(key) {\n if (key) {\n options.currentLocale = key.toLowerCase();\n }\n\n return options.currentLocale;\n };\n\n // This function provides access to the loaded locale data. If\n // no arguments are passed in, it will simply return the current\n // global locale object.\n numeral.localeData = function(key) {\n if (!key) {\n return locales[options.currentLocale];\n }\n\n key = key.toLowerCase();\n\n if (!locales[key]) {\n throw new Error('Unknown locale : ' + key);\n }\n\n return locales[key];\n };\n\n numeral.reset = function() {\n for (var property in defaults) {\n options[property] = defaults[property];\n }\n };\n\n numeral.zeroFormat = function(format) {\n options.zeroFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.nullFormat = function (format) {\n options.nullFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.defaultFormat = function(format) {\n options.defaultFormat = typeof(format) === 'string' ? format : '0.0';\n };\n\n numeral.register = function(type, name, format) {\n name = name.toLowerCase();\n\n if (this[type + 's'][name]) {\n throw new TypeError(name + ' ' + type + ' already registered.');\n }\n\n this[type + 's'][name] = format;\n\n return format;\n };\n\n\n numeral.validate = function(val, culture) {\n var _decimalSep,\n _thousandSep,\n _currSymbol,\n _valArray,\n _abbrObj,\n _thousandRegEx,\n localeData,\n temp;\n\n //coerce val to string\n if (typeof val !== 'string') {\n val += '';\n\n if (console.warn) {\n console.warn('Numeral.js: Value is not string. It has been co-erced to: ', val);\n }\n }\n\n //trim whitespaces from either sides\n val = val.trim();\n\n //if val is just digits return true\n if (!!val.match(/^\\d+$/)) {\n return true;\n }\n\n //if val is empty return false\n if (val === '') {\n return false;\n }\n\n //get the decimal and thousands separator from numeral.localeData\n try {\n //check if the culture is understood by numeral. if not, default it to current locale\n localeData = numeral.localeData(culture);\n } catch (e) {\n localeData = numeral.localeData(numeral.locale());\n }\n\n //setup the delimiters and currency symbol based on culture/locale\n _currSymbol = localeData.currency.symbol;\n _abbrObj = localeData.abbreviations;\n _decimalSep = localeData.delimiters.decimal;\n if (localeData.delimiters.thousands === '.') {\n _thousandSep = '\\\\.';\n } else {\n _thousandSep = localeData.delimiters.thousands;\n }\n\n // validating currency symbol\n temp = val.match(/^[^\\d]+/);\n if (temp !== null) {\n val = val.substr(1);\n if (temp[0] !== _currSymbol) {\n return false;\n }\n }\n\n //validating abbreviation symbol\n temp = val.match(/[^\\d]+$/);\n if (temp !== null) {\n val = val.slice(0, -1);\n if (temp[0] !== _abbrObj.thousand && temp[0] !== _abbrObj.million && temp[0] !== _abbrObj.billion && temp[0] !== _abbrObj.trillion) {\n return false;\n }\n }\n\n _thousandRegEx = new RegExp(_thousandSep + '{2}');\n\n if (!val.match(/[^\\d.,]/g)) {\n _valArray = val.split(_decimalSep);\n if (_valArray.length > 2) {\n return false;\n } else {\n if (_valArray.length < 2) {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx));\n } else {\n if (_valArray[0].length === 1) {\n return ( !! _valArray[0].match(/^\\d+$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n } else {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n }\n }\n }\n }\n\n return false;\n };\n\n\n /************************************\n Numeral Prototype\n ************************************/\n\n numeral.fn = Numeral.prototype = {\n clone: function() {\n return numeral(this);\n },\n format: function(inputString, roundingFunction) {\n var value = this._value,\n format = inputString || options.defaultFormat,\n kind,\n output,\n formatFunction;\n\n // make sure we have a roundingFunction\n roundingFunction = roundingFunction || Math.round;\n\n // format based on value\n if (value === 0 && options.zeroFormat !== null) {\n output = options.zeroFormat;\n } else if (value === null && options.nullFormat !== null) {\n output = options.nullFormat;\n } else {\n for (kind in formats) {\n if (format.match(formats[kind].regexps.format)) {\n formatFunction = formats[kind].format;\n\n break;\n }\n }\n\n formatFunction = formatFunction || numeral._.numberToFormat;\n\n output = formatFunction(value, format, roundingFunction);\n }\n\n return output;\n },\n value: function() {\n return this._value;\n },\n input: function() {\n return this._input;\n },\n set: function(value) {\n this._value = Number(value);\n\n return this;\n },\n add: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum + Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([this._value, value], cback, 0) / corrFactor;\n\n return this;\n },\n subtract: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum - Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([value], cback, Math.round(this._value * corrFactor)) / corrFactor;\n\n return this;\n },\n multiply: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) * Math.round(curr * corrFactor) / Math.round(corrFactor * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback, 1);\n\n return this;\n },\n divide: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) / Math.round(curr * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback);\n\n return this;\n },\n difference: function(value) {\n return Math.abs(numeral(this._value).subtract(value).value());\n }\n };\n\n /************************************\n Default Locale && Format\n ************************************/\n\n numeral.register('locale', 'en', {\n delimiters: {\n thousands: ',',\n decimal: '.'\n },\n abbreviations: {\n thousand: 'k',\n million: 'm',\n billion: 'b',\n trillion: 't'\n },\n ordinal: function(number) {\n var b = number % 10;\n return (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n },\n currency: {\n symbol: '$'\n }\n });\n\n \n\n(function() {\n numeral.register('format', 'bps', {\n regexps: {\n format: /(BPS)/,\n unformat: /(BPS)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' BPS') ? ' ' : '',\n output;\n\n value = value * 10000;\n\n // check for space before BPS\n format = format.replace(/\\s?BPS/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + 'BPS');\n\n output = output.join('');\n } else {\n output = output + space + 'BPS';\n }\n\n return output;\n },\n unformat: function(string) {\n return +(numeral._.stringToNumber(string) * 0.0001).toFixed(15);\n }\n });\n})();\n\n\n(function() {\n var decimal = {\n base: 1000,\n suffixes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n },\n binary = {\n base: 1024,\n suffixes: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n };\n\n var allSuffixes = decimal.suffixes.concat(binary.suffixes.filter(function (item) {\n return decimal.suffixes.indexOf(item) < 0;\n }));\n var unformatRegex = allSuffixes.join('|');\n // Allow support for BPS (http://www.investopedia.com/terms/b/basispoint.asp)\n unformatRegex = '(' + unformatRegex.replace('B', 'B(?!PS)') + ')';\n\n numeral.register('format', 'bytes', {\n regexps: {\n format: /([0\\s]i?b)/,\n unformat: new RegExp(unformatRegex)\n },\n format: function(value, format, roundingFunction) {\n var output,\n bytes = numeral._.includes(format, 'ib') ? binary : decimal,\n suffix = numeral._.includes(format, ' b') || numeral._.includes(format, ' ib') ? ' ' : '',\n power,\n min,\n max;\n\n // check for space before\n format = format.replace(/\\s?i?b/, '');\n\n for (power = 0; power <= bytes.suffixes.length; power++) {\n min = Math.pow(bytes.base, power);\n max = Math.pow(bytes.base, power + 1);\n\n if (value === null || value === 0 || value >= min && value < max) {\n suffix += bytes.suffixes[power];\n\n if (min > 0) {\n value = value / min;\n }\n\n break;\n }\n }\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + suffix;\n },\n unformat: function(string) {\n var value = numeral._.stringToNumber(string),\n power,\n bytesMultiplier;\n\n if (value) {\n for (power = decimal.suffixes.length - 1; power >= 0; power--) {\n if (numeral._.includes(string, decimal.suffixes[power])) {\n bytesMultiplier = Math.pow(decimal.base, power);\n\n break;\n }\n\n if (numeral._.includes(string, binary.suffixes[power])) {\n bytesMultiplier = Math.pow(binary.base, power);\n\n break;\n }\n }\n\n value *= (bytesMultiplier || 1);\n }\n\n return value;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'currency', {\n regexps: {\n format: /(\\$)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n symbols = {\n before: format.match(/^([\\+|\\-|\\(|\\s|\\$]*)/)[0],\n after: format.match(/([\\+|\\-|\\)|\\s|\\$]*)$/)[0]\n },\n output,\n symbol,\n i;\n\n // strip format of spaces and $\n format = format.replace(/\\s?\\$\\s?/, '');\n\n // format the number\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n // update the before and after based on value\n if (value >= 0) {\n symbols.before = symbols.before.replace(/[\\-\\(]/, '');\n symbols.after = symbols.after.replace(/[\\-\\)]/, '');\n } else if (value < 0 && (!numeral._.includes(symbols.before, '-') && !numeral._.includes(symbols.before, '('))) {\n symbols.before = '-' + symbols.before;\n }\n\n // loop through each before symbol\n for (i = 0; i < symbols.before.length; i++) {\n symbol = symbols.before[i];\n\n switch (symbol) {\n case '$':\n output = numeral._.insert(output, locale.currency.symbol, i);\n break;\n case ' ':\n output = numeral._.insert(output, ' ', i + locale.currency.symbol.length - 1);\n break;\n }\n }\n\n // loop through each after symbol\n for (i = symbols.after.length - 1; i >= 0; i--) {\n symbol = symbols.after[i];\n\n switch (symbol) {\n case '$':\n output = i === symbols.after.length - 1 ? output + locale.currency.symbol : numeral._.insert(output, locale.currency.symbol, -(symbols.after.length - (1 + i)));\n break;\n case ' ':\n output = i === symbols.after.length - 1 ? output + ' ' : numeral._.insert(output, ' ', -(symbols.after.length - (1 + i) + locale.currency.symbol.length - 1));\n break;\n }\n }\n\n\n return output;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'exponential', {\n regexps: {\n format: /(e\\+|e-)/,\n unformat: /(e\\+|e-)/\n },\n format: function(value, format, roundingFunction) {\n var output,\n exponential = typeof value === 'number' && !numeral._.isNaN(value) ? value.toExponential() : '0e+0',\n parts = exponential.split('e');\n\n format = format.replace(/e[\\+|\\-]{1}0/, '');\n\n output = numeral._.numberToFormat(Number(parts[0]), format, roundingFunction);\n\n return output + 'e' + parts[1];\n },\n unformat: function(string) {\n var parts = numeral._.includes(string, 'e+') ? string.split('e+') : string.split('e-'),\n value = Number(parts[0]),\n power = Number(parts[1]);\n\n power = numeral._.includes(string, 'e-') ? power *= -1 : power;\n\n function cback(accum, curr, currI, O) {\n var corrFactor = numeral._.correctionFactor(accum, curr),\n num = (accum * corrFactor) * (curr * corrFactor) / (corrFactor * corrFactor);\n return num;\n }\n\n return numeral._.reduce([value, Math.pow(10, power)], cback, 1);\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'ordinal', {\n regexps: {\n format: /(o)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n output,\n ordinal = numeral._.includes(format, ' o') ? ' ' : '';\n\n // check for space before\n format = format.replace(/\\s?o/, '');\n\n ordinal += locale.ordinal(value);\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + ordinal;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'percentage', {\n regexps: {\n format: /(%)/,\n unformat: /(%)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' %') ? ' ' : '',\n output;\n\n if (numeral.options.scalePercentBy100) {\n value = value * 100;\n }\n\n // check for space before %\n format = format.replace(/\\s?\\%/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + '%');\n\n output = output.join('');\n } else {\n output = output + space + '%';\n }\n\n return output;\n },\n unformat: function(string) {\n var number = numeral._.stringToNumber(string);\n if (numeral.options.scalePercentBy100) {\n return number * 0.01;\n }\n return number;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'time', {\n regexps: {\n format: /(:)/,\n unformat: /(:)/\n },\n format: function(value, format, roundingFunction) {\n var hours = Math.floor(value / 60 / 60),\n minutes = Math.floor((value - (hours * 60 * 60)) / 60),\n seconds = Math.round(value - (hours * 60 * 60) - (minutes * 60));\n\n return hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds);\n },\n unformat: function(string) {\n var timeArray = string.split(':'),\n seconds = 0;\n\n // turn hours and minutes into seconds and add them all up\n if (timeArray.length === 3) {\n // hours\n seconds = seconds + (Number(timeArray[0]) * 60 * 60);\n // minutes\n seconds = seconds + (Number(timeArray[1]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[2]);\n } else if (timeArray.length === 2) {\n // minutes\n seconds = seconds + (Number(timeArray[0]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[1]);\n }\n return Number(seconds);\n }\n });\n})();\n\nreturn numeral;\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').replace(/^.*?\\s+/, '');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n // because this line doesn't have function name\n var locationParts = this.extractLocation(location ? location[1] : sanitizedLine);\n var functionName = location && sanitizedLine || undefined;\n var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n}(this, function(StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({functionName: RegExp.$1 || undefined, args: args}));\n } else {\n stack.push(new StackFrame({args: args}));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n}));\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace-gps', ['source-map', 'stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('source-map/lib/source-map-consumer'), require('stackframe'));\n } else {\n root.StackTraceGPS = factory(root.SourceMap || root.sourceMap, root.StackFrame);\n }\n}(this, function(SourceMap, StackFrame) {\n 'use strict';\n\n /**\n * Make a X-Domain request to url and callback.\n *\n * @param {String} url\n * @returns {Promise} with response text if fulfilled\n */\n function _xdr(url) {\n return new Promise(function(resolve, reject) {\n var req = new XMLHttpRequest();\n req.open('get', url);\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if ((req.status >= 200 && req.status < 300) ||\n (url.substr(0, 7) === 'file://' && req.responseText)) {\n resolve(req.responseText);\n } else {\n reject(new Error('HTTP status: ' + req.status + ' retrieving ' + url));\n }\n }\n };\n req.send();\n });\n\n }\n\n /**\n * Convert a Base64-encoded string into its original representation.\n * Used for inline sourcemaps.\n *\n * @param {String} b64str Base-64 encoded string\n * @returns {String} original representation of the base64-encoded string.\n */\n function _atob(b64str) {\n if (typeof window !== 'undefined' && window.atob) {\n return window.atob(b64str);\n } else {\n throw new Error('You must supply a polyfill for window.atob in this environment');\n }\n }\n\n function _parseJson(string) {\n if (typeof JSON !== 'undefined' && JSON.parse) {\n return JSON.parse(string);\n } else {\n throw new Error('You must supply a polyfill for JSON.parse in this environment');\n }\n }\n\n function _findFunctionName(source, lineNumber/*, columnNumber*/) {\n var syntaxes = [\n // {name} = function ({args}) TODO args capture\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,\n // function {name}({args}) m[1]=name m[2]=args\n /function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,\n // {name} = eval()\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,\n // fn_name() {\n /\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,\n // {name} = () => {\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/\n ];\n var lines = source.split('\\n');\n\n // Walk backwards in the source lines until we find the line which matches one of the patterns above\n var code = '';\n var maxLines = Math.min(lineNumber, 20);\n for (var i = 0; i < maxLines; ++i) {\n // lineNo is 1-based, source[] is 0-based\n var line = lines[lineNumber - i - 1];\n var commentPos = line.indexOf('//');\n if (commentPos >= 0) {\n line = line.substr(0, commentPos);\n }\n\n if (line) {\n code = line + code;\n var len = syntaxes.length;\n for (var index = 0; index < len; index++) {\n var m = syntaxes[index].exec(code);\n if (m && m[1]) {\n return m[1];\n }\n }\n }\n }\n return undefined;\n }\n\n function _ensureSupportedEnvironment() {\n if (typeof Object.defineProperty !== 'function' || typeof Object.create !== 'function') {\n throw new Error('Unable to consume source maps in older browsers');\n }\n }\n\n function _ensureStackFrameIsLegit(stackframe) {\n if (typeof stackframe !== 'object') {\n throw new TypeError('Given StackFrame is not an object');\n } else if (typeof stackframe.fileName !== 'string') {\n throw new TypeError('Given file name is not a String');\n } else if (typeof stackframe.lineNumber !== 'number' ||\n stackframe.lineNumber % 1 !== 0 ||\n stackframe.lineNumber < 1) {\n throw new TypeError('Given line number must be a positive integer');\n } else if (typeof stackframe.columnNumber !== 'number' ||\n stackframe.columnNumber % 1 !== 0 ||\n stackframe.columnNumber < 0) {\n throw new TypeError('Given column number must be a non-negative integer');\n }\n return true;\n }\n\n function _findSourceMappingURL(source) {\n var sourceMappingUrlRegExp = /\\/\\/[#@] ?sourceMappingURL=([^\\s'\"]+)\\s*$/mg;\n var lastSourceMappingUrl;\n var matchSourceMappingUrl;\n // eslint-disable-next-line no-cond-assign\n while (matchSourceMappingUrl = sourceMappingUrlRegExp.exec(source)) {\n lastSourceMappingUrl = matchSourceMappingUrl[1];\n }\n if (lastSourceMappingUrl) {\n return lastSourceMappingUrl;\n } else {\n throw new Error('sourceMappingURL not found');\n }\n }\n\n function _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache) {\n return new Promise(function(resolve, reject) {\n var loc = sourceMapConsumer.originalPositionFor({\n line: stackframe.lineNumber,\n column: stackframe.columnNumber\n });\n\n if (loc.source) {\n // cache mapped sources\n var mappedSource = sourceMapConsumer.sourceContentFor(loc.source);\n if (mappedSource) {\n sourceCache[loc.source] = mappedSource;\n }\n\n resolve(\n // given stackframe and source location, update stackframe\n new StackFrame({\n functionName: loc.name || stackframe.functionName,\n args: stackframe.args,\n fileName: loc.source,\n lineNumber: loc.line,\n columnNumber: loc.column\n }));\n } else {\n reject(new Error('Could not get original source for given stackframe and source map'));\n }\n });\n }\n\n /**\n * @constructor\n * @param {Object} opts\n * opts.sourceCache = {url: \"Source String\"} => preload source cache\n * opts.sourceMapConsumerCache = {/path/file.js.map: SourceMapConsumer}\n * opts.offline = True to prevent network requests.\n * Best effort without sources or source maps.\n * opts.ajax = Promise returning function to make X-Domain requests\n */\n return function StackTraceGPS(opts) {\n if (!(this instanceof StackTraceGPS)) {\n return new StackTraceGPS(opts);\n }\n opts = opts || {};\n\n this.sourceCache = opts.sourceCache || {};\n this.sourceMapConsumerCache = opts.sourceMapConsumerCache || {};\n\n this.ajax = opts.ajax || _xdr;\n\n this._atob = opts.atob || _atob;\n\n this._get = function _get(location) {\n return new Promise(function(resolve, reject) {\n var isDataUrl = location.substr(0, 5) === 'data:';\n if (this.sourceCache[location]) {\n resolve(this.sourceCache[location]);\n } else if (opts.offline && !isDataUrl) {\n reject(new Error('Cannot make network requests in offline mode'));\n } else {\n if (isDataUrl) {\n // data URLs can have parameters.\n // see http://tools.ietf.org/html/rfc2397\n var supportedEncodingRegexp =\n /^data:application\\/json;([\\w=:\"-]+;)*base64,/;\n var match = location.match(supportedEncodingRegexp);\n if (match) {\n var sourceMapStart = match[0].length;\n var encodedSource = location.substr(sourceMapStart);\n var source = this._atob(encodedSource);\n this.sourceCache[location] = source;\n resolve(source);\n } else {\n reject(new Error('The encoding of the inline sourcemap is not supported'));\n }\n } else {\n var xhrPromise = this.ajax(location, {method: 'get'});\n // Cache the Promise to prevent duplicate in-flight requests\n this.sourceCache[location] = xhrPromise;\n xhrPromise.then(resolve, reject);\n }\n }\n }.bind(this));\n };\n\n /**\n * Creating SourceMapConsumers is expensive, so this wraps the creation of a\n * SourceMapConsumer in a per-instance cache.\n *\n * @param {String} sourceMappingURL = URL to fetch source map from\n * @param {String} defaultSourceRoot = Default source root for source map if undefined\n * @returns {Promise} that resolves a SourceMapConsumer\n */\n this._getSourceMapConsumer = function _getSourceMapConsumer(sourceMappingURL, defaultSourceRoot) {\n return new Promise(function(resolve) {\n if (this.sourceMapConsumerCache[sourceMappingURL]) {\n resolve(this.sourceMapConsumerCache[sourceMappingURL]);\n } else {\n var sourceMapConsumerPromise = new Promise(function(resolve, reject) {\n return this._get(sourceMappingURL).then(function(sourceMapSource) {\n if (typeof sourceMapSource === 'string') {\n sourceMapSource = _parseJson(sourceMapSource.replace(/^\\)\\]\\}'/, ''));\n }\n if (typeof sourceMapSource.sourceRoot === 'undefined') {\n sourceMapSource.sourceRoot = defaultSourceRoot;\n }\n\n resolve(new SourceMap.SourceMapConsumer(sourceMapSource));\n }).catch(reject);\n }.bind(this));\n this.sourceMapConsumerCache[sourceMappingURL] = sourceMapConsumerPromise;\n resolve(sourceMapConsumerPromise);\n }\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, enhance function name and use source maps for a\n * better StackFrame.\n *\n * @param {StackFrame} stackframe object\n * @returns {Promise} that resolves with with source-mapped StackFrame\n */\n this.pinpoint = function StackTraceGPS$$pinpoint(stackframe) {\n return new Promise(function(resolve, reject) {\n this.getMappedLocation(stackframe).then(function(mappedStackFrame) {\n function resolveMappedStackFrame() {\n resolve(mappedStackFrame);\n }\n\n this.findFunctionName(mappedStackFrame)\n .then(resolve, resolveMappedStackFrame)\n // eslint-disable-next-line no-unexpected-multiline\n ['catch'](resolveMappedStackFrame);\n }.bind(this), reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, guess function name from location information.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.findFunctionName = function StackTraceGPS$$findFunctionName(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureStackFrameIsLegit(stackframe);\n this._get(stackframe.fileName).then(function getSourceCallback(source) {\n var lineNumber = stackframe.lineNumber;\n var columnNumber = stackframe.columnNumber;\n var guessedFunctionName = _findFunctionName(source, lineNumber, columnNumber);\n // Only replace functionName if we found something\n if (guessedFunctionName) {\n resolve(new StackFrame({\n functionName: guessedFunctionName,\n args: stackframe.args,\n fileName: stackframe.fileName,\n lineNumber: lineNumber,\n columnNumber: columnNumber\n }));\n } else {\n resolve(stackframe);\n }\n }, reject)['catch'](reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, seek source-mapped location and return new enhanced StackFrame.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.getMappedLocation = function StackTraceGPS$$getMappedLocation(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureSupportedEnvironment();\n _ensureStackFrameIsLegit(stackframe);\n\n var sourceCache = this.sourceCache;\n var fileName = stackframe.fileName;\n this._get(fileName).then(function(source) {\n var sourceMappingURL = _findSourceMappingURL(source);\n var isDataUrl = sourceMappingURL.substr(0, 5) === 'data:';\n var defaultSourceRoot = fileName.substring(0, fileName.lastIndexOf('/') + 1);\n\n if (sourceMappingURL[0] !== '/' && !isDataUrl && !(/^https?:\\/\\/|^\\/\\//i).test(sourceMappingURL)) {\n sourceMappingURL = defaultSourceRoot + sourceMappingURL;\n }\n\n return this._getSourceMapConsumer(sourceMappingURL, defaultSourceRoot)\n .then(function(sourceMapConsumer) {\n return _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache)\n .then(resolve)['catch'](function() {\n resolve(stackframe);\n });\n });\n }.bind(this), reject)['catch'](reject);\n }.bind(this));\n };\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace', ['error-stack-parser', 'stack-generator', 'stacktrace-gps'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('error-stack-parser'), require('stack-generator'), require('stacktrace-gps'));\n } else {\n root.StackTrace = factory(root.ErrorStackParser, root.StackGenerator, root.StackTraceGPS);\n }\n}(this, function StackTrace(ErrorStackParser, StackGenerator, StackTraceGPS) {\n var _options = {\n filter: function(stackframe) {\n // Filter out stackframes for this library by default\n return (stackframe.functionName || '').indexOf('StackTrace$$') === -1 &&\n (stackframe.functionName || '').indexOf('ErrorStackParser$$') === -1 &&\n (stackframe.functionName || '').indexOf('StackTraceGPS$$') === -1 &&\n (stackframe.functionName || '').indexOf('StackGenerator$$') === -1;\n },\n sourceCache: {}\n };\n\n var _generateError = function StackTrace$$GenerateError() {\n try {\n // Error must be thrown to get stack in IE\n throw new Error();\n } catch (err) {\n return err;\n }\n };\n\n /**\n * Merge 2 given Objects. If a conflict occurs the second object wins.\n * Does not do deep merges.\n *\n * @param {Object} first base object\n * @param {Object} second overrides\n * @returns {Object} merged first and second\n * @private\n */\n function _merge(first, second) {\n var target = {};\n\n [first, second].forEach(function(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n target[prop] = obj[prop];\n }\n }\n return target;\n });\n\n return target;\n }\n\n function _isShapedLikeParsableError(err) {\n return err.stack || err['opera#sourceloc'];\n }\n\n function _filtered(stackframes, filter) {\n if (typeof filter === 'function') {\n return stackframes.filter(filter);\n }\n return stackframes;\n }\n\n return {\n /**\n * Get a backtrace from invocation point.\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n get: function StackTrace$$get(opts) {\n var err = _generateError();\n return _isShapedLikeParsableError(err) ? this.fromError(err, opts) : this.generateArtificially(opts);\n },\n\n /**\n * Get a backtrace from invocation point.\n * IMPORTANT: Does not handle source maps or guess function names!\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n getSync: function StackTrace$$getSync(opts) {\n opts = _merge(_options, opts);\n var err = _generateError();\n var stack = _isShapedLikeParsableError(err) ? ErrorStackParser.parse(err) : StackGenerator.backtrace(opts);\n return _filtered(stack, opts.filter);\n },\n\n /**\n * Given an error object, parse it.\n *\n * @param {Error} error object\n * @param {Object} opts\n * @returns {Promise} for Array[StackFrame}\n */\n fromError: function StackTrace$$fromError(error, opts) {\n opts = _merge(_options, opts);\n var gps = new StackTraceGPS(opts);\n return new Promise(function(resolve) {\n var stackframes = _filtered(ErrorStackParser.parse(error), opts.filter);\n resolve(Promise.all(stackframes.map(function(sf) {\n return new Promise(function(resolve) {\n function resolveOriginal() {\n resolve(sf);\n }\n\n gps.pinpoint(sf).then(resolve, resolveOriginal)['catch'](resolveOriginal);\n });\n })));\n }.bind(this));\n },\n\n /**\n * Use StackGenerator to generate a backtrace.\n *\n * @param {Object} opts\n * @returns {Promise} of Array[StackFrame]\n */\n generateArtificially: function StackTrace$$generateArtificially(opts) {\n opts = _merge(_options, opts);\n var stackFrames = StackGenerator.backtrace(opts);\n if (typeof opts.filter === 'function') {\n stackFrames = stackFrames.filter(opts.filter);\n }\n return Promise.resolve(stackFrames);\n },\n\n /**\n * Given a function, wrap it such that invocations trigger a callback that\n * is called with a stack trace.\n *\n * @param {Function} fn to be instrumented\n * @param {Function} callback function to call with a stack trace on invocation\n * @param {Function} errback optional function to call with error if unable to get stack trace.\n * @param {Object} thisArg optional context object (e.g. window)\n */\n instrument: function StackTrace$$instrument(fn, callback, errback, thisArg) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n // Already instrumented, return given Function\n return fn;\n }\n\n var instrumented = function StackTrace$$instrumented() {\n try {\n this.get().then(callback, errback)['catch'](errback);\n return fn.apply(thisArg || this, arguments);\n } catch (e) {\n if (_isShapedLikeParsableError(e)) {\n this.fromError(e).then(callback, errback)['catch'](errback);\n }\n throw e;\n }\n }.bind(this);\n instrumented.__stacktraceOriginalFn = fn;\n\n return instrumented;\n },\n\n /**\n * Given a function that has been instrumented,\n * revert the function to it's original (non-instrumented) state.\n *\n * @param {Function} fn to de-instrument\n */\n deinstrument: function StackTrace$$deinstrument(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot de-instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n return fn.__stacktraceOriginalFn;\n } else {\n // Function not instrumented, return original\n return fn;\n }\n },\n\n /**\n * Given an error message and Array of StackFrames, serialize and POST to given URL.\n *\n * @param {Array} stackframes\n * @param {String} url\n * @param {String} errorMsg\n * @param {Object} requestOptions\n */\n report: function StackTrace$$report(stackframes, url, errorMsg, requestOptions) {\n return new Promise(function(resolve, reject) {\n var req = new XMLHttpRequest();\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 400) {\n resolve(req.responseText);\n } else {\n reject(new Error('POST to ' + url + ' failed with status: ' + req.status));\n }\n }\n };\n req.open('post', url);\n\n // Set request headers\n req.setRequestHeader('Content-Type', 'application/json');\n if (requestOptions && typeof requestOptions.headers === 'object') {\n var headers = requestOptions.headers;\n for (var header in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, header)) {\n req.setRequestHeader(header, headers[header]);\n }\n }\n }\n\n var reportPayload = {stack: stackframes};\n if (errorMsg !== undefined && errorMsg !== null) {\n reportPayload.message = errorMsg;\n }\n\n req.send(JSON.stringify(reportPayload));\n });\n }\n };\n}));\n","import { logError } from '@api/ApiCaller';\r\nimport * as HOApi from '@api/HOApi';\r\nimport * as MembershipApi from '@api/MembershipApi';\r\nimport { Path } from '@app/Views';\r\nimport { CarrierCode, ProductLine } from '@business/CommonSets';\r\nimport { PurchaseQuoteModel } from '@legacy/Purchase/Models';\r\nimport * as Constants from '@shared/Constants';\r\nimport {\r\n ElementDisplayFormatTypes,\r\n ElementDisplayNames,\r\n ElementGroupNames,\r\n ElementNames,\r\n ElementTemplateTypes,\r\n HttpStatusCodes,\r\n pages,\r\n QuoteElementAdminLabelPart,\r\n QuoteElementStubLabelPart,\r\n QuoteFeeTypes,\r\n} from '@shared/Constants';\r\nimport { ToastActions } from '@shared/Hooks';\r\nimport * as Models from '@shared/Models';\r\nimport {\r\n ComparisonElementGroupModel,\r\n ComparisonElementModel,\r\n ComparisonElementsModel,\r\n ComparisonQuoteModel,\r\n ComparisonQuotesModel,\r\n ElementDescriptions,\r\n HOClaimSummary,\r\n HomeownerQuoteModel,\r\n HOPropertyData,\r\n IUtmParameters,\r\n LoginDetails,\r\n QuoteClaimModel,\r\n QuotePremiumError,\r\n QuotePremiumErrorModel,\r\n QuotePropertyModel,\r\n} from '@shared/Models';\r\nimport * as Storage from '@shared/Storage';\r\nimport * as CardValidator from 'card-validator';\r\nimport dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport DOMPurify from 'dompurify';\r\nimport { isValidPhoneNumber } from 'libphonenumber-js';\r\nimport numeral from 'numeral';\r\nimport * as React from 'react';\r\nimport { createRef } from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\nimport * as StackTrace from 'stacktrace-js';\r\n\r\ndayjs.extend(utc);\r\n\r\nfunction isValidUrl(url: string): boolean {\r\n try {\r\n new URL(url);\r\n return true;\r\n } catch (_) {\r\n return false;\r\n }\r\n}\r\n\r\nexport class State {\r\n /**\r\n * Whether a dialog box is open in the application.\r\n */\r\n isDialogOpen: boolean;\r\n\r\n /**\r\n * True if we are in the middle of a repricing flow.\r\n */\r\n isReprice: boolean;\r\n\r\n /**\r\n * Either monthly, annual or escrow\r\n */\r\n installmentOption: string;\r\n}\r\n\r\nexport let state = new State();\r\n\r\n/**\r\n * The main <div> within the <body> element.\r\n */\r\nexport const wrapper = document.querySelector('#swyfftLayoutWrapper') as HTMLElement;\r\n\r\n/**\r\n * Navigate to a specified URL. Implemented as a separate method\r\n * largely so that we can put break points into it and figure out what's happening.\r\n */\r\nexport function navigate(url: string) {\r\n try {\r\n if (!url.startsWith('http')) {\r\n if (!url.startsWith('/')) {\r\n url = '/' + url;\r\n }\r\n\r\n url = window.location.origin + url;\r\n }\r\n\r\n // Wrapping `url` in a URL constructor will automatically tell us if the passed string is a\r\n // valid URL, as the URL constructor throws an error when not.\r\n const checkedUrl = new URL(url);\r\n window.location.assign(checkedUrl);\r\n } catch {\r\n throw new Error('Invalid URL: ' + url);\r\n }\r\n}\r\n\r\n/**\r\n * Navigate to a specified URL on a new tab.\r\n * @param url The relative path of the URL to navigate to. We append window.location.origin to the beginning to get the full absolute path.\r\n */\r\nexport function navigateOnNewTab(url: string) {\r\n if (!url.startsWith('http')) {\r\n if (!url.startsWith('/')) {\r\n url = '/' + url;\r\n }\r\n\r\n url = window.location.origin + url;\r\n }\r\n\r\n if (isValidUrl(url)) {\r\n const newWindow = window.open(url, '_blank', 'noopener');\r\n newWindow?.focus();\r\n } else {\r\n console.error('Invalid URL:', url);\r\n }\r\n}\r\n\r\nexport enum AlertType {\r\n Alert,\r\n Success,\r\n Error,\r\n Warning,\r\n Information,\r\n Confirm,\r\n}\r\n\r\n/**\r\n * The variable used for each alert method below.s\r\n */\r\nlet alert: any;\r\n\r\n/**\r\n * Displays an alert message with the specified type, text, and optional parameters.\r\n *\r\n * @param type - The type of alert to display. This should be one of the values from the AlertType enum.\r\n * @param text - The text message to display in the alert.\r\n * @param id - An optional identifier for the alert. This can be a string or a boolean.\r\n * @param sticky - An optional boolean indicating whether the alert should be sticky (not automatically dismissed).\r\n * @returns The created alert object.\r\n */\r\nexport function showAlert(type: AlertType, text: string, id?: string | boolean, sticky?: boolean): NotyOptions {\r\n let timeout = 15000;\r\n if (type === AlertType.Information || type === AlertType.Success) timeout = 5000;\r\n\r\n if (!!alert) alert.close();\r\n\r\n alert = noty({\r\n text: text,\r\n type: AlertType[type].toLowerCase(),\r\n dismissQueue: true,\r\n timeout: sticky ? false : timeout,\r\n closeWith: ['click'],\r\n layout: 'topCenter',\r\n theme: 'relax',\r\n killer: true,\r\n maxVisible: 1,\r\n id: id,\r\n animation: {\r\n open: { height: 'toggle' },\r\n close: { height: 'toggle' },\r\n easing: 'swing',\r\n speed: 250,\r\n },\r\n } as NotyOptions);\r\n\r\n return alert;\r\n}\r\n\r\nexport function showAlertAsync(type: AlertType, text: string, id?: string | boolean): Promise<void> {\r\n return new Promise(resolve => {\r\n let timeout = 15000;\r\n if (type === AlertType.Information || type === AlertType.Success) {\r\n timeout = 5000;\r\n }\r\n\r\n if (alert) {\r\n alert.close();\r\n }\r\n\r\n const n = noty({\r\n text: text,\r\n type: AlertType[type].toLowerCase(),\r\n dismissQueue: true,\r\n timeout: timeout,\r\n closeWith: ['click'],\r\n layout: 'topCenter',\r\n theme: 'relax',\r\n killer: true,\r\n maxVisible: 1,\r\n id: id,\r\n animation: {\r\n open: { height: 'toggle' },\r\n close: { height: 'toggle' },\r\n easing: 'swing',\r\n speed: 250,\r\n },\r\n buttons: [\r\n {\r\n text: 'OK',\r\n addClass: 'btn btn-default eo-ok-btn-bs',\r\n onClick(n: any) {\r\n n.close();\r\n resolve();\r\n },\r\n },\r\n ],\r\n } as any);\r\n return (alert = n);\r\n });\r\n}\r\n\r\n/**\r\n * Handles errors with specified codes and messages. Optional addLink parameter takes a node to display the link in an error modal.\r\n */\r\nexport async function handleError(code: string, message: string, details?: string, addLinks?: Node[]) {\r\n await saveAndShowError(\r\n new Models.ApiError(code, 'ERROR', message, null, details),\r\n showError,\r\n undefined,\r\n !!addLinks ? addLinks : undefined\r\n );\r\n}\r\n\r\n/**\r\n * Normalizes errors before handling them. Optional addLink parameter takes a node to display the link in an error modal.\r\n */\r\nexport function handleGeneralError(\r\n reason: any,\r\n logError: boolean = true,\r\n addLinks?: Node[],\r\n redirect403: boolean = false\r\n) {\r\n const err = normalizeError(reason);\r\n\r\n // If specified, redirect to login page when a 403 is thrown and don't show the error\r\n if (redirect403 && err.code === Constants.HttpStatusCodes.forbidden) {\r\n navigate(pages.LoginWithReturnUrl);\r\n return;\r\n }\r\n\r\n // This is what we get if a promisized modal cancels\r\n // Might very well be a better way to handle it.\r\n if (matches(err.message, 'closed') || err.code === Constants.HttpStatusCodes.aborted) return Promise.resolve();\r\n\r\n return saveAndShowError(err, showError, logError, !!addLinks ? addLinks : undefined);\r\n}\r\n\r\nexport function isQuoteIdValidFormat(value: any): boolean {\r\n if (typeof value !== 'string') return false;\r\n const regex = /[0-9a-f]{8}-?[0-9a-f]{4}-?[1-5][0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}/i;\r\n return regex.test(value);\r\n}\r\n\r\nexport async function getQuoteById(quoteId: string, checkRisk?: boolean): Promise<Models.HomeownerQuoteModel> {\r\n if (!isQuoteIdValidFormat(quoteId)) {\r\n throw new Models.ApiError(400, 'WARN', 'The quote id is invalid. Please contact customer service for support.');\r\n }\r\n\r\n let quote: HomeownerQuoteModel = {} as HomeownerQuoteModel;\r\n try {\r\n quote =\r\n false === checkRisk ? await HOApi.getQuoteByQuoteIdNoRisk(quoteId) : await HOApi.getQuoteByQuoteId(quoteId);\r\n Storage.setAddress(toAddress(quote.QuoteProperty));\r\n Storage.setAddressKey(quote.AddressKey);\r\n Storage.setQuoteId(quote.QuoteId);\r\n } catch (e) {\r\n await handleGeneralError(e);\r\n }\r\n\r\n return quote;\r\n}\r\n\r\nexport async function getQuoteByAddressKey(addressKey: string): Promise<Models.HomeownerQuoteModel> {\r\n let quote: HomeownerQuoteModel = {} as HomeownerQuoteModel;\r\n try {\r\n quote = await HOApi.getQuoteByAddressKey(addressKey);\r\n Storage.setAddress(toAddress(quote.QuoteProperty));\r\n Storage.setAddressKey(quote.AddressKey);\r\n Storage.setQuoteId(quote.QuoteId);\r\n } catch (e) {\r\n await handleGeneralError(e);\r\n }\r\n\r\n return quote;\r\n}\r\n\r\nexport async function getElementDescriptionsByState(\r\n product: string,\r\n stateKey: string,\r\n carrier: string | null\r\n): Promise<Models.ElementDescriptions | void> {\r\n let descriptions: ElementDescriptions = {} as ElementDescriptions;\r\n try {\r\n descriptions = await HOApi.getElementDescriptions(product, stateKey, carrier);\r\n Storage.setElementDescriptions(descriptions);\r\n } catch (e) {\r\n await handleGeneralError(e);\r\n }\r\n\r\n return descriptions;\r\n}\r\n\r\nexport async function saveAndShowError(\r\n err: Models.ApiError,\r\n showError: Function,\r\n log: boolean = true,\r\n addLinks?: Node[]\r\n) {\r\n if (err.code === Constants.HttpStatusCodes.aborted) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (err.code === Constants.HttpStatusCodes.authenticationFailed) {\r\n authenticationFailed();\r\n return Promise.resolve();\r\n }\r\n if (err.code === Constants.ErrorMessages.noQuote) {\r\n navigate(Constants.pages.Root);\r\n return Promise.resolve();\r\n }\r\n\r\n if (err.subCode === 'ProblemDetails') {\r\n err.subCode = '';\r\n } else if (err.errorType === Models.ApiErrorTypes.HttpStatusCode && err.code !== Constants.HttpStatusCodes.ok) {\r\n // Catch non-200 HTTP status codes. This usually returns an HTML page.\r\n // Return a error message better formulated for the UI and the logger.\r\n err.message = 'Operation failed. Try again later. If the problem persists, please contact support.';\r\n err.details =\r\n `HTTP ${err.code} returned when trying to access '${err.httpMethod}' '${err.uri}'. ` + err.details;\r\n }\r\n\r\n Storage.setErrorCode(err.code.toString());\r\n Storage.setErrorText(err.message);\r\n\r\n // ks 3/28/17 - These won't necessarily always be \"right\", but they may very well give us a context for what's going on and\r\n // help us to reproduce various weird errors.\r\n try {\r\n err.lastAddressKey = Storage.getAddressKey();\r\n err.lastAddress = Storage.getAddress();\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n if (log) {\r\n await logError(err);\r\n }\r\n\r\n return await showError(err.message, err.reference, err.details, err.subCode, !!addLinks ? addLinks : undefined);\r\n}\r\n\r\ntype ErrorDetails = {\r\n message: string | undefined;\r\n subCode: string | undefined;\r\n severity: string | undefined;\r\n declineLogId: number | undefined;\r\n ncfId: string | undefined;\r\n};\r\n\r\nfunction getErrorDetails(error: any): ErrorDetails {\r\n const errorDetails: ErrorDetails = {\r\n message: undefined,\r\n subCode: undefined,\r\n severity: undefined,\r\n declineLogId: undefined,\r\n ncfId: undefined,\r\n };\r\n\r\n if (error.hasOwnProperty('ErrorMessage')) {\r\n errorDetails.message = error.ErrorMessage;\r\n } else if (error.hasOwnProperty('ExceptionMessage')) {\r\n errorDetails.message = error.ExceptionMessage;\r\n } else if (error.hasOwnProperty('message')) {\r\n errorDetails.message = error.message;\r\n }\r\n\r\n if (error.hasOwnProperty('ErrorCode')) {\r\n errorDetails.subCode = error.ErrorCode ? error.ErrorCode.toString() : undefined;\r\n }\r\n\r\n if (error.hasOwnProperty('Severity')) {\r\n errorDetails.severity = error.Severity;\r\n }\r\n\r\n if (error.hasOwnProperty('DeclineLogId')) {\r\n errorDetails.declineLogId = error.DeclineLogId;\r\n }\r\n\r\n if (error.hasOwnProperty('NcfId')) {\r\n errorDetails.ncfId = error.NcfId;\r\n }\r\n\r\n return errorDetails;\r\n}\r\n\r\nexport function getApiError(error: any): Models.ApiError {\r\n let message = \"We've run into an unexpected problem. Please try again later.\";\r\n let statusCode: string | undefined = undefined;\r\n let httpMethod: string | undefined = undefined;\r\n let uri: string | undefined = undefined;\r\n let subCode: string | undefined = undefined;\r\n let severity: string | undefined = 'ERROR';\r\n let declineLogId: number | undefined = undefined;\r\n let ncfId: string | undefined = undefined;\r\n let errorDetails: ErrorDetails;\r\n\r\n if (error) {\r\n // Handle timeouts from CloudFlare middleware, which issues HTML as the error response.\r\n // https://swyfft.myjetbrains.com/youtrack/issue/SW-29952\r\n if (error.Error?.includes('html') && error.Error?.includes('524')) {\r\n message = 'The request timed out. Please try again or reach out to support if the problem persists.';\r\n } else if (typeof error === 'string') {\r\n // The error at this point is often a string object that needs to be parsed\r\n if (isValidJSONString(error)) {\r\n const parsed = JSON.parse(error);\r\n\r\n // The standard UiMessage property set on the server side is encoded as \"ErrorMessage\"\r\n if (parsed.ErrorMessage) {\r\n message = parsed.ErrorMessage;\r\n }\r\n } else {\r\n message = error;\r\n }\r\n // Todo: It seems that the parsing down here almost never (maybe never at all) works with the ErrorMessage property that is set by the server for most errors\r\n } else {\r\n if (error.responseJSON) {\r\n errorDetails = getErrorDetails(error.responseJSON);\r\n } else {\r\n errorDetails = getErrorDetails(error);\r\n }\r\n\r\n if (error.hasOwnProperty('status')) {\r\n if (error.status === 404) {\r\n message = 'Whoops! We were not able to find what you were looking for. Please try again later.';\r\n }\r\n\r\n statusCode = error.status ? error.status.toString() : undefined;\r\n }\r\n\r\n if (error.hasOwnProperty('httpMethod')) {\r\n httpMethod = error.httpMethod;\r\n }\r\n\r\n if (error.hasOwnProperty('uri')) {\r\n uri = error.uri;\r\n }\r\n\r\n if (errorDetails.message !== undefined) {\r\n message = errorDetails.message;\r\n }\r\n\r\n if (errorDetails.subCode !== undefined) {\r\n subCode = errorDetails.subCode;\r\n }\r\n\r\n if (errorDetails.severity !== undefined) {\r\n severity = errorDetails.severity;\r\n }\r\n\r\n if (errorDetails.declineLogId !== undefined) {\r\n declineLogId = errorDetails.declineLogId;\r\n }\r\n\r\n if (errorDetails.ncfId !== undefined) {\r\n ncfId = errorDetails.ncfId;\r\n }\r\n }\r\n\r\n const lastChar = message.slice(-1);\r\n\r\n if (lastChar !== '.' && lastChar !== '?' && lastChar !== '!') {\r\n message += '.';\r\n }\r\n }\r\n\r\n return new Models.ApiError(\r\n statusCode || '',\r\n severity || null,\r\n message,\r\n subCode,\r\n '',\r\n '',\r\n Models.ApiErrorTypes.SwyfftErrorCode,\r\n uri,\r\n httpMethod,\r\n declineLogId,\r\n ncfId\r\n );\r\n}\r\n\r\n/**\r\n * Returns the error message from a given error object. If the error object is a Response object, it will attempt to parse the JSON response\r\n * and return the underlying error from the API.\r\n * @param error An error of type Response or Error.\r\n */\r\nexport async function getMessageFromError(error: unknown, unexpectedMessage?: string): Promise<string> {\r\n unexpectedMessage = unexpectedMessage || 'An unexpected error occurred. Please try again later.';\r\n\r\n if (error instanceof Response) {\r\n if (error.status >= 400 && error.status < 500) {\r\n const json = await error.json();\r\n if (json.ErrorMessage) return json.ErrorMessage;\r\n throw json;\r\n }\r\n\r\n return unexpectedMessage;\r\n }\r\n\r\n if (error instanceof Error) return error.message;\r\n if (error instanceof Object && 'ErrorMessage' in error) return (error as any).ErrorMessage;\r\n\r\n return unexpectedMessage;\r\n}\r\n\r\n/**\r\n * Lots of different things can be thrown as errors: strings, JQuery error objects, etc.\r\n * For our common error handling to work, we need to be able to translate all those things\r\n * into something kinda standard, with a straightforward code, message, subcode and detail fields.\r\n */\r\nexport function normalizeError(reason: any): Models.ApiError {\r\n let httpMethod = '';\r\n if (reason.hasOwnProperty('httpMethod')) {\r\n httpMethod = reason.httpMethod;\r\n }\r\n\r\n let uri = window.location.href;\r\n if (reason.hasOwnProperty('uri')) {\r\n uri = reason.uri;\r\n }\r\n\r\n const apiError = reason as Models.ApiError;\r\n if (apiError.code && apiError.message) {\r\n return apiError;\r\n }\r\n\r\n if (Array.isArray(reason) && reason[0] instanceof Response && isProblemDetail(reason[1])) {\r\n const [response, problemDetail] = reason;\r\n return new Models.ApiError(\r\n response.status,\r\n 'ERROR',\r\n problemDetail.detail,\r\n 'ProblemDetails',\r\n problemDetail.title,\r\n problemDetail.traceId,\r\n Models.ApiErrorTypes.HttpStatusCode,\r\n response.url,\r\n undefined,\r\n null,\r\n null\r\n );\r\n }\r\n\r\n if (reason.hasOwnProperty('DeclineLogId')) {\r\n return new Models.ApiError(\r\n reason.Status,\r\n reason.Severity,\r\n reason.ErrorMessage,\r\n reason.ErrorCode,\r\n '',\r\n '',\r\n reason.SwyfftError ? Models.ApiErrorTypes.SwyfftErrorCode : Models.ApiErrorTypes.HttpStatusCode,\r\n reason.uri,\r\n reason.httpMethod,\r\n reason.DeclineLogId,\r\n reason.NcfId\r\n );\r\n }\r\n\r\n if (reason.status !== undefined) {\r\n const err = reason as JQueryXHR;\r\n\r\n let message: any = null;\r\n let subCode: number | null = null;\r\n let severity: string | null = null;\r\n let swyfftError: boolean = false;\r\n let declineLogId: number | null = null;\r\n let ncfId: string | null = null;\r\n\r\n if (err.responseJSON) {\r\n if (err.responseJSON.hasOwnProperty('ExceptionMessage')) {\r\n message = err.responseJSON.ExceptionMessage;\r\n }\r\n if (err.responseJSON.hasOwnProperty('DeclineLogId')) {\r\n declineLogId = err.responseJSON.DeclineLogId;\r\n }\r\n if (err.responseJSON.hasOwnProperty('NcfId')) {\r\n ncfId = err.responseJSON.NcfId;\r\n }\r\n if (err.responseJSON.hasOwnProperty('ErrorMessage')) {\r\n message = err.responseJSON.ErrorMessage;\r\n }\r\n if (err.responseJSON.hasOwnProperty('Message')) {\r\n message = err.responseJSON.Message;\r\n }\r\n if (err.responseJSON.hasOwnProperty('ErrorCode')) {\r\n subCode = err.responseJSON.ErrorCode;\r\n }\r\n if (err.responseJSON.hasOwnProperty('Severity')) {\r\n severity = err.responseJSON.Severity;\r\n }\r\n if (err.responseJSON.hasOwnProperty('SwyfftError')) {\r\n swyfftError = err.responseJSON.SwyfftError;\r\n }\r\n if (err.responseJSON.hasOwnProperty('ErrorCode')) {\r\n swyfftError = err.responseJSON.ErrorCode;\r\n }\r\n }\r\n if (!message) {\r\n if (err.responseText) {\r\n // At least sometimes, the responseText comes down as a JSON-encoded string, so let's try to decode it first.\r\n try {\r\n message = JSON.parse(err.responseText);\r\n if (typeof message !== 'object') {\r\n message = err.responseText;\r\n }\r\n } catch (unused) {\r\n message = err.responseText;\r\n }\r\n }\r\n }\r\n if (!severity) {\r\n try {\r\n severity = JSON.parse(err.responseText).severity;\r\n if (typeof severity === 'undefined') {\r\n severity = 'ERROR';\r\n }\r\n } catch (unused) {\r\n severity = 'ERROR'; // default to error\r\n }\r\n }\r\n\r\n if (message) {\r\n if (message.Message) {\r\n message = `${(message as any).Message}\\r\\n`;\r\n }\r\n if (message.MessageDetail) {\r\n message += `${(message as any).MessageDetail}`;\r\n }\r\n }\r\n\r\n if (message && message.title) message = message.title;\r\n\r\n let msg: string;\r\n if (typeof message === 'string') {\r\n msg = message.trim();\r\n } else {\r\n msg = '';\r\n }\r\n const lastChar = msg.slice(-1);\r\n if (lastChar !== '.' && lastChar !== '?' && lastChar !== '!') {\r\n msg += '.';\r\n }\r\n\r\n return new Models.ApiError(\r\n err.status,\r\n severity,\r\n msg,\r\n subCode,\r\n '',\r\n '',\r\n swyfftError ? Models.ApiErrorTypes.SwyfftErrorCode : Models.ApiErrorTypes.HttpStatusCode,\r\n uri,\r\n httpMethod,\r\n declineLogId,\r\n ncfId\r\n );\r\n }\r\n\r\n if (typeof reason === 'object' && reason.message && reason.stack && reason.name) {\r\n let reference = makeGuid().substring(0, 8).toUpperCase();\r\n return new Models.ApiError(\r\n 'Unexpected',\r\n 'ERROR',\r\n `An unexpected issue has occurred. Please try again later.`,\r\n null,\r\n `${reason.message}\\n${reference}\\n${reason.stack.toString()}`,\r\n reference,\r\n Models.ApiErrorTypes.UnexpectedError,\r\n uri\r\n );\r\n }\r\n\r\n try {\r\n let message: string;\r\n if (typeof reason === 'string') {\r\n message = reason;\r\n } else {\r\n message = reason.exceptionMessage || JSON.stringify(reason);\r\n }\r\n if (message === Constants.ErrorMessages.authFailed) {\r\n return new Models.ApiError(Constants.HttpStatusCodes.authenticationFailed, 'ERROR', message);\r\n }\r\n if (message === Constants.ErrorMessages.noQuote) {\r\n return new Models.ApiError(message, 'ERROR', message);\r\n }\r\n return new Models.ApiError(\r\n 'Unexpected',\r\n 'ERROR',\r\n message,\r\n null,\r\n '',\r\n '',\r\n Models.ApiErrorTypes.UnexpectedError,\r\n uri\r\n );\r\n } catch (e) {\r\n return new Models.ApiError(\r\n 'Unexpected',\r\n 'ERROR',\r\n reason.toString(),\r\n null,\r\n '',\r\n '',\r\n Models.ApiErrorTypes.UnexpectedError,\r\n uri\r\n );\r\n }\r\n}\r\n\r\nexport function isProblemDetail(detail: any): boolean {\r\n return (\r\n detail.hasOwnProperty('status') &&\r\n detail.hasOwnProperty('title') &&\r\n detail.hasOwnProperty('detail') &&\r\n detail.hasOwnProperty('type')\r\n );\r\n}\r\n\r\n/**\r\n * Show a predefined bootstrap error modal. Optional addLink parameter takes a node array to display links in an error modal.\r\n */\r\nexport function showError(\r\n message: string,\r\n reference?: string,\r\n detailError?: string,\r\n errorCode?: string,\r\n addLinks?: Node[]\r\n) {\r\n return new Promise<void>(resolve => {\r\n $('#errorModalBody').html(DOMPurify.sanitize(message || ''));\r\n\r\n let referenceElement = $('#errorModal .modal-footer .reference');\r\n referenceElement.toggle(!!reference);\r\n referenceElement.text(reference || '');\r\n\r\n let detailErrorElement = $('#errorModal .modal-footer #detailError');\r\n detailErrorElement.text(detailError || '');\r\n\r\n // noinspection JSVoidFunctionReturnValueUsed\r\n const modal = $('#errorModal').modal() as unknown as JQuery<HTMLElement>;\r\n\r\n const landingRedirectNeeded: boolean = Constants.landingRedirectErrorCodes.some(\r\n code => code === parseInt(errorCode || '')\r\n );\r\n\r\n // Adds any optional provided link nodes into the modal\r\n const linkContainer = document.getElementById('addModalLink');\r\n //clear any pre-existing childNodes by resetting innerHTML (see: https://stackoverflow.com/questions/3955229/remove-all-child-elements-of-a-dom-node-in-javascript)\r\n if (!!linkContainer) linkContainer.innerHTML = '';\r\n !!addLinks &&\r\n linkContainer &&\r\n addLinks.forEach(link => {\r\n linkContainer.childNodes.forEach(\r\n node => node.textContent === link.textContent && linkContainer.removeChild(node)\r\n );\r\n linkContainer.appendChild(link);\r\n });\r\n\r\n modal.on('shown.bs.modal', () => $('button.btn.btn-danger').trigger('focus'));\r\n modal.on('hidden.bs.modal', () => {\r\n resolve();\r\n if (landingRedirectNeeded) navigate(Constants.pages.Root);\r\n });\r\n });\r\n}\r\n\r\nexport async function handleNoAdminErrorAndRedirect(message: string) {\r\n await showError(message);\r\n navigate(pages.Root);\r\n}\r\n\r\n/**\r\n * Handles the case when authentication has failed.\r\n */\r\nexport async function authenticationFailed() {\r\n await logout();\r\n navigate(pages.LoginWithReturnUrl);\r\n}\r\n\r\n/**\r\n * Clears the session and local storage containers, as well as all cookies\r\n */\r\nexport async function logout() {\r\n try {\r\n await MembershipApi.logout();\r\n Storage.clearCookies('authorization');\r\n Storage.clear();\r\n } catch (e) {\r\n await handleGeneralError(e);\r\n }\r\n}\r\n\r\nexport function toAddress(obj: Models.IPhysicalAddress): string {\r\n return obj.Street1 + ', ' + obj.City + ' ' + obj.StateCode + ' ' + obj.Zip;\r\n}\r\n\r\nexport function toAddressWithBuildingNumber(obj: Models.IPhysicalAddressWithBuildingNumber): string {\r\n let address = toAddress(obj);\r\n if (obj.PhysicalBuildingNo) address = `${obj.PhysicalBuildingNo} ${address}`;\r\n return address;\r\n}\r\n\r\nexport function toAddressComplex(obj: Models.IPhysicalAddress): string {\r\n return `${obj.Street1}${obj.Street2 ? ` ${obj.Street2}` : ''} ${obj.City}, ${obj.StateCode} ${obj.Zip}`;\r\n}\r\n\r\n/** Returns an array (necessary to prevent React children as objects error) with the first line then the second line. */\r\nexport function toTwoLineAddress(obj: Models.IPhysicalAddress): string[] {\r\n let street = obj.Street1;\r\n if (obj.Street2) street += ` ${obj.Street2}`;\r\n return [`${street}`, `${obj.City}, ${obj.StateCode} ${obj.Zip}`];\r\n}\r\n\r\nexport function isInRole(role: Constants.AccessRole) {\r\n const roles = Storage.getRoles();\r\n if (!roles || !roles.length) return false;\r\n const idx = roles.indexOf(role);\r\n return idx > -1;\r\n}\r\n\r\n/** Returns true if the user has the LimitedAgent user role assigned. */\r\nexport function isLimitedAgentUser() {\r\n return Storage.hasAuth() && isInRole(Constants.AccessRole.LimitedAgent);\r\n}\r\n\r\n/**\r\n * Returns true if the user is assigned to either the Agent or the Admin roles\r\n */\r\nexport function isAtLeastAgent(): boolean {\r\n return (\r\n Storage.hasAuth() &&\r\n (isInRole(Constants.AccessRole.Agent) || isInRole(Constants.AccessRole.Admin)) &&\r\n !isInRole(Constants.AccessRole.LimitedAgent)\r\n );\r\n}\r\n\r\n/**\r\n * Returns true if the user is assigned to the Admin role (regardless of any other assignments)\r\n */\r\nexport function isAdmin(): boolean {\r\n return Storage.hasAuth() && isInRole(Constants.AccessRole.Admin);\r\n}\r\n\r\n/**\r\n * Returns true if the user is assigned to the Agency Admin role (regardless of any other assignments)\r\n */\r\nexport function isAgencyAdmin(): boolean {\r\n return Storage.hasAuth() && isInRole(Constants.AccessRole.AgencyAdmin);\r\n}\r\n\r\nexport function isManagerOfAgents() {\r\n if (Storage.hasAuth()) {\r\n const details = Storage.getLoginDetails();\r\n if (details && details.isManagerOfAgents) return true;\r\n }\r\n return false;\r\n}\r\n\r\n// #region Get Address AutoComplete Labels\r\nconst addressCache: { [address: string]: Models.PropertyData[] } = {};\r\n\r\n/**\r\n * Get homepage address autofill data: first from cache, then from our own database, then from MelissaData.\r\n */\r\nexport async function getAddressAutoCompleteLabels(\r\n request: any,\r\n response: (labels: Models.IDropdownItem[]) => void,\r\n activeStatesOnly?: boolean\r\n) {\r\n // Check to see if we've got it in the cache.\r\n const address = (request.term || '').trim();\r\n if (!address) return;\r\n let matches: Models.PropertyData[] | null = null;\r\n if (addressCache.hasOwnProperty(address)) {\r\n matches = addressCache[address];\r\n }\r\n\r\n // If we don't, use MD && our own systems to find a match.\r\n if (!matches || !matches.length) {\r\n const maxResults = 30;\r\n matches = await HOApi.searchHomeownerAddresses(address, maxResults, activeStatesOnly);\r\n }\r\n\r\n if (matches && matches.length) {\r\n addressCache[address] = matches;\r\n const labels = getLabelsFromMatches(matches);\r\n response(labels);\r\n }\r\n}\r\n\r\nexport function getLabelsFromMatches(matches: Models.PropertyData[]): Models.IDropdownItem[] {\r\n const labels: Models.IDropdownItem[] = [];\r\n matches.forEach(item => {\r\n labels.push({\r\n label: toAddress(item),\r\n value: item.AddressKey,\r\n street1: item.Street1,\r\n city: item.City,\r\n stateCode: item.StateCode,\r\n zip: item.Zip,\r\n });\r\n });\r\n return labels;\r\n}\r\n\r\n//#endregion\r\n\r\nexport function toPayMethod(paymentType: string = '', premiumType: string = '') {\r\n // Possible values for premiumType:\r\n //\r\n // annual\r\n // annual - renewal\r\n // Escrow\r\n // escrow - renewal\r\n // Monthly\r\n // monthly - renew to 2 month down\r\n // monthly - renewal\r\n // monthly - renewal 2 month down\r\n // monthly 2 mo down nb\r\n\r\n premiumType = (premiumType || '').trim().toLowerCase().split(' ')[0];\r\n premiumType = premiumType.substring(0, 1).toUpperCase() + premiumType.substring(1);\r\n\r\n paymentType = (paymentType || '').trim().toLowerCase();\r\n\r\n let payType = '';\r\n if (!premiumType.startsWith('Escrow')) {\r\n if (paymentType === 'creditcard') payType = 'Credit Card';\r\n else if (paymentType === 'echeck') payType = 'Echeck';\r\n }\r\n\r\n return {\r\n firstLine: premiumType,\r\n secondLine: payType,\r\n };\r\n}\r\n\r\nexport function formatCurrencyUS(amount: any, decimalPlaces = 0, skipCurrencySymbol = false) {\r\n if (isNaN(Number(amount))) {\r\n return '';\r\n }\r\n\r\n const isNegative = amount < 0;\r\n\r\n amount = Math.abs(amount).toString();\r\n\r\n let x = amount.split('.');\r\n if (x.length > 1 || decimalPlaces > 0) {\r\n decimalPlaces = x[1] && decimalPlaces > 0 && x[1].length > decimalPlaces ? 2 : decimalPlaces;\r\n amount = parseFloat(amount).toFixed(decimalPlaces);\r\n x = amount.split('.');\r\n }\r\n let x1 = x[0];\r\n const x2 = x.length > 1 ? '.' + x[1] : '';\r\n const rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n\r\n const currencySymbol = skipCurrencySymbol ? '' : '$';\r\n\r\n return `${isNegative ? '-' : ''}${currencySymbol}${x1}${x2}`;\r\n}\r\n\r\n/**\r\n * Formats header on quote and purchase pages.\r\n */\r\nexport function formatGrossAnnualPayment(amount: any) {\r\n if (!amount) {\r\n return '';\r\n }\r\n amount % 1 !== 0 ? (amount = amount.toFixed(2)) : (amount = amount.toFixed(0));\r\n\r\n // The gross annual payment string already includes a dollar sign,\r\n // but formatCurrencyUS adds another, so this just strips off the first dollar sign.\r\n return formatCurrencyUS(amount).substring(1);\r\n}\r\n\r\nexport function windDisplayFormat(value: string): string {\r\n switch (value) {\r\n case 'FORTIFIED Home™: Silver':\r\n return 'silver';\r\n case 'FORTIFIED Home™: Gold':\r\n return 'gold';\r\n case 'FORTIFIED Home™: Bronze':\r\n return 'bronze';\r\n case 'FORTIFIED for Safer Living®':\r\n return 'safer living';\r\n case '2006 (or later) International Residential Code':\r\n return \"Int'l Code\";\r\n case 'Hurricane Fortified for Existing Homes - Bronze Option 1':\r\n return 'Bronze 1';\r\n case 'Hurricane Fortified for Existing Homes - Bronze Option 2':\r\n return 'Bronze 2';\r\n case 'Hurricane Fortified for Existing Homes - Silver Option 1':\r\n return 'Silver 1';\r\n case 'Hurricane Fortified for Existing Homes - Silver Option 2':\r\n return 'Silver 2';\r\n case 'Hurricane Fortified for Existing Homes - Gold Option 1':\r\n return 'Gold 1';\r\n case 'Hurricane Fortified for Existing Homes - Gold Option 2':\r\n return 'Gold 2';\r\n case 'Hurricane Fortified for Safer Living':\r\n return 'Safer Living';\r\n case 'Not Selected':\r\n return 'Not Selected';\r\n case 'Partial Opening Coverage by Storm Shutters or Hurricane Resistant Laminated Glass':\r\n return 'Partial Openings';\r\n case 'All Openings Covered by Both Storm Shutters or Hurricane Resistant Laminated Glass':\r\n return 'All Openings';\r\n default:\r\n return value;\r\n }\r\n}\r\n\r\n//useful for numeric input formatting that requires percentage values without symbol suffixes.\r\nexport function addPercentageInputFormatting(value: number): number {\r\n return value * 100;\r\n}\r\n\r\nexport function stripPercentageInputFormatting(value: number): number {\r\n return value / 100;\r\n}\r\n\r\nexport function addNumeralFormatting(value: string | number, formatType: string): string {\r\n if (\r\n formatType === Constants.ElementDisplayFormatTypes.Text ||\r\n formatType === Constants.ElementDisplayFormatTypes.TextArea\r\n )\r\n return String(value);\r\n if (value === 'None') return value;\r\n return numeral(value).format(formatType);\r\n}\r\n\r\nexport function stripNumeralFormatting(value: any, displayFormat?: string): number {\r\n if (displayFormat === Constants.ElementDisplayFormatTypes.Text) return value.toString();\r\n\r\n const strippedValue = numeral(value).value();\r\n return strippedValue || 0;\r\n}\r\n\r\nexport async function logErrorSafe(err: Models.ApiError) {\r\n try {\r\n await logError(err);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n}\r\n\r\n/** Returns an array of usable keys from an enum to map. See Agents.tsx in Agencies Dashboard app for an example implementation. */\r\nexport const prepEnumToMap = (enumObject: {}): any[] => {\r\n return Object.keys(enumObject).filter(key => !isNaN(parseInt(key)));\r\n};\r\n\r\n/** Returns an array of enum string values. Used with checkboxes for adding / removing values from an array. (See Agent.tsx in App/Admin/Agencies for example.) */\r\nexport const filterEnumModelArray = (checked: boolean, array: any[], model: {}, item: number): string[] | undefined => {\r\n let filteredArray = array;\r\n if (filteredArray) {\r\n if (checked && !(filteredArray.indexOf(model[item]) > -1)) {\r\n filteredArray.push(model[item]);\r\n } else if (!checked && filteredArray.indexOf(model[item]) > -1) {\r\n filteredArray = filteredArray.filter(element => element !== model[item]);\r\n }\r\n }\r\n return filteredArray;\r\n};\r\n\r\n/**\r\n * Function to set multiple attributes on an HTML element at once.\r\n */\r\nexport function setMultipleAttributes(element: HTMLElement, attributes: {}) {\r\n for (let key in attributes) {\r\n element.setAttribute(key, attributes[key]);\r\n }\r\n}\r\n\r\n/** Remove all special characters (except spaces) from a string */\r\nexport function removeSpecialCharacters(string: string): string {\r\n return string.replace(Constants.regExPatterns.allSpecialCharacters, '');\r\n}\r\n\r\nexport function loadZenDeskChatWidget() {\r\n if (!Storage.hasAuth()) return;\r\n\r\n const script = document.createElement('script');\r\n script.setAttribute('src', 'https://static.zdassets.com/ekr/snippet.js?key=7a527260-db3a-4f7f-be4a-5f181d43830d');\r\n script.id = 'ze-snippet';\r\n document.head.appendChild(script);\r\n}\r\n\r\n/** Hides the site-wide footer (used for pages with infinite scroll). */\r\nexport function hideFooter() {\r\n let footer = document.body.querySelector('footer');\r\n if (footer) footer.setAttribute('style', 'display: none');\r\n}\r\n\r\n/** True if there are any premium errors other than moratoria or brushfire errors. */\r\nexport function disablePrintingCommercialQuote(premiumErrors: Models.QuotePremiumError[]): boolean {\r\n const { purchaseMoratoriumFactors, activeBrushfireFactors } = Constants.commercialElementGroups;\r\n\r\n return premiumErrors.some(\r\n premiumError =>\r\n premiumError.ElementGroup !== purchaseMoratoriumFactors &&\r\n premiumError.ElementGroup !== activeBrushfireFactors\r\n );\r\n}\r\n\r\n/** Returns the policy term number as a string from the provided policyNumber. */\r\nexport const getPolicyTermFromPolicyNumber = (policyNumber: string): string => {\r\n const length = policyNumber.length;\r\n return policyNumber.slice(length - 2, length);\r\n};\r\n\r\n/** Returns the next upcoming renewal policy term number as a string from the provided policyNumber. */\r\nexport const getRenewalTermFromPolicyNumber = (policyNumber: string): string => {\r\n const currentPolicyTerm = parseInt(getPolicyTermFromPolicyNumber(policyNumber));\r\n return (currentPolicyTerm + 1).toLocaleString('en-US', {\r\n minimumIntegerDigits: 2,\r\n useGrouping: false,\r\n });\r\n};\r\n\r\n/** Returns the policy date range as a string based on the provided effective date (i.e. 5/5/21 - 5/5/22 for an effective date of 5/5/21). */\r\nexport const getPolicyEffectiveDateRange = (effectiveDate: Date): string => {\r\n // The expiration date for a policy is always 1 year from the effective date minus 1 day.\r\n const formattedEffectiveDate = dayjs(effectiveDate).format(Constants.simpleDateFormat),\r\n formattedExpirationDate = dayjs(effectiveDate).add(1, 'year').format(Constants.simpleDateFormat);\r\n return `${formattedEffectiveDate} - ${formattedExpirationDate}`;\r\n};\r\n\r\n/** Returns the Upcoming Renewal Quote's effective date range based on the current policy's effective date. */\r\nexport const getUpcomingRenewalEffectiveDateRange = (currentEffectiveDate: Date): string => {\r\n // The effective date for an Upcoming Renewal Quote is the current policy effective date plus 1 year.\r\n const upcomingRenewalEffectiveDate = dayjs(currentEffectiveDate).add(1, 'year').toDate();\r\n return getPolicyEffectiveDateRange(upcomingRenewalEffectiveDate);\r\n};\r\n\r\nexport function getInsuredFullName(quote: ComparisonQuoteModel): string {\r\n return (\r\n quote.InsuredNameFirst +\r\n (quote.InsuredNameMiddle ? ` ${quote.InsuredNameMiddle}` : '') +\r\n ` ${quote.InsuredNameLast}`\r\n );\r\n}\r\n\r\n/** Creates HomeownerComparisonQuotesModel from a legacy HomeownerQuoteModel.\r\n * Specifying isReprice will add a fake manual premium adjustment element. */\r\nexport function mapToComparisonQuotes(quote: HomeownerQuoteModel, isReprice?: boolean): ComparisonQuotesModel {\r\n const comparisonQuote = {\r\n ...quote,\r\n CarrierName: CarrierCode.parse(quote.CarrierCode).displayName,\r\n OrderBy: 0,\r\n Claims: mapToComparisonClaims(quote.Claims),\r\n QuotePremiumErrors: mapToComparisonErrors(quote.QuotePremiumErrors),\r\n IsPurchased: quote.Purchased,\r\n OptionalCoveragePremiums: {},\r\n UpcomingRenewalLastDayToMakeChanges: null,\r\n ConfirmationElementNames: [],\r\n IsAfterUpcomingRenewalLastDayToMakeChanges: null,\r\n HasRenewalPolicy: false,\r\n ProductLineId: ProductLine.Homeowner.key,\r\n RelationToAdmitted: null,\r\n RatingType: quote.RatingType || '',\r\n } as ComparisonQuoteModel;\r\n\r\n return {\r\n ...quote,\r\n ProductLineId: ProductLine.Homeowner.key,\r\n Quotes: [comparisonQuote],\r\n ElementGroups: mapToComparisonGroups(quote, isReprice),\r\n QuoteProperty: mapToComparisonQuoteProperty(quote.QuoteProperty),\r\n IsMepState: quote.IsMepState || false,\r\n };\r\n}\r\n\r\n/** Creates a QuotePropertyModel from a legacy HOPropertyData. */\r\nexport function mapToComparisonQuoteProperty(quoteProperty: HOPropertyData): QuotePropertyModel {\r\n return {\r\n ...quoteProperty,\r\n Street2: quoteProperty.Street2 || null,\r\n Latitude: quoteProperty.Latitude || 0,\r\n Longitude: quoteProperty.Longitude || 0,\r\n County: quoteProperty.County || null,\r\n CalculatedImprovements: quoteProperty.CalculatedImprovements || null,\r\n AppraisedImprovements: quoteProperty.AppraisedImprovements || null,\r\n Phone: quoteProperty.Phone || null,\r\n Email: quoteProperty.Email || null,\r\n SaleDate: quoteProperty.SaleDate ? quoteProperty.SaleDate.toString() : null,\r\n LivingSpace: quoteProperty.LivingSpace || null,\r\n };\r\n}\r\n\r\n/** Creates a HomeownerQuoteClaimModel from a legacy HOClaimSummary. */\r\nexport function mapToComparisonClaims(claims: HOClaimSummary[]): QuoteClaimModel[] {\r\n return claims.map(\r\n claim =>\r\n ({\r\n Date: claim.Date,\r\n Amount: parseInt(claim.Amount),\r\n Type: claim.Type,\r\n } as QuoteClaimModel)\r\n );\r\n}\r\n\r\n/** Creates a QuotePremiumErrorModel[] from a legacy QuotePremiumError[]. */\r\nexport function mapToComparisonErrors(quotePremiumErrors: QuotePremiumError[]): QuotePremiumErrorModel[] {\r\n return quotePremiumErrors.map(qpe => ({\r\n ...qpe,\r\n Ref: createRef(),\r\n }));\r\n}\r\n\r\n/** Creates a ComparisonElementGroupModel[] from a legacy HomeownerQuoteModel.\r\n * Specifying isReprice will add a fake manual premium adjustment element. */\r\nexport function mapToComparisonGroups(quote: HomeownerQuoteModel, isReprice?: boolean): ComparisonElementGroupModel[] {\r\n const groups = quote.Elements.map(element => element.Group);\r\n return [...new Set(groups)].map(\r\n (group, index) =>\r\n ({\r\n ElementGroupOrderBy: index,\r\n ElementGroupName: group || '',\r\n Viewable: true,\r\n ComparisonElements: mapToComparisonElements(quote, group || '', isReprice),\r\n } as ComparisonElementGroupModel)\r\n );\r\n}\r\n\r\n/** Creates a ComparisonElementsModel[] from a legacy HomeownerQuoteModel for the element group passed in.\r\n * Specifying isReprice will add a fake manual premium adjustment element. */\r\nexport function mapToComparisonElements(\r\n quote: HomeownerQuoteModel,\r\n group: string,\r\n isReprice?: boolean\r\n): ComparisonElementsModel[] {\r\n const elementsByGroup = quote.Elements.filter(element => element.Group === group);\r\n\r\n if (isReprice && group === ElementGroupNames.Admin)\r\n addFakeManualPremiumAdjustmentElement(elementsByGroup, quote.ManualPremiumAdjustment);\r\n\r\n return elementsByGroup.map(\r\n element =>\r\n ({\r\n ElementDisplay: element.ElementDisplay,\r\n ElementOrderBy: element.OrderBy,\r\n Elements: [mapToComparisonElement(element, quote.QuoteId)],\r\n } as ComparisonElementsModel)\r\n );\r\n}\r\n\r\n/** Creates and pushes a faked Manual Premium Adjustment quote element into a legacy Element[] array.\r\n * This should only be used for the reprice/rater quote to simulate an element in the admin element group. */\r\nexport function addFakeManualPremiumAdjustmentElement(\r\n elementsByGroup: Models.QuoteElement[],\r\n manualPremiumAdjustment: number | undefined\r\n) {\r\n elementsByGroup.push({\r\n Group: ElementGroupNames.Admin,\r\n ElementName: ElementNames.ManualPremiumAdjustment,\r\n ElementDisplay: ElementDisplayNames.ManualPremiumAdjustment,\r\n ElementType: ElementTemplateTypes.Number,\r\n Value: (manualPremiumAdjustment || 0).toString(),\r\n DefaultValue: undefined,\r\n Editable: true,\r\n Viewable: true,\r\n DisplayFormat: ElementDisplayFormatTypes.Currency,\r\n });\r\n}\r\n\r\n/** Creates a ComparisonElementModel from a legacy Element. */\r\nexport function mapToComparisonElement(element: Models.QuoteElement, quoteId: string): ComparisonElementModel {\r\n return {\r\n QuoteId: quoteId,\r\n ...element,\r\n } as ComparisonElementModel;\r\n}\r\n\r\nexport function scrollToTop() {\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n}\r\n\r\nexport function scrollIntoView(element: HTMLElement | null | undefined, options?: ScrollIntoViewOptions) {\r\n if (element) {\r\n element.scrollIntoView(\r\n options || {\r\n behavior: 'smooth',\r\n block: 'nearest',\r\n }\r\n );\r\n }\r\n}\r\n\r\nexport function scrollToSmooth(top: number, left: number = 0) {\r\n window.scroll({\r\n top,\r\n left,\r\n behavior: 'smooth',\r\n });\r\n}\r\n\r\nexport const stripExtraQuoteElementLabelParts = (elementLabel: string) =>\r\n elementLabel.replace(QuoteElementAdminLabelPart, '').replace(QuoteElementStubLabelPart, '');\r\n\r\nexport function isNullOrEmpty(str: string | number | boolean | Date | null | undefined) {\r\n if (str === null || str === undefined || str === 'null' || str === '') return true;\r\n return typeof str !== 'string' && typeof str !== 'number' && !(str instanceof Date);\r\n}\r\n\r\n/**\r\n * Roughly equivalent to C#'s string.IsNullOrWhiteSpace().\r\n */\r\nexport function isEmpty(str: string | string[] | number | null | undefined) {\r\n if (Array.isArray(str)) {\r\n return str.length > 0;\r\n }\r\n if (typeof str === 'number') {\r\n return false;\r\n }\r\n if (typeof str === 'string') {\r\n str = str.trim();\r\n }\r\n return isNullOrEmpty(str);\r\n}\r\n\r\n//used to format elements of type 'mixed'\r\nexport function findValueFromChoices(value: any, element: Models.ComparisonElementModel) {\r\n let parsedValue = parseFloat(value);\r\n\r\n const choices = element.Choices || [];\r\n for (let i = 0; i < choices.length; i++) {\r\n const choice = choices[i];\r\n if (parseFloat(choice.Value || '') === parsedValue) {\r\n if (parsedValue === -1) return Constants.elementChoiceStatus.NotAvailable;\r\n if (parsedValue < 1) return choice.Name;\r\n }\r\n }\r\n\r\n return numeral(value).format(Constants.ElementDisplayFormatTypes.MixedCurrency);\r\n}\r\n\r\n/**\r\n * Roughly equivalent to C#'s extension method \"IsThere()\".\r\n */\r\nexport function isThere(str: string | null | undefined) {\r\n return !isEmpty(str);\r\n}\r\n\r\n/**\r\n * Trims a specified character from the end of the given string\r\n */\r\nexport function trimEnd(str: string, c = ' ') {\r\n let i = str.length - 1;\r\n // noinspection StatementWithEmptyBodyJS\r\n for (; i >= 0 && str.charAt(i) === c; i--);\r\n return str.substring(0, i + 1);\r\n}\r\n\r\nexport function isNumeric(n: any) {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n}\r\n\r\nexport function asNumber(n: any) {\r\n try {\r\n return parseFloat(n) || 0;\r\n } catch (e) {\r\n return 0;\r\n }\r\n}\r\n\r\nexport function asString(s: any): string {\r\n if (typeof s === 'undefined' || s === null) {\r\n return '';\r\n }\r\n if (typeof s === 'object') {\r\n try {\r\n return JSON.stringify(s);\r\n } catch (e) {\r\n return s.toString();\r\n }\r\n }\r\n return s.toString();\r\n}\r\n\r\n/**\r\n * Ensures Year Built value is within the specified min value\r\n */\r\nexport function validateBuildYear(buildYearInstance: number): boolean {\r\n const currentYear = dayjs().year();\r\n return (\r\n !!buildYearInstance &&\r\n buildYearInstance >= Constants.commercialValidationParameters.YearBuiltMin &&\r\n buildYearInstance <= currentYear\r\n );\r\n}\r\n\r\n/**\r\n * Ensures Credit Card value is within 20 years of today\r\n */\r\nexport function validateCreditCardYear(creditCardYearInstance: number): boolean {\r\n const currentYear = new Date().getFullYear();\r\n return (\r\n !!creditCardYearInstance && creditCardYearInstance >= currentYear && creditCardYearInstance < currentYear + 20\r\n );\r\n}\r\n\r\n/**\r\n * Ensures Credit Card Number is valid\r\n */\r\nexport function validateCreditCard(creditCardNumber: string): boolean {\r\n return CardValidator.number(creditCardNumber).isValid;\r\n}\r\n\r\n/**\r\n * Ensures Policy Number is valid\r\n */\r\nexport function isPolicyNumber(policyNumber: string | null | undefined): boolean {\r\n if (!policyNumber) return false;\r\n policyNumber = policyNumber.toUpperCase();\r\n\r\n // If you add, modify, or delete anything here, you have to update IsPolicyNumber in\r\n // Swyfft.Common/Helpers/PolicyNumberHelper.cs\r\n // These are the policy numbers that are currently used in tests.\r\n const rgxTest = /[ABCEHIJPRSTUVXYZ][0-9]{3}-[0-9]{6}-[0-9]{2}/i;\r\n const rgxTest1 =\r\n /TEST123-[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]{6}-[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]{2}/i;\r\n\r\n const rgxVave = /CA9[123]-[0-9]{6}-[0-9]{2}/i; // Vave HO, CO and Flood\r\n const rgxClearBlue6Digit = /CB[0-9]{6}-[0-9]{2}/i; // CB prefix policies are used in IMS Test\r\n const rgxClearBlue8Digit = /CB[0-9]{8}-[0-9]{2}/i; // CB prefix policies are used in IMS Test and we ran out of six-digit numbers\r\n const rgxClearBlue = /AL([09])([12])-[0-9]{6}-[0-9]{2}/i;\r\n const rgxCore = /(AB01|AB02|EK07|FBP2|GK07|HSBT|MCRE|QJT|UMBC|UMBI|UMBN|UMBT|UMBW)-[0-9]{6}-[0-9]{2}/i;\r\n const rgxCoreStateNational = /QJT-(SN|NS)[0-9]{6}-[0-9]{2}/;\r\n const rgxSwyfftHomeowners = /SWY[0-9]{6}-[0-9]{2}/i;\r\n const rgxClearBlueAdmittedPrior = /CBC-[0-9]{6}-[0-9]{2}/i;\r\n const rgxClearBlueSpecialtyPrior = /CBS-[0-9]{6}-[0-9]{2}/i;\r\n const rgxEarthquake = /PC[A-Z]-[0-9]{2}-[0-9]{7}-[0-9]{2}/i; //Earthquake policies, e.g. PCP-17-1690534-00, PCP-18-1690534-01, PCQ-19-1753920-00\r\n const rgxBenchmarkHomeowners = /SB01-[0-9]{6}-[0-9]{2}/i;\r\n const rgxTopaEAndS = /SW([PC])N-[0-9]{6}-[0-9]{2}/i;\r\n const rgxCoreGranada = /GR02-[0-9]{6}-[0-9]{2}/i;\r\n const rgxNfip = /NFIP-[0-9]{6}-[0-9]{2}/i;\r\n const rgxBrit = /BT93-[0-9]{6}-[0-9]{2}|K\\d{3}-[0-9]{6}-[0-9]{2}/i;\r\n const rgxHiscox = /HX9[345]-[0-9]{6}-[0-9]{2}/i;\r\n const rgxBenchmarkSpecialty = /SB91-[0-9]{6}-[0-9]{2}/i;\r\n\r\n return (\r\n rgxTest.test(policyNumber) ||\r\n rgxTest1.test(policyNumber) ||\r\n rgxVave.test(policyNumber) ||\r\n rgxClearBlue6Digit.test(policyNumber) ||\r\n rgxClearBlue8Digit.test(policyNumber) ||\r\n rgxClearBlue.test(policyNumber) ||\r\n rgxSwyfftHomeowners.test(policyNumber) ||\r\n rgxClearBlueAdmittedPrior.test(policyNumber) ||\r\n rgxClearBlueSpecialtyPrior.test(policyNumber) ||\r\n rgxCore.test(policyNumber) ||\r\n rgxCoreStateNational.test(policyNumber) ||\r\n rgxEarthquake.test(policyNumber) ||\r\n rgxBenchmarkHomeowners.test(policyNumber) ||\r\n rgxTopaEAndS.test(policyNumber) ||\r\n rgxCoreGranada.test(policyNumber) ||\r\n rgxNfip.test(policyNumber) ||\r\n rgxBrit.test(policyNumber) ||\r\n rgxHiscox.test(policyNumber) ||\r\n rgxBenchmarkSpecialty.test(policyNumber) ||\r\n policyNumber === 'EQ123456'\r\n ); // stupid legacy policy number, including here for the principle of the thing\r\n}\r\n\r\nexport function validateEmail(email: string): boolean {\r\n const emailRegEx = /^[a-zA-Z0-9.!#$%&’'*+/=?^_`{|}~-]+@[a-zA-Z0-9-.]+\\.[a-zA-Z]{2,}$/;\r\n return emailRegEx.test(email);\r\n}\r\n\r\n/**\r\n * Ensures Credit Card Month is valid\r\n */\r\nexport function validateCreditCardMonth(creditCardMonth: number): boolean {\r\n return !!creditCardMonth && creditCardMonth > 0 && creditCardMonth < 13;\r\n}\r\n\r\n/**\r\n * Ensures Phone Number is valid\r\n */\r\nexport const validatePhoneNumber = (value: string, required: boolean = false): boolean => {\r\n return (!required && !value) || (isValidPhoneNumber(value, 'US') && (value.replace(/\\D/g, '') || []).length === 10);\r\n};\r\n\r\n/**\r\n * Ensures Commercial Building Value is within required range\r\n */\r\nexport function validateAgainstBuildingValue(\r\n valueInstance: number | string,\r\n buildingValueInstance: number | string\r\n): boolean {\r\n valueInstance = typeof valueInstance === 'string' ? parseFloat(valueInstance) : valueInstance;\r\n buildingValueInstance =\r\n typeof buildingValueInstance === 'string' ? parseFloat(buildingValueInstance) : buildingValueInstance;\r\n return !!buildingValueInstance && (valueInstance as number) <= buildingValueInstance * 0.75;\r\n}\r\n\r\n/**\r\n * Removes country prefix and invalid characters from phone numbers\r\n */\r\nexport function fixPhoneNumber(value: string) {\r\n value = value.replace(/[^\\d-]/g, '');\r\n return value.substring(value.search(/[2-9]/));\r\n}\r\n\r\n/**\r\n * Takes an element value (as a string) that may be a numeric string, and returns it as an actual number if it's numeric,\r\n * otherwise returns just the existing string.\r\n */\r\nexport function parseElementValue(value: string): string | number {\r\n if (isNumeric(value)) {\r\n return asNumber(value);\r\n } else {\r\n return value;\r\n }\r\n}\r\n\r\nexport function asNumberNullable(n: any) {\r\n try {\r\n return parseFloat(n) || null;\r\n } catch (e) {\r\n return null;\r\n }\r\n}\r\n\r\nexport function toDisplayBool(s: string | null | undefined): string {\r\n if (typeof s === 'undefined' || s === null) return 'no';\r\n s = s.toString().toLowerCase();\r\n return toBoolean(s) ? 'yes' : 'no';\r\n}\r\n\r\nexport function addCommasToNumber(num: number | string | null): string {\r\n let nStr: string;\r\n if (typeof num == 'number') {\r\n nStr = (num as number).toString();\r\n } else if (num === null) {\r\n return 'N/A';\r\n } else {\r\n nStr = <string>num;\r\n }\r\n nStr += '';\r\n const x = nStr.split('.');\r\n let x1 = x[0];\r\n if (x1.length <= 4) return nStr;\r\n const x2 = x.length > 1 ? `.${x[1]}` : '';\r\n const rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n return x1 + x2;\r\n}\r\n\r\n/** Converts a string or number to a boolean equivalent, or false if null, undefined or empty. */\r\nexport function toBoolean(value: string | number | null | boolean | undefined) {\r\n if (typeof value === 'boolean') return value;\r\n if (isEmpty(value)) return false;\r\n if (typeof value === 'number') return value > 0;\r\n\r\n switch ((value || '').toLowerCase()) {\r\n case 'true':\r\n case 'yes':\r\n case '1':\r\n return true;\r\n case 'false':\r\n case 'no':\r\n case '0':\r\n case null:\r\n return false;\r\n default:\r\n return Boolean(value);\r\n }\r\n}\r\n\r\n/** Indicates if a string value is a boolean based on a string value. */\r\nexport function isBooleanString(value: string | null | undefined) {\r\n if (isEmpty(value)) return false;\r\n\r\n switch ((value || '').toLowerCase()) {\r\n case 'true':\r\n case 'false':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nexport function toTitleCase(str: string) {\r\n return str.replace(/\\w\\S*/g, txt => txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase());\r\n}\r\n\r\nexport function fromKebabToTitleCase(str: string) {\r\n return str\r\n .trim()\r\n .replace(/(-)+/g, ' ')\r\n .replace(/\\w\\S*/g, txt => txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase())\r\n .trim();\r\n}\r\n\r\nexport const toKebabCase = (str: string, stripPunctuation: boolean = false) => {\r\n if (stripPunctuation) str = str.replace(/[^\\w\\s']|_/g, '');\r\n return str.trim().replace(/\\s+/g, '-').toLowerCase();\r\n};\r\n\r\n/**\r\n * Take a string and try to turn it into a formatted phone number\r\n * @param str the string to format as a phone number\r\n * @return formatted phone number or original string\r\n */\r\nexport function toPhoneNumber(str: string | null | undefined): string {\r\n if (isEmpty(str)) {\r\n return '';\r\n }\r\n\r\n let r = String(str);\r\n const digits = reduceDigits(r);\r\n if (digits.length === 10) {\r\n r = digits.replace(/(\\d{3})(\\d{3})(\\d{4})/, '($1) $2-$3');\r\n }\r\n\r\n return r;\r\n}\r\n\r\n/** Creates a standard GUID compliant with v4 rules.\r\n Note: This is not cryptographically secure, but collisions are (theoretically) unlikely in most browsers.\r\n Borrowed from here: http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript\r\n @returns A 36-character string\r\n */\r\nexport function makeGuid(): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = (Math.random() * 16) | 0,\r\n v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n}\r\n\r\n/** Generates a random string five characters long. */\r\nexport function generateRandomString(): string {\r\n return (Math.random() + 1).toString(36).substring(7);\r\n}\r\n\r\n/**\r\n * Returns true if the two values are numbers (or can be converted to numbers) and they're equal to two decimal places;\r\n * or if they're equal after being trimmed and converted to lowercase.\r\n */\r\nexport function matches(\r\n s1: string | number | string[] | number[] | null | undefined,\r\n s2: string | number | string[] | number[] | null | undefined\r\n): boolean {\r\n if (Array.isArray(s1) && Array.isArray(s2)) {\r\n if (s1.length !== s2.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < s1.length; i++) {\r\n if (!matches(s1[i], s2[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n if (isNumeric(s1) && isNumeric(s2)) {\r\n const n1 = typeof s1 === 'string' ? parseFloat(s1).toFixed(2) : ((s1 || 0) as number).toFixed(2);\r\n const n2 = typeof s2 === 'string' ? parseFloat(s2).toFixed(2) : ((s2 || 0) as number).toFixed(2);\r\n return n1 === n2;\r\n }\r\n\r\n s1 = (s1 || '').toString().toLowerCase().trim();\r\n s2 = (s2 || '').toString().toLowerCase().trim();\r\n return s1 === s2;\r\n}\r\n\r\n/**\r\n * Reduces a string to its bare essentials (removing spaces, punctuation, etc.)\r\n * to make it easier to compare, for instance, distinct addresses. The idea is that\r\n * \"16615 NE 167th Ct., Woodinville, Wa 98072\" should match \"16615 NE 167th Ct WOODINVILLE WA 98072\"\r\n */\r\nexport function reduce(s: string) {\r\n return s.replace(/[^a-z0-9]+/gi, '').toLowerCase();\r\n}\r\n\r\n/**\r\n * Reduce a string to only the digits. E.g. (503) 555-6666 becomes 5035556666\r\n * @param s\r\n */\r\nexport function reduceDigits(s: string): string {\r\n return s.replace(/[^0-9]/g, '');\r\n}\r\n\r\nfunction getQueryString(query: string | null | undefined) {\r\n if (typeof query === 'undefined' || query === null) {\r\n query = window.location.search;\r\n }\r\n return query.substring(1);\r\n}\r\n\r\nexport function getQueryObject(forceLowerCase = true, query: string | null = null): Map<string, string> {\r\n const map = new Map<string, string>();\r\n\r\n getQueryString(query)\r\n .split('&')\r\n .forEach(part => {\r\n if (part) {\r\n const [key, val] = part.split('=');\r\n if (key !== '__proto__') map.set(forceLowerCase ? key.toLowerCase() : key, decodeURIComponent(val));\r\n }\r\n });\r\n\r\n return map;\r\n}\r\n\r\nexport function getQueryVariable(key: string, query: string | null = null): string {\r\n return getQueryObject(true, query).get(key.toLowerCase()) ?? '';\r\n}\r\n\r\nexport function getQueryVariables(...keys: string[]): string[] {\r\n const obj = getQueryObject();\r\n return keys.map(key => obj.get(key.toLowerCase()) ?? '');\r\n}\r\n\r\nexport class Deferred<T> {\r\n promise: Promise<T>;\r\n resolve: (value?: T | PromiseLike<T> | undefined) => void;\r\n reject: (reason?: any) => void;\r\n\r\n constructor() {\r\n this.promise = new Promise<T>((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n}\r\n\r\nexport function timeout(ms: number) {\r\n const p = new Deferred();\r\n setTimeout(() => p.resolve(), ms);\r\n return p.promise;\r\n}\r\n\r\nexport function setTimeoutAsync(time: number) {\r\n return new Promise(resolve => {\r\n setTimeout(resolve, time);\r\n });\r\n}\r\n\r\nexport function refresh() {\r\n window.location.reload();\r\n}\r\n\r\nexport function containsDuplicates(\r\n array: any[],\r\n propertyFunc: (obj: any) => any = (obj: any) => obj,\r\n ignoreEmpty: boolean = true\r\n) {\r\n const counts = array.reduce((accumulator, current) => {\r\n const value = propertyFunc(current);\r\n if (ignoreEmpty || (!ignoreEmpty && isThere(value))) accumulator[value] = (accumulator[value] || 0) + 1;\r\n return accumulator;\r\n }, {});\r\n\r\n return Object.keys(counts).some(key => counts[key] > 1);\r\n}\r\n\r\nexport function stripCountryCodeFromAddress(address: string) {\r\n let parts = address.split(' ').filter(p => p.trim());\r\n if (parts.length >= 2 && /^[0-9]{5}(?:-[0-9]{4})?$/.test(parts[parts.length - 2]))\r\n parts = parts.slice(0, parts.length - 1);\r\n return parts.join(' ').trim();\r\n}\r\n\r\n/**\r\n * Compares given value to value range.\r\n */\r\nexport function validationWithRange(value: number, minValue: number = 0, maxValue: number = Number.MAX_VALUE): boolean {\r\n //remove value formatting.\r\n value = stripNumeralFormatting(value);\r\n\r\n return value >= minValue && value <= maxValue;\r\n}\r\n\r\n/**\r\n * Compares string length to given min/max.\r\n */\r\nexport function stringLengthValidation(value: string, minValue: number = 1, maxValue: number): boolean {\r\n return value.length >= minValue && value.length <= maxValue;\r\n}\r\n\r\n/**\r\n * uses regex to remove square brackets and commas, and returns an array with each value instance. Useful when needing to use JSON.parse on values with restricted characters ($, etc.)\r\n * @param stringInstance\r\n * @param regexInstance\r\n */\r\nexport function customJsonParser(stringInstance: string, regexInstance: RegExp): string[] {\r\n return stringInstance.split(regexInstance).filter(instance => instance !== '');\r\n}\r\n\r\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\r\nif (!Array.prototype.findIndex) {\r\n Object.defineProperty(Array.prototype, 'findIndex', {\r\n value: function (predicate: any) {\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n\r\n let o = Object(this);\r\n let len = o.length >>> 0;\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n\r\n let thisArg = arguments[1];\r\n let k = 0;\r\n while (k < len) {\r\n let kValue = o[k];\r\n if (predicate.call(thisArg, kValue, k, o)) {\r\n return k;\r\n }\r\n k++;\r\n }\r\n\r\n return -1;\r\n },\r\n configurable: true,\r\n writable: true,\r\n });\r\n}\r\n\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill\r\nif (typeof Object.assign !== 'function') {\r\n // Must be writable: true, enumerable: false, configurable: true\r\n Object.defineProperty(Object, 'assign', {\r\n value: function assign(target: any, varArgs: any) {\r\n // .length of function is 2\r\n 'use strict';\r\n if (target === null || target === undefined) {\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n\r\n let to = Object(target);\r\n\r\n for (let index = 1; index < arguments.length; index++) {\r\n let nextSource = arguments[index];\r\n\r\n if (nextSource !== null && nextSource !== undefined) {\r\n for (let nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n },\r\n writable: true,\r\n configurable: true,\r\n });\r\n}\r\n\r\nexport const stripSpacesAndHyphens = (string: string) => string.replace(/-|\\s/g, '');\r\n\r\nexport const formatStringForId = (string: string) => string.replace(/\\s/g, '-').toLowerCase();\r\n\r\nexport const stripCommas = (string: string) => string.replace(/,/g, '');\r\n\r\nexport function stripHtmlTags(str: string) {\r\n const div = document.createElement('div');\r\n div.innerHTML = str;\r\n return div.textContent;\r\n}\r\n\r\n/** Runs the provided callBack function when the cursor is not within the provided element. */\r\nexport const onClickOutside = (\r\n event: React.MouseEvent<Element>,\r\n element: Element,\r\n callBack: () => void\r\n): void | null => {\r\n if (\r\n !element ||\r\n (!element.contains(event.target as Node) && !(event.target as Element).classList.contains('dropdown-item-cp'))\r\n ) {\r\n callBack();\r\n }\r\n};\r\n\r\n/** Sets the value for the specified key of the provided object and runs a callBack (runs async) to set state or perform other actions. */\r\nexport function onChange(obj: {}, key: string, value: any, callBack: () => void) {\r\n if (obj[key] && obj[key].set) obj[key].set(value);\r\n else obj[key] = value;\r\n callBack();\r\n}\r\n\r\n/** Removes characters specified in a regex pattern from a string. */\r\nexport const removeRegEx = (value: string, pattern: RegExp): string => value.replace(pattern, '');\r\n\r\n/** Returns a portion of a string including and from a provided character on. */\r\nexport const stringFromCharacter = (str: string, char: string) => str.substring(str.lastIndexOf(char));\r\n\r\n/** Returns a list of strings in an array as a formatted list or sentence with commas. */\r\nexport const arrayToStringList = (stringList: string[], conjunction: 'and' | 'or', period: boolean): string => {\r\n let filteredList: string[];\r\n let lastItem: string;\r\n let sentence: string;\r\n\r\n if (stringList.length > 1) {\r\n filteredList = stringList.filter((s: string, i: number) => i !== stringList.length - 1);\r\n\r\n lastItem = stringList.filter((s: string, i: number) => i === stringList.length - 1)[0];\r\n\r\n sentence = `${filteredList.map((item: string) => item).join(', ')}, ${conjunction} ${lastItem}${\r\n period ? '.' : ''\r\n }`;\r\n } else {\r\n sentence = stringList.map((item: string) => item).join(', ');\r\n }\r\n\r\n return sentence;\r\n};\r\n\r\n/** Adds or Removes the scrollbar element from a specific element (if provided) or the body element based on a boolean trigger. */\r\nexport const toggleScrollLock = (trigger: boolean, target?: HTMLElement) => {\r\n const scrollLockClass = 'scroll-lock-cp';\r\n const element = target !== undefined ? target : document.body;\r\n if (trigger) element.classList.add(scrollLockClass);\r\n else element.classList.remove(scrollLockClass);\r\n};\r\n\r\n/** Returns a full, formatted string version of a 2 to 3 part name. */\r\nexport const returnFullName = (first: string, middle: string | null | undefined, last: string): string =>\r\n (first ? first.trim() : '') + (middle ? ` ${middle.trim()}` : '') + (last ? ` ${last.trim()}` : '');\r\n\r\n/** Adds spaces between capitalized words in a string. */\r\nexport const convertPropertyToLabel = (s: string): string => {\r\n let converted = s.replace(/([A-Z])/g, ' $1').trim();\r\n converted = converted.replace('And ', 'and ');\r\n converted = converted.replace('Or ', 'or ');\r\n converted = converted.replace('Of ', 'of ');\r\n converted = converted.replace('With ', 'with ');\r\n return converted;\r\n};\r\n\r\n/** Converts a string to our preferred id attribute format. */\r\nexport const convertPropertyToId = (s: string): string => {\r\n let converted = s\r\n .replace(/([A-Z])/g, '-$1')\r\n .trim()\r\n .toLowerCase();\r\n converted = converted.replace(converted.charAt(0), '');\r\n return converted;\r\n};\r\n\r\n/** Converts a number of bytes into a human readable file size.*/\r\n/* https://stackoverflow.com/a/14919494/188537 */\r\nexport const humanFileSize = (bytes: number) => {\r\n const thresh = 1000,\r\n units = ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\r\n decimalPlaces = 2,\r\n r = 10 ** decimalPlaces;\r\n\r\n if (Math.abs(bytes) < thresh) return bytes + ' B';\r\n\r\n let u = -1;\r\n\r\n do {\r\n bytes /= thresh;\r\n ++u;\r\n } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1);\r\n\r\n return bytes.toFixed(decimalPlaces) + ' ' + units[u];\r\n};\r\n\r\nconst debounceTimeouts = {};\r\nexport const debounce = (key: string, callback: () => void | Promise<void>, timeout: number = 500) => {\r\n if (debounceTimeouts[key]) {\r\n clearTimeout(debounceTimeouts[key]);\r\n delete debounceTimeouts[key];\r\n }\r\n\r\n debounceTimeouts[key] = setTimeout(() => callback(), timeout);\r\n};\r\n\r\nexport function isAbortError(e: Error) {\r\n return (\r\n e.message.indexOf('The user aborted a request.') > -1 ||\r\n e.message.indexOf('signal is aborted without reason') > -1\r\n );\r\n}\r\n\r\n/** Makes first letter lowercase and leaves the remaining letters alone. Assumes we have a valid string with no numbers. */\r\nexport const toLowerCaseFirstLetter = (s: string): string => {\r\n const firstLetter = s[0].toLowerCase();\r\n const remainingLetters = s.slice(1, s.length);\r\n return firstLetter + remainingLetters;\r\n};\r\n\r\n/** Creates a query string parameter like value=100 and uri encodes the value. */\r\nexport const encodeQueryParam = (key: string, value: any): string => {\r\n const camelCaseKey = toLowerCaseFirstLetter(key);\r\n const encodedValue = encodeURIComponent(value);\r\n return camelCaseKey + '=' + encodedValue;\r\n};\r\n\r\n/** Formats an object's keys and values as a complete, uri-encoded query string. */\r\nexport const encodeQueryForRequest = (obj: object): string => {\r\n const keys = Object.keys(obj);\r\n const queryParams = keys.filter(k => obj[k]).map(k => encodeQueryParam(k, obj[k]));\r\n const queryParamsString = queryParams.join('&');\r\n return '?' + queryParamsString;\r\n};\r\n\r\n/**\r\n * Copies text to the clipboard using the Clipboard API and runs an optional callback.\r\n *\r\n * @param text - The text to be copied to the clipboard. If null or undefined, the function will return without doing anything.\r\n * @param writeTextFn - A function that writes text to the clipboard. This function should use `window.navigator.clipboard.writeText` to perform the copy operation.\r\n * @param callBack - An optional callback function to be executed after the text is copied to the clipboard.\r\n */\r\nexport async function copyText(text: string | null | undefined, callBack?: Function) {\r\n if (!text) return;\r\n\r\n try {\r\n // As document.execCommand is deprecated, the preferred solution is the Clipboard Api\r\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API\r\n // All modern browsers except IE are supported as of 5/16/22\r\n await window.navigator.clipboard.writeText(text.replace(/\\s+/g, ' ').trim());\r\n } catch (e) {\r\n const error = new Models.ApiError(\r\n '',\r\n null,\r\n 'Failed to copy text to clipboard',\r\n null,\r\n JSON.stringify(e),\r\n Models.ApiErrorTypes.UnexpectedError\r\n );\r\n await handleGeneralError(error);\r\n }\r\n if (callBack) await callBack();\r\n}\r\n\r\n/** Gets the percentage of a value within a range of numbers and returns the raw result. */\r\nexport const getPercentageInRange = (value: number, minValue: number, maxValue: number) => {\r\n if (isNaN(value)) value = 0;\r\n if (value < minValue) value = minValue;\r\n if (value > maxValue) value = maxValue;\r\n\r\n const numerator = (value - minValue) * 100,\r\n denominator = maxValue - minValue;\r\n\r\n return numerator / denominator;\r\n};\r\n\r\n/** Takes in a stateConfigName and checks whether it is at V13 or higher */\r\nexport const checkStateConfigVersionNumber = (stateConfigValue: string) => {\r\n const versionValue = stateConfigValue.split('.')[4];\r\n let versionNumberValue = versionValue.split('V')[1];\r\n\r\n return parseFloat(versionNumberValue) >= 13;\r\n};\r\n\r\n/**\r\n * Returns true if the provided URL is on the same domain as the current page.\r\n * This should normally be called to validate a user-supplied value (e.g., on the Login page)\r\n * to ensure that we're not redirecting to a malicious site.\r\n * */\r\nexport const isSameDomain = (url: string) => {\r\n const currentDomain = window.location.hostname;\r\n let urlDomain: string;\r\n try {\r\n // ks 12/21/22 - This will blow up if this is not a fully-qualified URL, e.g., it will throw for \"/some/path\".\r\n // That's actually OK, as it tells us that we can safely redirect to this URL.\r\n urlDomain = new URL(url).hostname;\r\n } catch (e) {\r\n return true;\r\n }\r\n\r\n return currentDomain === urlDomain;\r\n};\r\n\r\nexport function setUtmParametersFromQueryString() {\r\n const query = getQueryObject();\r\n if (query.get('utm_campaign') && query.get('utm_source') && query.get('utm_medium')) {\r\n Storage.setCookie('utm_campaign', query.get('utm_campaign') || '', 0);\r\n Storage.setCookie('utm_source', query.get('utm_source') || '', 0);\r\n Storage.setCookie('utm_medium', query.get('utm_medium') || '', 0);\r\n }\r\n}\r\n\r\nexport function getUtmParameters(): IUtmParameters {\r\n return {\r\n campaign: Storage.getCookie('utm_campaign'),\r\n source: Storage.getCookie('utm_source'),\r\n medium: Storage.getCookie('utm_medium'),\r\n } as IUtmParameters;\r\n}\r\n\r\n/** Takes a string in pascal case (ThisIsPascalCase) and converts it to space-separated words (This Is Pascal Case) */\r\nexport function pascalCaseToWords(input: string) {\r\n return input.split(/(?=[A-Z])/).join(' ');\r\n}\r\n\r\n/** Calculates and returns a formatted percentage of the credit card fee from the gross annual premium (if the credit card fee is present). */\r\nexport const getCreditCardFeePercentageOrDefault = (quote: HomeownerQuoteModel | PurchaseQuoteModel): string | null => {\r\n const { QuoteFees, GrossAnnualPayment } = quote,\r\n creditCardFee = QuoteFees.find(({ Name }) => Name === QuoteFeeTypes.CreditCardFee);\r\n\r\n if (!creditCardFee) return null;\r\n\r\n const percentageOfGrossPremium = (100 * creditCardFee.Value) / GrossAnnualPayment,\r\n // If we get a whole number back, remove the .0, and if not, round to nearest tenth and display that\r\n roundedPercentage = percentageOfGrossPremium.toFixed(1).replace('.0', '');\r\n\r\n return `${roundedPercentage}%`;\r\n};\r\n\r\n/** Returns a formatted credit card fee amount (if the credit card fee is present). */\r\nexport const getCreditCardFeeAmountOrDefault = (quote: HomeownerQuoteModel | PurchaseQuoteModel): string | null => {\r\n const { QuoteFees } = quote,\r\n creditCardFee = QuoteFees.find(({ Name }) => Name === QuoteFeeTypes.CreditCardFee);\r\n\r\n if (!creditCardFee) return null;\r\n\r\n return formatCurrencyUS(creditCardFee.Value, 2);\r\n};\r\n\r\n/** Truncates a decimal value. Decimal places defaults to zero. */\r\nexport function truncate(value: number, decimalPlaces: number = 0) {\r\n const modifier = Math.pow(10, decimalPlaces);\r\n return Math.trunc(value * modifier) / modifier;\r\n}\r\n\r\n/** Builds a stack trace incorporating source maps from an error. */\r\nexport async function stackTraceWithSourceMaps(error: Error): Promise<string> {\r\n const frames = await StackTrace.fromError(error);\r\n return 'Error: ' + error.message + '\\n ' + frames.map(f => f.toString()).join('\\n ');\r\n}\r\n\r\n/** Returns an array of \"empty\" models based on the type argument to generate fake data to use in a loader or other use case. */\r\nexport function createEmptyModels<TModel>(count: number) {\r\n const mockData: TModel[] = [];\r\n for (let i = 0; i < count; i++) {\r\n mockData.push({} as TModel);\r\n }\r\n return mockData;\r\n}\r\n\r\n/** Returns either a generic error message or the normalized message from an Error object returned from the server. */\r\nexport function getApiErrorMessage(error: any) {\r\n if (error instanceof Error) return error.message;\r\n\r\n // 404 errors tend to return a bunch of html as the message, so we'll override it with a more user friendly message.\r\n if (error.status === 404) {\r\n return 'Whoops! We were not able to find what you were looking for. Please try again later.';\r\n }\r\n\r\n return normalizeError(error)?.message || \"We've run into an unexpected problem. Please try again later.\";\r\n}\r\n\r\nexport function getErrorMessage(error: any) {\r\n let message: string;\r\n\r\n if (error instanceof Error) {\r\n message = error.message;\r\n } else {\r\n message = getApiError(error).message;\r\n }\r\n\r\n return message;\r\n}\r\n\r\n/** For use with the fetch api, this handler displays a toast error for 400 - 499 errors that a user may be able to address. Otherwise,\r\n * it throws an error with either a custom error message or a normalized/generic message. Returns a boolean value in case there is a low-level error which doesn't\r\n * throw and the api call being made needs to be stopped at that point. */\r\nexport function handleFetchError(response: Response, toast: ToastActions, customErrorMessage?: string): boolean {\r\n if (response.ok) {\r\n return false;\r\n }\r\n\r\n const errorMessage = getApiErrorMessage(response);\r\n if (response.status.toString() === HttpStatusCodes.forbidden) {\r\n navigate(pages.LoginWithReturnUrl);\r\n return true;\r\n }\r\n\r\n throw new Error(customErrorMessage || errorMessage);\r\n}\r\n\r\n/** Decodes an encoded html string. Returns the original string if it is already decoded html. */\r\nexport function decodeHtml(encodedHtmlString: string) {\r\n const element = document.createElement('div');\r\n element.innerHTML = encodedHtmlString;\r\n return element.childNodes[0].nodeValue || encodedHtmlString;\r\n}\r\n\r\n/** Converts the first character of a string to uppercase. */\r\nexport function capitalizeString(value: string) {\r\n return value[0].toUpperCase() + value.slice(1);\r\n}\r\n\r\n/** Returns the number closest to the given value that is divisible by the given divisor number using Math.round. */\r\nexport function getClosestNumberDivisibleBy(value: number, divisor: number) {\r\n return Math.round(value / divisor) * divisor;\r\n}\r\n\r\n/** Renders a React component into the provided container, or #main if no container given. */\r\nexport function renderComponent(component: JSX.Element, container?: HTMLElement | null) {\r\n if (!container) container = document.getElementById('main') as HTMLElement;\r\n if (container) createRoot(container).render(component);\r\n}\r\n\r\nexport async function handleApiError(error: any, toast: ToastActions, customErrorMessage?: string) {\r\n const apiError = getApiError(error);\r\n\r\n if (apiError.code === HttpStatusCodes.forbidden) {\r\n navigate(pages.LoginWithReturnUrl);\r\n return;\r\n }\r\n\r\n const message = customErrorMessage ? customErrorMessage : apiError.message;\r\n await toast.error(message);\r\n}\r\n\r\nexport function isValidJSONString(str: string) {\r\n try {\r\n JSON.parse(str);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport function getRootPageForLoggedInAgent(loginDetails: LoginDetails | null = null): string {\r\n if (!loginDetails) loginDetails = Storage.getLoginDetails();\r\n if (!loginDetails) return Constants.pages.Root;\r\n\r\n const product = ProductLine.parseOrDefault(loginDetails.appointedProductLineId || '');\r\n if (!product) return Constants.pages.Root;\r\n\r\n return product.switch({\r\n onHomeowner: () => Constants.pages.Root,\r\n onCommercial: () => Path.CommercialLanding,\r\n onFlood: () => Constants.pages.Flood,\r\n });\r\n}\r\n"],"names":["__spreadArray","to","from","pack","i","l","ar","BrowserInfo","name","version","os","NodeInfo","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOX_UA_REGEX","SEARCHBOT_OS_REGEX","REQUIRED_VERSION_PARTS","userAgentRules","operatingSystemRules","detect","userAgent","parseUserAgent","getNodeVersion","matchUserAgent","ua","matched","_a","browser","regex","uaMatch","matchedRule","match","versionParts","createVersionParts","detectOS","searchBotMatch","ii","count","isNode","output","root","factory","module","this","NProgress","Settings","options","key","value","n","started","clamp","progress","bar","speed","ease","queue","next","css","barPositionCSS","work","force","amount","initial","current","$promise","fromStart","addClass","perc","toBarPerc","parent","spinner","removeElement","removeClass","bodyStyle","vendorPrefix","min","max","barCSS","pending","fn","cssPrefixes","cssProps","camelCase","string","letter","getVendorProp","style","capName","vendorName","getStyleProp","applyCss","element","prop","properties","args","hasClass","list","classList","oldList","newList","g","support","isDataView","obj","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","items","iterator","Headers","headers","header","oldValue","callback","thisArg","consumed","body","fileReaderReady","reader","resolve","reject","readBlobAsArrayBuffer","blob","promise","readBlobAsText","encoding","readArrayBufferAsText","buf","view","chars","bufferClone","Body","rejected","isConsumed","decode","methods","normalizeMethod","method","upcased","Request","input","ctrl","reParamSearch","reQueryString","form","bytes","split","parseHeaders","rawHeaders","preProcessedHeaders","line","parts","error","Response","bodyInit","response","redirectStatuses","url","status","DOMException","message","fetch","init","request","xhr","abortXhr","fixUrl","names","Verb","AbortableResponse","controller","data","__publicField","result","json","$get","progressBar","actionToLog","k","callApi","$post","$put","$delete","$patch","logError","browserInstance","browser.detect","verb","logDetails","start","params","$logToGa","details","$logPerformance","err","callApiWithAbort","e","$sendBeacon","dataInstance","action","label","elapsed","renderComponentInNode","component","container","createRoot","createElement","visibleStyle","hiddenStyle","WaitModal","props","className","useClassName","jsxs","jsx","waitModalId","renderWaitModal","node","removeWaitModal","waitModal","ProgressModal","forceShow","ElementGroupNames","ApiError","code","severity","subCode","reference","errorType","uri","httpMethod","declineLogId","ncfId","referrer","ApiErrorTypes","DocType","MapLayerType","MapLayerType2","MapViewPolygonInfo","EmailRouting","RatingType","EnvType","Serializable","parsed","_Address","address","_b","_c","_d","_e","_f","Address","getQuoteByQuoteId","quoteId","showProgressBar","ApiCaller.$get","getQuoteByQuoteIdNoRisk","getCustomerInfo","patchQuote","patch","patchQuoteInternal","gaEventAction","ApiCaller.$patch","getEAndSFromAdmittedNonRenewal","isGuaranteed","getElementDescriptions","product","stateKey","carrier","purchasePolicy","paymentInfo","activity","postfix","Constants.reentries","ApiCaller.$post","initiateReprice","repriceModel","hideProgress","acceptReprice","getProperty","addressKey","showProgress","putProperty","pd","ApiCaller.$put","getProperties","searchHomeownerAddresses","partialAddress","activeStatesOnly","search","Models.ApiError","ApiCaller.logError","trimmedAddress","parseAddress","updatePurchaseForReentry","oldQuoteId","purchaseRequest","getPurchaseRequestForReprice","lastBoundImsQuoteGuid","quoteHistory","getZip","zip","getQuoteByAddressKey","getPolicyPaymentInvoice","policyNumber","getCountiesByStateCode","stateCode","getAdverseActionNotice","createEAndSFromAdmitted","createEAndSFromAdmittedAgentRequest","createUpcomingRenewalQuote","resetUpcomingRenewalQuote","login","ApiCaller.callApi","ApiCaller.Verb","validateContactInfo","userId","password","resetPassword","token","requestPasswordResetEmail","email","logout","getLoggedInAgentInfo","getUsers","filter","searchCommercialAgents","state","partialEmail","_extends","target","source","Action","PopStateEventType","createBrowserHistory","createBrowserLocation","window","globalHistory","pathname","hash","createLocation","createBrowserHref","createPath","getUrlBasedHistory","invariant","warning","cond","createKey","getHistoryState","location","index","parsePath","_ref","path","parsedPath","hashIndex","searchIndex","getLocation","createHref","validateLocation","v5Compat","listener","getIndex","handlePop","nextIndex","delta","history","push","historyState","replace","createURL","base","href","ResultType","immutableRouteKeys","isIndexRoute","route","convertRoutesToDataRoutes","routes","mapRouteProperties","parentPath","manifest","treePath","id","indexRoute","pathOrLayoutRoute","matchRoutes","locationArg","basename","stripBasename","branches","flattenRoutes","rankRouteBranches","matches","matchRouteBranch","safelyDecodeURI","convertRouteMatchToUiMatch","loaderData","parentsMeta","flattenRoute","relativePath","meta","joinPaths","routesMeta","computeScore","_route$path","exploded","explodeOptionalSegments","segments","first","rest","isOptional","required","restExploded","subpath","a","b","compareIndexes","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","s","initialScore","score","segment","branch","matchedParams","matchedPathname","end","remainingPathname","matchPath","normalizePathname","generatePath","originalPath","prefix","stringify","p","array","keyMatch","optional","param","pattern","matcher","compiledParams","compilePath","pathnameBase","captureGroups","memo","paramName","splatValue","safelyDecodeURIComponent","caseSensitive","regexpSource","_","startIndex","nextChar","resolvePath","fromPathname","toPathname","resolvePathname","normalizeSearch","normalizeHash","getInvalidPathError","char","field","dest","getPathContributingMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","fromSegments","toSegments","routePathnameIndex","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","ErrorResponseImpl","statusText","internal","isRouteErrorResponse","validMutationMethodsArr","validMutationMethods","validRequestMethodsArr","validRequestMethods","redirectStatusCodes","redirectPreserveMethodStatusCodes","IDLE_NAVIGATION","IDLE_FETCHER","IDLE_BLOCKER","ABSOLUTE_URL_REGEX","defaultMapRouteProperties","TRANSITIONS_STORAGE_KEY","createRouter","routerWindow","isBrowser","isServer","detectErrorBoundary","dataRoutes","inFlightDataRoutes","future","unlistenHistory","subscribers","savedScrollPositions","getScrollRestorationKey","getScrollPosition","initialScrollRestored","initialMatches","initialErrors","getInternalRouterError","getShortCircuitMatches","initialized","m","router","pendingAction","pendingPreventScrollReset","pendingNavigationController","pendingViewTransitionEnabled","appliedViewTransitions","removePageHideEventListener","isUninterruptedRevalidation","isRevalidationRequired","cancelledDeferredRoutes","cancelledFetcherLoads","fetchControllers","incrementingLoadId","pendingNavigationLoadId","fetchReloadIds","fetchRedirectIds","fetchLoadMatches","activeFetchers","deletedFetchers","activeDeferreds","blockerFunctions","ignoreNextHistoryUpdate","initialize","historyAction","blockerKey","shouldBlockNavigation","updateBlocker","blockers","updateState","startNavigation","restoreAppliedTransitions","_saveAppliedTransitions","persistAppliedTransitions","dispose","deleteFetcher","deleteBlocker","subscribe","newState","opts","completedFetchers","deletedFetchersKeys","fetcher","subscriber","completeNavigation","_temp","_location$state","_location$state2","flushSync","isActionReload","isMutationMethod","actionData","mergeLoaderData","preventScrollReset","viewTransitionOpts","priorPaths","toPaths","getSavedScrollPosition","navigate","normalizedPath","normalizeTo","submission","normalizeNavigateOptions","currentLocation","nextLocation","userReplace","revalidate","interruptActiveLoads","saveScrollPosition","routesToUse","loadingNavigation","notFoundMatches","cancelActiveDeferreds","isHashChangeOnly","createClientSideRequest","pendingActionData","pendingError","findNearestBoundary","actionOutput","handleAction","getLoadingNavigation","shortCircuited","errors","handleLoaders","navigation","getSubmittingNavigation","actionMatch","getTargetMatch","callLoaderOrAction","isRedirectResult","startRedirectNavigation","isErrorResult","boundaryMatch","isDeferredResult","overrideNavigation","fetcherSubmission","activeSubmission","getSubmissionFromNavigation","matchesToLoad","revalidatingFetchers","getMatchesToLoad","routeId","updatedFetchers","markFetchRedirectsDone","rf","revalidatingFetcher","getLoadingFetcher","abortFetcher","abortPendingFetchRevalidations","f","results","loaderResults","fetcherResults","callLoadersAndMaybeResolveData","redirect","findRedirect","fetcherKey","processLoaderData","deferredData","aborted","didAbortFetchLoads","abortStaleFetchLoads","shouldUpdateFetchers","setFetcherError","handleFetcherAction","handleFetcherLoader","requestMatches","existingFetcher","updateFetcherState","getSubmittingFetcher","abortController","fetchRequest","originatingLoadId","actionResult","getDoneFetcher","revalidationRequest","loadId","loadFetcher","staleKey","r","doneFetcher","resolveDeferredData","_temp2","redirectLocation","isDocumentReload","redirectHistoryAction","formMethod","formAction","formEncType","currentMatches","fetchersToLoad","resolveDeferredResults","getFetcher","deleteFetcherAndUpdateState","markFetchersDone","keys","doneKeys","landedId","yeetedKeys","getBlocker","blocker","newBlocker","_ref2","entries","blockerFunction","predicate","cancelledRouteIds","dfd","enableScrollRestoration","positions","getPosition","getKey","y","getScrollKey","_internalSetRoutes","newRoutes","isSubmissionNavigation","prependBasename","fromRouteId","relative","contextualMatches","activeRouteMatch","hasNakedIndexQuery","normalizeFormMethod","isFetcher","isValidMethod","getInvalidBodyError","rawFormMethod","stripHashFromPath","text","acc","_ref3","searchParams","formData","convertFormDataToSearchParams","convertSearchParamsToFormData","getLoaderMatchesUntilBoundary","boundaryId","boundaryMatches","currentUrl","nextUrl","navigationMatches","isNewLoader","currentRouteMatch","nextRouteMatch","shouldRevalidateLoader","isNewRouteInstance","fetcherMatches","fetcherMatch","shouldRevalidate","currentLoaderData","currentMatch","isNew","isMissingData","currentPath","loaderMatch","arg","routeChoice","loadLazyRouteModule","lazyRoute","routeToUpdate","routeUpdates","lazyRouteProperty","isPropertyStaticallyDefined","type","resultType","onReject","runHandler","handler","abortPromise","handlerError","values","isResponse","isSameBasename","contentType","isDeferredData","_result$init","_result$init2","signal","processRouteLoaderData","statusCode","foundError","loaderHeaders","newLoaderData","mergedLoaderData","_temp5","errorMessage","deferred","signals","isRevalidatingLoader","unwrap","v","pathMatches","_window","transitions","sessionPositions","Path","getQuotePath","quoteCount","isPurchasedQuote","getPath","FinancialRating","displayName","imagePath","_AmBestRating","AmBestRating","_DemotechRating","DemotechRating","_CarrierCode","abbreviation","sarName","imsName","amBestRating","demotechRating","logoPath","onBrit","onClearBlue","onClearBlueSpecialty","onBenchmark","onVave","onTopa","onHiscox","onNfip","onDorchester","onBenchmarkSpecialty","onGranada","onEmeraldBay","CarrierCode","all","parseOrDefault","cc","parse","_ProductLine","onHomeowner","onCommercial","onFlood","onDbb","ProductLine","activeProducts","isDeductibleBuyBackEnabled","sorted","productLine","normalized","enabled","saveLocalData","saveSessionData","getLocalData","getSessionData","clear","removeFromSession","removeFromLocal","setCookie","cname","cvalue","exdays","cookie","d","expires","getCookie","deleteCookie","clearCookies","cookies","eqPos","setRememberMe","val","getRememberMe","getUserName","hasAuth","localUserName","loginDetails","getLoginDetails","getAgentName","localAgentName","setHubContacted","getHubContacted","getAgencyFromLoginDetails","setLoginDetails","setRepriceModel","getRepriceModel","setRepriceQuoteId","setAddressKey","getAddressKey","setEmail","setErrorCode","setErrorText","setCoverageDate","coverageDate","useJsonWebToken","setAuth","auth","rememberMe","hasJwt","hasJwtAuth","hasCookieAuth","setRoles","roles","getRoles","setAddress","getAddress","setOnlyMyQuotes","getOnlyMyQuotes","setQuoteId","getQuoteId","setElementDescriptions","descriptions","setLastLocation","getLastLocation","cardTypes","cardTypes_1","clone_1","clone","originalObject","matches_1","matchesRange","cardNumber","maxLengthToCheck","substr","integerRepresentationOfCardNumber","matchesPattern","addMatchingCardsToResults_1","require$$0","require$$1","addMatchingCardsToResults","cardConfiguration","patternLength","clonedCardConfiguration","isValidInputType_1","isValidInputType","findBestMatch_1","hasEnoughResultsToDetermineBestMatch","numberOfResultsWithMaxStrengthProperty","findBestMatch","bestMatch","__assign","t","add_matching_cards_to_results_1","is_valid_input_type_1","require$$2","find_best_match_1","require$$3","require$$4","customCards","cardNames","ORIGINAL_TEST_ORDER","testOrder","findType","cardType","getAllCardTypes","getCardPosition","ignoreErrorForNotExisting","position","creditCardType","config","existingCardPosition","updates","clonedCard","currentPosition","dist","cardholderName_1","CARD_NUMBER_REGEX","MAX_LENGTH","verification","isValid","isPotentiallyValid","cardholderName","luhn10","identifier","sum","alt","num","luhn10_1","cardNumber_1","getCardTypes","card","maxLength","testCardValue","potentialTypes","expirationYear_1","DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE","isCurrentYear","expirationYear","maxElapsedYear","len","currentYear","firstTwo","currentFirstTwo","numericValue","twoDigitYear","valid","isArray","parseDate_1","expiration_year_1","is_array_1","getNumberOfMonthDigitsInDateString","dateString","firstCharacter","assumedYear","parseDate","datestring","date","numberOfDigitsInMonth","month","expirationMonth_1","isValidForThisYear","expirationMonth","currentMonth","expirationDate_1","parse_date_1","expiration_month_1","year","expirationDate","fullDate","monthValid","yearValid","cvv_1","DEFAULT_LENGTH","includes","thing","maximum","cvv","postalCode_1","DEFAULT_MIN_POSTAL_CODE_LENGTH","postalCode","minLength","__createBinding","o","k2","desc","__setModuleDefault","__importStar","mod","cardholder_name_1","card_number_1","expiration_date_1","require$$5","require$$6","postal_code_1","require$$7","cardValidator","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","apply","construct","x","fun","thisValue","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","unconstruct","func","_len","_key","_len2","_key2","addToSet","set","transformCaseFunc","lcElement","cleanArray","object","newObject","property","lookupGetter","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","html","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","NODE_TYPE","getGlobal","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","suffix","ATTR_NAME","policyName","scriptUrl","_createHooksMap","createDOMPurify","DOMPurify","document","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","NamedNodeMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","tagName","parentTagName","_forceRemove","_removeAttribute","_initDocument","dirty","doc","leadingWhitespace","dirtyPayload","_createNodeIterator","_isClobbered","_isNode","_executeHooks","currentNode","hook","_sanitizeElements","content","_isBasicCustomElement","parentNode","childNodes","childCount","childClone","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attributes","hookEvent","attr","namespaceURI","attrValue","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","serializedHTML","tag","entryPoint","hookFunction","purify","metadata","withMetadataArgument","_arguments","_typeof","_createClass","Constructor","protoProps","staticProps","_classCallCheck","instance","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","self","call","_assertThisInitialized","_wrapNativeSuper","Class","_cache","_isNativeFunction","Wrapper","_construct","Parent","ParseError","_Error","_super","_this","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","VALID_PUNCTUATION","PLUS_CHARS","compare","pa","pb","na","nb","objectConstructor","isObject","_defineProperties","descriptor","V3","V4","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","validateMetadata","setVersion","countryCode","country","callingCode","countryCodes","NumberingPlan","_type","globalMetadataObject","formats","Format","_type2","getType","Type","format","FIRST_GROUP_ONLY_PREFIX_PATTERN","types","typeOf","getCountryCallingCode","isSupportedCountry","RFC3966_EXTN_PREFIX","getExtensionDigitsPattern","createExtensionPattern","purpose","extLimitAfterExplicitLabel","extLimitAfterLikelyLabel","extLimitAfterAmbiguousChar","extLimitWhenNotSure","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","explicitExtLabels","ambiguousExtLabels","ambiguousSeparator","possibleSeparatorsNumberExtLabelNoComma","autoDiallingAndExtLabelsFound","rfcExtn","explicitExtn","ambiguousExtn","americanStyleExtnWithSuffix","autoDiallingExtn","onlyCommasExtn","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","number","isViablePhoneNumberStart","EXTN_PATTERN","extractExtension","numberWithoutExtension","DIGITS","parseDigit","character","_createForOfIteratorHelperLoose","allowArrayLike","it","_unsupportedIterableToArray","minLen","_arrayLikeToArray","arr","arr2","parseIncompletePhoneNumber","_iterator","_step","parsePhoneNumberCharacter","prevParsedCharacters","emitEvent","checkNumberLength","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","actual_length","minimum_length","isPossiblePhoneNumber","isPossibleNumber","matchesEntirely","regular_expression","NON_FIXED_LINE_PHONE_TYPES","getNumberType","isNumberTypeEqualTo","isValidNumber","getPossibleCountriesForNumber","_metadata","possibleCountries","couldNationalNumberBelongToCountry","applyInternationalSeparatorStyle","formattedNumber","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","SINGLE_IDD_PREFIX_REG_EXP","getIddPrefix","countryMetadata","formatRFC3966","ext","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","DEFAULT_OPTIONS","extension","formatNumber","countryCallingCode","formatNationalNumber","addExtension","formatIDD","carrierCode","formatAs","chooseFormatForNumber","availableFormats","nationalNnumber","lastLeadingDigitsPattern","formatExtension","fromCountry","fromCountryCallingCode","iddPrefix","PhoneNumber","countryOrCountryCallingCode","_getCountryAndCountry","getCountryAndCountryCallingCode","phoneNumber","_format","isCountryCode","metadataJson","CAPTURING_DIGIT_PATTERN","stripIddPrefix","IDDPrefixPattern","matchedGroups","extractNationalNumberFromPossiblyIncompleteNumber","prefixPattern","prefixMatch","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","nationalPrefix","possiblePositionOfTheFirstCapturedGroup","possibleNationalPrefix","extractNationalNumber","_extractNationalNumbe","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","nationalNumberBefore","nationalNumberAfter","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","possibleShorterNumber","possibleShorterNationalNumber","_extractNationalNumbe2","extractCountryCallingCode","isNumberWithIddPrefix","numberWithoutIDD","_extractCountryCallin","shorterNumber","_countryCallingCode","getCountryByNationalNumber","nationalPhoneNumber","countries","defaultCountry","matchingCountries","getCountryByCallingCode","PLUS_SIGN","RFC3966_VISUAL_SEPARATOR_","RFC3966_PHONE_DIGIT_","RFC3966_GLOBAL_NUMBER_DIGITS_","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","ALPHANUM_","RFC3966_DOMAINLABEL_","VALID_ALPHA_","RFC3966_TOPLABEL_","RFC3966_DOMAINNAME_","RFC3966_DOMAINNAME_PATTERN_","RFC3966_PREFIX_","RFC3966_PHONE_CONTEXT_","RFC3966_ISDN_SUBADDRESS_","extractPhoneContext","numberToExtractFrom","indexOfPhoneContext","phoneContextStart","phoneContextEnd","isPhoneContextValid","phoneContext","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","numberToParse","extractFormattedPhoneNumber","phoneNumberString","indexOfRfc3966Prefix","indexOfNationalNumber","indexOfIsdn","MAX_INPUT_STRING_LENGTH","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","_parseInput","parseInput","formattedPhoneNumber","_parsePhoneNumber","parsePhoneNumber","countryCallingCodeSource","_extractFormattedPhoneNumber","extract","throwOnError","startsAt","v2","withExtensionStripped","defaultCallingCode","exactCountry","parsePhoneNumberWithError","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_i","_arr","_n","_s","normalizeArguments","_Array$prototype$slic","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","isValidPhoneNumber","_normalizeArguments","_isValidPhoneNumber","global","numeral","VERSION","locales","defaults","Numeral","kind","unformatFunction","regexp","roundingFunction","locale","negP","optDec","leadingCount","abbr","trillion","billion","million","thousand","decimal","neg","abbrForce","abs","int","precision","signed","thousands","stringOriginal","abbreviations","subString","accum","mn","maxDecimals","optionals","splitValue","minDecimals","boundedPrecision","optionalsRegExp","power","culture","_decimalSep","_thousandSep","_currSymbol","_valArray","_abbrObj","_thousandRegEx","localeData","temp","inputString","formatFunction","corrFactor","cback","curr","currI","O","space","binary","allSuffixes","item","unformatRegex","bytesMultiplier","symbol","exponential","ordinal","hours","minutes","seconds","timeArray","_isNumber","_capitalize","str","_getter","booleanProps","numericProps","stringProps","arrayProps","objectProps","StackFrame","fileName","lineNumber","columnNumber","functionName","argsStartIndex","argsEndIndex","locationString","j","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","urlLike","regExp","filtered","sanitizedLine","locationParts","functionNameRegex","lineRE","lines","tokens","functionCall","argsRaw","stack","maxStackSize","getArg","aArgs","aName","aDefaultValue","exports","urlRegexp","dataUrlRegexp","urlParse","aUrl","urlGenerate","aParsedUrl","normalize","aPath","isAbsolute","part","up","join","aRoot","aPathUrl","aRootUrl","joined","level","supportsNullProto","identity","toSetString","aStr","isProtoString","fromSetString","length","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","compareByGeneratedPositionsDeflated","onlyCompareGenerated","strcmp","aStr1","aStr2","compareByGeneratedPositionsInflated","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","util","has","ArraySet","aArray","aAllowDuplicates","sStr","isDuplicate","idx","aIdx","arraySet","intToCharMap","base64","charCode","bigA","bigZ","littleA","littleZ","zero","nine","plus","slash","littleOffset","numberOffset","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","base64Vlq","encoded","digit","vlq","aIndex","aOutParam","strLen","shift","continuation","swap","ary","randomIntInRange","low","high","doQuickSort","comparator","pivotIndex","pivot","q","quickSort","binarySearch","base64VLQ","SourceMapConsumer","aSourceMap","sourceMap","IndexedSourceMapConsumer","BasicSourceMapConsumer","c","aSourceRoot","aCallback","aContext","aOrder","context","order","mappings","sourceRoot","mapping","needle","originalLine","originalColumn","sourceMapConsumer","sources","sourcesContent","file","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","Mapping","generatedLine","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","originalMappings","aMappings","aLineName","aColumnName","aComparator","nextMapping","sc","aSource","nullOnMissing","fileUriAbsPath","sections","lastOffset","offset","offsetLine","offsetColumn","sectionIndex","section","generatedPosition","ret","sectionMappings","adjustedMapping","SourceMap","_xdr","req","_atob","b64str","_parseJson","_findFunctionName","syntaxes","maxLines","commentPos","_ensureSupportedEnvironment","_ensureStackFrameIsLegit","stackframe","_findSourceMappingURL","sourceMappingUrlRegExp","lastSourceMappingUrl","matchSourceMappingUrl","_extractLocationInfoFromSourceMapSource","sourceCache","loc","mappedSource","StackTraceGPS","isDataUrl","supportedEncodingRegexp","sourceMapStart","encodedSource","xhrPromise","sourceMappingURL","defaultSourceRoot","sourceMapConsumerPromise","sourceMapSource","mappedStackFrame","resolveMappedStackFrame","guessedFunctionName","ErrorStackParser","StackGenerator","_options","_generateError","_merge","second","_isShapedLikeParsableError","_filtered","stackframes","gps","sf","resolveOriginal","stackFrames","errback","instrumented","errorMsg","requestOptions","reportPayload","dayjs","utc","isValidUrl","checkedUrl","navigateOnNewTab","newWindow","AlertType","AlertType2","alert","showAlert","sticky","timeout","showAlertAsync","handleError","addLinks","saveAndShowError","showError","handleGeneralError","reason","redirect403","normalizeError","Constants.HttpStatusCodes","pages","isQuoteIdValidFormat","getQuoteById","checkRisk","quote","HOApi.getQuoteByQuoteIdNoRisk","HOApi.getQuoteByQuoteId","Storage.setAddress","toAddress","Storage.setAddressKey","Storage.setQuoteId","HOApi.getQuoteByAddressKey","getElementDescriptionsByState","HOApi.getElementDescriptions","Storage.setElementDescriptions","log","authenticationFailed","Constants.ErrorMessages","Constants.pages","Models.ApiErrorTypes","Storage.setErrorCode","Storage.setErrorText","Storage.getAddressKey","Storage.getAddress","getErrorDetails","errorDetails","getApiError","isValidJSONString","lastChar","getMessageFromError","unexpectedMessage","apiError","isProblemDetail","problemDetail","swyfftError","msg","makeGuid","detail","detailError","errorCode","referenceElement","modal","landingRedirectNeeded","Constants.landingRedirectErrorCodes","linkContainer","link","handleNoAdminErrorAndRedirect","MembershipApi.logout","Storage.clearCookies","Storage.clear","toAddressWithBuildingNumber","toAddressComplex","isInRole","role","Storage.getRoles","isLimitedAgentUser","Storage.hasAuth","Constants.AccessRole","isAtLeastAgent","isAdmin","isAgencyAdmin","isManagerOfAgents","Storage.getLoginDetails","addressCache","getAddressAutoCompleteLabels","HOApi.searchHomeownerAddresses","labels","getLabelsFromMatches","toPayMethod","paymentType","premiumType","payType","formatCurrencyUS","decimalPlaces","skipCurrencySymbol","x1","x2","rgx","formatGrossAnnualPayment","windDisplayFormat","addPercentageInputFormatting","stripPercentageInputFormatting","addNumeralFormatting","formatType","Constants.ElementDisplayFormatTypes","stripNumeralFormatting","displayFormat","logErrorSafe","prepEnumToMap","enumObject","filterEnumModelArray","checked","model","filteredArray","setMultipleAttributes","removeSpecialCharacters","Constants.regExPatterns","loadZenDeskChatWidget","script","hideFooter","footer","disablePrintingCommercialQuote","premiumErrors","purchaseMoratoriumFactors","activeBrushfireFactors","Constants.commercialElementGroups","premiumError","getPolicyTermFromPolicyNumber","getRenewalTermFromPolicyNumber","getPolicyEffectiveDateRange","effectiveDate","formattedEffectiveDate","Constants.simpleDateFormat","formattedExpirationDate","getUpcomingRenewalEffectiveDateRange","currentEffectiveDate","upcomingRenewalEffectiveDate","getInsuredFullName","mapToComparisonQuotes","isReprice","comparisonQuote","mapToComparisonClaims","mapToComparisonErrors","mapToComparisonGroups","mapToComparisonQuoteProperty","quoteProperty","claims","claim","quotePremiumErrors","qpe","createRef","groups","group","mapToComparisonElements","elementsByGroup","addFakeManualPremiumAdjustmentElement","mapToComparisonElement","manualPremiumAdjustment","ElementNames","ElementDisplayNames","ElementTemplateTypes","ElementDisplayFormatTypes","scrollToTop","scrollToSmooth","top","left","stripExtraQuoteElementLabelParts","elementLabel","QuoteElementAdminLabelPart","QuoteElementStubLabelPart","isNullOrEmpty","isEmpty","findValueFromChoices","parsedValue","choices","choice","Constants.elementChoiceStatus","isThere","isNumeric","asNumber","asString","validateBuildYear","buildYearInstance","Constants.commercialValidationParameters","isPolicyNumber","rgxTest","rgxTest1","rgxVave","rgxClearBlue6Digit","rgxClearBlue8Digit","rgxClearBlue","rgxCore","rgxCoreStateNational","rgxSwyfftHomeowners","rgxClearBlueAdmittedPrior","rgxClearBlueSpecialtyPrior","rgxEarthquake","rgxBenchmarkHomeowners","rgxTopaEAndS","rgxCoreGranada","rgxNfip","rgxBrit","rgxHiscox","rgxBenchmarkSpecialty","validateEmail","validatePhoneNumber","validateAgainstBuildingValue","valueInstance","buildingValueInstance","fixPhoneNumber","toDisplayBool","toBoolean","isBooleanString","fromKebabToTitleCase","txt","toKebabCase","stripPunctuation","toPhoneNumber","digits","reduceDigits","generateRandomString","s1","s2","n1","n2","reduce","getQueryString","query","getQueryObject","forceLowerCase","map","getQueryVariable","getQueryVariables","setTimeoutAsync","time","refresh","containsDuplicates","propertyFunc","ignoreEmpty","counts","accumulator","stripCountryCodeFromAddress","validationWithRange","minValue","maxValue","customJsonParser","stringInstance","regexInstance","kValue","varArgs","nextSource","nextKey","stripSpacesAndHyphens","formatStringForId","stripCommas","onClickOutside","event","callBack","removeRegEx","toggleScrollLock","trigger","scrollLockClass","returnFullName","middle","last","humanFileSize","units","u","debounceTimeouts","debounce","isAbortError","toLowerCaseFirstLetter","firstLetter","remainingLetters","encodeQueryParam","camelCaseKey","encodedValue","encodeQueryForRequest","copyText","getPercentageInRange","numerator","denominator","checkStateConfigVersionNumber","stateConfigValue","versionNumberValue","isSameDomain","currentDomain","urlDomain","getUtmParameters","Storage.getCookie","pascalCaseToWords","getCreditCardFeePercentageOrDefault","QuoteFees","GrossAnnualPayment","creditCardFee","Name","QuoteFeeTypes","getCreditCardFeeAmountOrDefault","truncate","modifier","stackTraceWithSourceMaps","frames","StackTrace.fromError","createEmptyModels","mockData","getApiErrorMessage","getErrorMessage","handleFetchError","toast","customErrorMessage","HttpStatusCodes","decodeHtml","encodedHtmlString","getClosestNumberDivisibleBy","divisor","renderComponent","handleApiError","getRootPageForLoggedInAgent"],"mappings":"i4BAAA,IAAIA,GAAgD,SAAUC,EAAIC,EAAMC,EAAM,CAC1E,GAAIA,GAAQ,UAAU,SAAW,EAAG,QAASC,EAAI,EAAGC,EAAIH,EAAK,OAAQI,EAAIF,EAAIC,EAAGD,KACxEE,GAAM,EAAEF,KAAKF,MACRI,IAAIA,EAAK,MAAM,UAAU,MAAM,KAAKJ,EAAM,EAAGE,CAAC,GACnDE,EAAGF,CAAC,EAAIF,EAAKE,CAAC,GAGtB,OAAOH,EAAG,OAAOK,GAAM,MAAM,UAAU,MAAM,KAAKJ,CAAI,CAAC,CAC3D,EACIK,GAA6B,UAAY,CACzC,SAASA,EAAYC,EAAMC,EAASC,EAAI,CACpC,KAAK,KAAOF,EACZ,KAAK,QAAUC,EACf,KAAK,GAAKC,EACV,KAAK,KAAO,SACpB,CACI,OAAOH,CACX,IAEII,GAA0B,UAAY,CACtC,SAASA,EAASF,EAAS,CACvB,KAAK,QAAUA,EACf,KAAK,KAAO,OACZ,KAAK,KAAO,OACZ,KAAK,GAAK,QAAQ,QAC1B,CACI,OAAOE,CACX,IAEIC,GAAqC,UAAY,CACjD,SAASA,EAAoBJ,EAAMC,EAASC,EAAIG,EAAK,CACjD,KAAK,KAAOL,EACZ,KAAK,QAAUC,EACf,KAAK,GAAKC,EACV,KAAK,IAAMG,EACX,KAAK,KAAO,YACpB,CACI,OAAOD,CACX,IAEIE,GAAyB,UAAY,CACrC,SAASA,GAAU,CACf,KAAK,KAAO,MACZ,KAAK,IAAM,GACX,KAAK,KAAO,MACZ,KAAK,QAAU,KACf,KAAK,GAAK,IAClB,CACI,OAAOA,CACX,IAEIC,GAAiC,UAAY,CAC7C,SAASA,GAAkB,CACvB,KAAK,KAAO,eACZ,KAAK,KAAO,eACZ,KAAK,QAAU,KACf,KAAK,GAAK,IAClB,CACI,OAAOA,CACX,IAGIC,GAAqB,+HACrBC,GAAqB,qFACrBC,GAAyB,EACzBC,GAAiB,CACjB,CAAC,MAAO,wBAAwB,EAChC,CAAC,OAAQ,mBAAmB,EAC5B,CAAC,WAAY,qBAAqB,EAClC,CAAC,gBAAiB,wBAAwB,EAC1C,CAAC,YAAa,uBAAuB,EACrC,CAAC,UAAW,4BAA4B,EACxC,CAAC,OAAQ,uBAAuB,EAChC,CAAC,OAAQ,0BAA0B,EACnC,CAAC,SAAU,2BAA2B,EACtC,CAAC,gBAAiB,mBAAmB,EACrC,CACI,mBACA,wDACH,EACD,CAAC,SAAU,kDAAkD,EAC7D,CAAC,YAAa,+BAA+B,EAC7C,CAAC,QAAS,2BAA2B,EACrC,CAAC,UAAW,6BAA6B,EACzC,CAAC,QAAS,mBAAmB,EAC7B,CAAC,aAAc,iCAAiC,EAChD,CAAC,QAAS,2BAA2B,EACrC,CAAC,QAAS,yBAAyB,EACnC,CAAC,MAAO,kDAAkD,EAC1D,CAAC,MAAO,+FAA+F,EACvG,CAAC,WAAY,sCAAsC,EACnD,CAAC,KAAM,2CAA2C,EAClD,CAAC,KAAM,qCAAqC,EAC5C,CAAC,KAAM,cAAc,EACrB,CAAC,OAAQ,mCAAmC,EAC5C,CAAC,UAAW,qBAAqB,EACjC,CAAC,MAAO,wCAAwC,EAChD,CAAC,SAAU,8BAA8B,EACzC,CAAC,WAAY,qBAAqB,EAClC,CAAC,YAAa,uBAAuB,EACrC,CAAC,cAAe,iCAAiC,EACjD,CAAC,cAAe,mCAAmC,EACnD,CAAC,OAAQ,oBAAoB,EAC7B,CAAC,YAAaH,EAAkB,CACpC,EACII,GAAuB,CACvB,CAAC,MAAO,gBAAgB,EACxB,CAAC,aAAc,SAAS,EACxB,CAAC,gBAAiB,iBAAiB,EACnC,CAAC,iBAAkB,UAAU,EAC7B,CAAC,YAAa,QAAQ,EACtB,CAAC,eAAgB,OAAO,EACxB,CAAC,aAAc,mCAAmC,EAClD,CAAC,aAAc,sBAAsB,EACrC,CAAC,eAAgB,iCAAiC,EAClD,CAAC,aAAc,+BAA+B,EAC9C,CAAC,sBAAuB,kBAAkB,EAC1C,CAAC,gBAAiB,kBAAkB,EACpC,CAAC,YAAa,kBAAkB,EAChC,CAAC,YAAa,kBAAkB,EAChC,CAAC,cAAe,kBAAkB,EAClC,CAAC,aAAc,mBAAmB,EAClC,CAAC,aAAc,YAAY,EAC3B,CAAC,aAAc,qDAAqD,EACpE,CAAC,WAAY,SAAS,EACtB,CAAC,SAAU,OAAO,EAClB,CAAC,YAAa,MAAM,EACpB,CAAC,QAAS,eAAe,EACzB,CAAC,SAAU,2BAA2B,EACtC,CAAC,MAAO,KAAK,EACb,CAAC,OAAQ,MAAM,EACf,CAAC,OAAQ,OAAO,CACpB,EACO,SAASC,GAAOC,EAAW,CAI9B,OAAI,OAAO,SAAa,KACpB,OAAO,UAAc,KACrB,UAAU,UAAY,cACf,IAAIP,GAEX,OAAO,UAAc,IACdQ,GAAe,UAAU,SAAS,EAEtCC,GAAgB,CAC3B,CACA,SAASC,GAAeC,EAAI,CAKxB,OAAQA,IAAO,IACXP,GAAe,OAAO,SAAUQ,EAASC,EAAI,CACzC,IAAIC,EAAUD,EAAG,CAAC,EAAGE,EAAQF,EAAG,CAAC,EACjC,GAAID,EACA,OAAOA,EAEX,IAAII,EAAUD,EAAM,KAAKJ,CAAE,EAC3B,MAAO,CAAC,CAACK,GAAW,CAACF,EAASE,CAAO,CACxC,EAAE,EAAK,CAChB,CAKO,SAASR,GAAeG,EAAI,CAC/B,IAAIM,EAAcP,GAAeC,CAAE,EACnC,GAAI,CAACM,EACD,OAAO,KAEX,IAAIxB,EAAOwB,EAAY,CAAC,EAAGC,EAAQD,EAAY,CAAC,EAChD,GAAIxB,IAAS,YACT,OAAO,IAAIM,GAGf,IAAIoB,EAAeD,EAAM,CAAC,GAAKA,EAAM,CAAC,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAG,CAAC,EAC9EC,EACIA,EAAa,OAAShB,KACtBgB,EAAelC,GAAcA,GAAc,CAAA,EAAIkC,EAAc,EAAI,EAAGC,GAAmBjB,GAAyBgB,EAAa,MAAM,EAAG,EAAI,GAI9IA,EAAe,CAAE,EAErB,IAAIzB,EAAUyB,EAAa,KAAK,GAAG,EAC/BxB,EAAK0B,GAASV,CAAE,EAChBW,EAAiBpB,GAAmB,KAAKS,CAAE,EAC/C,OAAIW,GAAkBA,EAAe,CAAC,EAC3B,IAAIzB,GAAoBJ,EAAMC,EAASC,EAAI2B,EAAe,CAAC,CAAC,EAEhE,IAAI9B,GAAYC,EAAMC,EAASC,CAAE,CAC5C,CACO,SAAS0B,GAASV,EAAI,CACzB,QAASY,EAAK,EAAGC,EAAQnB,GAAqB,OAAQkB,EAAKC,EAAOD,IAAM,CACpE,IAAIV,EAAKR,GAAqBkB,CAAE,EAAG5B,EAAKkB,EAAG,CAAC,EAAGE,EAAQF,EAAG,CAAC,EACvDK,EAAQH,EAAM,KAAKJ,CAAE,EACzB,GAAIO,EACA,OAAOvB,CAEnB,CACI,OAAO,IACX,CACO,SAASc,IAAiB,CAC7B,IAAIgB,EAAS,OAAO,QAAY,KAAe,QAAQ,QACvD,OAAOA,EAAS,IAAI7B,GAAS,QAAQ,QAAQ,MAAM,CAAC,CAAC,EAAI,IAC7D,CACA,SAASwB,GAAmBI,EAAO,CAE/B,QADIE,EAAS,CAAE,EACNH,EAAK,EAAGA,EAAKC,EAAOD,IACzBG,EAAO,KAAK,GAAG,EAEnB,OAAOA,CACX;qFClNE,SAASC,EAAMC,EAAS,CAKtBC,EAAA,QAAiBD,EAAS,CAK7B,GAAEE,GAAM,UAAW,CAClB,IAAIC,EAAY,CAAE,EAElBA,EAAU,QAAU,QAEpB,IAAIC,EAAWD,EAAU,SAAW,CAClC,QAAS,IACT,OAAQ,OACR,cAAe,GACf,MAAO,IACP,QAAS,GACT,YAAa,IACb,aAAc,IACd,YAAa,GACb,YAAa,eACb,gBAAiB,mBACjB,OAAQ,OACR,SAAU,qIACX,EASDA,EAAU,UAAY,SAASE,EAAS,CACtC,IAAIC,EAAKC,EACT,IAAKD,KAAOD,EACVE,EAAQF,EAAQC,CAAG,EACfC,IAAU,QAAaF,EAAQ,eAAeC,CAAG,IAAGF,EAASE,CAAG,EAAIC,GAG1E,OAAO,IACR,EAMDJ,EAAU,OAAS,KASnBA,EAAU,IAAM,SAASK,EAAG,CAC1B,IAAIC,EAAUN,EAAU,UAAW,EAEnCK,EAAIE,EAAMF,EAAGJ,EAAS,QAAS,CAAC,EAChCD,EAAU,OAAUK,IAAM,EAAI,KAAOA,EAErC,IAAIG,EAAWR,EAAU,OAAO,CAACM,CAAO,EACpCG,EAAWD,EAAS,cAAcP,EAAS,WAAW,EACtDS,EAAWT,EAAS,MACpBU,EAAWV,EAAS,OAExB,OAAAO,EAAS,YAETI,EAAM,SAASC,EAAM,CAEfZ,EAAS,gBAAkB,KAAIA,EAAS,cAAgBD,EAAU,kBAAmB,GAGzFc,EAAIL,EAAKM,EAAeV,EAAGK,EAAOC,CAAI,CAAC,EAEnCN,IAAM,GAERS,EAAIN,EAAU,CACZ,WAAY,OACZ,QAAS,CACnB,CAAS,EACDA,EAAS,YAET,WAAW,UAAW,CACpBM,EAAIN,EAAU,CACZ,WAAY,OAASE,EAAQ,YAC7B,QAAS,CACrB,CAAW,EACD,WAAW,UAAW,CACpBV,EAAU,OAAQ,EAClBa,EAAM,CACP,EAAEH,CAAK,CACT,EAAEA,CAAK,GAER,WAAWG,EAAMH,CAAK,CAE9B,CAAK,EAEM,IACR,EAEDV,EAAU,UAAY,UAAW,CAC/B,OAAO,OAAOA,EAAU,QAAW,QACpC,EASDA,EAAU,MAAQ,UAAW,CACtBA,EAAU,QAAQA,EAAU,IAAI,CAAC,EAEtC,IAAIgB,EAAO,UAAW,CACpB,WAAW,UAAW,CACfhB,EAAU,SACfA,EAAU,QAAS,EACnBgB,EAAM,EACd,EAASf,EAAS,YAAY,CACzB,EAED,OAAIA,EAAS,SAASe,EAAM,EAErB,IACR,EAcDhB,EAAU,KAAO,SAASiB,EAAO,CAC/B,MAAI,CAACA,GAAS,CAACjB,EAAU,OAAe,KAEjCA,EAAU,IAAI,GAAM,GAAM,KAAK,OAAQ,CAAA,EAAE,IAAI,CAAC,CACtD,EAMDA,EAAU,IAAM,SAASkB,EAAQ,CAC/B,IAAIb,EAAIL,EAAU,OAElB,OAAKK,GAGC,OAAOa,GAAW,WACpBA,GAAU,EAAIb,GAAKE,EAAM,KAAK,SAAWF,EAAG,GAAK,GAAI,GAGvDA,EAAIE,EAAMF,EAAIa,EAAQ,EAAG,IAAK,EACvBlB,EAAU,IAAIK,CAAC,GAPfL,EAAU,MAAO,CAS3B,EAEDA,EAAU,QAAU,UAAW,CAC7B,OAAOA,EAAU,IAAI,KAAK,OAAQ,EAAGC,EAAS,WAAW,CAC1D,EAQA,UAAW,CACV,IAAIkB,EAAU,EAAGC,EAAU,EAE3BpB,EAAU,QAAU,SAASqB,EAAU,CACrC,MAAI,CAACA,GAAYA,EAAS,MAAK,IAAO,WAC7B,MAGLD,IAAY,GACdpB,EAAU,MAAO,EAGnBmB,IACAC,IAEAC,EAAS,OAAO,UAAW,CACzBD,IACIA,IAAY,GACZD,EAAU,EACVnB,EAAU,KAAM,GAEhBA,EAAU,KAAKmB,EAAUC,GAAWD,CAAO,CAEvD,CAAO,EAEM,KACR,CAEL,EAAM,EAOJnB,EAAU,OAAS,SAASsB,EAAW,CACrC,GAAItB,EAAU,WAAY,EAAE,OAAO,SAAS,eAAe,WAAW,EAEtEuB,EAAS,SAAS,gBAAiB,gBAAgB,EAEnD,IAAIf,EAAW,SAAS,cAAc,KAAK,EAC3CA,EAAS,GAAK,YACdA,EAAS,UAAYP,EAAS,SAE9B,IAAIQ,EAAWD,EAAS,cAAcP,EAAS,WAAW,EACtDuB,EAAWF,EAAY,OAASG,EAAUzB,EAAU,QAAU,CAAC,EAC/D0B,EAAW,SAAS,cAAczB,EAAS,MAAM,EACjD0B,EAEJ,OAAAb,EAAIL,EAAK,CACP,WAAY,eACZ,UAAW,eAAiBe,EAAO,QACzC,CAAK,EAEIvB,EAAS,cACZ0B,EAAUnB,EAAS,cAAcP,EAAS,eAAe,EACzD0B,GAAWC,EAAcD,CAAO,GAG9BD,GAAU,SAAS,MACrBH,EAASG,EAAQ,yBAAyB,EAG5CA,EAAO,YAAYlB,CAAQ,EACpBA,CACR,EAMDR,EAAU,OAAS,UAAW,CAC5B6B,EAAY,SAAS,gBAAiB,gBAAgB,EACtDA,EAAY,SAAS,cAAc5B,EAAS,MAAM,EAAG,yBAAyB,EAC9E,IAAIO,EAAW,SAAS,eAAe,WAAW,EAClDA,GAAYoB,EAAcpB,CAAQ,CACnC,EAMDR,EAAU,WAAa,UAAW,CAChC,MAAO,CAAC,CAAC,SAAS,eAAe,WAAW,CAC7C,EAMDA,EAAU,kBAAoB,UAAW,CAEvC,IAAI8B,EAAY,SAAS,KAAK,MAG1BC,EAAgB,oBAAqBD,EAAa,SAClC,iBAAkBA,EAAa,MAC/B,gBAAiBA,EAAa,KAC9B,eAAgBA,EAAa,IAAM,GAEvD,OAAIC,EAAe,gBAAiBD,EAE3B,cACEC,EAAe,cAAeD,EAEhC,YAGA,QAEV,EAMD,SAASvB,EAAMF,EAAG2B,EAAKC,EAAK,CAC1B,OAAI5B,EAAI2B,EAAYA,EAChB3B,EAAI4B,EAAYA,EACb5B,CACX,CAOE,SAASoB,EAAUpB,EAAG,CACpB,OAAQ,GAAKA,GAAK,GACtB,CAQE,SAASU,EAAeV,EAAGK,EAAOC,EAAM,CACtC,IAAIuB,EAEJ,OAAIjC,EAAS,gBAAkB,cAC7BiC,EAAS,CAAE,UAAW,eAAeT,EAAUpB,CAAC,EAAE,QAAU,EACnDJ,EAAS,gBAAkB,YACpCiC,EAAS,CAAE,UAAW,aAAaT,EAAUpB,CAAC,EAAE,MAAQ,EAExD6B,EAAS,CAAE,cAAeT,EAAUpB,CAAC,EAAE,GAAK,EAG9C6B,EAAO,WAAa,OAAOxB,EAAM,MAAMC,EAEhCuB,CACX,CAME,IAAItB,EAAS,UAAW,CACtB,IAAIuB,EAAU,CAAE,EAEhB,SAAStB,GAAO,CACd,IAAIuB,EAAKD,EAAQ,MAAO,EACpBC,GACFA,EAAGvB,CAAI,CAEf,CAEI,OAAO,SAASuB,EAAI,CAClBD,EAAQ,KAAKC,CAAE,EACXD,EAAQ,QAAU,GAAGtB,EAAM,CAChC,CACL,EAAM,EAUAC,EAAO,UAAW,CACpB,IAAIuB,EAAc,CAAE,SAAU,IAAK,MAAO,IAAM,EAC5CC,EAAc,CAAE,EAEpB,SAASC,EAAUC,EAAQ,CACzB,OAAOA,EAAO,QAAQ,QAAS,KAAK,EAAE,QAAQ,eAAgB,SAASrD,EAAOsD,EAAQ,CACpF,OAAOA,EAAO,YAAa,CACnC,CAAO,CACP,CAEI,SAASC,EAAchF,EAAM,CAC3B,IAAIiF,EAAQ,SAAS,KAAK,MAC1B,GAAIjF,KAAQiF,EAAO,OAAOjF,EAK1B,QAHIJ,EAAI+E,EAAY,OAChBO,EAAUlF,EAAK,OAAO,CAAC,EAAE,cAAgBA,EAAK,MAAM,CAAC,EACrDmF,EACGvF,KAEL,GADAuF,EAAaR,EAAY/E,CAAC,EAAIsF,EAC1BC,KAAcF,EAAO,OAAOE,EAGlC,OAAOnF,CACb,CAEI,SAASoF,EAAapF,EAAM,CAC1B,OAAAA,EAAO6E,EAAU7E,CAAI,EACd4E,EAAS5E,CAAI,IAAM4E,EAAS5E,CAAI,EAAIgF,EAAchF,CAAI,EACnE,CAEI,SAASqF,EAASC,EAASC,EAAM7C,EAAO,CACtC6C,EAAOH,EAAaG,CAAI,EACxBD,EAAQ,MAAMC,CAAI,EAAI7C,CAC5B,CAEI,OAAO,SAAS4C,EAASE,EAAY,CACnC,IAAIC,EAAO,UACPF,EACA7C,EAEJ,GAAI+C,EAAK,QAAU,EACjB,IAAKF,KAAQC,EACX9C,EAAQ8C,EAAWD,CAAI,EACnB7C,IAAU,QAAa8C,EAAW,eAAeD,CAAI,GAAGF,EAASC,EAASC,EAAM7C,CAAK,OAG3F2C,EAASC,EAASG,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CAE1C,CACA,EAAM,EAMJ,SAASC,EAASJ,EAAStF,EAAM,CAC/B,IAAI2F,EAAO,OAAOL,GAAW,SAAWA,EAAUM,EAAUN,CAAO,EACnE,OAAOK,EAAK,QAAQ,IAAM3F,EAAO,GAAG,GAAK,CAC7C,CAME,SAAS6D,EAASyB,EAAStF,EAAM,CAC/B,IAAI6F,EAAUD,EAAUN,CAAO,EAC3BQ,EAAUD,EAAU7F,EAEpB0F,EAASG,EAAS7F,CAAI,IAG1BsF,EAAQ,UAAYQ,EAAQ,UAAU,CAAC,EAC3C,CAME,SAAS3B,EAAYmB,EAAStF,EAAM,CAClC,IAAI6F,EAAUD,EAAUN,CAAO,EAC3BQ,EAECJ,EAASJ,EAAStF,CAAI,IAG3B8F,EAAUD,EAAQ,QAAQ,IAAM7F,EAAO,IAAK,GAAG,EAG/CsF,EAAQ,UAAYQ,EAAQ,UAAU,EAAGA,EAAQ,OAAS,CAAC,EAC/D,CAQE,SAASF,EAAUN,EAAS,CAC1B,OAAQ,KAAOA,EAAQ,WAAa,IAAM,KAAK,QAAQ,QAAS,GAAG,CACvE,CAME,SAASpB,EAAcoB,EAAS,CAC9BA,GAAWA,EAAQ,YAAcA,EAAQ,WAAW,YAAYA,CAAO,CAC3E,CAEE,OAAOhD,CACT,CAAC,uFCzdD,IAAIyD,GACD,OAAO,WAAe,KAAe,YACrC,OAAO,KAAS,KAAe,MAE/B,OAAO,OAAW,KAAe,QAClC,CAAA,EAEEC,GAAU,CACZ,aAAc,oBAAqBD,GACnC,SAAU,WAAYA,IAAK,aAAc,OACzC,KACE,eAAgBA,IAChB,SAAUA,IACT,UAAW,CACV,GAAI,CACF,WAAI,KACG,EACR,MAAW,CACV,MAAO,EACf,CACA,EAAQ,EACN,SAAU,aAAcA,GACxB,YAAa,gBAAiBA,EAChC,EAEA,SAASE,GAAWC,EAAK,CACvB,OAAOA,GAAO,SAAS,UAAU,cAAcA,CAAG,CACpD,CAEA,GAAIF,GAAQ,YACV,IAAIG,GAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,uBACJ,EAEMC,GACF,YAAY,QACZ,SAASF,EAAK,CACZ,OAAOA,GAAOC,GAAY,QAAQ,OAAO,UAAU,SAAS,KAAKD,CAAG,CAAC,EAAI,EAC/E,EAGA,SAASG,GAAcrG,EAAM,CAI3B,GAHI,OAAOA,GAAS,WAClBA,EAAO,OAAOA,CAAI,GAEhB,6BAA6B,KAAKA,CAAI,GAAKA,IAAS,GACtD,MAAM,IAAI,UAAU,4CAA8CA,EAAO,GAAG,EAE9E,OAAOA,EAAK,YAAW,CACzB,CAEA,SAASsG,GAAe5D,EAAO,CAC7B,OAAI,OAAOA,GAAU,WACnBA,EAAQ,OAAOA,CAAK,GAEfA,CACT,CAGA,SAAS6D,GAAYC,EAAO,CAC1B,IAAIC,EAAW,CACb,KAAM,UAAW,CACf,IAAI/D,EAAQ8D,EAAM,MAAK,EACvB,MAAO,CAAC,KAAM9D,IAAU,OAAW,MAAOA,CAAK,CACrD,CACA,EAEE,OAAIsD,GAAQ,WACVS,EAAS,OAAO,QAAQ,EAAI,UAAW,CACrC,OAAOA,CACb,GAGSA,CACT,CAEO,SAASC,GAAQC,EAAS,CAC/B,KAAK,IAAM,CAAA,EAEPA,aAAmBD,GACrBC,EAAQ,QAAQ,SAASjE,EAAO1C,EAAM,CACpC,KAAK,OAAOA,EAAM0C,CAAK,CAC7B,EAAO,IAAI,EACE,MAAM,QAAQiE,CAAO,EAC9BA,EAAQ,QAAQ,SAASC,EAAQ,CAC/B,GAAIA,EAAO,QAAU,EACnB,MAAM,IAAI,UAAU,sEAAwEA,EAAO,MAAM,EAE3G,KAAK,OAAOA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,CACtC,EAAO,IAAI,EACED,GACT,OAAO,oBAAoBA,CAAO,EAAE,QAAQ,SAAS3G,EAAM,CACzD,KAAK,OAAOA,EAAM2G,EAAQ3G,CAAI,CAAC,CACrC,EAAO,IAAI,CAEX,CAEA0G,GAAQ,UAAU,OAAS,SAAS1G,EAAM0C,EAAO,CAC/C1C,EAAOqG,GAAcrG,CAAI,EACzB0C,EAAQ4D,GAAe5D,CAAK,EAC5B,IAAImE,EAAW,KAAK,IAAI7G,CAAI,EAC5B,KAAK,IAAIA,CAAI,EAAI6G,EAAWA,EAAW,KAAOnE,EAAQA,CACxD,EAEAgE,GAAQ,UAAU,OAAY,SAAS1G,EAAM,CAC3C,OAAO,KAAK,IAAIqG,GAAcrG,CAAI,CAAC,CACrC,EAEA0G,GAAQ,UAAU,IAAM,SAAS1G,EAAM,CACrC,OAAAA,EAAOqG,GAAcrG,CAAI,EAClB,KAAK,IAAIA,CAAI,EAAI,KAAK,IAAIA,CAAI,EAAI,IAC3C,EAEA0G,GAAQ,UAAU,IAAM,SAAS1G,EAAM,CACrC,OAAO,KAAK,IAAI,eAAeqG,GAAcrG,CAAI,CAAC,CACpD,EAEA0G,GAAQ,UAAU,IAAM,SAAS1G,EAAM0C,EAAO,CAC5C,KAAK,IAAI2D,GAAcrG,CAAI,CAAC,EAAIsG,GAAe5D,CAAK,CACtD,EAEAgE,GAAQ,UAAU,QAAU,SAASI,EAAUC,EAAS,CACtD,QAAS/G,KAAQ,KAAK,IAChB,KAAK,IAAI,eAAeA,CAAI,GAC9B8G,EAAS,KAAKC,EAAS,KAAK,IAAI/G,CAAI,EAAGA,EAAM,IAAI,CAGvD,EAEA0G,GAAQ,UAAU,KAAO,UAAW,CAClC,IAAIF,EAAQ,CAAA,EACZ,YAAK,QAAQ,SAAS9D,EAAO1C,EAAM,CACjCwG,EAAM,KAAKxG,CAAI,CAChB,CAAA,EACMuG,GAAYC,CAAK,CAC1B,EAEAE,GAAQ,UAAU,OAAS,UAAW,CACpC,IAAIF,EAAQ,CAAA,EACZ,YAAK,QAAQ,SAAS9D,EAAO,CAC3B8D,EAAM,KAAK9D,CAAK,CACjB,CAAA,EACM6D,GAAYC,CAAK,CAC1B,EAEAE,GAAQ,UAAU,QAAU,UAAW,CACrC,IAAIF,EAAQ,CAAA,EACZ,YAAK,QAAQ,SAAS9D,EAAO1C,EAAM,CACjCwG,EAAM,KAAK,CAACxG,EAAM0C,CAAK,CAAC,CACzB,CAAA,EACM6D,GAAYC,CAAK,CAC1B,EAEIR,GAAQ,WACVU,GAAQ,UAAU,OAAO,QAAQ,EAAIA,GAAQ,UAAU,SAGzD,SAASM,GAASC,EAAM,CACtB,GAAI,CAAAA,EAAK,QACT,IAAIA,EAAK,SACP,OAAO,QAAQ,OAAO,IAAI,UAAU,cAAc,CAAC,EAErDA,EAAK,SAAW,GAClB,CAEA,SAASC,GAAgBC,EAAQ,CAC/B,OAAO,IAAI,QAAQ,SAASC,EAASC,EAAQ,CAC3CF,EAAO,OAAS,UAAW,CACzBC,EAAQD,EAAO,MAAM,CAC3B,EACIA,EAAO,QAAU,UAAW,CAC1BE,EAAOF,EAAO,KAAK,CACzB,CACG,CAAA,CACH,CAEA,SAASG,GAAsBC,EAAM,CACnC,IAAIJ,EAAS,IAAI,WACbK,EAAUN,GAAgBC,CAAM,EACpC,OAAAA,EAAO,kBAAkBI,CAAI,EACtBC,CACT,CAEA,SAASC,GAAeF,EAAM,CAC5B,IAAIJ,EAAS,IAAI,WACbK,EAAUN,GAAgBC,CAAM,EAChC1F,EAAQ,2BAA2B,KAAK8F,EAAK,IAAI,EACjDG,EAAWjG,EAAQA,EAAM,CAAC,EAAI,QAClC,OAAA0F,EAAO,WAAWI,EAAMG,CAAQ,EACzBF,CACT,CAEA,SAASG,GAAsBC,EAAK,CAIlC,QAHIC,EAAO,IAAI,WAAWD,CAAG,EACzBE,EAAQ,IAAI,MAAMD,EAAK,MAAM,EAExBjI,EAAI,EAAGA,EAAIiI,EAAK,OAAQjI,IAC/BkI,EAAMlI,CAAC,EAAI,OAAO,aAAaiI,EAAKjI,CAAC,CAAC,EAExC,OAAOkI,EAAM,KAAK,EAAE,CACtB,CAEA,SAASC,GAAYH,EAAK,CACxB,GAAIA,EAAI,MACN,OAAOA,EAAI,MAAM,CAAC,EAElB,IAAIC,EAAO,IAAI,WAAWD,EAAI,UAAU,EACxC,OAAAC,EAAK,IAAI,IAAI,WAAWD,CAAG,CAAC,EACrBC,EAAK,MAEhB,CAEA,SAASG,IAAO,CACd,YAAK,SAAW,GAEhB,KAAK,UAAY,SAASf,EAAM,CAY9B,KAAK,SAAW,KAAK,SACrB,KAAK,UAAYA,EACZA,EAGM,OAAOA,GAAS,SACzB,KAAK,UAAYA,EACRjB,GAAQ,MAAQ,KAAK,UAAU,cAAciB,CAAI,EAC1D,KAAK,UAAYA,EACRjB,GAAQ,UAAY,SAAS,UAAU,cAAciB,CAAI,EAClE,KAAK,cAAgBA,EACZjB,GAAQ,cAAgB,gBAAgB,UAAU,cAAciB,CAAI,EAC7E,KAAK,UAAYA,EAAK,SAAQ,EACrBjB,GAAQ,aAAeA,GAAQ,MAAQC,GAAWgB,CAAI,GAC/D,KAAK,iBAAmBc,GAAYd,EAAK,MAAM,EAE/C,KAAK,UAAY,IAAI,KAAK,CAAC,KAAK,gBAAgB,CAAC,GACxCjB,GAAQ,cAAgB,YAAY,UAAU,cAAciB,CAAI,GAAKb,GAAkBa,CAAI,GACpG,KAAK,iBAAmBc,GAAYd,CAAI,EAExC,KAAK,UAAYA,EAAO,OAAO,UAAU,SAAS,KAAKA,CAAI,GAjB3D,KAAK,QAAU,GACf,KAAK,UAAY,IAmBd,KAAK,QAAQ,IAAI,cAAc,IAC9B,OAAOA,GAAS,SAClB,KAAK,QAAQ,IAAI,eAAgB,0BAA0B,EAClD,KAAK,WAAa,KAAK,UAAU,KAC1C,KAAK,QAAQ,IAAI,eAAgB,KAAK,UAAU,IAAI,EAC3CjB,GAAQ,cAAgB,gBAAgB,UAAU,cAAciB,CAAI,GAC7E,KAAK,QAAQ,IAAI,eAAgB,iDAAiD,EAG1F,EAEMjB,GAAQ,OACV,KAAK,KAAO,UAAW,CACrB,IAAIiC,EAAWjB,GAAS,IAAI,EAC5B,GAAIiB,EACF,OAAOA,EAGT,GAAI,KAAK,UACP,OAAO,QAAQ,QAAQ,KAAK,SAAS,EAChC,GAAI,KAAK,iBACd,OAAO,QAAQ,QAAQ,IAAI,KAAK,CAAC,KAAK,gBAAgB,CAAC,CAAC,EACnD,GAAI,KAAK,cACd,MAAM,IAAI,MAAM,sCAAsC,EAEtD,OAAO,QAAQ,QAAQ,IAAI,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAEzD,GAGE,KAAK,YAAc,UAAW,CAC5B,GAAI,KAAK,iBAAkB,CACzB,IAAIC,EAAalB,GAAS,IAAI,EAC9B,OAAIkB,IAEO,YAAY,OAAO,KAAK,gBAAgB,EAC1C,QAAQ,QACb,KAAK,iBAAiB,OAAO,MAC3B,KAAK,iBAAiB,WACtB,KAAK,iBAAiB,WAAa,KAAK,iBAAiB,UACrE,CACA,EAEe,QAAQ,QAAQ,KAAK,gBAAgB,EAEpD,KAAW,IAAIlC,GAAQ,KACjB,OAAO,KAAK,OAAO,KAAKsB,EAAqB,EAE7C,MAAM,IAAI,MAAM,+BAA+B,EAErD,EAEE,KAAK,KAAO,UAAW,CACrB,IAAIW,EAAWjB,GAAS,IAAI,EAC5B,GAAIiB,EACF,OAAOA,EAGT,GAAI,KAAK,UACP,OAAOR,GAAe,KAAK,SAAS,EAC/B,GAAI,KAAK,iBACd,OAAO,QAAQ,QAAQE,GAAsB,KAAK,gBAAgB,CAAC,EAC9D,GAAI,KAAK,cACd,MAAM,IAAI,MAAM,sCAAsC,EAEtD,OAAO,QAAQ,QAAQ,KAAK,SAAS,CAE3C,EAEM3B,GAAQ,WACV,KAAK,SAAW,UAAW,CACzB,OAAO,KAAK,OAAO,KAAKmC,EAAM,CACpC,GAGE,KAAK,KAAO,UAAW,CACrB,OAAO,KAAK,KAAI,EAAG,KAAK,KAAK,KAAK,CACtC,EAES,IACT,CAGA,IAAIC,GAAU,CAAC,UAAW,SAAU,MAAO,OAAQ,UAAW,QAAS,OAAQ,MAAO,OAAO,EAE7F,SAASC,GAAgBC,EAAQ,CAC/B,IAAIC,EAAUD,EAAO,YAAW,EAChC,OAAOF,GAAQ,QAAQG,CAAO,EAAI,GAAKA,EAAUD,CACnD,CAEO,SAASE,GAAQC,EAAOjG,EAAS,CACtC,GAAI,EAAE,gBAAgBgG,IACpB,MAAM,IAAI,UAAU,4FAA4F,EAGlHhG,EAAUA,GAAW,CAAA,EACrB,IAAIyE,EAAOzE,EAAQ,KAEnB,GAAIiG,aAAiBD,GAAS,CAC5B,GAAIC,EAAM,SACR,MAAM,IAAI,UAAU,cAAc,EAEpC,KAAK,IAAMA,EAAM,IACjB,KAAK,YAAcA,EAAM,YACpBjG,EAAQ,UACX,KAAK,QAAU,IAAIkE,GAAQ+B,EAAM,OAAO,GAE1C,KAAK,OAASA,EAAM,OACpB,KAAK,KAAOA,EAAM,KAClB,KAAK,OAASA,EAAM,OAChB,CAACxB,GAAQwB,EAAM,WAAa,OAC9BxB,EAAOwB,EAAM,UACbA,EAAM,SAAW,GAEvB,MACI,KAAK,IAAM,OAAOA,CAAK,EAiBzB,GAdA,KAAK,YAAcjG,EAAQ,aAAe,KAAK,aAAe,eAC1DA,EAAQ,SAAW,CAAC,KAAK,WAC3B,KAAK,QAAU,IAAIkE,GAAQlE,EAAQ,OAAO,GAE5C,KAAK,OAAS6F,GAAgB7F,EAAQ,QAAU,KAAK,QAAU,KAAK,EACpE,KAAK,KAAOA,EAAQ,MAAQ,KAAK,MAAQ,KACzC,KAAK,OAASA,EAAQ,QAAU,KAAK,QAAW,UAAY,CAC1D,GAAI,oBAAqBuD,GAAG,CAC1B,IAAI2C,EAAO,IAAI,gBACf,OAAOA,EAAK,MAClB,CACA,IACE,KAAK,SAAW,MAEX,KAAK,SAAW,OAAS,KAAK,SAAW,SAAWzB,EACvD,MAAM,IAAI,UAAU,2CAA2C,EAIjE,GAFA,KAAK,UAAUA,CAAI,GAEf,KAAK,SAAW,OAAS,KAAK,SAAW,UACvCzE,EAAQ,QAAU,YAAcA,EAAQ,QAAU,YAAY,CAEhE,IAAImG,EAAgB,gBACpB,GAAIA,EAAc,KAAK,KAAK,GAAG,EAE7B,KAAK,IAAM,KAAK,IAAI,QAAQA,EAAe,OAAS,IAAI,KAAM,EAAC,QAAS,CAAA,MACnE,CAEL,IAAIC,EAAgB,KACpB,KAAK,MAAQA,EAAc,KAAK,KAAK,GAAG,EAAI,IAAM,KAAO,KAAO,IAAI,KAAM,EAAC,QAAO,CAC1F,CACA,CAEA,CAEAJ,GAAQ,UAAU,MAAQ,UAAW,CACnC,OAAO,IAAIA,GAAQ,KAAM,CAAC,KAAM,KAAK,SAAS,CAAC,CACjD,EAEA,SAASL,GAAOlB,EAAM,CACpB,IAAI4B,EAAO,IAAI,SACf,OAAA5B,EACG,KAAI,EACJ,MAAM,GAAG,EACT,QAAQ,SAAS6B,EAAO,CACvB,GAAIA,EAAO,CACT,IAAIC,EAAQD,EAAM,MAAM,GAAG,EACvB9I,EAAO+I,EAAM,MAAO,EAAC,QAAQ,MAAO,GAAG,EACvCrG,EAAQqG,EAAM,KAAK,GAAG,EAAE,QAAQ,MAAO,GAAG,EAC9CF,EAAK,OAAO,mBAAmB7I,CAAI,EAAG,mBAAmB0C,CAAK,CAAC,CACvE,CACK,CAAA,EACImG,CACT,CAEA,SAASG,GAAaC,EAAY,CAChC,IAAItC,EAAU,IAAID,GAGdwC,EAAsBD,EAAW,QAAQ,eAAgB,GAAG,EAIhE,OAAAC,EACG,MAAM,IAAI,EACV,IAAI,SAAStC,EAAQ,CACpB,OAAOA,EAAO,QAAQ;AAAA,CAAI,IAAM,EAAIA,EAAO,OAAO,EAAGA,EAAO,MAAM,EAAIA,CACvE,CAAA,EACA,QAAQ,SAASuC,EAAM,CACtB,IAAIC,EAAQD,EAAK,MAAM,GAAG,EACtB1G,EAAM2G,EAAM,MAAK,EAAG,KAAI,EAC5B,GAAI3G,EAAK,CACP,IAAIC,EAAQ0G,EAAM,KAAK,GAAG,EAAE,KAAI,EAChC,GAAI,CACFzC,EAAQ,OAAOlE,EAAKC,CAAK,CAC1B,OAAQ2G,EAAO,CACd,QAAQ,KAAK,YAAcA,EAAM,OAAO,CAClD,CACA,CACK,CAAA,EACI1C,CACT,CAEAqB,GAAK,KAAKQ,GAAQ,SAAS,EAEpB,SAASc,GAASC,EAAU/G,EAAS,CAC1C,GAAI,EAAE,gBAAgB8G,IACpB,MAAM,IAAI,UAAU,4FAA4F,EAQlH,GANK9G,IACHA,EAAU,CAAA,GAGZ,KAAK,KAAO,UACZ,KAAK,OAASA,EAAQ,SAAW,OAAY,IAAMA,EAAQ,OACvD,KAAK,OAAS,KAAO,KAAK,OAAS,IACrC,MAAM,IAAI,WAAW,0FAA0F,EAEjH,KAAK,GAAK,KAAK,QAAU,KAAO,KAAK,OAAS,IAC9C,KAAK,WAAaA,EAAQ,aAAe,OAAY,GAAK,GAAKA,EAAQ,WACvE,KAAK,QAAU,IAAIkE,GAAQlE,EAAQ,OAAO,EAC1C,KAAK,IAAMA,EAAQ,KAAO,GAC1B,KAAK,UAAU+G,CAAQ,CACzB,CAEAvB,GAAK,KAAKsB,GAAS,SAAS,EAE5BA,GAAS,UAAU,MAAQ,UAAW,CACpC,OAAO,IAAIA,GAAS,KAAK,UAAW,CAClC,OAAQ,KAAK,OACb,WAAY,KAAK,WACjB,QAAS,IAAI5C,GAAQ,KAAK,OAAO,EACjC,IAAK,KAAK,GACX,CAAA,CACH,EAEA4C,GAAS,MAAQ,UAAW,CAC1B,IAAIE,EAAW,IAAIF,GAAS,KAAM,CAAC,OAAQ,IAAK,WAAY,EAAE,CAAC,EAC/D,OAAAE,EAAS,GAAK,GACdA,EAAS,OAAS,EAClBA,EAAS,KAAO,QACTA,CACT,EAEA,IAAIC,GAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,EAE/CH,GAAS,SAAW,SAASI,EAAKC,EAAQ,CACxC,GAAIF,GAAiB,QAAQE,CAAM,IAAM,GACvC,MAAM,IAAI,WAAW,qBAAqB,EAG5C,OAAO,IAAIL,GAAS,KAAM,CAAC,OAAQK,EAAQ,QAAS,CAAC,SAAUD,CAAG,CAAC,CAAC,CACtE,EAEO,IAAIE,GAAe7D,GAAE,aAC5B,GAAI,CACF,IAAI6D,EACN,MAAc,CACZA,GAAe,SAASC,EAAS7J,EAAM,CACrC,KAAK,QAAU6J,EACf,KAAK,KAAO7J,EACZ,IAAIqJ,EAAQ,MAAMQ,CAAO,EACzB,KAAK,MAAQR,EAAM,KACvB,EACEO,GAAa,UAAY,OAAO,OAAO,MAAM,SAAS,EACtDA,GAAa,UAAU,YAAcA,EACvC,CAEO,SAASE,GAAMrB,EAAOsB,EAAM,CACjC,OAAO,IAAI,QAAQ,SAAS3C,EAASC,EAAQ,CAC3C,IAAI2C,EAAU,IAAIxB,GAAQC,EAAOsB,CAAI,EAErC,GAAIC,EAAQ,QAAUA,EAAQ,OAAO,QACnC,OAAO3C,EAAO,IAAIuC,GAAa,UAAW,YAAY,CAAC,EAGzD,IAAIK,EAAM,IAAI,eAEd,SAASC,GAAW,CAClBD,EAAI,MAAK,CACf,CAEIA,EAAI,OAAS,UAAW,CACtB,IAAIzH,EAAU,CACZ,WAAYyH,EAAI,WAChB,QAASjB,GAAaiB,EAAI,sBAAuB,GAAI,EAAE,CAC/D,EAGUD,EAAQ,IAAI,QAAQ,SAAS,IAAM,IAAMC,EAAI,OAAS,KAAOA,EAAI,OAAS,KAC5EzH,EAAQ,OAAS,IAEjBA,EAAQ,OAASyH,EAAI,OAEvBzH,EAAQ,IAAM,gBAAiByH,EAAMA,EAAI,YAAczH,EAAQ,QAAQ,IAAI,eAAe,EAC1F,IAAIyE,EAAO,aAAcgD,EAAMA,EAAI,SAAWA,EAAI,aAClD,WAAW,UAAW,CACpB7C,EAAQ,IAAIkC,GAASrC,EAAMzE,CAAO,CAAC,CAC3C,EAAS,CAAC,CACV,EAEIyH,EAAI,QAAU,UAAW,CACvB,WAAW,UAAW,CACpB5C,EAAO,IAAI,UAAU,wBAAwB,CAAC,CACtD,EAAS,CAAC,CACV,EAEI4C,EAAI,UAAY,UAAW,CACzB,WAAW,UAAW,CACpB5C,EAAO,IAAI,UAAU,2BAA2B,CAAC,CACzD,EAAS,CAAC,CACV,EAEI4C,EAAI,QAAU,UAAW,CACvB,WAAW,UAAW,CACpB5C,EAAO,IAAIuC,GAAa,UAAW,YAAY,CAAC,CACxD,EAAS,CAAC,CACV,EAEI,SAASO,EAAOT,EAAK,CACnB,GAAI,CACF,OAAOA,IAAQ,IAAM3D,GAAE,SAAS,KAAOA,GAAE,SAAS,KAAO2D,CAC1D,MAAW,CACV,OAAOA,CACf,CACA,CAoBI,GAlBAO,EAAI,KAAKD,EAAQ,OAAQG,EAAOH,EAAQ,GAAG,EAAG,EAAI,EAE9CA,EAAQ,cAAgB,UAC1BC,EAAI,gBAAkB,GACbD,EAAQ,cAAgB,SACjCC,EAAI,gBAAkB,IAGpB,iBAAkBA,IAChBjE,GAAQ,KACViE,EAAI,aAAe,OAEnBjE,GAAQ,cAERiE,EAAI,aAAe,gBAInBF,GAAQ,OAAOA,EAAK,SAAY,UAAY,EAAEA,EAAK,mBAAmBrD,IAAYX,GAAE,SAAWgE,EAAK,mBAAmBhE,GAAE,SAAW,CACtI,IAAIqE,EAAQ,CAAE,EACd,OAAO,oBAAoBL,EAAK,OAAO,EAAE,QAAQ,SAAS/J,EAAM,CAC9DoK,EAAM,KAAK/D,GAAcrG,CAAI,CAAC,EAC9BiK,EAAI,iBAAiBjK,EAAMsG,GAAeyD,EAAK,QAAQ/J,CAAI,CAAC,CAAC,CAC9D,CAAA,EACDgK,EAAQ,QAAQ,QAAQ,SAAStH,EAAO1C,EAAM,CACxCoK,EAAM,QAAQpK,CAAI,IAAM,IAC1BiK,EAAI,iBAAiBjK,EAAM0C,CAAK,CAEnC,CAAA,CACP,MACMsH,EAAQ,QAAQ,QAAQ,SAAStH,EAAO1C,EAAM,CAC5CiK,EAAI,iBAAiBjK,EAAM0C,CAAK,CACjC,CAAA,EAGCsH,EAAQ,SACVA,EAAQ,OAAO,iBAAiB,QAASE,CAAQ,EAEjDD,EAAI,mBAAqB,UAAW,CAE9BA,EAAI,aAAe,GACrBD,EAAQ,OAAO,oBAAoB,QAASE,CAAQ,CAE9D,GAGID,EAAI,KAAK,OAAOD,EAAQ,UAAc,IAAc,KAAOA,EAAQ,SAAS,CAC7E,CAAA,CACH,CAEAF,GAAM,SAAW,GAEZ/D,GAAE,QACLA,GAAE,MAAQ+D,GACV/D,GAAE,QAAUW,GACZX,GAAE,QAAUyC,GACZzC,GAAE,SAAWuD,ICznBf,OAAO,eAAiB,EAEZ,IAAAe,IAAAA,IACRA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,IAAM,MACNA,EAAA,MAAQ,QALAA,IAAAA,IAAA,CAAA,CAAA,EAQL,MAAMC,EAAyB,CAMlC,YAAYC,EAA6BC,EAAyB,CAL1DC,EAAA,gBACAA,EAAA,kBACAA,EAAA,mBACSA,EAAA,aAwBjBA,EAAA,iBAAY,IAAM,KAAK,SACvBA,EAAA,mBAAc,IAAM,KAAK,WAtBrB,KAAK,WAAaF,EAClB,KAAK,KAAOC,EACZ,KAAK,QAAU,EAAA,CAGZ,OAAQ,CACP,KAAK,YAET,KAAK,QAAU,GACf,KAAK,WAAW,MAAM,EAAA,CAG1B,MAAa,MAAuB,CAC1B,MAAAE,EAAS,MAAM,KAAK,KACtB,GAAAA,EAAO,SAAW,IAAK,MAAM,IAAI,MAAM,+BAA+BA,EAAO,MAAM,GAAG,EAEpF,MAAAC,EAAQ,MAAMD,EAAO,KAAK,EAChC,YAAK,UAAY,GACVC,CAAA,CAKf,CAGO,SAASC,GACZlB,EACAmB,EAA6CvI,GAC7CwI,EAA6B,KAC7BN,EAAY,KACd,CACM,OAAAA,UAAa,KAAKA,CAAI,EAAE,QAAQ,CAACO,EAAGnL,IAAO8J,GAAO,GAAG9J,IAAM,EAAI,IAAM,GAAG,GAAGmL,CAAC,IAAIP,EAAKO,CAAC,CAAC,EAAG,EACvFC,GAAQtB,EAAK,MAAU,KAAMmB,EAAaC,CAAW,CAChE,CAEO,SAASG,GACZvB,EACAc,EACAK,EAA6CvI,GAC7CwI,EAA6B,KAC/B,CACE,OAAOE,GAAQtB,EAAK,OAAWc,EAAMK,EAAaC,CAAW,CACjE,CAEO,SAASI,GACZxB,EACAc,EACAK,EAA6CvI,GAC7CwI,EAA6B,KAC/B,CACE,OAAOE,GAAQtB,EAAK,MAAUc,EAAMK,EAAaC,CAAW,CAChE,CAEO,SAASK,GACZzB,EACAc,EACAK,EAA6CvI,GAC7CwI,EAA6B,KAC/B,CACE,OAAOE,GAAQtB,EAAK,SAAac,EAAMK,EAAaC,CAAW,CACnE,CAEO,SAASM,GACZ1B,EACAc,EACAK,EAA6CvI,GAC7CwI,EAA6B,KAC/B,CACE,OAAOE,GAAQtB,EAAK,QAAYc,EAAMK,EAAaC,CAAW,CAClE,CAgBO,SAASO,GAAShC,EAAuC,CACtD,MAAAiC,EAAkBC,GAAe,EACjC,OAAAlC,EAAA,SAAUiC,GAAA,YAAAA,EAAiB,OAAQ,GACnCjC,EAAA,gBAAiBiC,GAAA,YAAAA,EAAiB,UAAW,GACnDjC,EAAM,IAAMA,EAAM,KAAO,OAAO,SAAS,KACzCA,EAAM,SAAWA,EAAM,IAAM,OAAO,SAAS,KAAO,SAAS,UAAY,GACnEA,EAAA,IAAM,KAAK,UAAUA,CAAK,EACzB4B,GAAM,UAAW5B,EAAO,KAAM,WAAW,CACpD,CAWA,eAAsB2B,GAClBtB,EACA8B,EACAhB,EACAK,EACAC,EACAW,EAAsB,GACV,CACRZ,KAAyB,MAAM,EACnC,MAAMa,EAAQ,IAAI,KAAK,EAAE,QAAQ,EAC3BC,EAA6B,CAC/B,IAAK,IAAIjC,CAAG,GACZ,KAAM8B,EAAK,YAAY,EACvB,YAAa,iCACjB,EACIhB,IACOmB,EAAA,KAAO,KAAK,UAAUnB,CAAI,GAEjC,GAAA,CACA,MAAME,EAAS,MAAM,EAAE,KAAKiB,CAAM,EAGlC,GAAIb,EAAa,CACbc,GAASd,EAAa,SAAS,EAC3B,IAAAe,EAAUJ,EAAcD,IAAS,MAAQ9B,GAAOiC,EAAO,MAAQ,IAAI,SAAc,EAAA,GAC/E,MAAAG,GAAgBhB,EAAae,EAASH,CAAK,CAAA,CAG9C,OAAAhB,QACFqB,EAAK,CACV,MAAIjB,GACAc,GAASd,EAAa,SAAS,EAGnCiB,EAAI,IAAMrC,EACVqC,EAAI,WAAaP,EAEXO,CAAA,QACR,CACS,OAAA,iBACHlB,GACAA,EAAY,KAAK,EAAI,CACzB,CAER,CAEgB,SAAAmB,GAAwBtC,EAAa8B,EAAsC,CACjF,MAAAjB,EAAa,IAAI,gBAEnB,GAAA,CACA,MAAMf,EAAW,MAAM,IAAIE,CAAG,GAAI,CAC9B,OAAQ8B,EACR,OAAQjB,EAAW,OACnB,QAAS,CACL,eAAgB,iCAAA,CACpB,CACH,EAEM,OAAA,IAAID,GAAyBC,EAAYf,CAAQ,QACnDyC,EAAG,CACR,MAAAA,EAAE,IAAMvC,EACRuC,EAAE,WAAaT,EACTS,CAAA,CAEd,CA4CgB,SAAAC,GAAYxC,EAAayC,EAAoB,CACzD,GAAI,OAAO,UAAU,YAAkB,WAEzB,UAAA,WAAczC,EAAK,MAAI,MAC9B,CACH,MAAM9J,EAAI,IAAI,MAAM,EAAG,CAAC,EACxBA,EAAE,IAAM8J,CAAA,CAEhB,CAKgB,SAAAkC,GAASQ,EAAgBC,EAAe,CAChD,GAAA,CACI,GAAA,OAAO,IAAO,WAAY,OAC9B,GAAG,OAAQ,QAAS,MAAOD,EAAQC,CAAK,QACnCN,EAAK,CACF,QAAA,MAAM,wBAA0BA,CAAG,CAAA,CAEnD,CAKsB,eAAAD,GAAgBM,EAAgBP,EAAiBH,EAAe,CAC9E,GAAA,CAEA,MAAMY,EADM,IAAI,KAAK,EAAE,QAAQ,EACTZ,EAClBG,EAAQ,OAAS,MACPA,EAAAA,EAAQ,UAAU,EAAG,GAAG,GAStC,MAAMb,GAAQ,kBAAmB,OAPE,CAC/B,QAASoB,EACT,QAASP,EACT,oBAAqBS,CACzB,EAGiD,KAAM,IAAI,QACtDL,EAAG,CACA,QAAA,MAAM,sDAAwDA,CAAC,CAAA,CAE/E,CCpRa,MAAAM,GAAyBC,GAAwC,CAC1E,MAAMC,EAAY,SAAS,cAAc,KAAK,EAG9C,OAFWC,cAAWD,CAAS,EAE1B,OAAOE,GAAA,cAAc,MAAO,KAAMH,CAAS,CAAC,EAE1CC,CACX,ECEMG,GAA+B,CACjC,WAAY,UACZ,QAAS,OACT,QAAS,CACb,EAEMC,GAA8B,CAChC,WAAY,SACZ,QAAS,OACT,QAAS,CACb,EAEMC,GAA+CC,GAAA,CAC3C,MAAA9H,EAAQ8H,EAAM,UAAYH,GAAeC,GACzCG,EAAYC,GAAa,aAAc,CAACF,EAAM,SAAS,CAAC,EAE9D,cACK,MAAI,CAAA,UAAAC,EAAsB,MAAA/H,EACvB,SAACiI,GAAA,KAAA,MAAA,CAAI,UAAU,qBACV,SAAA,CAAAH,EAAM,OAAUI,GAAA,IAAA,MAAA,CAAI,UAAU,mBAAoB,WAAM,MAAM,EAC/DD,GAAAA,KAAC,MAAI,CAAA,UAAU,kBACX,SAAA,CAACC,GAAAA,IAAA,MAAA,CAAI,UAAU,2BAA4B,CAAA,EAC3CA,GAAAA,IAAC,MAAK,CAAA,SAAAJ,EAAM,QAAS,CAAA,CAAA,CACzB,CAAA,CAAA,CAAA,CACJ,CACJ,CAAA,CAER,EAIMK,GAAc,aAEPC,GAAmBN,GAA0B,CAChD,MAAAO,EAAOf,GAAuBY,GAAA,IAAAL,GAAA,CAAW,GAAGC,EAAQ,SAAAA,EAAM,SAAS,CAAY,EAC/EN,EAAY,SAAS,cAAc,KAAK,EAC9CA,EAAU,GAAKW,GACN,SAAA,KAAK,YAAYX,CAAS,EACnCA,EAAU,YAAYa,CAAI,CAC9B,EAEaC,GAAkB,IAAM,CAC3B,MAAAC,EAAY,SAAS,eAAeJ,EAAW,EACjDI,GAAW,SAAS,KAAK,YAAYA,CAAS,CACtD,ECpDO,MAAMC,EAAsC,CAG/C,YAAY5D,EAAkB,aAAc,CAFrCY,EAAA,gBAGH,KAAK,QAAUZ,CAAA,CAGnB,OAAQ,CACYwD,GAAA,CACZ,UAAW,GACX,UAAW,cACX,SAAU,KAAK,OAAA,CAClB,CAAA,CAGL,KAAKK,EAAqB,CACNH,GAAA,CAAA,CAExB,CCtBO,MAAMI,GAAoB,CAC7B,SAAU,WACV,kBAAmB,qBACnB,YAAa,cACb,oBAAqB,uBACrB,gCAAiC,wCACjC,OAAQ,SACR,MAAO,OACX,ECqtBO,MAAMC,EAAS,CAiClB,YACIC,EACOC,EACAjE,EACPkE,EACOlC,EACPmC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACF,CA5CF7D,EAAA,aAEAA,EAAA,gBACAA,EAAA,uBACAA,EAAA,oBACAA,EAAA,gBACAA,EAAA,uBACAA,EAAA,YACAA,EAAA,mBACAA,EAAA,kBACAA,EAAA,kBACAA,EAAA,qBACAA,EAAA,cACAA,EAAA,iBACAA,EAAA,YAmBW,KAAA,SAAAqD,EACA,KAAA,QAAAjE,EAEA,KAAA,QAAAgC,EASF,KAAA,KAAOgC,EAAK,SAAS,EACtBE,GAAW,OACN,KAAA,QAAUA,EAAQ,SAAS,GAGpC,KAAK,UAAYC,EACjB,KAAK,SAAWF,EAEZG,GAAa,KACb,KAAK,UAAYA,EAEjB,KAAK,UAAY,kBAGjBC,GAAO,OACP,KAAK,IAAMA,GAGXC,GAAc,OACd,KAAK,WAAaA,GAGlBC,GAAgB,OAChB,KAAK,aAAeA,GAGpBE,GAAY,OACZ,KAAK,SAAWA,GAGpB,KAAK,MAAQD,CAAA,CAErB,CAEY,IAAAE,IAAAA,IACRA,EAAA,eAAiB,iBACjBA,EAAA,gBAAkB,kBAClBA,EAAA,gBAAkB,kBAHVA,IAAAA,IAAA,CAAA,CAAA,EAsFAC,IAAAA,IACRA,EAAA,OAAS,SACTA,EAAA,QAAU,UACVA,EAAA,QAAU,UACVA,EAAA,oBAAsB,sBAJdA,IAAAA,IAAA,CAAA,CAAA,EAgdAC,IAAAA,IACRA,EAAAA,EAAA,QAAU,CAAV,EAAA,UACAA,EAAAC,EAAA,gBAAA,CAAA,EAAA,kBACAD,EAAAC,EAAA,wBAAA,CAAA,EAAA,0BACAD,EAAAC,EAAA,eAAA,CAAA,EAAA,iBACAD,EAAAC,EAAA,mBAAA,CAAA,EAAA,qBACAD,EAAAC,EAAA,cAAA,CAAA,EAAA,gBACAD,EAAAC,EAAA,mBAAA,CAAA,EAAA,qBACAD,EAAAC,EAAA,yBAAA,CAAA,EAAA,2BACAD,EAAAC,EAAA,yBAAA,CAAA,EAAA,2BACAD,EAAAC,EAAA,YAAA,CAAA,EAAA,cACAD,EAAAC,EAAA,aAAA,EAAA,EAAA,eACAD,EAAAC,EAAA,eAAA,EAAA,EAAA,iBAZQD,IAAAA,IAAA,CAAA,CAAA,EAwBL,MAAME,EAAmB,CAAzB,cACMlE,EAAA,aAEAA,EAAA,qBAEAA,EAAA,WACAA,EAAA,aAEAA,EAAA,sBACAA,EAAA,4BACAA,EAAA,4BAET,OAAc,wBAAwBvE,EAA6C,CACxE,MAAA,CACH,KAAMA,EAAI,KACV,aAAcA,EAAI,aAClB,GAAIA,EAAI,GACR,KAAMA,EAAI,KACV,cAAeA,EAAI,cACnB,oBAAqBA,EAAI,oBACzB,oBAAqBA,EAAI,mBAC7B,CAAA,CAER,CAmNY,IAAA0I,IAAAA,IACRA,EAAAA,EAAA,UAAY,CAAZ,EAAA,YACAA,EAAAA,EAAA,WAAa,CAAb,EAAA,aACAA,EAAAA,EAAA,eAAiB,CAAjB,EAAA,iBAHQA,IAAAA,IAAA,CAAA,CAAA,EAqKAC,IAAAA,IACRA,EAAA,SAAW,WACXA,EAAA,MAAQ,MAFAA,IAAAA,IAAA,CAAA,CAAA,EAqBAC,IAAAA,IACRA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,YAAc,cACdA,EAAA,MAAQ,QACRA,EAAA,WAAa,aALLA,IAAAA,IAAA,CAAA,CAAA,EAmBL,MAAeC,EAAa,CAC/B,SAASC,EAAa,CAClBA,GACI,OAAO,KAAK,IAAI,EAAE,QAAajE,GAAA,CACvB,KAAKA,CAAC,EAAE,IAAK,KAAKA,CAAC,EAAE,IAAIiE,EAAOjE,CAAC,CAAC,EAC7B,KAAKA,CAAC,EAAE,SAAU,KAAKA,CAAC,EAAE,SAASiE,EAAOjE,CAAC,CAAC,EAC3C,KAAAA,CAAC,EAAIiE,EAAOjE,CAAC,CAAA,CAC1B,CAAA,CAGT,QAAS,CACE,OAAA,KAAK,UAAU,IAAI,CAAA,CAElC,CA4CO,MAAMkE,GAAN,MAAMA,EAAoC,CAA1C,cACHxE,EAAA,mBACAA,EAAA,gBACAA,EAAA,aACAA,EAAA,kBACAA,EAAA,YACAA,EAAA,oBAEA,OAAc,aAAaD,EAAyB,iBAC1C,MAAA0E,EAAU,IAAID,GACpB,OAAAC,EAAQ,aAAa9N,EAAAoJ,EAAK,IAAI,aAAa,IAAtB,YAAApJ,EAAyB,aAAc,GAC5D8N,EAAQ,UAAUC,EAAA3E,EAAK,IAAI,gBAAgB,IAAzB,YAAA2E,EAA4B,aAAc,GAC5DD,EAAQ,OAAOE,EAAA5E,EAAK,IAAI,MAAM,IAAf,YAAA4E,EAAkB,aAAc,GAC/CF,EAAQ,YAAYG,EAAA7E,EAAK,IAAI,YAAY,IAArB,YAAA6E,EAAwB,aAAc,GAC1DH,EAAQ,MAAMI,EAAA9E,EAAK,IAAI,UAAU,IAAnB,YAAA8E,EAAsB,aAAc,GAC1CJ,EAAA,YAAc,WAASK,EAAA/E,EAAK,IAAI,cAAc,IAAvB,YAAA+E,EAA0B,aAAc,EAAE,EAClEL,CAAA,CAKf,EAFIzE,EAnBSwE,GAmBK,WAAYC,GACtB,GAAGA,EAAQ,OAAO,IAAIA,EAAQ,IAAI,IAAIA,EAAQ,SAAS,IAAIA,EAAQ,GAAG,IApBvE,IAAMM,GAANP,GCn1DS,SAAAQ,GACZC,EACAC,EAA2B,GACQ,CAC5B,OAAAC,GAAe,sBAAsBF,CAAO,GAAIC,EAAkBrN,GAAY,KAAM,sBAAsB,CACrH,CAGO,SAASuN,GAAwBH,EAAsD,CAC1F,OAAOE,GAAe,sBAAsBF,CAAO,mBAAoBpN,GAAW,sBAAsB,CAC5G,CAGO,SAASwN,GAAgBJ,EAA+C,CACrE,MAAAhG,EAAM,cAAcgG,CAAO,gBAC1B,OAAAE,GAAelG,CAAG,CAC7B,CAGsB,eAAAqG,GAClBC,EACAL,EAA2B,GACQ,CACnC,OAAAK,EAAM,kBAAoB,GAClB,MAAMC,GAAmBD,EAAOL,CAAe,CAC3D,CAWA,eAAeM,GACXD,EACAL,EAA2B,GACgC,CACrD,MAAAO,EAAgBF,EAAM,eAAiB,eAE7C,OAAOG,GADK,aACiBH,EAAOL,EAAkBrN,GAAY,KAAM4N,CAAa,CACzF,CAKgB,SAAAE,GACZV,EACAW,EAAwB,GACM,CAC9B,MAAM3G,EAAM,cACR2G,EAAe,8CAAgD,mCACnE,IAAIX,CAAO,GACJ,OAAAE,GAAelG,CAAG,CAC7B,CAMgB,SAAA4G,GACZC,EACAC,EACAC,EACmC,CACnC,MAAM/G,EAAM,6BAA6B6G,CAAO,IAAIC,CAAQ,IAAIC,CAAO,GAChE,OAAAb,GAAelG,CAAG,CAC7B,CAEgB,SAAAgH,GAAehB,EAAiBiB,EAAqCC,EAAiC,CAClH,IAAIC,EAAU,GACVD,KAAYE,KAAqBD,EAAU,IAAID,CAAQ,IAC3D,MAAMlH,EAAM,cAAcgG,CAAO,YAAYmB,CAAO,GAC7C,OAAAE,GAAgBrH,EAAKiH,EAAa,IAAIlD,GAAc,2BAA2B,EAAG,UAAU,CACvG,CAEgB,SAAAuD,GACZC,EACAC,EACqC,CAErC,OAAOH,GADK,6BAGRE,EACe,KACf,kBACJ,CACJ,CAEgB,SAAAE,GAAczB,EAAiBuB,EAAkD,CACvF,MAAAvH,EAAM,cAAcgG,CAAO,iBAC1B,OAAAqB,GAAgBrH,EAAKuH,EAAc,IAAIxD,GAAc,4BAA4B,EAAG,gBAAgB,CAC/G,CAegB,SAAA2D,GAAYC,EAAoBC,EAAe,GAAoC,CAC/F,MAAM5H,EAAM,gBAAgB,mBAAmB2H,CAAU,CAAC,GAC1D,OAAOzB,GAAelG,EAAK4H,EAAehP,GAAY,IAAI,CAC9D,CAEO,SAASiP,GAAYC,EAAuD,CAExE,OAAAC,GADK,gBACeD,CAAE,CACjC,CAEgB,SAAAE,GAAcxC,EAAiB3K,EAA8C,CAEzF,GADA2K,EAAUA,EAAUA,EAAQ,UAAU,EAAG,GAAG,EAAE,OAAS,GACnD,CAACA,EACM,OAAA,QAAQ,QAAQ,EAAE,EAG7B,IAAIxF,EAAM,0BAA0B,mBAAmBwF,CAAO,CAAC,GAC3D,OAAA3K,IAAYmF,GAAA,QAAQnF,CAAG,IACpBqL,GAAelG,EAAK,KAAM,gBAAgB,CACrD,CAMA,eAAsBiI,GAClBC,EACArN,EACAsN,EAA4B,GACE,CAC1B,GAAA,CACA,OAAOC,EAAO,QACT7F,EAAG,CACF,MAAA5C,EAAQ,IAAI0I,GACd,iCACA,QACA,wCACA,KACA9F,CACJ,EACM,aAAA+F,GAAmB3I,CAAK,EACvB,CAAC,CAAA,CAGZ,SAASyI,GAAS,CACV,GAAEF,EAAgB,CACZ,MAAAK,EAAiBL,EAAe,UAAU,EAAG,GAAG,EAAE,OAExD,IAAIlI,EAAM,4DADW,mBAAmBuI,CAAc,CAC8B,qBAAqBJ,CAAgB,GACrH,OAAAtN,IAAYmF,GAAA,QAAQnF,CAAG,IACpBqL,GAAelG,EAAK,KAAM,+BAA+B,CAAA,CAG7D,OAAA,QAAQ,QAAQ,EAAE,CAAA,CAEjC,CAEO,SAASwI,GAAahD,EAAmD,CAC5E,MAAMxF,EAAM,uBAAuB,mBAAmBwF,CAAO,CAAC,GACvD,OAAAU,GAAelG,EAAK,IAAI,CACnC,CAEgB,SAAAyI,GACZzC,EACA0C,EACAC,EACa,CACb,MAAM3I,EAAM,cAAcgG,CAAO,8BAA8B0C,CAAU,GAClE,OAAArB,GAAgBrH,EAAK2I,EAAiB,IAAI5E,GAAc,4BAA4B,EAAG,gBAAgB,CAClH,CAEgB,SAAA6E,GACZC,EACAC,EAC+B,CACzB,MAAA9I,EAAM,cAAc6I,CAAqB,mBAC/C,OAAOxB,GAAgBrH,EAAK8I,EAAc,IAAI/E,GAAiB,sBAAsB,CACzF,CAEO,SAASgF,GAAOC,EAA+C,CAC5D,MAAAhJ,EAAM,WAAWgJ,CAAG,GACnB,OAAA9C,GAAelG,CAAG,CAC7B,CAEO,SAASiJ,GAAqBtB,EAAyD,CAC1F,OAAOzB,GAAe,yBAAyByB,CAAU,GAAI/O,GAAW,0BAA0B,CACtG,CAGgB,SAAAsQ,GAAwBC,EAAsBH,EAAmD,CAC7G,MAAMhJ,EAAM,2CAA2CmJ,CAAY,IAAIH,CAAG,GAC1E,OAAO9C,GAAelG,EAAKpH,GAAW,gCAAgC,CAC1E,CAEA,eAAsBwQ,GAAuBC,EAAmB,CAC5D,OAAO,MAAMnD,GAAe,0BAA0BmD,CAAS,EAAE,CACrE,CAGa,MAAAC,GAAyB,MAAO3E,GAAuD,CAC1F,MAAA3E,EAAM,6BAA6B2E,CAAK,GACvC,OAAAuB,GAAelG,CAAG,CAC7B,EAEauJ,GAA0B,MACnCvD,EACA4B,EAAwB,KACS,CAC3B,MAAA5H,EAAM,sCAAsCgG,CAAO,GACzD,OAAOE,GAAelG,EAAK4H,EAAehP,GAAY,KAAM,oCAAoC,CACpG,EAEA,eAAsB4Q,GAAoCxD,EAAiD,CACjG,MAAAhG,EAAM,kDAAkDgG,CAAO,GACrE,OAAOE,GAAelG,EAAKpH,GAAW,kDAAkD,CAC5F,CAEa,MAAA6Q,GAA8BzD,GAAqC,CACtE,MAAAhG,EAAM,qCAAqCgG,CAAO,GACxD,OAAOE,GAAelG,EAAK,IAAI+D,GAAc,iBAAiB,EAAG,+BAA+B,CACpG,EAGa2F,GAA4B,CAAC1D,EAAiB4B,EAAwB,KAA2B,CACpG,MAAA5H,EAAM,oCAAoCgG,CAAO,GAChD,OAAAqB,GAAgBrH,EAAK,KAAM4H,EAAe,IAAI7D,GAAc,kBAAkB,EAAI,IAAI,CACjG,EC/OO,SAAS4F,GAAMA,EAAqD,CAMhE,OAAAC,GALK,YAKkBC,GAAe,KAAMF,EAAO/Q,GAAW,QAAS,EAAc,CAChG,CAEgB,SAAAkR,GACZC,EACAC,EAOD,CACQ,OAAA3C,GAAgB,kCAAmC,CACtD,SAAU0C,EACV,SAAUC,CAAA,CACb,CACL,CAEgB,SAAAC,GAAcC,EAAeF,EAAiC,CACnE,OAAA3C,GAAgB,0BAA2B,CAC9C,MAAO6C,EACP,SAAUF,CAAA,CACb,CACL,CAEO,SAASG,GAA0BC,EAA8B,CAC7D,OAAA/C,GAAgB,2BAA4B+C,CAAK,CAC5D,CAgBO,SAASC,IAAwB,CACpC,OAAOnE,GAAe,aAAc,KAAM,QAAQ,CACtD,CAEgB,SAAAoE,GAAqBlR,EAAoB,GAAiC,CACtF,OAAO8M,GAAe,4BAA6B9M,EAAWR,GAAY,KAAM,0BAA0B,CAC9G,CAEgB,SAAA2R,GAASC,EAAgB3P,EAAqC,CAC1E,OAAOqL,GAAe,oBAAoBsE,CAAM,QAAQ3P,CAAG,GAAI,IAAI,CACvE,CAEgB,SAAA4P,GAAuBC,EAAeC,EAAmD,CACrG,OAAOzE,GAAe,yBAAyBwE,CAAK,IAAIC,CAAY,GAAI,IAAI,CAChF,CCtEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUA,SAASC,IAAW,CAClB,OAAAA,GAAW,OAAO,OAAS,OAAO,OAAO,KAAI,EAAK,SAAUC,EAAQ,CAClE,QAAS3U,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAI4U,EAAS,UAAU5U,CAAC,EACxB,QAAS6C,KAAO+R,EACV,OAAO,UAAU,eAAe,KAAKA,EAAQ/R,CAAG,IAClD8R,EAAO9R,CAAG,EAAI+R,EAAO/R,CAAG,EAGlC,CACI,OAAO8R,CACR,EACMD,GAAS,MAAM,KAAM,SAAS,CACvC,CAQG,IAACG,IACH,SAAUA,EAAQ,CAQjBA,EAAO,IAAS,MAMhBA,EAAO,KAAU,OAKjBA,EAAO,QAAa,SACtB,GAAGA,KAAWA,GAAS,CAAA,EAAG,EAC1B,MAAMC,GAAoB,WAgH1B,SAASC,GAAqBnS,EAAS,CACjCA,IAAY,SACdA,EAAU,CAAE,GAEd,SAASoS,EAAsBC,EAAQC,EAAe,CACpD,GAAI,CACF,SAAAC,EACA,OAAAjD,EACA,KAAAkD,CACD,EAAGH,EAAO,SACX,OAAOI,GAAe,GAAI,CACxB,SAAAF,EACA,OAAAjD,EACA,KAAAkD,CACD,EAEDF,EAAc,OAASA,EAAc,MAAM,KAAO,KAAMA,EAAc,OAASA,EAAc,MAAM,KAAO,SAAS,CACvH,CACE,SAASI,EAAkBL,EAAQpV,EAAI,CACrC,OAAO,OAAOA,GAAO,SAAWA,EAAK0V,GAAW1V,CAAE,CACtD,CACE,OAAO2V,GAAmBR,EAAuBM,EAAmB,KAAM1S,CAAO,CACnF,CAmDA,SAAS6S,EAAU3S,EAAOmH,EAAS,CACjC,GAAInH,IAAU,IAASA,IAAU,MAAQ,OAAOA,EAAU,IACxD,MAAM,IAAI,MAAMmH,CAAO,CAE3B,CACA,SAASyL,GAAQC,EAAM1L,EAAS,CAC9B,GAAI,CAAC0L,EAAM,CAEL,OAAO,QAAY,KAAa,QAAQ,KAAK1L,CAAO,EACxD,GAAI,CAMF,MAAM,IAAI,MAAMA,CAAO,CAExB,MAAW,CAAA,CAChB,CACA,CACA,SAAS2L,IAAY,CACnB,OAAO,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,OAAO,EAAG,CAAC,CAC/C,CAIA,SAASC,GAAgBC,EAAUC,EAAO,CACxC,MAAO,CACL,IAAKD,EAAS,MACd,IAAKA,EAAS,IACd,IAAKC,CACN,CACH,CAIA,SAASV,GAAevR,EAASjE,EAAI2U,EAAO3R,EAAK,CAC/C,OAAI2R,IAAU,SACZA,EAAQ,MAEKE,GAAS,CACtB,SAAU,OAAO5Q,GAAY,SAAWA,EAAUA,EAAQ,SAC1D,OAAQ,GACR,KAAM,EACV,EAAK,OAAOjE,GAAO,SAAWmW,GAAUnW,CAAE,EAAIA,EAAI,CAC9C,MAAA2U,EAKA,IAAK3U,GAAMA,EAAG,KAAOgD,GAAO+S,GAAS,CACzC,CAAG,CAEH,CAIA,SAASL,GAAWU,EAAM,CACxB,GAAI,CACF,SAAAd,EAAW,IACX,OAAAjD,EAAS,GACT,KAAAkD,EAAO,EACX,EAAMa,EACJ,OAAI/D,GAAUA,IAAW,MAAKiD,GAAYjD,EAAO,OAAO,CAAC,IAAM,IAAMA,EAAS,IAAMA,GAChFkD,GAAQA,IAAS,MAAKD,GAAYC,EAAK,OAAO,CAAC,IAAM,IAAMA,EAAO,IAAMA,GACrED,CACT,CAIA,SAASa,GAAUE,EAAM,CACvB,IAAIC,EAAa,CAAE,EACnB,GAAID,EAAM,CACR,IAAIE,EAAYF,EAAK,QAAQ,GAAG,EAC5BE,GAAa,IACfD,EAAW,KAAOD,EAAK,OAAOE,CAAS,EACvCF,EAAOA,EAAK,OAAO,EAAGE,CAAS,GAEjC,IAAIC,EAAcH,EAAK,QAAQ,GAAG,EAC9BG,GAAe,IACjBF,EAAW,OAASD,EAAK,OAAOG,CAAW,EAC3CH,EAAOA,EAAK,OAAO,EAAGG,CAAW,GAE/BH,IACFC,EAAW,SAAWD,EAE5B,CACE,OAAOC,CACT,CACA,SAASX,GAAmBc,EAAaC,EAAYC,EAAkB5T,EAAS,CAC1EA,IAAY,SACdA,EAAU,CAAE,GAEd,GAAI,CACF,OAAAqS,EAAS,SAAS,YAClB,SAAAwB,EAAW,EACf,EAAM7T,EACAsS,EAAgBD,EAAO,QACvBzI,EAASqI,GAAO,IAChB6B,EAAW,KACXX,EAAQY,EAAU,EAIlBZ,GAAS,OACXA,EAAQ,EACRb,EAAc,aAAaR,GAAS,CAAA,EAAIQ,EAAc,MAAO,CAC3D,IAAKa,CACN,CAAA,EAAG,EAAE,GAER,SAASY,GAAW,CAIlB,OAHYzB,EAAc,OAAS,CACjC,IAAK,IACN,GACY,GACjB,CACE,SAAS0B,GAAY,CACnBpK,EAASqI,GAAO,IAChB,IAAIgC,EAAYF,EAAU,EACtBG,EAAQD,GAAa,KAAO,KAAOA,EAAYd,EACnDA,EAAQc,EACJH,GACFA,EAAS,CACP,OAAAlK,EACA,SAAUuK,EAAQ,SAClB,MAAAD,CACR,CAAO,CAEP,CACE,SAASE,EAAKnX,EAAI2U,EAAO,CACvBhI,EAASqI,GAAO,KAChB,IAAIiB,EAAWT,GAAe0B,EAAQ,SAAUlX,EAAI2U,CAAK,EAEzDuB,EAAQY,EAAQ,EAAK,EACrB,IAAIM,EAAepB,GAAgBC,EAAUC,CAAK,EAC9CjM,EAAMiN,EAAQ,WAAWjB,CAAQ,EAErC,GAAI,CACFZ,EAAc,UAAU+B,EAAc,GAAInN,CAAG,CAC9C,OAAQL,EAAO,CAKd,GAAIA,aAAiB,cAAgBA,EAAM,OAAS,iBAClD,MAAMA,EAIRwL,EAAO,SAAS,OAAOnL,CAAG,CAChC,CACQ2M,GAAYC,GACdA,EAAS,CACP,OAAAlK,EACA,SAAUuK,EAAQ,SAClB,MAAO,CACf,CAAO,CAEP,CACE,SAASG,EAAQrX,EAAI2U,EAAO,CAC1BhI,EAASqI,GAAO,QAChB,IAAIiB,EAAWT,GAAe0B,EAAQ,SAAUlX,EAAI2U,CAAK,EAEzDuB,EAAQY,EAAU,EAClB,IAAIM,EAAepB,GAAgBC,EAAUC,CAAK,EAC9CjM,EAAMiN,EAAQ,WAAWjB,CAAQ,EACrCZ,EAAc,aAAa+B,EAAc,GAAInN,CAAG,EAC5C2M,GAAYC,GACdA,EAAS,CACP,OAAAlK,EACA,SAAUuK,EAAQ,SAClB,MAAO,CACf,CAAO,CAEP,CACE,SAASI,EAAUtX,EAAI,CAIrB,IAAIuX,EAAOnC,EAAO,SAAS,SAAW,OAASA,EAAO,SAAS,OAASA,EAAO,SAAS,KACpFoC,EAAO,OAAOxX,GAAO,SAAWA,EAAK0V,GAAW1V,CAAE,EACtD,OAAA4V,EAAU2B,EAAM,sEAAwEC,CAAI,EACrF,IAAI,IAAIA,EAAMD,CAAI,CAC7B,CACE,IAAIL,EAAU,CACZ,IAAI,QAAS,CACX,OAAOvK,CACR,EACD,IAAI,UAAW,CACb,OAAO8J,EAAYrB,EAAQC,CAAa,CACzC,EACD,OAAOpQ,EAAI,CACT,GAAI4R,EACF,MAAM,IAAI,MAAM,4CAA4C,EAE9D,OAAAzB,EAAO,iBAAiBH,GAAmB8B,CAAS,EACpDF,EAAW5R,EACJ,IAAM,CACXmQ,EAAO,oBAAoBH,GAAmB8B,CAAS,EACvDF,EAAW,IACZ,CACF,EACD,WAAW7W,EAAI,CACb,OAAO0W,EAAWtB,EAAQpV,CAAE,CAC7B,EACD,UAAAsX,EACA,eAAetX,EAAI,CAEjB,IAAIiK,EAAMqN,EAAUtX,CAAE,EACtB,MAAO,CACL,SAAUiK,EAAI,SACd,OAAQA,EAAI,OACZ,KAAMA,EAAI,IACX,CACF,EACD,KAAAkN,EACA,QAAAE,EACA,GAAGnU,EAAG,CACJ,OAAOmS,EAAc,GAAGnS,CAAC,CAC/B,CACG,EACD,OAAOgU,CACT,CAGA,IAAIO,IACH,SAAUA,EAAY,CACrBA,EAAW,KAAU,OACrBA,EAAW,SAAc,WACzBA,EAAW,SAAc,WACzBA,EAAW,MAAW,OACxB,GAAGA,KAAeA,GAAa,CAAA,EAAG,EAClC,MAAMC,GAAqB,IAAI,IAAI,CAAC,OAAQ,gBAAiB,OAAQ,KAAM,QAAS,UAAU,CAAC,EAC/F,SAASC,GAAaC,EAAO,CAC3B,OAAOA,EAAM,QAAU,EACzB,CAGA,SAASC,GAA0BC,EAAQC,EAAoBC,EAAYC,EAAU,CACnF,OAAID,IAAe,SACjBA,EAAa,CAAE,GAEbC,IAAa,SACfA,EAAW,CAAE,GAERH,EAAO,IAAI,CAACF,EAAO1B,IAAU,CAClC,IAAIgC,EAAW,CAAC,GAAGF,EAAY9B,CAAK,EAChCiC,EAAK,OAAOP,EAAM,IAAO,SAAWA,EAAM,GAAKM,EAAS,KAAK,GAAG,EAGpE,GAFAtC,EAAUgC,EAAM,QAAU,IAAQ,CAACA,EAAM,SAAU,2CAA2C,EAC9FhC,EAAU,CAACqC,EAASE,CAAE,EAAG,qCAAwCA,EAAK,kEAAwE,EAC1IR,GAAaC,CAAK,EAAG,CACvB,IAAIQ,EAAavD,GAAS,CAAA,EAAI+C,EAAOG,EAAmBH,CAAK,EAAG,CAC9D,GAAAO,CACR,CAAO,EACD,OAAAF,EAASE,CAAE,EAAIC,EACRA,CACb,KAAW,CACL,IAAIC,EAAoBxD,GAAS,CAAA,EAAI+C,EAAOG,EAAmBH,CAAK,EAAG,CACrE,GAAAO,EACA,SAAU,MAClB,CAAO,EACD,OAAAF,EAASE,CAAE,EAAIE,EACXT,EAAM,WACRS,EAAkB,SAAWR,GAA0BD,EAAM,SAAUG,EAAoBG,EAAUD,CAAQ,GAExGI,CACb,CACA,CAAG,CACH,CAMA,SAASC,GAAYR,EAAQS,EAAaC,EAAU,CAC9CA,IAAa,SACfA,EAAW,KAEb,IAAIvC,EAAW,OAAOsC,GAAgB,SAAWpC,GAAUoC,CAAW,EAAIA,EACtEjD,EAAWmD,GAAcxC,EAAS,UAAY,IAAKuC,CAAQ,EAC/D,GAAIlD,GAAY,KACd,OAAO,KAET,IAAIoD,EAAWC,GAAcb,CAAM,EACnCc,GAAkBF,CAAQ,EAC1B,IAAIG,EAAU,KACd,QAAS1Y,EAAI,EAAG0Y,GAAW,MAAQ1Y,EAAIuY,EAAS,OAAQ,EAAEvY,EACxD0Y,EAAUC,GAAiBJ,EAASvY,CAAC,EAOrC4Y,GAAgBzD,CAAQ,CAAC,EAE3B,OAAOuD,CACT,CACA,SAASG,GAA2BhX,EAAOiX,EAAY,CACrD,GAAI,CACF,MAAArB,EACA,SAAAtC,EACA,OAAApJ,CACJ,EAAMlK,EACJ,MAAO,CACL,GAAI4V,EAAM,GACV,SAAAtC,EACA,OAAApJ,EACA,KAAM+M,EAAWrB,EAAM,EAAE,EACzB,OAAQA,EAAM,MACf,CACH,CACA,SAASe,GAAcb,EAAQY,EAAUQ,EAAalB,EAAY,CAC5DU,IAAa,SACfA,EAAW,CAAE,GAEXQ,IAAgB,SAClBA,EAAc,CAAE,GAEdlB,IAAe,SACjBA,EAAa,IAEf,IAAImB,EAAe,CAACvB,EAAO1B,EAAOkD,IAAiB,CACjD,IAAIC,EAAO,CACT,aAAcD,IAAiB,OAAYxB,EAAM,MAAQ,GAAKwB,EAC9D,cAAexB,EAAM,gBAAkB,GACvC,cAAe1B,EACf,MAAA0B,CACD,EACGyB,EAAK,aAAa,WAAW,GAAG,IAClCzD,EAAUyD,EAAK,aAAa,WAAWrB,CAAU,EAAG,wBAA2BqB,EAAK,aAAe,wBAA2B,IAAOrB,EAAa,iDAAoD,6DAA6D,EACnQqB,EAAK,aAAeA,EAAK,aAAa,MAAMrB,EAAW,MAAM,GAE/D,IAAI3B,EAAOiD,GAAU,CAACtB,EAAYqB,EAAK,YAAY,CAAC,EAChDE,EAAaL,EAAY,OAAOG,CAAI,EAIpCzB,EAAM,UAAYA,EAAM,SAAS,OAAS,IAC5ChC,EAGAgC,EAAM,QAAU,GAAM,2DAA6D,qCAAwCvB,EAAO,KAAM,EACxIsC,GAAcf,EAAM,SAAUc,EAAUa,EAAYlD,CAAI,GAItD,EAAAuB,EAAM,MAAQ,MAAQ,CAACA,EAAM,QAGjCc,EAAS,KAAK,CACZ,KAAArC,EACA,MAAOmD,GAAanD,EAAMuB,EAAM,KAAK,EACrC,WAAA2B,CACN,CAAK,CACF,EACD,OAAAzB,EAAO,QAAQ,CAACF,EAAO1B,IAAU,CAC/B,IAAIuD,EAEJ,GAAI7B,EAAM,OAAS,IAAM,GAAG6B,EAAc7B,EAAM,OAAS,MAAQ6B,EAAY,SAAS,GAAG,GACvFN,EAAavB,EAAO1B,CAAK,MAEzB,SAASwD,KAAYC,GAAwB/B,EAAM,IAAI,EACrDuB,EAAavB,EAAO1B,EAAOwD,CAAQ,CAG3C,CAAG,EACMhB,CACT,CAeA,SAASiB,GAAwBtD,EAAM,CACrC,IAAIuD,EAAWvD,EAAK,MAAM,GAAG,EAC7B,GAAIuD,EAAS,SAAW,EAAG,MAAO,CAAE,EACpC,GAAI,CAACC,EAAO,GAAGC,CAAI,EAAIF,EAEnBG,EAAaF,EAAM,SAAS,GAAG,EAE/BG,EAAWH,EAAM,QAAQ,MAAO,EAAE,EACtC,GAAIC,EAAK,SAAW,EAGlB,OAAOC,EAAa,CAACC,EAAU,EAAE,EAAI,CAACA,CAAQ,EAEhD,IAAIC,EAAeN,GAAwBG,EAAK,KAAK,GAAG,CAAC,EACrD7O,EAAS,CAAE,EAQf,OAAAA,EAAO,KAAK,GAAGgP,EAAa,IAAIC,GAAWA,IAAY,GAAKF,EAAW,CAACA,EAAUE,CAAO,EAAE,KAAK,GAAG,CAAC,CAAC,EAEjGH,GACF9O,EAAO,KAAK,GAAGgP,CAAY,EAGtBhP,EAAO,IAAIyO,GAAYrD,EAAK,WAAW,GAAG,GAAKqD,IAAa,GAAK,IAAMA,CAAQ,CACxF,CACA,SAASd,GAAkBF,EAAU,CACnCA,EAAS,KAAK,CAACyB,EAAGC,IAAMD,EAAE,QAAUC,EAAE,MAAQA,EAAE,MAAQD,EAAE,MACxDE,GAAeF,EAAE,WAAW,IAAId,GAAQA,EAAK,aAAa,EAAGe,EAAE,WAAW,IAAIf,GAAQA,EAAK,aAAa,CAAC,CAAC,CAC9G,CACA,MAAMiB,GAAU,SACVC,GAAsB,EACtBC,GAAkB,EAClBC,GAAoB,EACpBC,GAAqB,GACrBC,GAAe,GACfC,GAAUC,GAAKA,IAAM,IAC3B,SAASrB,GAAanD,EAAMH,EAAO,CACjC,IAAI0D,EAAWvD,EAAK,MAAM,GAAG,EACzByE,EAAelB,EAAS,OAC5B,OAAIA,EAAS,KAAKgB,EAAO,IACvBE,GAAgBH,IAEdzE,IACF4E,GAAgBN,IAEXZ,EAAS,OAAOiB,GAAK,CAACD,GAAQC,CAAC,CAAC,EAAE,OAAO,CAACE,EAAOC,IAAYD,GAAST,GAAQ,KAAKU,CAAO,EAAIT,GAAsBS,IAAY,GAAKP,GAAoBC,IAAqBI,CAAY,CACnM,CACA,SAAST,GAAeF,EAAGC,EAAG,CAE5B,OADeD,EAAE,SAAWC,EAAE,QAAUD,EAAE,MAAM,EAAG,EAAE,EAAE,MAAM,CAAC,EAAG,IAAM,IAAMC,EAAE,CAAC,CAAC,EAMjFD,EAAEA,EAAE,OAAS,CAAC,EAAIC,EAAEA,EAAE,OAAS,CAAC,EAGhC,CACF,CACA,SAAStB,GAAiBmC,EAAQ3F,EAAU,CAC1C,GAAI,CACF,WAAAiE,CACJ,EAAM0B,EACAC,EAAgB,CAAE,EAClBC,EAAkB,IAClBtC,EAAU,CAAE,EAChB,QAAS1Y,EAAI,EAAGA,EAAIoZ,EAAW,OAAQ,EAAEpZ,EAAG,CAC1C,IAAIkZ,EAAOE,EAAWpZ,CAAC,EACnBib,EAAMjb,IAAMoZ,EAAW,OAAS,EAChC8B,EAAoBF,IAAoB,IAAM7F,EAAWA,EAAS,MAAM6F,EAAgB,MAAM,GAAK,IACnGnZ,EAAQsZ,GAAU,CACpB,KAAMjC,EAAK,aACX,cAAeA,EAAK,cACpB,IAAA+B,CACD,EAAEC,CAAiB,EACpB,GAAI,CAACrZ,EAAO,OAAO,KACnB,OAAO,OAAOkZ,EAAelZ,EAAM,MAAM,EACzC,IAAI4V,EAAQyB,EAAK,MACjBR,EAAQ,KAAK,CAEX,OAAQqC,EACR,SAAU5B,GAAU,CAAC6B,EAAiBnZ,EAAM,QAAQ,CAAC,EACrD,aAAcuZ,GAAkBjC,GAAU,CAAC6B,EAAiBnZ,EAAM,YAAY,CAAC,CAAC,EAChF,MAAA4V,CACN,CAAK,EACG5V,EAAM,eAAiB,MACzBmZ,EAAkB7B,GAAU,CAAC6B,EAAiBnZ,EAAM,YAAY,CAAC,EAEvE,CACE,OAAO6W,CACT,CAMA,SAAS2C,GAAaC,EAAcvP,EAAQ,CACtCA,IAAW,SACbA,EAAS,CAAE,GAEb,IAAImK,EAAOoF,EACPpF,EAAK,SAAS,GAAG,GAAKA,IAAS,KAAO,CAACA,EAAK,SAAS,IAAI,IAC3DR,GAAQ,GAAO,eAAkBQ,EAAO,oCAAuC,IAAOA,EAAK,QAAQ,MAAO,IAAI,EAAI,qCAAwC,oEAAsE,oCAAuCA,EAAK,QAAQ,MAAO,IAAI,EAAI,KAAM,EACzSA,EAAOA,EAAK,QAAQ,MAAO,IAAI,GAGjC,MAAMqF,EAASrF,EAAK,WAAW,GAAG,EAAI,IAAM,GACtCsF,EAAYC,GAAKA,GAAK,KAAO,GAAK,OAAOA,GAAM,SAAWA,EAAI,OAAOA,CAAC,EACtEhC,EAAWvD,EAAK,MAAM,KAAK,EAAE,IAAI,CAAC2E,EAAS9E,EAAO2F,IAAU,CAGhE,GAFsB3F,IAAU2F,EAAM,OAAS,GAE1Bb,IAAY,IAG/B,OAAOW,EAAUzP,EAFJ,GAEe,CAAC,EAE/B,MAAM4P,EAAWd,EAAQ,MAAM,eAAe,EAC9C,GAAIc,EAAU,CACZ,KAAM,CAAG,CAAA9Y,EAAK+Y,CAAQ,EAAID,EAC1B,IAAIE,EAAQ9P,EAAOlJ,CAAG,EACtB,OAAA4S,EAAUmG,IAAa,KAAOC,GAAS,KAAM,aAAgBhZ,EAAM,SAAU,EACtE2Y,EAAUK,CAAK,CAC5B,CAEI,OAAOhB,EAAQ,QAAQ,OAAQ,EAAE,CAClC,CAAA,EAEA,OAAOA,GAAW,CAAC,CAACA,CAAO,EAC5B,OAAOU,EAAS9B,EAAS,KAAK,GAAG,CACnC,CAOA,SAAS0B,GAAUW,EAAS3G,EAAU,CAChC,OAAO2G,GAAY,WACrBA,EAAU,CACR,KAAMA,EACN,cAAe,GACf,IAAK,EACN,GAEH,GAAI,CAACC,EAASC,CAAc,EAAIC,GAAYH,EAAQ,KAAMA,EAAQ,cAAeA,EAAQ,GAAG,EACxFja,EAAQsT,EAAS,MAAM4G,CAAO,EAClC,GAAI,CAACla,EAAO,OAAO,KACnB,IAAImZ,EAAkBnZ,EAAM,CAAC,EACzBqa,EAAelB,EAAgB,QAAQ,UAAW,IAAI,EACtDmB,EAAgBta,EAAM,MAAM,CAAC,EAoBjC,MAAO,CACL,OApBWma,EAAe,OAAO,CAACI,EAAMnG,EAAMF,IAAU,CACxD,GAAI,CACF,UAAAsG,EACA,WAAAzC,CACN,EAAQ3D,EAGJ,GAAIoG,IAAc,IAAK,CACrB,IAAIC,EAAaH,EAAcpG,CAAK,GAAK,GACzCmG,EAAelB,EAAgB,MAAM,EAAGA,EAAgB,OAASsB,EAAW,MAAM,EAAE,QAAQ,UAAW,IAAI,CACjH,CACI,MAAMxZ,EAAQqZ,EAAcpG,CAAK,EACjC,OAAI6D,GAAc,CAAC9W,EACjBsZ,EAAKC,CAAS,EAAI,OAElBD,EAAKC,CAAS,EAAIE,GAAyBzZ,GAAS,GAAIuZ,CAAS,EAE5DD,CACR,EAAE,EAAE,EAGH,SAAUpB,EACV,aAAAkB,EACA,QAAAJ,CACD,CACH,CACA,SAASG,GAAY/F,EAAMsG,EAAevB,EAAK,CACzCuB,IAAkB,SACpBA,EAAgB,IAEdvB,IAAQ,SACVA,EAAM,IAERvF,GAAQQ,IAAS,KAAO,CAACA,EAAK,SAAS,GAAG,GAAKA,EAAK,SAAS,IAAI,EAAG,eAAkBA,EAAO,oCAAuC,IAAOA,EAAK,QAAQ,MAAO,IAAI,EAAI,qCAAwC,oEAAsE,oCAAuCA,EAAK,QAAQ,MAAO,IAAI,EAAI,KAAM,EAC9V,IAAInK,EAAS,CAAE,EACX0Q,EAAe,IAAMvG,EAAK,QAAQ,UAAW,EAAE,EAClD,QAAQ,OAAQ,GAAG,EACnB,QAAQ,qBAAsB,MAAM,EACpC,QAAQ,iBAAkB,CAACwG,EAAGL,EAAWzC,KACxC7N,EAAO,KAAK,CACV,UAAAsQ,EACA,WAAYzC,GAAc,IAChC,CAAK,EACMA,EAAa,eAAiB,aACtC,EACD,OAAI1D,EAAK,SAAS,GAAG,GACnBnK,EAAO,KAAK,CACV,UAAW,GACjB,CAAK,EACD0Q,GAAgBvG,IAAS,KAAOA,IAAS,KAAO,QAC9C,qBACO+E,EAETwB,GAAgB,QACPvG,IAAS,IAAMA,IAAS,MAQjCuG,GAAgB,iBAGX,CADO,IAAI,OAAOA,EAAcD,EAAgB,OAAY,GAAG,EACrDzQ,CAAM,CACzB,CACA,SAAS6M,GAAgB9V,EAAO,CAC9B,GAAI,CACF,OAAO,UAAUA,CAAK,CACvB,OAAQ2G,EAAO,CACd,OAAAiM,GAAQ,GAAO,iBAAoB5S,EAAQ,2GAAmH,aAAe2G,EAAQ,KAAK,EACnL3G,CACX,CACA,CACA,SAASyZ,GAAyBzZ,EAAOuZ,EAAW,CAClD,GAAI,CACF,OAAO,mBAAmBvZ,CAAK,CAChC,OAAQ2G,EAAO,CACd,OAAAiM,GAAQ,GAAO,gCAAmC2G,EAAY,iCAAoC,gBAAmBvZ,EAAQ,mDAAsD,mCAAqC2G,EAAQ,KAAK,EAC9N3G,CACX,CACA,CAIA,SAASwV,GAAcnD,EAAUkD,EAAU,CACzC,GAAIA,IAAa,IAAK,OAAOlD,EAC7B,GAAI,CAACA,EAAS,YAAa,EAAC,WAAWkD,EAAS,YAAW,CAAE,EAC3D,OAAO,KAIT,IAAIsE,EAAatE,EAAS,SAAS,GAAG,EAAIA,EAAS,OAAS,EAAIA,EAAS,OACrEuE,EAAWzH,EAAS,OAAOwH,CAAU,EACzC,OAAIC,GAAYA,IAAa,IAEpB,KAEFzH,EAAS,MAAMwH,CAAU,GAAK,GACvC,CAMA,SAASE,GAAYhd,EAAIid,EAAc,CACjCA,IAAiB,SACnBA,EAAe,KAEjB,GAAI,CACF,SAAUC,EACV,OAAA7K,EAAS,GACT,KAAAkD,EAAO,EACR,EAAG,OAAOvV,GAAO,SAAWmW,GAAUnW,CAAE,EAAIA,EAE7C,MAAO,CACL,SAFakd,EAAaA,EAAW,WAAW,GAAG,EAAIA,EAAaC,GAAgBD,EAAYD,CAAY,EAAIA,EAGhH,OAAQG,GAAgB/K,CAAM,EAC9B,KAAMgL,GAAc9H,CAAI,CACzB,CACH,CACA,SAAS4H,GAAgB/D,EAAc6D,EAAc,CACnD,IAAIrD,EAAWqD,EAAa,QAAQ,OAAQ,EAAE,EAAE,MAAM,GAAG,EAEzD,OADuB7D,EAAa,MAAM,GAAG,EAC5B,QAAQ4B,GAAW,CAC9BA,IAAY,KAEVpB,EAAS,OAAS,GAAGA,EAAS,IAAK,EAC9BoB,IAAY,KACrBpB,EAAS,KAAKoB,CAAO,CAE3B,CAAG,EACMpB,EAAS,OAAS,EAAIA,EAAS,KAAK,GAAG,EAAI,GACpD,CACA,SAAS0D,GAAoBC,EAAMC,EAAOC,EAAMpH,EAAM,CACpD,MAAO,qBAAuBkH,EAAO,wCAA0C,OAASC,EAAQ,YAAc,KAAK,UAAUnH,CAAI,EAAI,uCAAyC,OAASoH,EAAO,4DAA8D,mEAC9P,CAwBA,SAASC,GAA2B7E,EAAS,CAC3C,OAAOA,EAAQ,OAAO,CAAC7W,EAAOkU,IAAUA,IAAU,GAAKlU,EAAM,MAAM,MAAQA,EAAM,MAAM,KAAK,OAAS,CAAC,CACxG,CAIA,SAAS2b,GAAUC,EAAOC,EAAgBC,EAAkBC,EAAgB,CACtEA,IAAmB,SACrBA,EAAiB,IAEnB,IAAI/d,EACA,OAAO4d,GAAU,SACnB5d,EAAKmW,GAAUyH,CAAK,GAEpB5d,EAAK6U,GAAS,CAAE,EAAE+I,CAAK,EACvBhI,EAAU,CAAC5V,EAAG,UAAY,CAACA,EAAG,SAAS,SAAS,GAAG,EAAGsd,GAAoB,IAAK,WAAY,SAAUtd,CAAE,CAAC,EACxG4V,EAAU,CAAC5V,EAAG,UAAY,CAACA,EAAG,SAAS,SAAS,GAAG,EAAGsd,GAAoB,IAAK,WAAY,OAAQtd,CAAE,CAAC,EACtG4V,EAAU,CAAC5V,EAAG,QAAU,CAACA,EAAG,OAAO,SAAS,GAAG,EAAGsd,GAAoB,IAAK,SAAU,OAAQtd,CAAE,CAAC,GAElG,IAAIge,EAAcJ,IAAU,IAAM5d,EAAG,WAAa,GAC9Ckd,EAAac,EAAc,IAAMhe,EAAG,SACpCC,EAUJ,GAAIid,GAAc,KAChBjd,EAAO6d,UACEC,EAAgB,CACzB,IAAIE,EAAeJ,EAAeA,EAAe,OAAS,CAAC,EAAE,QAAQ,MAAO,EAAE,EAAE,MAAM,GAAG,EACzF,GAAIX,EAAW,WAAW,IAAI,EAAG,CAC/B,IAAIgB,EAAahB,EAAW,MAAM,GAAG,EAErC,KAAOgB,EAAW,CAAC,IAAM,MACvBA,EAAW,MAAO,EAClBD,EAAa,IAAK,EAEpBje,EAAG,SAAWke,EAAW,KAAK,GAAG,CACvC,CACIje,EAAO,IAAMge,EAAa,KAAK,GAAG,CACtC,KAAS,CACL,IAAIE,EAAqBN,EAAe,OAAS,EACjD,GAAIX,EAAW,WAAW,IAAI,EAAG,CAC/B,IAAIgB,EAAahB,EAAW,MAAM,GAAG,EAKrC,KAAOgB,EAAW,CAAC,IAAM,MACvBA,EAAW,MAAO,EAClBC,GAAsB,EAExBne,EAAG,SAAWke,EAAW,KAAK,GAAG,CACvC,CAGIje,EAAOke,GAAsB,EAAIN,EAAeM,CAAkB,EAAI,GAC1E,CACE,IAAI9H,EAAO2G,GAAYhd,EAAIC,CAAI,EAE3Bme,EAA2BlB,GAAcA,IAAe,KAAOA,EAAW,SAAS,GAAG,EAEtFmB,GAA2BL,GAAed,IAAe,MAAQY,EAAiB,SAAS,GAAG,EAClG,MAAI,CAACzH,EAAK,SAAS,SAAS,GAAG,IAAM+H,GAA4BC,KAC/DhI,EAAK,UAAY,KAEZA,CACT,CAWK,MAACiD,GAAYgF,GAASA,EAAM,KAAK,GAAG,EAAE,QAAQ,SAAU,GAAG,EAI1D/C,GAAoBjG,GAAYA,EAAS,QAAQ,OAAQ,EAAE,EAAE,QAAQ,OAAQ,GAAG,EAIhF8H,GAAkB/K,GAAU,CAACA,GAAUA,IAAW,IAAM,GAAKA,EAAO,WAAW,GAAG,EAAIA,EAAS,IAAMA,EAIrGgL,GAAgB9H,GAAQ,CAACA,GAAQA,IAAS,IAAM,GAAKA,EAAK,WAAW,GAAG,EAAIA,EAAO,IAAMA,EA6M/F,MAAMgJ,EAAkB,CACtB,YAAYrU,EAAQsU,EAAYzT,EAAM0T,EAAU,CAC1CA,IAAa,SACfA,EAAW,IAEb,KAAK,OAASvU,EACd,KAAK,WAAasU,GAAc,GAChC,KAAK,SAAWC,EACZ1T,aAAgB,OAClB,KAAK,KAAOA,EAAK,SAAU,EAC3B,KAAK,MAAQA,GAEb,KAAK,KAAOA,CAElB,CACA,CAKA,SAAS2T,GAAqB9U,EAAO,CACnC,OAAOA,GAAS,MAAQ,OAAOA,EAAM,QAAW,UAAY,OAAOA,EAAM,YAAe,UAAY,OAAOA,EAAM,UAAa,WAAa,SAAUA,CACvJ,CAEA,MAAM+U,GAA0B,CAAC,OAAQ,MAAO,QAAS,QAAQ,EAC3DC,GAAuB,IAAI,IAAID,EAAuB,EACtDE,GAAyB,CAAC,MAAO,GAAGF,EAAuB,EAC3DG,GAAsB,IAAI,IAAID,EAAsB,EACpDE,GAAsB,IAAI,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,CAAC,EACvDC,GAAoC,IAAI,IAAI,CAAC,IAAK,GAAG,CAAC,EACtDC,GAAkB,CACtB,MAAO,OACP,SAAU,OACV,WAAY,OACZ,WAAY,OACZ,YAAa,OACb,SAAU,OACV,KAAM,OACN,KAAM,MACR,EACMC,GAAe,CACnB,MAAO,OACP,KAAM,OACN,WAAY,OACZ,WAAY,OACZ,YAAa,OACb,SAAU,OACV,KAAM,OACN,KAAM,MACR,EACMC,GAAe,CACnB,MAAO,YACP,QAAS,OACT,MAAO,OACP,SAAU,MACZ,EACMC,GAAqB,gCACrBC,GAA4BzH,IAAU,CAC1C,iBAAkB,EAAQA,EAAM,gBAClC,GACM0H,GAA0B,2BAQhC,SAASC,GAAajV,EAAM,CAC1B,MAAMkV,EAAelV,EAAK,OAASA,EAAK,OAAS,OAAO,OAAW,IAAc,OAAS,OACpFmV,EAAY,OAAOD,EAAiB,KAAe,OAAOA,EAAa,SAAa,KAAe,OAAOA,EAAa,SAAS,cAAkB,IAClJE,EAAW,CAACD,EAClB7J,EAAUtL,EAAK,OAAO,OAAS,EAAG,2DAA2D,EAC7F,IAAIyN,EACJ,GAAIzN,EAAK,mBACPyN,EAAqBzN,EAAK,2BACjBA,EAAK,oBAAqB,CAEnC,IAAIqV,EAAsBrV,EAAK,oBAC/ByN,EAAqBH,IAAU,CAC7B,iBAAkB+H,EAAoB/H,CAAK,CACjD,EACA,MACIG,EAAqBsH,GAGvB,IAAIpH,EAAW,CAAE,EAEb2H,EAAa/H,GAA0BvN,EAAK,OAAQyN,EAAoB,OAAWE,CAAQ,EAC3F4H,EACArH,EAAWlO,EAAK,UAAY,IAE5BwV,EAASjL,GAAS,CACpB,kBAAmB,GACnB,uBAAwB,GACxB,mBAAoB,EACxB,EAAKvK,EAAK,MAAM,EAEVyV,EAAkB,KAElBC,EAAc,IAAI,IAElBC,EAAuB,KAEvBC,EAA0B,KAE1BC,EAAoB,KAOpBC,EAAwB9V,EAAK,eAAiB,KAC9C+V,EAAiB/H,GAAYsH,EAAYtV,EAAK,QAAQ,SAAUkO,CAAQ,EACxE8H,EAAgB,KACpB,GAAID,GAAkB,KAAM,CAG1B,IAAIzW,EAAQ2W,GAAuB,IAAK,CACtC,SAAUjW,EAAK,QAAQ,SAAS,QACtC,CAAK,EACG,CACF,QAAAuO,EACA,MAAAjB,CACN,EAAQ4I,GAAuBZ,CAAU,EACrCS,EAAiBxH,EACjByH,EAAgB,CACd,CAAC1I,EAAM,EAAE,EAAGhO,CACb,CACL,CACE,IAAI6W,EAGJ,CAACJ,EAAe,KAAKK,GAAKA,EAAE,MAAM,IAAI,IAEtC,CAACL,EAAe,KAAKK,GAAKA,EAAE,MAAM,MAAM,GAAKpW,EAAK,eAAiB,MAC/DqW,EACAhM,EAAQ,CACV,cAAerK,EAAK,QAAQ,OAC5B,SAAUA,EAAK,QAAQ,SACvB,QAAS+V,EACT,YAAAI,EACA,WAAYxB,GAEZ,sBAAuB3U,EAAK,eAAiB,KAAO,GAAQ,KAC5D,mBAAoB,GACpB,aAAc,OACd,WAAYA,EAAK,eAAiBA,EAAK,cAAc,YAAc,CAAE,EACrE,WAAYA,EAAK,eAAiBA,EAAK,cAAc,YAAc,KACnE,OAAQA,EAAK,eAAiBA,EAAK,cAAc,QAAUgW,EAC3D,SAAU,IAAI,IACd,SAAU,IAAI,GACf,EAGGM,EAAgB5L,GAAO,IAGvB6L,EAA4B,GAE5BC,EAEAC,EAA+B,GAE/BC,EAAyB,IAAI,IAE7BC,EAA8B,KAG9BC,EAA8B,GAK9BC,GAAyB,GAGzBC,GAA0B,CAAE,EAG5BC,GAAwB,CAAE,EAE1BC,GAAmB,IAAI,IAEvBC,GAAqB,EAIrBC,GAA0B,GAE1BC,GAAiB,IAAI,IAErBC,GAAmB,IAAI,IAEvBC,GAAmB,IAAI,IAEvBC,GAAiB,IAAI,IAGrBC,GAAkB,IAAI,IAKtBC,EAAkB,IAAI,IAGtBC,GAAmB,IAAI,IAGvBC,EAA0B,GAI9B,SAASC,IAAa,CAmDpB,GAhDAlC,EAAkBzV,EAAK,QAAQ,OAAO8L,GAAQ,CAC5C,GAAI,CACF,OAAQ8L,EACR,SAAAjM,EACA,MAAAgB,CACR,EAAUb,EAGJ,GAAI4L,EAAyB,CAC3BA,EAA0B,GAC1B,MACR,CACMnM,GAAQkM,GAAiB,OAAS,GAAK9K,GAAS,KAAM,4YAAqa,EAC3d,IAAIkL,EAAaC,GAAsB,CACrC,gBAAiBzN,EAAM,SACvB,aAAcsB,EACd,cAAAiM,CACR,CAAO,EACD,GAAIC,GAAclL,GAAS,KAAM,CAE/B+K,EAA0B,GAC1B1X,EAAK,QAAQ,GAAG2M,EAAQ,EAAE,EAE1BoL,GAAcF,EAAY,CACxB,MAAO,UACP,SAAAlM,EACA,SAAU,CACRoM,GAAcF,EAAY,CACxB,MAAO,aACP,QAAS,OACT,MAAO,OACP,SAAAlM,CACd,CAAa,EAED3L,EAAK,QAAQ,GAAG2M,CAAK,CACtB,EACD,OAAQ,CACN,IAAIqL,EAAW,IAAI,IAAI3N,EAAM,QAAQ,EACrC2N,EAAS,IAAIH,EAAYhD,EAAY,EACrCoD,GAAY,CACV,SAAAD,CACd,CAAa,CACb,CACA,CAAS,EACD,MACR,CACM,OAAOE,GAAgBN,EAAejM,CAAQ,CACpD,CAAK,EACGwJ,EAAW,CAGbgD,GAA0BjD,EAAcwB,CAAsB,EAC9D,IAAI0B,EAA0B,IAAMC,GAA0BnD,EAAcwB,CAAsB,EAClGxB,EAAa,iBAAiB,WAAYkD,CAAuB,EACjEzB,EAA8B,IAAMzB,EAAa,oBAAoB,WAAYkD,CAAuB,CAC9G,CAMI,OAAK/N,EAAM,aACT6N,GAAgBxN,GAAO,IAAKL,EAAM,QAAQ,EAErCgM,CACX,CAEE,SAASiC,IAAU,CACb7C,GACFA,EAAiB,EAEfkB,GACFA,EAA6B,EAE/BjB,EAAY,MAAO,EACnBc,GAA+BA,EAA4B,MAAO,EAClEnM,EAAM,SAAS,QAAQ,CAACkI,EAAG7Z,IAAQ6f,GAAc7f,CAAG,CAAC,EACrD2R,EAAM,SAAS,QAAQ,CAACkI,EAAG7Z,IAAQ8f,GAAc9f,CAAG,CAAC,CACzD,CAEE,SAAS+f,GAAU9d,EAAI,CACrB,OAAA+a,EAAY,IAAI/a,CAAE,EACX,IAAM+a,EAAY,OAAO/a,CAAE,CACtC,CAEE,SAASsd,GAAYS,EAAUC,EAAM,CAC/BA,IAAS,SACXA,EAAO,CAAE,GAEXtO,EAAQE,GAAS,GAAIF,EAAOqO,CAAQ,EAGpC,IAAIE,EAAoB,CAAE,EACtBC,EAAsB,CAAE,EACxBrD,EAAO,mBACTnL,EAAM,SAAS,QAAQ,CAACyO,EAASpgB,IAAQ,CACnCogB,EAAQ,QAAU,SAChBvB,GAAgB,IAAI7e,CAAG,EAEzBmgB,EAAoB,KAAKngB,CAAG,EAI5BkgB,EAAkB,KAAKlgB,CAAG,EAGtC,CAAO,EAKH,CAAC,GAAGgd,CAAW,EAAE,QAAQqD,GAAcA,EAAW1O,EAAO,CACvD,gBAAiBwO,EACjB,4BAA6BF,EAAK,mBAClC,mBAAoBA,EAAK,YAAc,EAC7C,CAAK,CAAC,EAEEnD,EAAO,oBACToD,EAAkB,QAAQlgB,GAAO2R,EAAM,SAAS,OAAO3R,CAAG,CAAC,EAC3DmgB,EAAoB,QAAQngB,GAAO6f,GAAc7f,CAAG,CAAC,EAE3D,CAME,SAASsgB,GAAmBrN,EAAU+M,EAAUO,EAAO,CACrD,IAAIC,EAAiBC,EACrB,GAAI,CACF,UAAAC,CACN,EAAQH,IAAU,OAAS,CAAA,EAAKA,EAMxBI,EAAiBhP,EAAM,YAAc,MAAQA,EAAM,WAAW,YAAc,MAAQiP,GAAiBjP,EAAM,WAAW,UAAU,GAAKA,EAAM,WAAW,QAAU,aAAe6O,EAAkBvN,EAAS,QAAU,KAAO,OAASuN,EAAgB,eAAiB,GACrQK,EACAb,EAAS,WACP,OAAO,KAAKA,EAAS,UAAU,EAAE,OAAS,EAC5Ca,EAAab,EAAS,WAGtBa,EAAa,KAENF,EAETE,EAAalP,EAAM,WAGnBkP,EAAa,KAGf,IAAI5K,EAAa+J,EAAS,WAAac,GAAgBnP,EAAM,WAAYqO,EAAS,WAAYA,EAAS,SAAW,CAAE,EAAEA,EAAS,MAAM,EAAIrO,EAAM,WAG3I2N,EAAW3N,EAAM,SACjB2N,EAAS,KAAO,IAClBA,EAAW,IAAI,IAAIA,CAAQ,EAC3BA,EAAS,QAAQ,CAACzF,EAAGvR,IAAMgX,EAAS,IAAIhX,EAAG6T,EAAY,CAAC,GAI1D,IAAI4E,GAAqBlD,IAA8B,IAAQlM,EAAM,WAAW,YAAc,MAAQiP,GAAiBjP,EAAM,WAAW,UAAU,KAAO8O,EAAmBxN,EAAS,QAAU,KAAO,OAASwN,EAAiB,eAAiB,GAC7O5D,IACFD,EAAaC,EACbA,EAAqB,QAEnBqB,GAAwCN,IAAkB5L,GAAO,MAAgB4L,IAAkB5L,GAAO,KAC5G1K,EAAK,QAAQ,KAAK2L,EAAUA,EAAS,KAAK,EACjC2K,IAAkB5L,GAAO,SAClC1K,EAAK,QAAQ,QAAQ2L,EAAUA,EAAS,KAAK,GAE/C,IAAI+N,EAEJ,GAAIpD,IAAkB5L,GAAO,IAAK,CAEhC,IAAIiP,EAAajD,EAAuB,IAAIrM,EAAM,SAAS,QAAQ,EAC/DsP,GAAcA,EAAW,IAAIhO,EAAS,QAAQ,EAChD+N,EAAqB,CACnB,gBAAiBrP,EAAM,SACvB,aAAcsB,CACf,EACQ+K,EAAuB,IAAI/K,EAAS,QAAQ,IAGrD+N,EAAqB,CACnB,gBAAiB/N,EACjB,aAActB,EAAM,QACrB,EAEJ,SAAUoM,EAA8B,CAEvC,IAAImD,EAAUlD,EAAuB,IAAIrM,EAAM,SAAS,QAAQ,EAC5DuP,EACFA,EAAQ,IAAIjO,EAAS,QAAQ,GAE7BiO,EAAU,IAAI,IAAI,CAACjO,EAAS,QAAQ,CAAC,EACrC+K,EAAuB,IAAIrM,EAAM,SAAS,SAAUuP,CAAO,GAE7DF,EAAqB,CACnB,gBAAiBrP,EAAM,SACvB,aAAcsB,CACf,CACP,CACIsM,GAAY1N,GAAS,CAAE,EAAEmO,EAAU,CACjC,WAAAa,EACA,WAAA5K,EACA,cAAe2H,EACf,SAAA3K,EACA,YAAa,GACb,WAAYgJ,GACZ,aAAc,OACd,sBAAuBkF,GAAuBlO,EAAU+M,EAAS,SAAWrO,EAAM,OAAO,EACzF,mBAAAoP,GACA,SAAAzB,CACN,CAAK,EAAG,CACF,mBAAA0B,EACA,UAAWN,IAAc,EAC/B,CAAK,EAED9C,EAAgB5L,GAAO,IACvB6L,EAA4B,GAC5BE,EAA+B,GAC/BG,EAA8B,GAC9BC,GAAyB,GACzBC,GAA0B,CAAE,EAC5BC,GAAwB,CAAE,CAC9B,CAGE,eAAe+C,GAASpkB,EAAIijB,EAAM,CAChC,GAAI,OAAOjjB,GAAO,SAAU,CAC1BsK,EAAK,QAAQ,GAAGtK,CAAE,EAClB,MACN,CACI,IAAIqkB,EAAiBC,GAAY3P,EAAM,SAAUA,EAAM,QAAS6D,EAAUsH,EAAO,mBAAoB9f,EAAIijB,GAAQ,KAAO,OAASA,EAAK,YAAaA,GAAQ,KAAO,OAASA,EAAK,QAAQ,EACpL,CACF,KAAA5M,EACA,WAAAkO,EACA,MAAA3a,CACN,EAAQ4a,GAAyB1E,EAAO,uBAAwB,GAAOuE,EAAgBpB,CAAI,EACnFwB,EAAkB9P,EAAM,SACxB+P,EAAelP,GAAeb,EAAM,SAAU0B,EAAM4M,GAAQA,EAAK,KAAK,EAM1EyB,EAAe7P,GAAS,CAAA,EAAI6P,EAAcpa,EAAK,QAAQ,eAAeoa,CAAY,CAAC,EACnF,IAAIC,EAAc1B,GAAQA,EAAK,SAAW,KAAOA,EAAK,QAAU,OAC5Df,EAAgBlN,GAAO,KACvB2P,IAAgB,GAClBzC,EAAgBlN,GAAO,QACd2P,IAAgB,IAAkBJ,GAAc,MAAQX,GAAiBW,EAAW,UAAU,GAAKA,EAAW,aAAe5P,EAAM,SAAS,SAAWA,EAAM,SAAS,SAK/KuN,EAAgBlN,GAAO,SAEzB,IAAI+O,GAAqBd,GAAQ,uBAAwBA,EAAOA,EAAK,qBAAuB,GAAO,OAC/FS,GAAaT,GAAQA,EAAK,sBAAwB,GAClDd,EAAaC,GAAsB,CACrC,gBAAAqC,EACA,aAAAC,EACA,cAAAxC,CACN,CAAK,EACD,GAAIC,EAAY,CAEdE,GAAcF,EAAY,CACxB,MAAO,UACP,SAAUuC,EACV,SAAU,CACRrC,GAAcF,EAAY,CACxB,MAAO,aACP,QAAS,OACT,MAAO,OACP,SAAUuC,CACtB,CAAW,EAEDN,GAASpkB,EAAIijB,CAAI,CAClB,EACD,OAAQ,CACN,IAAIX,EAAW,IAAI,IAAI3N,EAAM,QAAQ,EACrC2N,EAAS,IAAIH,EAAYhD,EAAY,EACrCoD,GAAY,CACV,SAAAD,CACZ,CAAW,CACX,CACA,CAAO,EACD,MACN,CACI,OAAO,MAAME,GAAgBN,EAAewC,EAAc,CACxD,WAAAH,EAGA,aAAc3a,EACd,mBAAAma,GACA,QAASd,GAAQA,EAAK,QACtB,qBAAsBA,GAAQA,EAAK,wBACnC,UAAAS,CACN,CAAK,CACL,CAIE,SAASkB,IAAa,CAOpB,GANAC,GAAsB,EACtBtC,GAAY,CACV,aAAc,SACpB,CAAK,EAGG5N,EAAM,WAAW,QAAU,aAM/B,IAAIA,EAAM,WAAW,QAAU,OAAQ,CACrC6N,GAAgB7N,EAAM,cAAeA,EAAM,SAAU,CACnD,+BAAgC,EACxC,CAAO,EACD,MACN,CAII6N,GAAgB5B,GAAiBjM,EAAM,cAAeA,EAAM,WAAW,SAAU,CAC/E,mBAAoBA,EAAM,UAChC,CAAK,EACL,CAIE,eAAe6N,GAAgBN,EAAejM,EAAUgN,EAAM,CAI5DnC,GAA+BA,EAA4B,MAAO,EAClEA,EAA8B,KAC9BF,EAAgBsB,EAChBhB,GAA+B+B,GAAQA,EAAK,kCAAoC,GAGhF6B,GAAmBnQ,EAAM,SAAUA,EAAM,OAAO,EAChDkM,GAA6BoC,GAAQA,EAAK,sBAAwB,GAClElC,GAAgCkC,GAAQA,EAAK,wBAA0B,GACvE,IAAI8B,EAAclF,GAAsBD,EACpCoF,EAAoB/B,GAAQA,EAAK,mBACjCpK,EAAUP,GAAYyM,EAAa9O,EAAUuC,CAAQ,EACrDkL,GAAaT,GAAQA,EAAK,aAAe,GAE7C,GAAI,CAACpK,EAAS,CACZ,IAAIjP,EAAQ2W,GAAuB,IAAK,CACtC,SAAUtK,EAAS,QAC3B,CAAO,EACG,CACF,QAASgP,GACT,MAAArN,EACR,EAAU4I,GAAuBuE,CAAW,EAEtCG,GAAuB,EACvB5B,GAAmBrN,EAAU,CAC3B,QAASgP,GACT,WAAY,CAAE,EACd,OAAQ,CACN,CAACrN,GAAM,EAAE,EAAGhO,CACtB,CACA,EAAS,CACD,UAAA8Z,CACR,CAAO,EACD,MACN,CAOI,GAAI/O,EAAM,aAAe,CAACwM,IAA0BgE,GAAiBxQ,EAAM,SAAUsB,CAAQ,GAAK,EAAEgN,GAAQA,EAAK,YAAcW,GAAiBX,EAAK,WAAW,UAAU,GAAI,CAC5KK,GAAmBrN,EAAU,CAC3B,QAAA4C,CACR,EAAS,CACD,UAAA6K,CACR,CAAO,EACD,MACN,CAEI5C,EAA8B,IAAI,gBAClC,IAAIvW,EAAU6a,GAAwB9a,EAAK,QAAS2L,EAAU6K,EAA4B,OAAQmC,GAAQA,EAAK,UAAU,EACrHoC,EACAC,EACJ,GAAIrC,GAAQA,EAAK,aAKfqC,EAAe,CACb,CAACC,GAAoB1M,CAAO,EAAE,MAAM,EAAE,EAAGoK,EAAK,YAC/C,UACQA,GAAQA,EAAK,YAAcW,GAAiBX,EAAK,WAAW,UAAU,EAAG,CAElF,IAAIuC,EAAe,MAAMC,GAAalb,EAAS0L,EAAUgN,EAAK,WAAYpK,EAAS,CACjF,QAASoK,EAAK,QACd,UAAAS,CACR,CAAO,EACD,GAAI8B,EAAa,eACf,OAEFH,EAAoBG,EAAa,kBACjCF,EAAeE,EAAa,mBAC5BR,EAAoBU,GAAqBzP,EAAUgN,EAAK,UAAU,EAClES,EAAY,GAEZnZ,EAAU,IAAI,QAAQA,EAAQ,IAAK,CACjC,OAAQA,EAAQ,MACxB,CAAO,CACP,CAEI,GAAI,CACF,eAAAob,GACA,WAAA1M,EACA,OAAA2M,CACN,EAAQ,MAAMC,GAActb,EAAS0L,EAAU4C,EAASmM,EAAmB/B,GAAQA,EAAK,WAAYA,GAAQA,EAAK,kBAAmBA,GAAQA,EAAK,QAASS,EAAW2B,EAAmBC,CAAY,EAC5LK,KAMJ7E,EAA8B,KAC9BwC,GAAmBrN,EAAUpB,GAAS,CACpC,QAAAgE,CACD,EAAEwM,EAAoB,CACrB,WAAYA,CACb,EAAG,GAAI,CACN,WAAApM,EACA,OAAA2M,CACN,CAAK,CAAC,EACN,CAGE,eAAeH,GAAalb,EAAS0L,EAAUsO,EAAY1L,EAASoK,EAAM,CACpEA,IAAS,SACXA,EAAO,CAAE,GAEX4B,GAAsB,EAEtB,IAAIiB,EAAaC,GAAwB9P,EAAUsO,CAAU,EAC7DhC,GAAY,CACV,WAAAuD,CACN,EAAO,CACD,UAAW7C,EAAK,YAAc,EACpC,CAAK,EAED,IAAIhY,EACA+a,EAAcC,GAAepN,EAAS5C,CAAQ,EAClD,GAAI,CAAC+P,EAAY,MAAM,QAAU,CAACA,EAAY,MAAM,KAClD/a,EAAS,CACP,KAAMwM,GAAW,MACjB,MAAO8I,GAAuB,IAAK,CACjC,OAAQhW,EAAQ,OAChB,SAAU0L,EAAS,SACnB,QAAS+P,EAAY,MAAM,EAC5B,CAAA,CACF,UAED/a,EAAS,MAAMib,GAAmB,SAAU3b,EAASyb,EAAanN,EAASZ,EAAUF,EAAoBS,CAAQ,EAC7GjO,EAAQ,OAAO,QACjB,MAAO,CACL,eAAgB,EACjB,EAGL,GAAI4b,GAAiBlb,CAAM,EAAG,CAC5B,IAAIoM,EACJ,OAAI4L,GAAQA,EAAK,SAAW,KAC1B5L,EAAU4L,EAAK,QAKf5L,EAAUpM,EAAO,WAAa0J,EAAM,SAAS,SAAWA,EAAM,SAAS,OAEzE,MAAMyR,GAAwBzR,EAAO1J,EAAQ,CAC3C,WAAAsZ,EACA,QAAAlN,CACR,CAAO,EACM,CACL,eAAgB,EACjB,CACP,CACI,GAAIgP,GAAcpb,CAAM,EAAG,CAGzB,IAAIqb,EAAgBf,GAAoB1M,EAASmN,EAAY,MAAM,EAAE,EAKrE,OAAK/C,GAAQA,EAAK,WAAa,KAC7BrC,EAAgB5L,GAAO,MAElB,CAEL,kBAAmB,CAAE,EACrB,mBAAoB,CAClB,CAACsR,EAAc,MAAM,EAAE,EAAGrb,EAAO,KAC3C,CACO,CACP,CACI,GAAIsb,GAAiBtb,CAAM,EACzB,MAAMsV,GAAuB,IAAK,CAChC,KAAM,cACd,CAAO,EAEH,MAAO,CACL,kBAAmB,CACjB,CAACyF,EAAY,MAAM,EAAE,EAAG/a,EAAO,IACvC,CACK,CACL,CAGE,eAAe4a,GAActb,EAAS0L,EAAU4C,EAAS2N,EAAoBjC,EAAYkC,EAAmBpP,EAASqM,EAAW2B,EAAmBC,EAAc,CAE/J,IAAIN,GAAoBwB,GAAsBd,GAAqBzP,EAAUsO,CAAU,EAGnFmC,EAAmBnC,GAAckC,GAAqBE,GAA4B3B,EAAiB,EACnGD,EAAclF,GAAsBD,EACpC,CAACgH,EAAeC,EAAoB,EAAIC,GAAiBxc,EAAK,QAASqK,EAAOkE,EAAS6N,EAAkBzQ,EAAUkL,GAAwBC,GAAyBC,GAAuBQ,GAAiBF,GAAkBD,GAAkBqD,EAAavM,EAAU6M,EAAmBC,CAAY,EAO1S,GAHAJ,GAAsB6B,GAAW,EAAElO,GAAWA,EAAQ,KAAK6H,GAAKA,EAAE,MAAM,KAAOqG,CAAO,IAAMH,GAAiBA,EAAc,KAAKlG,GAAKA,EAAE,MAAM,KAAOqG,CAAO,CAAC,EAC5JvF,GAA0B,EAAED,GAExBqF,EAAc,SAAW,GAAKC,GAAqB,SAAW,EAAG,CACnE,IAAIG,EAAkBC,GAAwB,EAC9C,OAAA3D,GAAmBrN,EAAUpB,GAAS,CACpC,QAAAgE,EACA,WAAY,CAAE,EAEd,OAAQyM,GAAgB,IACzB,EAAED,EAAoB,CACrB,WAAYA,CACpB,EAAU,CAAA,EAAI2B,EAAkB,CACxB,SAAU,IAAI,IAAIrS,EAAM,QAAQ,CACjC,EAAG,CAAE,CAAA,EAAG,CACP,UAAA+O,CACR,CAAO,EACM,CACL,eAAgB,EACjB,CACP,CAKI,GAAI,CAACxC,EAA6B,CAChC2F,GAAqB,QAAQK,GAAM,CACjC,IAAI9D,EAAUzO,EAAM,SAAS,IAAIuS,EAAG,GAAG,EACnCC,EAAsBC,GAAkB,OAAWhE,EAAUA,EAAQ,KAAO,MAAS,EACzFzO,EAAM,SAAS,IAAIuS,EAAG,IAAKC,CAAmB,CACtD,CAAO,EACD,IAAItD,EAAawB,GAAqB1Q,EAAM,WAC5C4N,GAAY1N,GAAS,CACnB,WAAYmQ,EACpB,EAASnB,EAAa,OAAO,KAAKA,CAAU,EAAE,SAAW,EAAI,CACrD,WAAY,IACpB,EAAU,CACF,WAAAA,CACD,EAAG,GAAIgD,GAAqB,OAAS,EAAI,CACxC,SAAU,IAAI,IAAIlS,EAAM,QAAQ,CACjC,EAAG,CAAE,CAAA,EAAG,CACP,UAAA+O,CACR,CAAO,CACP,CACImD,GAAqB,QAAQK,GAAM,CAC7B5F,GAAiB,IAAI4F,EAAG,GAAG,GAC7BG,GAAaH,EAAG,GAAG,EAEjBA,EAAG,YAIL5F,GAAiB,IAAI4F,EAAG,IAAKA,EAAG,UAAU,CAElD,CAAK,EAED,IAAII,GAAiC,IAAMT,GAAqB,QAAQU,GAAKF,GAAaE,EAAE,GAAG,CAAC,EAC5FzG,GACFA,EAA4B,OAAO,iBAAiB,QAASwG,EAA8B,EAE7F,GAAI,CACF,QAAAE,GACA,cAAAC,GACA,eAAAC,EACN,EAAQ,MAAMC,GAA+BhT,EAAM,QAASkE,EAAS+N,EAAeC,GAAsBtc,CAAO,EAC7G,GAAIA,EAAQ,OAAO,QACjB,MAAO,CACL,eAAgB,EACjB,EAKCuW,GACFA,EAA4B,OAAO,oBAAoB,QAASwG,EAA8B,EAEhGT,GAAqB,QAAQK,GAAM5F,GAAiB,OAAO4F,EAAG,GAAG,CAAC,EAElE,IAAIU,GAAWC,GAAaL,EAAO,EACnC,GAAII,GAAU,CACZ,GAAIA,GAAS,KAAOhB,EAAc,OAAQ,CAIxC,IAAIkB,EAAajB,GAAqBe,GAAS,IAAMhB,EAAc,MAAM,EAAE,IAC3ElF,GAAiB,IAAIoG,CAAU,CACvC,CACM,aAAM1B,GAAwBzR,EAAOiT,GAAS,OAAQ,CACpD,QAAAvQ,CACR,CAAO,EACM,CACL,eAAgB,EACjB,CACP,CAEI,GAAI,CACF,WAAA4B,GACA,OAAA2M,EACN,EAAQmC,GAAkBpT,EAAOkE,EAAS+N,EAAea,GAAenC,EAAcuB,GAAsBa,GAAgB5F,CAAe,EAEvIA,EAAgB,QAAQ,CAACkG,EAAcjB,IAAY,CACjDiB,EAAa,UAAUC,GAAW,EAI5BA,GAAWD,EAAa,OAC1BlG,EAAgB,OAAOiF,CAAO,CAExC,CAAO,CACP,CAAK,EACD,IAAIC,GAAkBC,GAAwB,EAC1CiB,GAAqBC,GAAqB3G,EAAuB,EACjE4G,EAAuBpB,IAAmBkB,IAAsBrB,GAAqB,OAAS,EAClG,OAAOhS,GAAS,CACd,WAAAoE,GACA,OAAA2M,EACD,EAAEwC,EAAuB,CACxB,SAAU,IAAI,IAAIzT,EAAM,QAAQ,CACjC,EAAG,EAAE,CACV,CAEE,SAAStK,GAAMrH,EAAK+jB,EAASvP,EAAMyL,EAAM,CACvC,GAAIvD,EACF,MAAM,IAAI,MAAM,kMAA4M,EAE1N4B,GAAiB,IAAIte,CAAG,GAAGqkB,GAAarkB,CAAG,EAC/C,IAAI0gB,GAAaT,GAAQA,EAAK,sBAAwB,GAClD8B,EAAclF,GAAsBD,EACpCyE,EAAiBC,GAAY3P,EAAM,SAAUA,EAAM,QAAS6D,EAAUsH,EAAO,mBAAoBtI,EAAMuP,EAAS9D,GAAQ,KAAO,OAASA,EAAK,QAAQ,EACrJpK,EAAUP,GAAYyM,EAAaV,EAAgB7L,CAAQ,EAC/D,GAAI,CAACK,EAAS,CACZwP,GAAgBrlB,EAAK+jB,EAASxG,GAAuB,IAAK,CACxD,SAAU8D,CAClB,CAAO,EAAG,CACF,UAAAX,CACR,CAAO,EACD,MACN,CACI,GAAI,CACF,KAAArN,EACA,WAAAkO,EACA,MAAA3a,EACN,EAAQ4a,GAAyB1E,EAAO,uBAAwB,GAAMuE,EAAgBpB,CAAI,EACtF,GAAIrZ,GAAO,CACTye,GAAgBrlB,EAAK+jB,EAASnd,GAAO,CACnC,UAAA8Z,CACR,CAAO,EACD,MACN,CACI,IAAI1hB,EAAQikB,GAAepN,EAASxC,CAAI,EAExC,GADAwK,GAA6BoC,GAAQA,EAAK,sBAAwB,GAC9DsB,GAAcX,GAAiBW,EAAW,UAAU,EAAG,CACzD+D,GAAoBtlB,EAAK+jB,EAAS1Q,EAAMrU,EAAO6W,EAAS6K,EAAWa,CAAU,EAC7E,MACN,CAGI5C,GAAiB,IAAI3e,EAAK,CACxB,QAAA+jB,EACA,KAAA1Q,CACN,CAAK,EACDkS,GAAoBvlB,EAAK+jB,EAAS1Q,EAAMrU,EAAO6W,EAAS6K,EAAWa,CAAU,CACjF,CAGE,eAAe+D,GAAoBtlB,EAAK+jB,EAAS1Q,EAAMrU,EAAOwmB,EAAgB9E,EAAWa,EAAY,CAGnG,GAFAM,GAAsB,EACtBlD,GAAiB,OAAO3e,CAAG,EACvB,CAAChB,EAAM,MAAM,QAAU,CAACA,EAAM,MAAM,KAAM,CAC5C,IAAI4H,EAAQ2W,GAAuB,IAAK,CACtC,OAAQgE,EAAW,WACnB,SAAUlO,EACV,QAAS0Q,CACjB,CAAO,EACDsB,GAAgBrlB,EAAK+jB,EAASnd,EAAO,CACnC,UAAA8Z,CACR,CAAO,EACD,MACN,CAEI,IAAI+E,EAAkB9T,EAAM,SAAS,IAAI3R,CAAG,EAC5C0lB,GAAmB1lB,EAAK2lB,GAAqBpE,EAAYkE,CAAe,EAAG,CACzE,UAAA/E,CACN,CAAK,EAED,IAAIkF,EAAkB,IAAI,gBACtBC,EAAezD,GAAwB9a,EAAK,QAAS+L,EAAMuS,EAAgB,OAAQrE,CAAU,EACjGjD,GAAiB,IAAIte,EAAK4lB,CAAe,EACzC,IAAIE,GAAoBvH,GACpBwH,EAAe,MAAM7C,GAAmB,SAAU2C,EAAc7mB,EAAOwmB,EAAgBvQ,EAAUF,EAAoBS,CAAQ,EACjI,GAAIqQ,EAAa,OAAO,QAAS,CAG3BvH,GAAiB,IAAIte,CAAG,IAAM4lB,GAChCtH,GAAiB,OAAOte,CAAG,EAE7B,MACN,CACI,GAAI6e,GAAgB,IAAI7e,CAAG,EAAG,CAC5B0lB,GAAmB1lB,EAAKgmB,GAAe,MAAS,CAAC,EACjD,MACN,CACI,GAAI7C,GAAiB4C,CAAY,EAE/B,GADAzH,GAAiB,OAAOte,CAAG,EACvBwe,GAA0BsH,GAAmB,CAK/CJ,GAAmB1lB,EAAKgmB,GAAe,MAAS,CAAC,EACjD,MACR,KACQ,QAAAtH,GAAiB,IAAI1e,CAAG,EACxB0lB,GAAmB1lB,EAAKokB,GAAkB7C,CAAU,CAAC,EAC9C6B,GAAwBzR,EAAOoU,EAAc,CAClD,kBAAmBxE,CAC7B,CAAS,EAIL,GAAI8B,GAAc0C,CAAY,EAAG,CAC/BV,GAAgBrlB,EAAK+jB,EAASgC,EAAa,KAAK,EAChD,MACN,CACI,GAAIxC,GAAiBwC,CAAY,EAC/B,MAAMxI,GAAuB,IAAK,CAChC,KAAM,cACd,CAAO,EAIH,IAAImE,EAAe/P,EAAM,WAAW,UAAYA,EAAM,SAClDsU,EAAsB7D,GAAwB9a,EAAK,QAASoa,EAAckE,EAAgB,MAAM,EAChG7D,GAAclF,GAAsBD,EACpC/G,GAAUlE,EAAM,WAAW,QAAU,OAAS2D,GAAYyM,GAAapQ,EAAM,WAAW,SAAU6D,CAAQ,EAAI7D,EAAM,QACxHiB,EAAUiD,GAAS,8CAA8C,EACjE,IAAIqQ,GAAS,EAAE3H,GACfE,GAAe,IAAIze,EAAKkmB,EAAM,EAC9B,IAAIC,GAAc/B,GAAkB7C,EAAYwE,EAAa,IAAI,EACjEpU,EAAM,SAAS,IAAI3R,EAAKmmB,EAAW,EACnC,GAAI,CAACvC,GAAeC,EAAoB,EAAIC,GAAiBxc,EAAK,QAASqK,EAAOkE,GAAS0L,EAAYG,EAAcvD,GAAwBC,GAAyBC,GAAuBQ,GAAiBF,GAAkBD,GAAkBqD,GAAavM,EAAU,CACvQ,CAACxW,EAAM,MAAM,EAAE,EAAG+mB,EAAa,IACrC,EAAO,MACF,EAIDlC,GAAqB,OAAOK,GAAMA,EAAG,MAAQlkB,CAAG,EAAE,QAAQkkB,GAAM,CAC9D,IAAIkC,EAAWlC,EAAG,IACduB,GAAkB9T,EAAM,SAAS,IAAIyU,CAAQ,EAC7CjC,GAAsBC,GAAkB,OAAWqB,GAAkBA,GAAgB,KAAO,MAAS,EACzG9T,EAAM,SAAS,IAAIyU,EAAUjC,EAAmB,EAC5C7F,GAAiB,IAAI8H,CAAQ,GAC/B/B,GAAa+B,CAAQ,EAEnBlC,EAAG,YACL5F,GAAiB,IAAI8H,EAAUlC,EAAG,UAAU,CAEpD,CAAK,EACD3E,GAAY,CACV,SAAU,IAAI,IAAI5N,EAAM,QAAQ,CACtC,CAAK,EACD,IAAI2S,GAAiC,IAAMT,GAAqB,QAAQK,GAAMG,GAAaH,EAAG,GAAG,CAAC,EAClG0B,EAAgB,OAAO,iBAAiB,QAAStB,EAA8B,EAC/E,GAAI,CACF,QAAAE,GACA,cAAAC,GACA,eAAAC,EACN,EAAQ,MAAMC,GAA+BhT,EAAM,QAASkE,GAAS+N,GAAeC,GAAsBoC,CAAmB,EACzH,GAAIL,EAAgB,OAAO,QACzB,OAEFA,EAAgB,OAAO,oBAAoB,QAAStB,EAA8B,EAClF7F,GAAe,OAAOze,CAAG,EACzBse,GAAiB,OAAOte,CAAG,EAC3B6jB,GAAqB,QAAQwC,GAAK/H,GAAiB,OAAO+H,EAAE,GAAG,CAAC,EAChE,IAAIzB,EAAWC,GAAaL,EAAO,EACnC,GAAII,EAAU,CACZ,GAAIA,EAAS,KAAOhB,GAAc,OAAQ,CAIxC,IAAIkB,EAAajB,GAAqBe,EAAS,IAAMhB,GAAc,MAAM,EAAE,IAC3ElF,GAAiB,IAAIoG,CAAU,CACvC,CACM,OAAO1B,GAAwBzR,EAAOiT,EAAS,MAAM,CAC3D,CAEI,GAAI,CACF,WAAA3O,EACA,OAAA2M,CACD,EAAGmC,GAAkBpT,EAAOA,EAAM,QAASiS,GAAea,GAAe,OAAWZ,GAAsBa,GAAgB5F,CAAe,EAG1I,GAAInN,EAAM,SAAS,IAAI3R,CAAG,EAAG,CAC3B,IAAIsmB,EAAcN,GAAeD,EAAa,IAAI,EAClDpU,EAAM,SAAS,IAAI3R,EAAKsmB,CAAW,CACzC,CACInB,GAAqBe,EAAM,EAIvBvU,EAAM,WAAW,QAAU,WAAauU,GAAS1H,IACnD5L,EAAUgL,EAAe,yBAAyB,EAClDE,GAA+BA,EAA4B,MAAO,EAClEwC,GAAmB3O,EAAM,WAAW,SAAU,CAC5C,QAAAkE,GACA,WAAAI,EACA,OAAA2M,EACA,SAAU,IAAI,IAAIjR,EAAM,QAAQ,CACxC,CAAO,IAKD4N,GAAY,CACV,OAAAqD,EACA,WAAY9B,GAAgBnP,EAAM,WAAYsE,EAAYJ,GAAS+M,CAAM,EACzE,SAAU,IAAI,IAAIjR,EAAM,QAAQ,CACxC,CAAO,EACDwM,GAAyB,GAE/B,CAEE,eAAeoH,GAAoBvlB,EAAK+jB,EAAS1Q,EAAMrU,EAAO6W,EAAS6K,EAAWa,EAAY,CAC5F,IAAIkE,EAAkB9T,EAAM,SAAS,IAAI3R,CAAG,EAC5C0lB,GAAmB1lB,EAAKokB,GAAkB7C,EAAYkE,EAAkBA,EAAgB,KAAO,MAAS,EAAG,CACzG,UAAA/E,CACN,CAAK,EAED,IAAIkF,EAAkB,IAAI,gBACtBC,EAAezD,GAAwB9a,EAAK,QAAS+L,EAAMuS,EAAgB,MAAM,EACrFtH,GAAiB,IAAIte,EAAK4lB,CAAe,EACzC,IAAIE,GAAoBvH,GACpBtW,EAAS,MAAMib,GAAmB,SAAU2C,EAAc7mB,EAAO6W,EAASZ,EAAUF,EAAoBS,CAAQ,EAapH,GARI+N,GAAiBtb,CAAM,IACzBA,EAAU,MAAMse,GAAoBte,EAAQ4d,EAAa,OAAQ,EAAI,GAAM5d,GAIzEqW,GAAiB,IAAIte,CAAG,IAAM4lB,GAChCtH,GAAiB,OAAOte,CAAG,EAEzB,CAAA6lB,EAAa,OAAO,QAGxB,IAAIhH,GAAgB,IAAI7e,CAAG,EAAG,CAC5B0lB,GAAmB1lB,EAAKgmB,GAAe,MAAS,CAAC,EACjD,MACN,CAEI,GAAI7C,GAAiBlb,CAAM,EACzB,GAAIuW,GAA0BsH,GAAmB,CAG/CJ,GAAmB1lB,EAAKgmB,GAAe,MAAS,CAAC,EACjD,MACR,KAAa,CACLtH,GAAiB,IAAI1e,CAAG,EACxB,MAAMojB,GAAwBzR,EAAO1J,CAAM,EAC3C,MACR,CAGI,GAAIob,GAAcpb,CAAM,EAAG,CACzBod,GAAgBrlB,EAAK+jB,EAAS9b,EAAO,KAAK,EAC1C,MACN,CACI2K,EAAU,CAAC2Q,GAAiBtb,CAAM,EAAG,iCAAiC,EAEtEyd,GAAmB1lB,EAAKgmB,GAAe/d,EAAO,IAAI,CAAC,EACvD,CAoBE,eAAemb,GAAwBzR,EAAOiT,EAAU4B,EAAQ,CAC9D,GAAI,CACF,WAAAjF,EACA,kBAAAkC,EACA,QAAApP,CACN,EAAQmS,IAAW,OAAS,CAAA,EAAKA,EACzB5B,EAAS,aACXzG,GAAyB,IAE3B,IAAIsI,EAAmBjU,GAAeb,EAAM,SAAUiT,EAAS,SAAU,CACvE,YAAa,EACnB,CAAK,EAED,GADAhS,EAAU6T,EAAkB,gDAAgD,EACxEhK,EAAW,CACb,IAAIiK,EAAmB,GACvB,GAAI9B,EAAS,eAEX8B,EAAmB,WACVtK,GAAmB,KAAKwI,EAAS,QAAQ,EAAG,CACrD,MAAM3d,EAAMK,EAAK,QAAQ,UAAUsd,EAAS,QAAQ,EACpD8B,EAEAzf,EAAI,SAAWuV,EAAa,SAAS,QAErC/G,GAAcxO,EAAI,SAAUuO,CAAQ,GAAK,IACjD,CACM,GAAIkR,EAAkB,CAChBrS,EACFmI,EAAa,SAAS,QAAQoI,EAAS,QAAQ,EAE/CpI,EAAa,SAAS,OAAOoI,EAAS,QAAQ,EAEhD,MACR,CACA,CAGI9G,EAA8B,KAC9B,IAAI6I,EAAwBtS,IAAY,GAAOrC,GAAO,QAAUA,GAAO,KAGnE,CACF,WAAA4U,EACA,WAAAC,EACA,YAAAC,EACD,EAAGnV,EAAM,WACN,CAAC4P,GAAc,CAACkC,GAAqBmD,GAAcC,GAAcC,KACnEvF,EAAaoC,GAA4BhS,EAAM,UAAU,GAK3D,IAAI+R,EAAmBnC,GAAckC,EACrC,GAAIzH,GAAkC,IAAI4I,EAAS,MAAM,GAAKlB,GAAoB9C,GAAiB8C,EAAiB,UAAU,EAC5H,MAAMlE,GAAgBmH,EAAuBF,EAAkB,CAC7D,WAAY5U,GAAS,CAAE,EAAE6R,EAAkB,CACzC,WAAYkB,EAAS,QAC/B,CAAS,EAED,mBAAoB/G,CAC5B,CAAO,MACI,CAGL,IAAI2F,EAAqBd,GAAqB+D,EAAkBlF,CAAU,EAC1E,MAAM/B,GAAgBmH,EAAuBF,EAAkB,CAC7D,mBAAAjD,EAEA,kBAAAC,EAEA,mBAAoB5F,CAC5B,CAAO,CACP,CACA,CACE,eAAe8G,GAA+BoC,EAAgBlR,EAAS+N,EAAeoD,EAAgBzf,EAAS,CAI7G,IAAIid,EAAU,MAAM,QAAQ,IAAI,CAAC,GAAGZ,EAAc,IAAI5kB,GAASkkB,GAAmB,SAAU3b,EAASvI,EAAO6W,EAASZ,EAAUF,EAAoBS,CAAQ,CAAC,EAAG,GAAGwR,EAAe,IAAIzC,GAC/KA,EAAE,SAAWA,EAAE,OAASA,EAAE,WACrBrB,GAAmB,SAAUd,GAAwB9a,EAAK,QAASid,EAAE,KAAMA,EAAE,WAAW,MAAM,EAAGA,EAAE,MAAOA,EAAE,QAAStP,EAAUF,EAAoBS,CAAQ,EAEtJ,CACV,KAAMf,GAAW,MACjB,MAAO8I,GAAuB,IAAK,CACjC,SAAUgH,EAAE,IACb,CAAA,CACF,CAGJ,CAAC,CAAC,EACCE,EAAgBD,EAAQ,MAAM,EAAGZ,EAAc,MAAM,EACrDc,EAAiBF,EAAQ,MAAMZ,EAAc,MAAM,EACvD,aAAM,QAAQ,IAAI,CAACqD,GAAuBF,EAAgBnD,EAAea,EAAeA,EAAc,IAAI,IAAMld,EAAQ,MAAM,EAAG,GAAOoK,EAAM,UAAU,EAAGsV,GAAuBF,EAAgBC,EAAe,IAAIzC,GAAKA,EAAE,KAAK,EAAGG,EAAgBsC,EAAe,IAAIzC,GAAKA,EAAE,WAAaA,EAAE,WAAW,OAAS,IAAI,EAAG,EAAI,CAAC,CAAC,EACvT,CACL,QAAAC,EACA,cAAAC,EACA,eAAAC,CACD,CACL,CACE,SAAS7C,IAAuB,CAE9B1D,GAAyB,GAGzBC,GAAwB,KAAK,GAAG8D,IAAuB,EAEvDvD,GAAiB,QAAQ,CAAC9E,EAAG7Z,IAAQ,CAC/Bse,GAAiB,IAAIte,CAAG,IAC1Bqe,GAAsB,KAAKre,CAAG,EAC9BqkB,GAAarkB,CAAG,EAExB,CAAK,CACL,CACE,SAAS0lB,GAAmB1lB,EAAKogB,EAASH,EAAM,CAC1CA,IAAS,SACXA,EAAO,CAAE,GAEXtO,EAAM,SAAS,IAAI3R,EAAKogB,CAAO,EAC/Bb,GAAY,CACV,SAAU,IAAI,IAAI5N,EAAM,QAAQ,CACtC,EAAO,CACD,WAAYsO,GAAQA,EAAK,aAAe,EAC9C,CAAK,CACL,CACE,SAASoF,GAAgBrlB,EAAK+jB,EAASnd,EAAOqZ,EAAM,CAC9CA,IAAS,SACXA,EAAO,CAAE,GAEX,IAAIqD,EAAgBf,GAAoB5Q,EAAM,QAASoS,CAAO,EAC9DlE,GAAc7f,CAAG,EACjBuf,GAAY,CACV,OAAQ,CACN,CAAC+D,EAAc,MAAM,EAAE,EAAG1c,CAC3B,EACD,SAAU,IAAI,IAAI+K,EAAM,QAAQ,CACtC,EAAO,CACD,WAAYsO,GAAQA,EAAK,aAAe,EAC9C,CAAK,CACL,CACE,SAASiH,GAAWlnB,EAAK,CACvB,OAAI8c,EAAO,oBACT8B,GAAe,IAAI5e,GAAM4e,GAAe,IAAI5e,CAAG,GAAK,GAAK,CAAC,EAGtD6e,GAAgB,IAAI7e,CAAG,GACzB6e,GAAgB,OAAO7e,CAAG,GAGvB2R,EAAM,SAAS,IAAI3R,CAAG,GAAKkc,EACtC,CACE,SAAS2D,GAAc7f,EAAK,CAC1B,IAAIogB,EAAUzO,EAAM,SAAS,IAAI3R,CAAG,EAIhCse,GAAiB,IAAIte,CAAG,GAAK,EAAEogB,GAAWA,EAAQ,QAAU,WAAa3B,GAAe,IAAIze,CAAG,IACjGqkB,GAAarkB,CAAG,EAElB2e,GAAiB,OAAO3e,CAAG,EAC3Bye,GAAe,OAAOze,CAAG,EACzB0e,GAAiB,OAAO1e,CAAG,EAC3B6e,GAAgB,OAAO7e,CAAG,EAC1B2R,EAAM,SAAS,OAAO3R,CAAG,CAC7B,CACE,SAASmnB,GAA4BnnB,EAAK,CACxC,GAAI8c,EAAO,kBAAmB,CAC5B,IAAIxd,GAASsf,GAAe,IAAI5e,CAAG,GAAK,GAAK,EACzCV,GAAS,GACXsf,GAAe,OAAO5e,CAAG,EACzB6e,GAAgB,IAAI7e,CAAG,GAEvB4e,GAAe,IAAI5e,EAAKV,CAAK,CAErC,MACMugB,GAAc7f,CAAG,EAEnBuf,GAAY,CACV,SAAU,IAAI,IAAI5N,EAAM,QAAQ,CACtC,CAAK,CACL,CACE,SAAS0S,GAAarkB,EAAK,CACzB,IAAI8H,EAAawW,GAAiB,IAAIte,CAAG,EACzC4S,EAAU9K,EAAY,8BAAgC9H,CAAG,EACzD8H,EAAW,MAAO,EAClBwW,GAAiB,OAAOte,CAAG,CAC/B,CACE,SAASonB,GAAiBC,EAAM,CAC9B,QAASrnB,KAAOqnB,EAAM,CACpB,IAAIjH,EAAU8G,GAAWlnB,CAAG,EACxBsmB,EAAcN,GAAe5F,EAAQ,IAAI,EAC7CzO,EAAM,SAAS,IAAI3R,EAAKsmB,CAAW,CACzC,CACA,CACE,SAASrC,IAAyB,CAChC,IAAIqD,EAAW,CAAE,EACbtD,EAAkB,GACtB,QAAShkB,KAAO0e,GAAkB,CAChC,IAAI0B,EAAUzO,EAAM,SAAS,IAAI3R,CAAG,EACpC4S,EAAUwN,EAAS,qBAAuBpgB,CAAG,EACzCogB,EAAQ,QAAU,YACpB1B,GAAiB,OAAO1e,CAAG,EAC3BsnB,EAAS,KAAKtnB,CAAG,EACjBgkB,EAAkB,GAE1B,CACI,OAAAoD,GAAiBE,CAAQ,EAClBtD,CACX,CACE,SAASmB,GAAqBoC,EAAU,CACtC,IAAIC,EAAa,CAAE,EACnB,OAAS,CAACxnB,EAAKmV,CAAE,IAAKsJ,GACpB,GAAItJ,EAAKoS,EAAU,CACjB,IAAInH,EAAUzO,EAAM,SAAS,IAAI3R,CAAG,EACpC4S,EAAUwN,EAAS,qBAAuBpgB,CAAG,EACzCogB,EAAQ,QAAU,YACpBiE,GAAarkB,CAAG,EAChBye,GAAe,OAAOze,CAAG,EACzBwnB,EAAW,KAAKxnB,CAAG,EAE7B,CAEI,OAAAonB,GAAiBI,CAAU,EACpBA,EAAW,OAAS,CAC/B,CACE,SAASC,GAAWznB,EAAKiC,EAAI,CAC3B,IAAIylB,EAAU/V,EAAM,SAAS,IAAI3R,CAAG,GAAKmc,GACzC,OAAI4C,GAAiB,IAAI/e,CAAG,IAAMiC,GAChC8c,GAAiB,IAAI/e,EAAKiC,CAAE,EAEvBylB,CACX,CACE,SAAS5H,GAAc9f,EAAK,CAC1B2R,EAAM,SAAS,OAAO3R,CAAG,EACzB+e,GAAiB,OAAO/e,CAAG,CAC/B,CAEE,SAASqf,GAAcrf,EAAK2nB,EAAY,CACtC,IAAID,EAAU/V,EAAM,SAAS,IAAI3R,CAAG,GAAKmc,GAGzCvJ,EAAU8U,EAAQ,QAAU,aAAeC,EAAW,QAAU,WAAaD,EAAQ,QAAU,WAAaC,EAAW,QAAU,WAAaD,EAAQ,QAAU,WAAaC,EAAW,QAAU,cAAgBD,EAAQ,QAAU,WAAaC,EAAW,QAAU,aAAeD,EAAQ,QAAU,cAAgBC,EAAW,QAAU,YAAa,qCAAuCD,EAAQ,MAAQ,OAASC,EAAW,KAAK,EACza,IAAIrI,EAAW,IAAI,IAAI3N,EAAM,QAAQ,EACrC2N,EAAS,IAAItf,EAAK2nB,CAAU,EAC5BpI,GAAY,CACV,SAAAD,CACN,CAAK,CACL,CACE,SAASF,GAAsBwI,EAAO,CACpC,GAAI,CACF,gBAAAnG,EACA,aAAAC,EACA,cAAAxC,CACN,EAAQ0I,EACJ,GAAI7I,GAAiB,OAAS,EAC5B,OAIEA,GAAiB,KAAO,GAC1BlM,GAAQ,GAAO,8CAA8C,EAE/D,IAAIgV,EAAU,MAAM,KAAK9I,GAAiB,QAAO,CAAE,EAC/C,CAACI,EAAY2I,CAAe,EAAID,EAAQA,EAAQ,OAAS,CAAC,EAC1DH,EAAU/V,EAAM,SAAS,IAAIwN,CAAU,EAC3C,GAAI,EAAAuI,GAAWA,EAAQ,QAAU,eAO7BI,EAAgB,CAClB,gBAAArG,EACA,aAAAC,EACA,cAAAxC,CACN,CAAK,EACC,OAAOC,CAEb,CACE,SAAS+C,GAAsB6F,EAAW,CACxC,IAAIC,EAAoB,CAAE,EAC1B,OAAAlJ,EAAgB,QAAQ,CAACmJ,EAAKlE,IAAY,EACpC,CAACgE,GAAaA,EAAUhE,CAAO,KAIjCkE,EAAI,OAAQ,EACZD,EAAkB,KAAKjE,CAAO,EAC9BjF,EAAgB,OAAOiF,CAAO,EAEtC,CAAK,EACMiE,CACX,CAGE,SAASE,GAAwBC,EAAWC,EAAaC,EAAQ,CAO/D,GANApL,EAAuBkL,EACvBhL,EAAoBiL,EACpBlL,EAA0BmL,GAAU,KAIhC,CAACjL,GAAyBzL,EAAM,aAAesK,GAAiB,CAClEmB,EAAwB,GACxB,IAAIkL,EAAInH,GAAuBxP,EAAM,SAAUA,EAAM,OAAO,EACxD2W,GAAK,MACP/I,GAAY,CACV,sBAAuB+I,CACjC,CAAS,CAET,CACI,MAAO,IAAM,CACXrL,EAAuB,KACvBE,EAAoB,KACpBD,EAA0B,IAC3B,CACL,CACE,SAASqL,GAAatV,EAAU4C,EAAS,CACvC,OAAIqH,GACQA,EAAwBjK,EAAU4C,EAAQ,IAAI6H,GAAK1H,GAA2B0H,EAAG/L,EAAM,UAAU,CAAC,CAAC,GAC/FsB,EAAS,GAG7B,CACE,SAAS6O,GAAmB7O,EAAU4C,EAAS,CAC7C,GAAIoH,GAAwBE,EAAmB,CAC7C,IAAInd,EAAMuoB,GAAatV,EAAU4C,CAAO,EACxCoH,EAAqBjd,CAAG,EAAImd,EAAmB,CACrD,CACA,CACE,SAASgE,GAAuBlO,EAAU4C,EAAS,CACjD,GAAIoH,EAAsB,CACxB,IAAIjd,EAAMuoB,GAAatV,EAAU4C,CAAO,EACpCyS,EAAIrL,EAAqBjd,CAAG,EAChC,GAAI,OAAOsoB,GAAM,SACf,OAAOA,CAEf,CACI,OAAO,IACX,CACE,SAASE,GAAmBC,EAAW,CACrCxT,EAAW,CAAE,EACb4H,EAAqBhI,GAA0B4T,EAAW1T,EAAoB,OAAWE,CAAQ,CACrG,CACE,OAAA0I,EAAS,CACP,IAAI,UAAW,CACb,OAAOnI,CACR,EACD,IAAI,OAAQ,CACV,OAAO7D,CACR,EACD,IAAI,QAAS,CACX,OAAOiL,CACR,EACD,IAAI,QAAS,CACX,OAAOJ,CACR,EACD,WAAAyC,GACA,UAAAc,GACA,wBAAAmI,GACA,SAAA9G,GACA,MAAA/Z,GACA,WAAAua,GAGA,WAAY5kB,GAAMsK,EAAK,QAAQ,WAAWtK,CAAE,EAC5C,eAAgBA,GAAMsK,EAAK,QAAQ,eAAetK,CAAE,EACpD,WAAAkqB,GACA,cAAeC,GACf,QAAAvH,GACA,WAAA6H,GACA,cAAA3H,GACA,0BAA2BxB,GAC3B,yBAA0BQ,EAG1B,mBAAA0J,EACD,EACM7K,CACT,CAyYA,SAAS+K,GAAuBzI,EAAM,CACpC,OAAOA,GAAQ,OAAS,aAAcA,GAAQA,EAAK,UAAY,MAAQ,SAAUA,GAAQA,EAAK,OAAS,OACzG,CACA,SAASqB,GAAYrO,EAAU4C,EAASL,EAAUmT,EAAiB3rB,EAAI4rB,EAAaC,EAAU,CAC5F,IAAIC,EACAC,EACJ,GAAIH,EAAa,CAGfE,EAAoB,CAAE,EACtB,QAAS9pB,KAAS6W,EAEhB,GADAiT,EAAkB,KAAK9pB,CAAK,EACxBA,EAAM,MAAM,KAAO4pB,EAAa,CAClCG,EAAmB/pB,EACnB,KACR,CAEA,MACI8pB,EAAoBjT,EACpBkT,EAAmBlT,EAAQA,EAAQ,OAAS,CAAC,EAG/C,IAAIxC,EAAOsH,GAAU3d,GAAU,IAAK0d,GAA2BoO,CAAiB,EAAE,IAAIpL,GAAKA,EAAE,YAAY,EAAGjI,GAAcxC,EAAS,SAAUuC,CAAQ,GAAKvC,EAAS,SAAU4V,IAAa,MAAM,EAIhM,OAAI7rB,GAAM,OACRqW,EAAK,OAASJ,EAAS,OACvBI,EAAK,KAAOJ,EAAS,OAGlBjW,GAAM,MAAQA,IAAO,IAAMA,IAAO,MAAQ+rB,GAAoBA,EAAiB,MAAM,OAAS,CAACC,GAAmB3V,EAAK,MAAM,IAChIA,EAAK,OAASA,EAAK,OAASA,EAAK,OAAO,QAAQ,MAAO,SAAS,EAAI,UAMlEsV,GAAmBnT,IAAa,MAClCnC,EAAK,SAAWA,EAAK,WAAa,IAAMmC,EAAWc,GAAU,CAACd,EAAUnC,EAAK,QAAQ,CAAC,GAEjFX,GAAWW,CAAI,CACxB,CAGA,SAASmO,GAAyByH,EAAqBC,EAAW7V,EAAM4M,EAAM,CAE5E,GAAI,CAACA,GAAQ,CAACyI,GAAuBzI,CAAI,EACvC,MAAO,CACL,KAAA5M,CACD,EAEH,GAAI4M,EAAK,YAAc,CAACkJ,GAAclJ,EAAK,UAAU,EACnD,MAAO,CACL,KAAA5M,EACA,MAAOkK,GAAuB,IAAK,CACjC,OAAQ0C,EAAK,UACd,CAAA,CACF,EAEH,IAAImJ,EAAsB,KAAO,CAC/B,KAAA/V,EACA,MAAOkK,GAAuB,IAAK,CACjC,KAAM,cACP,CAAA,CACL,GAEM8L,EAAgBpJ,EAAK,YAAc,MACnC2G,EAAaqC,EAAsBI,EAAc,YAAa,EAAGA,EAAc,YAAa,EAC5FxC,EAAayC,GAAkBjW,CAAI,EACvC,GAAI4M,EAAK,OAAS,QAChB,GAAIA,EAAK,cAAgB,aAAc,CAErC,GAAI,CAACW,GAAiBgG,CAAU,EAC9B,OAAOwC,EAAqB,EAE9B,IAAIG,EAAO,OAAOtJ,EAAK,MAAS,SAAWA,EAAK,KAAOA,EAAK,gBAAgB,UAAYA,EAAK,gBAAgB,gBAE7G,MAAM,KAAKA,EAAK,KAAK,QAAS,CAAA,EAAE,OAAO,CAACuJ,EAAKC,IAAU,CACrD,GAAI,CAAClsB,EAAM0C,CAAK,EAAIwpB,EACpB,MAAO,GAAKD,EAAMjsB,EAAO,IAAM0C,EAAQ;AAAA,CACxC,EAAE,EAAE,EAAI,OAAOggB,EAAK,IAAI,EACzB,MAAO,CACL,KAAA5M,EACA,WAAY,CACV,WAAAuT,EACA,WAAAC,EACA,YAAa5G,EAAK,YAClB,SAAU,OACV,KAAM,OACN,KAAAsJ,CACV,CACO,CACP,SAAetJ,EAAK,cAAgB,mBAAoB,CAElD,GAAI,CAACW,GAAiBgG,CAAU,EAC9B,OAAOwC,EAAqB,EAE9B,GAAI,CACF,IAAIlhB,EAAO,OAAO+X,EAAK,MAAS,SAAW,KAAK,MAAMA,EAAK,IAAI,EAAIA,EAAK,KACxE,MAAO,CACL,KAAA5M,EACA,WAAY,CACV,WAAAuT,EACA,WAAAC,EACA,YAAa5G,EAAK,YAClB,SAAU,OACV,KAAA/X,EACA,KAAM,MAClB,CACS,CACF,MAAW,CACV,OAAOkhB,EAAqB,CACpC,CACA,EAEExW,EAAU,OAAO,UAAa,WAAY,+CAA+C,EACzF,IAAI8W,EACAC,EACJ,GAAI1J,EAAK,SACPyJ,EAAeE,GAA8B3J,EAAK,QAAQ,EAC1D0J,EAAW1J,EAAK,iBACPA,EAAK,gBAAgB,SAC9ByJ,EAAeE,GAA8B3J,EAAK,IAAI,EACtD0J,EAAW1J,EAAK,aACPA,EAAK,gBAAgB,gBAC9ByJ,EAAezJ,EAAK,KACpB0J,EAAWE,GAA8BH,CAAY,UAC5CzJ,EAAK,MAAQ,KACtByJ,EAAe,IAAI,gBACnBC,EAAW,IAAI,aAEf,IAAI,CACFD,EAAe,IAAI,gBAAgBzJ,EAAK,IAAI,EAC5C0J,EAAWE,GAA8BH,CAAY,CACtD,MAAW,CACV,OAAON,EAAqB,CAClC,CAEE,IAAI7H,EAAa,CACf,WAAAqF,EACA,WAAAC,EACA,YAAa5G,GAAQA,EAAK,aAAe,oCACzC,SAAA0J,EACA,KAAM,OACN,KAAM,MACP,EACD,GAAI/I,GAAiBW,EAAW,UAAU,EACxC,MAAO,CACL,KAAAlO,EACA,WAAAkO,CACD,EAGH,IAAIjO,EAAaH,GAAUE,CAAI,EAI/B,OAAI6V,GAAa5V,EAAW,QAAU0V,GAAmB1V,EAAW,MAAM,GACxEoW,EAAa,OAAO,QAAS,EAAE,EAEjCpW,EAAW,OAAS,IAAMoW,EACnB,CACL,KAAMhX,GAAWY,CAAU,EAC3B,WAAAiO,CACD,CACH,CAGA,SAASuI,GAA8BjU,EAASkU,EAAY,CAC1D,IAAIC,EAAkBnU,EACtB,GAAIkU,EAAY,CACd,IAAI7W,EAAQ2C,EAAQ,UAAU6H,GAAKA,EAAE,MAAM,KAAOqM,CAAU,EACxD7W,GAAS,IACX8W,EAAkBnU,EAAQ,MAAM,EAAG3C,CAAK,EAE9C,CACE,OAAO8W,CACT,CACA,SAASlG,GAAiB5P,EAASvC,EAAOkE,EAAS0L,EAAYtO,EAAUkL,EAAwBC,EAAyBC,EAAuBQ,EAAiBF,EAAkBD,EAAkBqD,EAAavM,EAAU6M,EAAmBC,EAAc,CAC5P,IAAIyD,EAAezD,EAAe,OAAO,OAAOA,CAAY,EAAE,CAAC,EAAID,EAAoB,OAAO,OAAOA,CAAiB,EAAE,CAAC,EAAI,OACzH4H,EAAa/V,EAAQ,UAAUvC,EAAM,QAAQ,EAC7CuY,EAAUhW,EAAQ,UAAUjB,CAAQ,EAEpC8W,EAAazH,EAAe,OAAO,KAAKA,CAAY,EAAE,CAAC,EAAI,OAE3D6H,EADkBL,GAA8BjU,EAASkU,CAAU,EAC/B,OAAO,CAAC/qB,EAAOkU,IAAU,CAC/D,GAAIlU,EAAM,MAAM,KAEd,MAAO,GAET,GAAIA,EAAM,MAAM,QAAU,KACxB,MAAO,GAGT,GAAIorB,GAAYzY,EAAM,WAAYA,EAAM,QAAQuB,CAAK,EAAGlU,CAAK,GAAKof,EAAwB,KAAKjJ,GAAMA,IAAOnW,EAAM,MAAM,EAAE,EACxH,MAAO,GAMT,IAAIqrB,EAAoB1Y,EAAM,QAAQuB,CAAK,EACvCoX,EAAiBtrB,EACrB,OAAOurB,GAAuBvrB,EAAO6S,GAAS,CAC5C,WAAAoY,EACA,cAAeI,EAAkB,OACjC,QAAAH,EACA,WAAYI,EAAe,MAC5B,EAAE/I,EAAY,CACb,aAAAwE,EACA,wBAEA5H,GAEA8L,EAAW,SAAWA,EAAW,SAAWC,EAAQ,SAAWA,EAAQ,QAEvED,EAAW,SAAWC,EAAQ,QAAUM,GAAmBH,EAAmBC,CAAc,CAClG,CAAK,CAAC,CACN,CAAG,EAEGzG,EAAuB,CAAE,EAC7B,OAAAlF,EAAiB,QAAQ,CAAC4F,EAAGvkB,IAAQ,CAEnC,GAAI,CAAC6V,EAAQ,KAAK6H,IAAKA,GAAE,MAAM,KAAO6G,EAAE,OAAO,GAAK1F,EAAgB,IAAI7e,CAAG,EACzE,OAEF,IAAIyqB,EAAiBnV,GAAYyM,EAAawC,EAAE,KAAM/O,CAAQ,EAK9D,GAAI,CAACiV,EAAgB,CACnB5G,EAAqB,KAAK,CACxB,IAAA7jB,EACA,QAASukB,EAAE,QACX,KAAMA,EAAE,KACR,QAAS,KACT,MAAO,KACP,WAAY,IACpB,CAAO,EACD,MACN,CAII,IAAInE,EAAUzO,EAAM,SAAS,IAAI3R,CAAG,EAChC0qB,EAAezH,GAAewH,EAAgBlG,EAAE,IAAI,EACpDoG,EAAmB,GACnBjM,EAAiB,IAAI1e,CAAG,EAE1B2qB,EAAmB,GACVtM,EAAsB,SAASre,CAAG,EAE3C2qB,EAAmB,GACVvK,GAAWA,EAAQ,QAAU,QAAUA,EAAQ,OAAS,OAIjEuK,EAAmBxM,EAInBwM,EAAmBJ,GAAuBG,EAAc7Y,GAAS,CAC/D,WAAAoY,EACA,cAAetY,EAAM,QAAQA,EAAM,QAAQ,OAAS,CAAC,EAAE,OACvD,QAAAuY,EACA,WAAYrU,EAAQA,EAAQ,OAAS,CAAC,EAAE,MACzC,EAAE0L,EAAY,CACb,aAAAwE,EACA,wBAAyB5H,CACjC,CAAO,CAAC,EAEAwM,GACF9G,EAAqB,KAAK,CACxB,IAAA7jB,EACA,QAASukB,EAAE,QACX,KAAMA,EAAE,KACR,QAASkG,EACT,MAAOC,EACP,WAAY,IAAI,eACxB,CAAO,CAEP,CAAG,EACM,CAACP,EAAmBtG,CAAoB,CACjD,CACA,SAASuG,GAAYQ,EAAmBC,EAAc7rB,EAAO,CAC3D,IAAI8rB,EAEJ,CAACD,GAED7rB,EAAM,MAAM,KAAO6rB,EAAa,MAAM,GAGlCE,EAAgBH,EAAkB5rB,EAAM,MAAM,EAAE,IAAM,OAE1D,OAAO8rB,GAASC,CAClB,CACA,SAASP,GAAmBK,EAAc7rB,EAAO,CAC/C,IAAIgsB,EAAcH,EAAa,MAAM,KACrC,OAEEA,EAAa,WAAa7rB,EAAM,UAGhCgsB,GAAe,MAAQA,EAAY,SAAS,GAAG,GAAKH,EAAa,OAAO,GAAG,IAAM7rB,EAAM,OAAO,GAAG,CAErG,CACA,SAASurB,GAAuBU,EAAaC,EAAK,CAChD,GAAID,EAAY,MAAM,iBAAkB,CACtC,IAAIE,EAAcF,EAAY,MAAM,iBAAiBC,CAAG,EACxD,GAAI,OAAOC,GAAgB,UACzB,OAAOA,CAEb,CACE,OAAOD,EAAI,uBACb,CAMA,eAAeE,GAAoBxW,EAAOG,EAAoBE,EAAU,CACtE,GAAI,CAACL,EAAM,KACT,OAEF,IAAIyW,EAAY,MAAMzW,EAAM,KAAM,EAIlC,GAAI,CAACA,EAAM,KACT,OAEF,IAAI0W,EAAgBrW,EAASL,EAAM,EAAE,EACrChC,EAAU0Y,EAAe,4BAA4B,EASrD,IAAIC,EAAe,CAAE,EACrB,QAASC,KAAqBH,EAAW,CAEvC,IAAII,EADmBH,EAAcE,CAAiB,IACC,QAGvDA,IAAsB,mBACtB3Y,GAAQ,CAAC4Y,EAA6B,UAAaH,EAAc,GAAK,4BAAgCE,EAAoB,iFAAyF,4BAA+BA,EAAoB,qBAAsB,EACxR,CAACC,GAA+B,CAAC/W,GAAmB,IAAI8W,CAAiB,IAC3ED,EAAaC,CAAiB,EAAIH,EAAUG,CAAiB,EAEnE,CAGE,OAAO,OAAOF,EAAeC,CAAY,EAIzC,OAAO,OAAOD,EAAezZ,GAAS,CAAA,EAAIkD,EAAmBuW,CAAa,EAAG,CAC3E,KAAM,MACV,CAAG,CAAC,CACJ,CACA,eAAepI,GAAmBwI,EAAMnkB,EAASvI,EAAO6W,EAASZ,EAAUF,EAAoBS,EAAUyK,EAAM,CACzGA,IAAS,SACXA,EAAO,CAAE,GAEX,IAAI0L,EACA1jB,EACA2jB,EACAC,EAAaC,GAAW,CAE1B,IAAIlnB,EACAmnB,EAAe,IAAI,QAAQ,CAAClS,EAAGwM,IAAMzhB,EAASyhB,CAAC,EACnD,OAAAuF,EAAW,IAAMhnB,EAAQ,EACzB2C,EAAQ,OAAO,iBAAiB,QAASqkB,CAAQ,EAC1C,QAAQ,KAAK,CAACE,EAAQ,CAC3B,QAAAvkB,EACA,OAAQvI,EAAM,OACd,QAASihB,EAAK,cACpB,CAAK,EAAG8L,CAAY,CAAC,CAClB,EACD,GAAI,CACF,IAAID,EAAU9sB,EAAM,MAAM0sB,CAAI,EAC9B,GAAI1sB,EAAM,MAAM,KACd,GAAI8sB,EAAS,CAEX,IAAIE,EACAC,EAAS,MAAM,QAAQ,IAAI,CAI/BJ,EAAWC,CAAO,EAAE,MAAMtiB,GAAK,CAC7BwiB,EAAexiB,CACzB,CAAS,EAAG4hB,GAAoBpsB,EAAM,MAAO+V,EAAoBE,CAAQ,CAAC,CAAC,EACnE,GAAI+W,EACF,MAAMA,EAER/jB,EAASgkB,EAAO,CAAC,CACzB,SAEQ,MAAMb,GAAoBpsB,EAAM,MAAO+V,EAAoBE,CAAQ,EACnE6W,EAAU9sB,EAAM,MAAM0sB,CAAI,EACtBI,EAIF7jB,EAAS,MAAM4jB,EAAWC,CAAO,UACxBJ,IAAS,SAAU,CAC5B,IAAIzkB,EAAM,IAAI,IAAIM,EAAQ,GAAG,EACzB+K,EAAWrL,EAAI,SAAWA,EAAI,OAClC,MAAMsW,GAAuB,IAAK,CAChC,OAAQhW,EAAQ,OAChB,SAAA+K,EACA,QAAStT,EAAM,MAAM,EACjC,CAAW,CACX,KAGU,OAAO,CACL,KAAMyV,GAAW,KACjB,KAAM,MACP,UAGKqX,EAOV7jB,EAAS,MAAM4jB,EAAWC,CAAO,MAPd,CACnB,IAAI7kB,EAAM,IAAI,IAAIM,EAAQ,GAAG,EACzB+K,EAAWrL,EAAI,SAAWA,EAAI,OAClC,MAAMsW,GAAuB,IAAK,CAChC,SAAAjL,CACR,CAAO,CACP,CAGIM,EAAU3K,IAAW,OAAW,gBAAkByjB,IAAS,SAAW,YAAc,YAAc,eAAiB,IAAO1sB,EAAM,MAAM,GAAK,4CAA8C0sB,EAAO,MAAQ,4CAA4C,CACrP,OAAQliB,EAAG,CACVmiB,EAAalX,GAAW,MACxBxM,EAASuB,CACb,QAAY,CACJoiB,GACFrkB,EAAQ,OAAO,oBAAoB,QAASqkB,CAAQ,CAE1D,CACE,GAAIM,GAAWjkB,CAAM,EAAG,CACtB,IAAIf,EAASe,EAAO,OAEpB,GAAI8T,GAAoB,IAAI7U,CAAM,EAAG,CACnC,IAAI+L,EAAWhL,EAAO,QAAQ,IAAI,UAAU,EAG5C,GAFA2K,EAAUK,EAAU,4EAA4E,EAE5F,CAACmJ,GAAmB,KAAKnJ,CAAQ,EACnCA,EAAWqO,GAAY,IAAI,IAAI/Z,EAAQ,GAAG,EAAGsO,EAAQ,MAAM,EAAGA,EAAQ,QAAQ7W,CAAK,EAAI,CAAC,EAAGwW,EAAU,GAAMvC,CAAQ,UAC1G,CAACgN,EAAK,gBAAiB,CAIhC,IAAIgK,EAAa,IAAI,IAAI1iB,EAAQ,GAAG,EAChCN,EAAMgM,EAAS,WAAW,IAAI,EAAI,IAAI,IAAIgX,EAAW,SAAWhX,CAAQ,EAAI,IAAI,IAAIA,CAAQ,EAC5FkZ,EAAiB1W,GAAcxO,EAAI,SAAUuO,CAAQ,GAAK,KAC1DvO,EAAI,SAAWgjB,EAAW,QAAUkC,IACtClZ,EAAWhM,EAAI,SAAWA,EAAI,OAASA,EAAI,KAErD,CAKM,GAAIgZ,EAAK,gBACP,MAAAhY,EAAO,QAAQ,IAAI,WAAYgL,CAAQ,EACjChL,EAER,MAAO,CACL,KAAMwM,GAAW,SACjB,OAAAvN,EACA,SAAA+L,EACA,WAAYhL,EAAO,QAAQ,IAAI,oBAAoB,IAAM,KACzD,eAAgBA,EAAO,QAAQ,IAAI,yBAAyB,IAAM,IACnE,CACP,CAII,GAAIgY,EAAK,eAKP,KAJyB,CACvB,KAAM0L,IAAelX,GAAW,MAAQA,GAAW,MAAQA,GAAW,KACtE,SAAUxM,CACX,EAGH,IAAIF,EACAqkB,EAAcnkB,EAAO,QAAQ,IAAI,cAAc,EAQnD,OALImkB,GAAe,wBAAwB,KAAKA,CAAW,EACzDrkB,EAAO,MAAME,EAAO,KAAM,EAE1BF,EAAO,MAAME,EAAO,KAAM,EAExB0jB,IAAelX,GAAW,MACrB,CACL,KAAMkX,EACN,MAAO,IAAIpQ,GAAkBrU,EAAQe,EAAO,WAAYF,CAAI,EAC5D,QAASE,EAAO,OACjB,EAEI,CACL,KAAMwM,GAAW,KACjB,KAAA1M,EACA,WAAYE,EAAO,OACnB,QAASA,EAAO,OACjB,CACL,CACE,GAAI0jB,IAAelX,GAAW,MAC5B,MAAO,CACL,KAAMkX,EACN,MAAO1jB,CACR,EAEH,GAAIokB,GAAepkB,CAAM,EAAG,CAC1B,IAAIqkB,EAAcC,EAClB,MAAO,CACL,KAAM9X,GAAW,SACjB,aAAcxM,EACd,YAAaqkB,EAAerkB,EAAO,OAAS,KAAO,OAASqkB,EAAa,OACzE,UAAWC,EAAgBtkB,EAAO,OAAS,KAAO,OAASskB,EAAc,UAAY,IAAI,QAAQtkB,EAAO,KAAK,OAAO,CACrH,CACL,CACE,MAAO,CACL,KAAMwM,GAAW,KACjB,KAAMxM,CACP,CACH,CAIA,SAASma,GAAwBlO,EAASjB,EAAUuZ,EAAQjL,EAAY,CACtE,IAAIta,EAAMiN,EAAQ,UAAUoV,GAAkBrW,CAAQ,CAAC,EAAE,SAAU,EAC/D3L,EAAO,CACT,OAAAklB,CACD,EACD,GAAIjL,GAAcX,GAAiBW,EAAW,UAAU,EAAG,CACzD,GAAI,CACF,WAAAqF,EACA,YAAAE,CACN,EAAQvF,EAIJja,EAAK,OAASsf,EAAW,YAAa,EAClCE,IAAgB,oBAClBxf,EAAK,QAAU,IAAI,QAAQ,CACzB,eAAgBwf,CACxB,CAAO,EACDxf,EAAK,KAAO,KAAK,UAAUia,EAAW,IAAI,GACjCuF,IAAgB,aAEzBxf,EAAK,KAAOia,EAAW,KACduF,IAAgB,qCAAuCvF,EAAW,SAE3Eja,EAAK,KAAOsiB,GAA8BrI,EAAW,QAAQ,EAG7Dja,EAAK,KAAOia,EAAW,QAE7B,CACE,OAAO,IAAI,QAAQta,EAAKK,CAAI,CAC9B,CACA,SAASsiB,GAA8BD,EAAU,CAC/C,IAAID,EAAe,IAAI,gBACvB,OAAS,CAAC1pB,EAAKC,CAAK,IAAK0pB,EAAS,QAAO,EAEvCD,EAAa,OAAO1pB,EAAK,OAAOC,GAAU,SAAWA,EAAQA,EAAM,IAAI,EAEzE,OAAOypB,CACT,CACA,SAASG,GAA8BH,EAAc,CACnD,IAAIC,EAAW,IAAI,SACnB,OAAS,CAAC3pB,EAAKC,CAAK,IAAKypB,EAAa,QAAO,EAC3CC,EAAS,OAAO3pB,EAAKC,CAAK,EAE5B,OAAO0pB,CACT,CACA,SAAS8C,GAAuB5W,EAAS+N,EAAeY,EAASlC,EAAcxD,EAAiB,CAE9F,IAAI7I,EAAa,CAAE,EACf2M,EAAS,KACT8J,EACAC,EAAa,GACbC,EAAgB,CAAE,EAEtB,OAAApI,EAAQ,QAAQ,CAACvc,EAAQiL,IAAU,CACjC,IAAIiC,EAAKyO,EAAc1Q,CAAK,EAAE,MAAM,GAEpC,GADAN,EAAU,CAACuQ,GAAiBlb,CAAM,EAAG,qDAAqD,EACtFob,GAAcpb,CAAM,EAAG,CAGzB,IAAIqb,EAAgBf,GAAoB1M,EAASV,CAAE,EAC/CvO,EAAQqB,EAAO,MAIfqa,IACF1b,EAAQ,OAAO,OAAO0b,CAAY,EAAE,CAAC,EACrCA,EAAe,QAEjBM,EAASA,GAAU,CAAE,EAEjBA,EAAOU,EAAc,MAAM,EAAE,GAAK,OACpCV,EAAOU,EAAc,MAAM,EAAE,EAAI1c,GAGnCqP,EAAWd,CAAE,EAAI,OAGZwX,IACHA,EAAa,GACbD,EAAahR,GAAqBzT,EAAO,KAAK,EAAIA,EAAO,MAAM,OAAS,KAEtEA,EAAO,UACT2kB,EAAczX,CAAE,EAAIlN,EAAO,QAEnC,MACUsb,GAAiBtb,CAAM,GACzB6W,EAAgB,IAAI3J,EAAIlN,EAAO,YAAY,EAC3CgO,EAAWd,CAAE,EAAIlN,EAAO,aAAa,MAErCgO,EAAWd,CAAE,EAAIlN,EAAO,KAItBA,EAAO,YAAc,MAAQA,EAAO,aAAe,KAAO,CAAC0kB,IAC7DD,EAAazkB,EAAO,YAElBA,EAAO,UACT2kB,EAAczX,CAAE,EAAIlN,EAAO,QAGnC,CAAG,EAIGqa,IACFM,EAASN,EACTrM,EAAW,OAAO,KAAKqM,CAAY,EAAE,CAAC,CAAC,EAAI,QAEtC,CACL,WAAArM,EACA,OAAA2M,EACA,WAAY8J,GAAc,IAC1B,cAAAE,CACD,CACH,CACA,SAAS7H,GAAkBpT,EAAOkE,EAAS+N,EAAeY,EAASlC,EAAcuB,EAAsBa,EAAgB5F,EAAiB,CACtI,GAAI,CACF,WAAA7I,EACA,OAAA2M,CACJ,EAAM6J,GAAuB5W,EAAS+N,EAAeY,EAASlC,EAAcxD,CAAe,EAEzF,QAAS5L,EAAQ,EAAGA,EAAQ2Q,EAAqB,OAAQ3Q,IAAS,CAChE,GAAI,CACF,IAAAlT,EACA,MAAAhB,EACA,WAAA8I,CACN,EAAQ+b,EAAqB3Q,CAAK,EAC9BN,EAAU8R,IAAmB,QAAaA,EAAexR,CAAK,IAAM,OAAW,2CAA2C,EAC1H,IAAIjL,EAASyc,EAAexR,CAAK,EAEjC,GAAI,EAAApL,GAAcA,EAAW,OAAO,SAG7B,GAAIub,GAAcpb,CAAM,EAAG,CAChC,IAAIqb,EAAgBf,GAAoB5Q,EAAM,QAAS3S,GAAS,KAAO,OAASA,EAAM,MAAM,EAAE,EACxF4jB,GAAUA,EAAOU,EAAc,MAAM,EAAE,IAC3CV,EAAS/Q,GAAS,CAAE,EAAE+Q,EAAQ,CAC5B,CAACU,EAAc,MAAM,EAAE,EAAGrb,EAAO,KAC3C,CAAS,GAEH0J,EAAM,SAAS,OAAO3R,CAAG,CAC/B,SAAemjB,GAAiBlb,CAAM,EAGhC2K,EAAU,GAAO,yCAAyC,UACjD2Q,GAAiBtb,CAAM,EAGhC2K,EAAU,GAAO,iCAAiC,MAC7C,CACL,IAAI0T,EAAcN,GAAe/d,EAAO,IAAI,EAC5C0J,EAAM,SAAS,IAAI3R,EAAKsmB,CAAW,CACzC,CACA,CACE,MAAO,CACL,WAAArQ,EACA,OAAA2M,CACD,CACH,CACA,SAAS9B,GAAgB7K,EAAY4W,EAAehX,EAAS+M,EAAQ,CACnE,IAAIkK,EAAmBjb,GAAS,CAAE,EAAEgb,CAAa,EACjD,QAAS7tB,KAAS6W,EAAS,CACzB,IAAIV,EAAKnW,EAAM,MAAM,GAUrB,GATI6tB,EAAc,eAAe1X,CAAE,EAC7B0X,EAAc1X,CAAE,IAAM,SACxB2X,EAAiB3X,CAAE,EAAI0X,EAAc1X,CAAE,GAEhCc,EAAWd,CAAE,IAAM,QAAanW,EAAM,MAAM,SAGrD8tB,EAAiB3X,CAAE,EAAIc,EAAWd,CAAE,GAElCyN,GAAUA,EAAO,eAAezN,CAAE,EAEpC,KAEN,CACE,OAAO2X,CACT,CAIA,SAASvK,GAAoB1M,EAASkO,EAAS,CAE7C,OADsBA,EAAUlO,EAAQ,MAAM,EAAGA,EAAQ,UAAU6H,GAAKA,EAAE,MAAM,KAAOqG,CAAO,EAAI,CAAC,EAAI,CAAC,GAAGlO,CAAO,GAC3F,UAAU,KAAK6H,GAAKA,EAAE,MAAM,mBAAqB,EAAI,GAAK7H,EAAQ,CAAC,CAC5F,CACA,SAAS2H,GAAuB1I,EAAQ,CAEtC,IAAIF,EAAQE,EAAO,SAAW,EAAIA,EAAO,CAAC,EAAIA,EAAO,KAAK,GAAK,EAAE,OAAS,CAAC,EAAE,MAAQ,EAAE,OAAS,GAAG,GAAK,CACtG,GAAI,sBACL,EACD,MAAO,CACL,QAAS,CAAC,CACR,OAAQ,CAAE,EACV,SAAU,GACV,aAAc,GACd,MAAAF,CACN,CAAK,EACD,MAAAA,CACD,CACH,CACA,SAAS2I,GAAuBrW,EAAQ6lB,EAAQ,CAC9C,GAAI,CACF,SAAAza,EACA,QAAAyR,EACA,OAAAle,EACA,KAAA6lB,CACJ,EAAMqB,IAAW,OAAS,CAAA,EAAKA,EACzBvR,EAAa,uBACbwR,EAAe,kCACnB,OAAI9lB,IAAW,KACbsU,EAAa,cACT3V,GAAUyM,GAAYyR,EACxBiJ,EAAe,cAAgBnnB,EAAS,gBAAmByM,EAAW,UAAa,yCAA4CyR,EAAU,OAAU,4CAC1I2H,IAAS,eAClBsB,EAAe,sCACNtB,IAAS,iBAClBsB,EAAe,qCAER9lB,IAAW,KACpBsU,EAAa,YACbwR,EAAe,UAAajJ,EAAU,yBAA6BzR,EAAW,KACrEpL,IAAW,KACpBsU,EAAa,YACbwR,EAAe,yBAA4B1a,EAAW,KAC7CpL,IAAW,MACpBsU,EAAa,qBACT3V,GAAUyM,GAAYyR,EACxBiJ,EAAe,cAAgBnnB,EAAO,YAAa,EAAG,gBAAmByM,EAAW,UAAa,0CAA6CyR,EAAU,OAAU,4CACzJle,IACTmnB,EAAe,2BAA8BnnB,EAAO,YAAa,EAAG,MAGjE,IAAI0V,GAAkBrU,GAAU,IAAKsU,EAAY,IAAI,MAAMwR,CAAY,EAAG,EAAI,CACvF,CAEA,SAASnI,GAAaL,EAAS,CAC7B,QAASrnB,EAAIqnB,EAAQ,OAAS,EAAGrnB,GAAK,EAAGA,IAAK,CAC5C,IAAI8K,EAASuc,EAAQrnB,CAAC,EACtB,GAAIgmB,GAAiBlb,CAAM,EACzB,MAAO,CACL,OAAAA,EACA,IAAK9K,CACN,CAEP,CACA,CACA,SAASmsB,GAAkBjW,EAAM,CAC/B,IAAIC,EAAa,OAAOD,GAAS,SAAWF,GAAUE,CAAI,EAAIA,EAC9D,OAAOX,GAAWb,GAAS,CAAE,EAAEyB,EAAY,CACzC,KAAM,EACV,CAAG,CAAC,CACJ,CACA,SAAS6O,GAAiBhL,EAAGC,EAAG,CAC9B,OAAID,EAAE,WAAaC,EAAE,UAAYD,EAAE,SAAWC,EAAE,OACvC,GAELD,EAAE,OAAS,GAENC,EAAE,OAAS,GACTD,EAAE,OAASC,EAAE,KAEf,GACEA,EAAE,OAAS,EAOxB,CACA,SAASmM,GAAiBtb,EAAQ,CAChC,OAAOA,EAAO,OAASwM,GAAW,QACpC,CACA,SAAS4O,GAAcpb,EAAQ,CAC7B,OAAOA,EAAO,OAASwM,GAAW,KACpC,CACA,SAAS0O,GAAiBlb,EAAQ,CAChC,OAAQA,GAAUA,EAAO,QAAUwM,GAAW,QAChD,CACA,SAAS4X,GAAepsB,EAAO,CAC7B,IAAIgtB,EAAWhtB,EACf,OAAOgtB,GAAY,OAAOA,GAAa,UAAY,OAAOA,EAAS,MAAS,UAAY,OAAOA,EAAS,WAAc,YAAc,OAAOA,EAAS,QAAW,YAAc,OAAOA,EAAS,aAAgB,UAC/M,CACA,SAASf,GAAWjsB,EAAO,CACzB,OAAOA,GAAS,MAAQ,OAAOA,EAAM,QAAW,UAAY,OAAOA,EAAM,YAAe,UAAY,OAAOA,EAAM,SAAY,UAAY,OAAOA,EAAM,KAAS,GACjK,CAYA,SAASkpB,GAActjB,EAAQ,CAC7B,OAAOiW,GAAoB,IAAIjW,EAAO,YAAW,CAAE,CACrD,CACA,SAAS+a,GAAiB/a,EAAQ,CAChC,OAAO+V,GAAqB,IAAI/V,EAAO,YAAW,CAAE,CACtD,CACA,eAAeohB,GAAuBF,EAAgBnD,EAAeY,EAAS0I,EAAShE,EAAW0B,EAAmB,CACnH,QAAS1X,EAAQ,EAAGA,EAAQsR,EAAQ,OAAQtR,IAAS,CACnD,IAAIjL,EAASuc,EAAQtR,CAAK,EACtBlU,EAAQ4kB,EAAc1Q,CAAK,EAI/B,GAAI,CAAClU,EACH,SAEF,IAAI6rB,EAAe9D,EAAe,KAAKrJ,GAAKA,EAAE,MAAM,KAAO1e,EAAM,MAAM,EAAE,EACrEmuB,EAAuBtC,GAAgB,MAAQ,CAACL,GAAmBK,EAAc7rB,CAAK,IAAM4rB,GAAqBA,EAAkB5rB,EAAM,MAAM,EAAE,KAAO,OAC5J,GAAIukB,GAAiBtb,CAAM,IAAMihB,GAAaiE,GAAuB,CAInE,IAAIX,EAASU,EAAQha,CAAK,EAC1BN,EAAU4Z,EAAQ,kEAAkE,EACpF,MAAMjG,GAAoBte,EAAQukB,EAAQtD,CAAS,EAAE,KAAKjhB,GAAU,CAC9DA,IACFuc,EAAQtR,CAAK,EAAIjL,GAAUuc,EAAQtR,CAAK,EAElD,CAAO,CACP,CACA,CACA,CACA,eAAeqT,GAAoBte,EAAQukB,EAAQY,EAAQ,CAKzD,GAJIA,IAAW,SACbA,EAAS,IAEG,OAAMnlB,EAAO,aAAa,YAAYukB,CAAM,EAI1D,IAAIY,EACF,GAAI,CACF,MAAO,CACL,KAAM3Y,GAAW,KACjB,KAAMxM,EAAO,aAAa,aAC3B,CACF,OAAQuB,EAAG,CAEV,MAAO,CACL,KAAMiL,GAAW,MACjB,MAAOjL,CACR,CACP,CAEE,MAAO,CACL,KAAMiL,GAAW,KACjB,KAAMxM,EAAO,aAAa,IAC3B,EACH,CACA,SAAS+gB,GAAmB3Z,EAAQ,CAClC,OAAO,IAAI,gBAAgBA,CAAM,EAAE,OAAO,OAAO,EAAE,KAAKge,GAAKA,IAAM,EAAE,CACvE,CACA,SAASpK,GAAepN,EAAS5C,EAAU,CACzC,IAAI5D,EAAS,OAAO4D,GAAa,SAAWE,GAAUF,CAAQ,EAAE,OAASA,EAAS,OAClF,GAAI4C,EAAQA,EAAQ,OAAS,CAAC,EAAE,MAAM,OAASmT,GAAmB3Z,GAAU,EAAE,EAE5E,OAAOwG,EAAQA,EAAQ,OAAS,CAAC,EAInC,IAAIyX,EAAc5S,GAA2B7E,CAAO,EACpD,OAAOyX,EAAYA,EAAY,OAAS,CAAC,CAC3C,CACA,SAAS3J,GAA4Bb,EAAY,CAC/C,GAAI,CACF,WAAA8D,EACA,WAAAC,EACA,YAAAC,EACA,KAAAyC,EACA,SAAAI,EACA,KAAAzhB,CACJ,EAAM4a,EACJ,GAAI,GAAC8D,GAAc,CAACC,GAAc,CAACC,GAGnC,IAAIyC,GAAQ,KACV,MAAO,CACL,WAAA3C,EACA,WAAAC,EACA,YAAAC,EACA,SAAU,OACV,KAAM,OACN,KAAAyC,CACD,EACI,GAAII,GAAY,KACrB,MAAO,CACL,WAAA/C,EACA,WAAAC,EACA,YAAAC,EACA,SAAA6C,EACA,KAAM,OACN,KAAM,MACP,EACI,GAAIzhB,IAAS,OAClB,MAAO,CACL,WAAA0e,EACA,WAAAC,EACA,YAAAC,EACA,SAAU,OACV,KAAA5e,EACA,KAAM,MACP,EAEL,CACA,SAASwa,GAAqBzP,EAAUsO,EAAY,CAClD,OAAIA,EACe,CACf,MAAO,UACP,SAAAtO,EACA,WAAYsO,EAAW,WACvB,WAAYA,EAAW,WACvB,YAAaA,EAAW,YACxB,SAAUA,EAAW,SACrB,KAAMA,EAAW,KACjB,KAAMA,EAAW,IAClB,EAGgB,CACf,MAAO,UACP,SAAAtO,EACA,WAAY,OACZ,WAAY,OACZ,YAAa,OACb,SAAU,OACV,KAAM,OACN,KAAM,MACP,CAGL,CACA,SAAS8P,GAAwB9P,EAAUsO,EAAY,CAWrD,MAViB,CACf,MAAO,aACP,SAAAtO,EACA,WAAYsO,EAAW,WACvB,WAAYA,EAAW,WACvB,YAAaA,EAAW,YACxB,SAAUA,EAAW,SACrB,KAAMA,EAAW,KACjB,KAAMA,EAAW,IAClB,CAEH,CACA,SAAS6C,GAAkB7C,EAAYxZ,EAAM,CAC3C,OAAIwZ,EACY,CACZ,MAAO,UACP,WAAYA,EAAW,WACvB,WAAYA,EAAW,WACvB,YAAaA,EAAW,YACxB,SAAUA,EAAW,SACrB,KAAMA,EAAW,KACjB,KAAMA,EAAW,KACjB,KAAAxZ,CACD,EAGa,CACZ,MAAO,UACP,WAAY,OACZ,WAAY,OACZ,YAAa,OACb,SAAU,OACV,KAAM,OACN,KAAM,OACN,KAAAA,CACD,CAGL,CACA,SAAS4d,GAAqBpE,EAAYkE,EAAiB,CAWzD,MAVc,CACZ,MAAO,aACP,WAAYlE,EAAW,WACvB,WAAYA,EAAW,WACvB,YAAaA,EAAW,YACxB,SAAUA,EAAW,SACrB,KAAMA,EAAW,KACjB,KAAMA,EAAW,KACjB,KAAMkE,EAAkBA,EAAgB,KAAO,MAChD,CAEH,CACA,SAASO,GAAeje,EAAM,CAW5B,MAVc,CACZ,MAAO,OACP,WAAY,OACZ,WAAY,OACZ,YAAa,OACb,SAAU,OACV,KAAM,OACN,KAAM,OACN,KAAAA,CACD,CAEH,CACA,SAAS0X,GAA0B8N,EAASC,EAAa,CACvD,GAAI,CACF,IAAIC,EAAmBF,EAAQ,eAAe,QAAQjR,EAAuB,EAC7E,GAAImR,EAAkB,CACpB,IAAIvlB,EAAO,KAAK,MAAMulB,CAAgB,EACtC,OAAS,CAACnlB,EAAG+kB,CAAC,IAAK,OAAO,QAAQnlB,GAAQ,CAAA,CAAE,EACtCmlB,GAAK,MAAM,QAAQA,CAAC,GACtBG,EAAY,IAAIllB,EAAG,IAAI,IAAI+kB,GAAK,CAAA,CAAE,CAAC,CAG7C,CACG,MAAW,CAEd,CACA,CACA,SAAS1N,GAA0B4N,EAASC,EAAa,CACvD,GAAIA,EAAY,KAAO,EAAG,CACxB,IAAItlB,EAAO,CAAE,EACb,OAAS,CAACI,EAAG+kB,CAAC,IAAKG,EACjBtlB,EAAKI,CAAC,EAAI,CAAC,GAAG+kB,CAAC,EAEjB,GAAI,CACFE,EAAQ,eAAe,QAAQjR,GAAyB,KAAK,UAAUpU,CAAI,CAAC,CAC7E,OAAQtB,EAAO,CACdiM,GAAQ,GAAO,8DAAgEjM,EAAQ,IAAI,CACjG,CACA,CACA,CC/nIY,IAAA8mB,IAAAA,IACRA,EAAA,kBAAoB,WACpBA,EAAA,wBAA0B,mCAC1BA,EAAA,gBAAkB,sBAClBA,EAAA,oBAAsB,+CACtBA,EAAA,SAAW,mBACXA,EAAA,gBAAkB,sBAClBA,EAAA,kBAAoB,cACpBA,EAAA,iBAAmB,kDACnBA,EAAA,aAAe,mCACfA,EAAA,6BAA+B,qDAC/BA,EAAA,cAAgB,6BAChBA,EAAA,qBAAuB,4BACvBA,EAAA,UAAY,+BACZA,EAAA,cAAgB,2BAChBA,EAAA,YAAc,yBACdA,EAAA,iBAAmB,IACnBA,EAAA,MAAQ,eACRA,EAAA,SAAW,mBACXA,EAAA,QAAU,kBACVA,EAAA,aAAe,uCACfA,EAAA,oBAAsB,0CACtBA,EAAA,gBAAkB,sCAClBA,EAAA,uBAAyB,6BACzBA,EAAA,eAAiB,YACjBA,EAAA,UAAY,4BACZA,EAAA,kBAAoB,mCACpBA,EAAA,kBAAoB,2CACpBA,EAAA,KAAO,QACPA,EAAA,OAAS,sBACTA,EAAA,YAAc,oBACdA,EAAA,uBAAyB,6CACzBA,EAAA,oBAAsB,yCACtBA,EAAA,qBAAuB,yBACvBA,EAAA,mBAAqB,kDACrBA,EAAA,0BAA4B,yCAnCpBA,IAAAA,IAAA,CAAA,CAAA,EAuCI,SAAAC,GAAaC,EAAqBC,EAA4B,GAAa,CAEnF,OADJD,EAAaA,GAAc,EACvBA,IAAe,EAAU,+BACzBA,IAAe,GAAKC,EAAyB,kDAC7CD,EAAa,EAAU,4BACpB,iDACX,CAEgB,SAAAE,GAAQza,EAAqBnK,EAAyC,CAC3E,OAAAsP,GAAanF,EAAgBnK,CAAM,CAC9C,CC1DO,MAAM6kB,EAAgB,CAMf,YAAY/tB,EAAaC,EAAe+tB,EAAqBC,EAAmB,CALjFjmB,EAAA,YACAA,EAAA,cACAA,EAAA,oBACAA,EAAA,kBAGL,KAAK,IAAMhI,EACX,KAAK,MAAQC,EACb,KAAK,YAAc+tB,EACnB,KAAK,UAAYC,CAAA,CAEzB,CCVO,MAAMC,EAAN,MAAMA,UAAqBH,EAAgB,CA2FlD,EA1FI/lB,EADSkmB,EACc,oBAAoB,IAAIA,EAC3C,EACA,kBACA,kCACA,sCACJ,GAEAlmB,EARSkmB,EAQc,gBAAgB,IAAIA,EACvC,EACA,gBACA,iCACA,iCACJ,GAEAlmB,EAfSkmB,EAec,aAAa,IAAIA,EACpC,EACA,gBACA,iCACA,4BACJ,GAEAlmB,EAtBSkmB,EAsBc,kBAAkB,IAAIA,EACzC,EACA,iBACA,kCACA,kCACJ,GAEAlmB,EA7BSkmB,EA6Bc,gBAAgB,IAAIA,EACvC,EACA,aACA,8BACA,sCACJ,GAEAlmB,EApCSkmB,EAoCc,YAAY,IAAIA,EACnC,EACA,YACA,6BACA,iCACJ,GAEAlmB,EA3CSkmB,EA2Cc,QAAQ,IAAIA,EAC/B,EACA,WACA,4BACA,4BACJ,GAEAlmB,EAlDSkmB,EAkDc,aAAa,IAAIA,EACpC,EACA,YACA,6BACA,kCACJ,GAEAlmB,EAzDSkmB,EAyDc,oBAAoB,IAAIA,EAC3C,EACA,iBACA,kCACA,sCACJ,GAEAlmB,EAhESkmB,EAgEc,gBAAgB,IAAIA,EACvC,GACA,gBACA,iCACA,iCACJ,GAEAlmB,EAvESkmB,EAuEc,QAAQ,IAAIA,EAC/B,GACA,WACA,4BACA,4BACJ,GAEAlmB,EA9ESkmB,EA8Ec,aAAa,IAAIA,EACpC,GACA,YACA,6BACA,kCACJ,GAEAlmB,EArFSkmB,EAqFc,QAAQ,IAAIA,EAC/B,GACA,WACA,4BACA,4BACJ,GA1FG,IAAMC,GAAND,ECAA,MAAME,GAAN,MAAMA,WAAuBL,EAAgB,CA0CpD,EAzCI/lB,EADSomB,GACc,0BAA0B,IAAIA,GACjD,EACA,oBACA,sCACA,0CACJ,GAEApmB,EARSomB,GAQc,oBAAoB,IAAIA,GAC3C,EACA,mBACA,qCACA,mCACJ,GAEApmB,EAfSomB,GAec,eAAe,IAAIA,GACtC,EACA,kBACA,oCACA,6BACJ,GAEApmB,EAtBSomB,GAsBc,cAAc,IAAIA,GACrC,EACA,kBACA,oCACA,6BACJ,GAEApmB,EA7BSomB,GA6Bc,WAAW,IAAIA,GAClC,EACA,eACA,iCACA,6BACJ,GAEApmB,EApCSomB,GAoCc,WAAW,IAAIA,GAClC,EACA,eACA,iCACA,6BACJ,GAzCG,IAAMC,GAAND,GCEA,MAAME,EAAN,MAAMA,CAAY,CAuBb,YACJnZ,EACAlV,EACAsuB,EACAC,EACAjxB,EACAkxB,EACAT,EACAU,EACAC,EACAC,EACF,CAjCO5mB,EAAA,WACAA,EAAA,cACAA,EAAA,qBACAA,EAAA,gBACAA,EAAA,aACAA,EAAA,gBACAA,EAAA,oBACAA,EAAA,qBACAA,EAAA,uBACAA,EAAA,iBAyBL,KAAK,GAAKmN,EACV,KAAK,MAAQlV,EACb,KAAK,aAAesuB,EACpB,KAAK,QAAUC,EACf,KAAK,KAAOjxB,EACZ,KAAK,QAAUkxB,EACf,KAAK,YAAcT,EACnB,KAAK,aAAeU,EACpB,KAAK,eAAiBC,EACtB,KAAK,SAAWC,CAAA,CAhCb,oBAA6C,CAEhD,OAAI,KAAK,cAAgB,KAAK,aAAa,KAAO,EAAU,KAAK,aAG7D,KAAK,gBAAkB,KAAK,eAAe,KAAO,EAAU,KAAK,eAG9D,IAAA,CAuLJ,OAAU,CACb,OAAAC,EACA,YAAAC,EACA,qBAAAC,EACA,YAAAC,EACA,OAAAC,EACA,OAAAC,EACA,SAAAC,EACA,OAAAC,EACA,aAAAC,EACA,qBAAAC,EACA,UAAAC,EACA,aAAAC,CAAA,EAcE,CACF,OAAQ,KAAM,CACV,KAAKlB,EAAY,KACb,OAAOO,EAAO,EAClB,KAAKP,EAAY,UACb,OAAOQ,EAAY,EACvB,KAAKR,EAAY,mBACb,OAAOS,EAAqB,EAChC,KAAKT,EAAY,UACb,OAAOU,EAAY,EACvB,KAAKV,EAAY,KACb,OAAOW,EAAO,EAClB,KAAKX,EAAY,KACb,OAAOY,EAAO,EAClB,KAAKZ,EAAY,OACb,OAAOa,EAAS,EACpB,KAAKb,EAAY,KACb,OAAOc,EAAO,EAClB,KAAKd,EAAY,WACb,OAAOe,EAAa,EACxB,KAAKf,EAAY,mBACb,OAAOgB,EAAqB,EAChC,KAAKhB,EAAY,QACb,OAAOiB,EAAU,EACrB,KAAKjB,EAAY,WACb,OAAOkB,EAAa,EACxB,QACI,MAAM,IAAI,MAAM,qCAAqC,IAAI,EAAE,CAAA,CACnE,CAER,EApNIxnB,EA/CSsmB,EA+Cc,YAAY,IAAIA,EACnC,EACA,YACA,KACA,YACA,+BACA,+BACA,+BACAH,GAAa,gBACb,KACA,8BACJ,GAEAnmB,EA5DSsmB,EA4Dc,qBAAqB,IAAIA,EAC5C,EACA,aACA,MACA,YACA,yCACA,iCACA,iCACAH,GAAa,gBACb,KACA,8BACJ,GAEAnmB,EAzESsmB,EAyEc,YAAY,IAAIA,EACnC,EACA,MACA,MACA,YACA,8BACA,8BACA,8BACAH,GAAa,WACb,KACA,6BACJ,GAEAnmB,EAtFSsmB,EAsFc,OAAO,IAAIA,EAC9B,EACA,OACA,OACA,OACA,OACA,4CACA,2BACAH,GAAa,cACb,KACA,wBACJ,GAEAnmB,EAnGSsmB,EAmGc,OAAO,IAAIA,EAC9B,EACA,OACA,OACA,OACA,yBACA,yBACA,yBACAH,GAAa,cACbE,GAAe,aACf,wBACJ,GAEArmB,EAhHSsmB,EAgHc,SAAS,IAAIA,EAChC,EACA,SACA,KACA,SACA,SACA,SACA,6BACAH,GAAa,WACb,KACA,0BACJ,GAEAnmB,EA7HSsmB,EA6Hc,OAAO,IAAIA,EAC9B,EACA,OACA,OACA,OACA,OACA,OACA,mCACAH,GAAa,gBACb,KACA,wBACJ,GAEAnmB,EA1ISsmB,EA0Ic,OAAO,IAAIA,EAC9B,EACA,OACA,OACA,OACA,OACA,sDACA,2BACAH,GAAa,WACb,KACA,wBACJ,GAEAnmB,EAvJSsmB,EAuJc,aAAa,IAAIA,EACpC,GACA,aACA,MACA,aACA,+BACA,qCACA,qCACA,KACAD,GAAe,kBACf,8BACJ,GAEArmB,EApKSsmB,EAoKc,qBAAqB,IAAIA,EAC5C,GACA,OACA,OACA,YACA,wCACA,wCACA,wCACAH,GAAa,WACb,KACA,uCACJ,GAEAnmB,EAjLSsmB,EAiLc,UAAU,IAAIA,EACjC,GACA,UACA,MACA,UACA,4BACA,4BACA,4BACAH,GAAa,gBACb,KACA,2BACJ,GAEAnmB,EA9LSsmB,EA8Lc,aAAa,IAAIA,EACpC,GACA,aACA,KACA,aACA,gCACA,gCACA,gCACAH,GAAa,gBACb,KACA,+BACJ,GAzMG,IAAMsB,GAANnB,GAqQUmB,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AE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IA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","x_google_ignoreList":[0,1,2,11,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89]}