{"version":3,"sources":["webpack://crc/webpack/bootstrap","webpack://crc/./node_modules/@krakenjs/jsx-pragmatic/src/node.js","webpack://crc/./node_modules/@krakenjs/jsx-pragmatic/src/constants.js","webpack://crc/./node_modules/@krakenjs/jsx-pragmatic/src/renderers/dom.js","webpack://crc/./node_modules/@krakenjs/jsx-pragmatic/src/util.js","webpack://crc/./node_modules/@krakenjs/jsx-pragmatic/src/renderers/html.js","webpack://crc/./node_modules/@paypal/sdk-constants/src/locale.js","webpack://crc/./node_modules/@paypal/sdk-constants/src/order.js","webpack://crc/./node_modules/@paypal/sdk-constants/src/params.js","webpack://crc/./node_modules/@paypal/sdk-constants/src/defaults.js","webpack://crc/./node_modules/@paypal/sdk-constants/src/env.js","webpack://crc/./node_modules/@paypal/sdk-constants/src/fpti.js","webpack://crc/./node_modules/@paypal/sdk-constants/src/funding.js","webpack://crc/./node_modules/@paypal/sdk-constants/src/platform.js","webpack://crc/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://crc/./node_modules/@krakenjs/belter/src/device.js","webpack://crc/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://crc/./node_modules/@krakenjs/belter/src/util.js","webpack://crc/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://crc/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://crc/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://crc/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://crc/./node_modules/@krakenjs/belter/src/dom.js","webpack://crc/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://crc/./node_modules/@krakenjs/belter/src/constants.js","webpack://crc/./node_modules/@krakenjs/belter/src/storage.js","webpack://crc/./node_modules/@krakenjs/belter/src/experiment.js","webpack://crc/./node_modules/@krakenjs/belter/src/http.js","webpack://crc/./node_modules/@krakenjs/zalgo-promise/src/utils.js","webpack://crc/./node_modules/@krakenjs/zalgo-promise/src/exceptions.js","webpack://crc/./node_modules/@krakenjs/zalgo-promise/src/flush.js","webpack://crc/./node_modules/@krakenjs/zalgo-promise/src/promise.js","webpack://crc/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://crc/./node_modules/core-js-pure/internals/fails.js","webpack://crc/./node_modules/core-js-pure/internals/function-uncurry-this.js","webpack://crc/./node_modules/core-js-pure/internals/is-callable.js","webpack://crc/./node_modules/@krakenjs/cross-domain-utils/src/constants.js","webpack://crc/./node_modules/@krakenjs/cross-domain-utils/src/utils.js","webpack://crc/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://crc/./node_modules/@paypal/sdk-client/src/global.js","webpack://crc/./node_modules/@paypal/sdk-client/src/config.js","webpack://crc/./node_modules/@paypal/sdk-client/src/script.js","webpack://crc/./node_modules/@paypal/sdk-client/src/logger.js","webpack://crc/./node_modules/@paypal/sdk-client/src/domains.js","webpack://crc/./node_modules/@paypal/sdk-client/src/api.js","webpack://crc/./node_modules/@paypal/sdk-client/src/events.js","webpack://crc/./src/utils/sdk.js","webpack://crc/./node_modules/core-js-pure/internals/descriptors.js","webpack://crc/./node_modules/core-js-pure/internals/export.js","webpack://crc/./node_modules/core-js-pure/internals/global.js","webpack://crc/./src/utils/functional.js","webpack://crc/./node_modules/core-js-pure/internals/is-object.js","webpack://crc/./node_modules/core-js-pure/stable/array/includes.js","webpack://crc/./node_modules/core-js-pure/stable/object/entries.js","webpack://crc/./node_modules/core-js-pure/internals/function-call.js","webpack://crc/./node_modules/core-js-pure/internals/has-own-property.js","webpack://crc/./node_modules/core-js-pure/stable/array/from.js","webpack://crc/./node_modules/core-js-pure/stable/array/find.js","webpack://crc/./node_modules/core-js-pure/internals/an-object.js","webpack://crc/./src/utils/miscellaneous.js","webpack://crc/./src/utils/constants.js","webpack://crc/./node_modules/core-js-pure/internals/object-define-property.js","webpack://crc/./node_modules/@krakenjs/cross-domain-safe-weakmap/src/util.js","webpack://crc/./node_modules/@krakenjs/cross-domain-safe-weakmap/src/weakmap.js","webpack://crc/./node_modules/@krakenjs/cross-domain-safe-weakmap/src/native.js","webpack://crc/./node_modules/core-js-pure/internals/to-object.js","webpack://crc/./node_modules/core-js-pure/internals/classof-raw.js","webpack://crc/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://crc/./node_modules/core-js-pure/internals/path.js","webpack://crc/./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://crc/./node_modules/core-js-pure/internals/length-of-array-like.js","webpack://crc/./node_modules/core-js-pure/stable/string/starts-with.js","webpack://crc/./src/utils/debug.js","webpack://crc/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://crc/./node_modules/core-js-pure/internals/function-bind-context.js","webpack://crc/./node_modules/core-js-pure/internals/iterators.js","webpack://crc/./node_modules/core-js-pure/internals/entry-unbind.js","webpack://crc/./node_modules/core-js-pure/internals/require-object-coercible.js","webpack://crc/./node_modules/core-js-pure/internals/a-callable.js","webpack://crc/./node_modules/core-js-pure/internals/get-built-in.js","webpack://crc/./node_modules/core-js-pure/internals/is-pure.js","webpack://crc/./node_modules/core-js-pure/internals/classof.js","webpack://crc/./node_modules/@krakenjs/beaver-logger/src/constants.js","webpack://crc/./node_modules/@krakenjs/beaver-logger/src/config.js","webpack://crc/./node_modules/@krakenjs/beaver-logger/src/util.js","webpack://crc/./node_modules/@krakenjs/beaver-logger/src/logger.js","webpack://crc/./node_modules/@krakenjs/beaver-logger/src/http.js","webpack://crc/./src/utils/elements.js","webpack://crc/./node_modules/core-js-pure/internals/add-to-unscopables.js","webpack://crc/./node_modules/core-js-pure/internals/function-bind-native.js","webpack://crc/./node_modules/core-js-pure/internals/create-property-descriptor.js","webpack://crc/./node_modules/core-js-pure/internals/to-string.js","webpack://crc/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://crc/./node_modules/core-js-pure/internals/is-null-or-undefined.js","webpack://crc/./node_modules/core-js-pure/internals/object-keys.js","webpack://crc/./node_modules/core-js-pure/internals/hidden-keys.js","webpack://crc/./node_modules/core-js-pure/stable/object/assign.js","webpack://crc/./node_modules/core-js-pure/internals/internal-state.js","webpack://crc/./node_modules/core-js-pure/internals/function-uncurry-this-clause.js","webpack://crc/./node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack://crc/./node_modules/core-js-pure/internals/indexed-object.js","webpack://crc/./node_modules/core-js-pure/internals/to-property-key.js","webpack://crc/./node_modules/core-js-pure/internals/get-method.js","webpack://crc/./node_modules/core-js-pure/internals/shared-store.js","webpack://crc/./node_modules/core-js-pure/internals/to-integer-or-infinity.js","webpack://crc/./node_modules/core-js-pure/internals/to-string-tag-support.js","webpack://crc/./node_modules/core-js-pure/internals/shared-key.js","webpack://crc/./node_modules/core-js-pure/stable/string/includes.js","webpack://crc/./node_modules/core-js-pure/internals/try-to-string.js","webpack://crc/./node_modules/core-js-pure/internals/uid.js","webpack://crc/./node_modules/core-js-pure/internals/enum-bug-keys.js","webpack://crc/./node_modules/core-js-pure/internals/object-create.js","webpack://crc/./node_modules/core-js-pure/internals/define-built-in.js","webpack://crc/./node_modules/core-js-pure/internals/set-to-string-tag.js","webpack://crc/./node_modules/core-js-pure/internals/get-iterator-method.js","webpack://crc/./node_modules/core-js-pure/internals/object-is-prototype-of.js","webpack://crc/./node_modules/core-js-pure/internals/iterator-define.js","webpack://crc/./node_modules/core-js-pure/internals/create-iter-result-object.js","webpack://crc/./node_modules/core-js-pure/internals/array-iteration.js","webpack://crc/./node_modules/core-js-pure/internals/document-all.js","webpack://crc/./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","webpack://crc/./node_modules/core-js-pure/internals/is-symbol.js","webpack://crc/./node_modules/core-js-pure/internals/use-symbol-as-uid.js","webpack://crc/./node_modules/core-js-pure/internals/symbol-constructor-detection.js","webpack://crc/./node_modules/core-js-pure/internals/shared.js","webpack://crc/./node_modules/core-js-pure/internals/ie8-dom-define.js","webpack://crc/./node_modules/core-js-pure/internals/document-create-element.js","webpack://crc/./node_modules/core-js-pure/internals/v8-prototype-define-bug.js","webpack://crc/./node_modules/core-js-pure/internals/array-includes.js","webpack://crc/./node_modules/core-js-pure/internals/to-length.js","webpack://crc/./node_modules/core-js-pure/internals/array-species-create.js","webpack://crc/./node_modules/core-js-pure/internals/is-array.js","webpack://crc/./node_modules/core-js-pure/internals/is-constructor.js","webpack://crc/./node_modules/core-js-pure/internals/not-a-regexp.js","webpack://crc/./node_modules/core-js-pure/internals/correct-is-regexp-logic.js","webpack://crc/./node_modules/core-js-pure/internals/iterators-core.js","webpack://crc/./node_modules/core-js-pure/internals/object-get-prototype-of.js","webpack://crc/./node_modules/core-js-pure/stable/array/flat-map.js","webpack://crc/./node_modules/core-js-pure/internals/object-keys-internal.js","webpack://crc/./node_modules/core-js-pure/internals/to-absolute-index.js","webpack://crc/./node_modules/core-js-pure/modules/es.string.iterator.js","webpack://crc/./node_modules/core-js-pure/internals/iterator-close.js","webpack://crc/./node_modules/core-js-pure/internals/is-array-iterator-method.js","webpack://crc/./node_modules/core-js-pure/internals/create-property.js","webpack://crc/./node_modules/core-js-pure/internals/get-iterator.js","webpack://crc/./node_modules/core-js-pure/es/object/assign.js","webpack://crc/./node_modules/core-js-pure/modules/es.object.assign.js","webpack://crc/./node_modules/core-js-pure/internals/function-apply.js","webpack://crc/./node_modules/core-js-pure/internals/to-primitive.js","webpack://crc/./node_modules/core-js-pure/internals/engine-v8-version.js","webpack://crc/./node_modules/core-js-pure/internals/engine-user-agent.js","webpack://crc/./node_modules/core-js-pure/internals/ordinary-to-primitive.js","webpack://crc/./node_modules/core-js-pure/internals/define-global-property.js","webpack://crc/./node_modules/core-js-pure/internals/is-forced.js","webpack://crc/./node_modules/core-js-pure/internals/object-assign.js","webpack://crc/./node_modules/core-js-pure/internals/math-trunc.js","webpack://crc/./node_modules/core-js-pure/internals/object-get-own-property-symbols.js","webpack://crc/./node_modules/core-js-pure/es/array/find.js","webpack://crc/./node_modules/core-js-pure/modules/es.array.find.js","webpack://crc/./node_modules/core-js-pure/internals/array-species-constructor.js","webpack://crc/./node_modules/core-js-pure/internals/inspect-source.js","webpack://crc/./node_modules/core-js-pure/es/array/includes.js","webpack://crc/./node_modules/core-js-pure/modules/es.array.includes.js","webpack://crc/./node_modules/core-js-pure/es/string/includes.js","webpack://crc/./node_modules/core-js-pure/modules/es.string.includes.js","webpack://crc/./node_modules/core-js-pure/internals/is-regexp.js","webpack://crc/./node_modules/core-js-pure/es/object/entries.js","webpack://crc/./node_modules/core-js-pure/modules/es.object.entries.js","webpack://crc/./node_modules/core-js-pure/internals/object-to-array.js","webpack://crc/./node_modules/core-js-pure/es/string/starts-with.js","webpack://crc/./node_modules/core-js-pure/modules/es.string.starts-with.js","webpack://crc/./node_modules/core-js-pure/es/array/from.js","webpack://crc/./node_modules/core-js-pure/internals/string-multibyte.js","webpack://crc/./node_modules/core-js-pure/internals/weak-map-basic-detection.js","webpack://crc/./node_modules/core-js-pure/internals/function-name.js","webpack://crc/./node_modules/core-js-pure/internals/iterator-create-constructor.js","webpack://crc/./node_modules/core-js-pure/internals/object-define-properties.js","webpack://crc/./node_modules/core-js-pure/internals/html.js","webpack://crc/./node_modules/core-js-pure/internals/correct-prototype-getter.js","webpack://crc/./node_modules/core-js-pure/internals/object-to-string.js","webpack://crc/./node_modules/core-js-pure/internals/object-set-prototype-of.js","webpack://crc/./node_modules/core-js-pure/internals/function-uncurry-this-accessor.js","webpack://crc/./node_modules/core-js-pure/internals/a-possible-prototype.js","webpack://crc/./node_modules/core-js-pure/modules/es.array.from.js","webpack://crc/./node_modules/core-js-pure/internals/array-from.js","webpack://crc/./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js","webpack://crc/./node_modules/core-js-pure/internals/check-correctness-of-iteration.js","webpack://crc/./node_modules/core-js-pure/es/array/flat-map.js","webpack://crc/./node_modules/core-js-pure/modules/es.array.flat-map.js","webpack://crc/./node_modules/core-js-pure/internals/flatten-into-array.js","webpack://crc/./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js","webpack://crc/./node_modules/core-js-pure/modules/es.array.unscopables.flat-map.js","webpack://crc/./src/utils/activeTags.js","webpack://crc/./src/utils/performance.js","webpack://crc/./src/components/message/index.js","webpack://crc/./src/components/message/Message.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","hasOwnProperty","p","s","renderChildren","children","renderer","result","_i2","length","renderedChild","render","Array","isArray","_i4","subchild","push","ElementNode","props","type","onRender","this","_proto","prototype","el","FragmentNode","TextNode","text","ComponentNode","component","_proto4","renderComponent","child","normalizeChildren","normalizeChild","_i6","toString","_i8","_normalizeChildren2","TypeError","node","element","_len","arguments","_key","ELEMENT_DEFAULT_XML_NAMESPACE","_ELEMENT_DEFAULT_XML_","ATTRIBUTE_DEFAULT_XML_NAMESPACE","_ATTRIBUTE_DEFAULT_XM","createTextElement","doc","createTextNode","addProps","_Object$keys2","keys","prop","val","match","addEventListener","slice","toLowerCase","xmlNamespace","setAttributeNS","setAttribute","tagName","id","replace","charAt","Math","floor","random","ADD_CHILDREN","_ADD_CHILDREN","firstChild","Error","win","contentWindow","document","docElement","documentElement","removeChild","dom","appendChild","_node$renderChildren2","addChildren","html","ELEMENT_PROP","innerHTML","window","_el$querySelectorAll2","querySelectorAll","script","parentNode","newScript","createElement","textContent","replaceChild","fixScripts","opts","_opts$doc","domRenderer","xmlNamespaceDomRenderer","childNode","createElementNS","createElementWithXMLNamespace","SELF_CLOSING_TAGS","br","htmlEncode","htmlRenderer","concat","join","renderedProps","filter","map","renderedChildren","COUNTRY","AD","AE","AG","AI","AL","AM","AN","AO","AR","AT","AU","AW","AZ","BA","BB","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BW","BY","BZ","CA","CD","CG","CH","CI","CK","CL","CM","CN","CO","CR","CV","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GI","GL","GM","GN","GP","GR","GT","GW","GY","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LC","LI","LK","LS","LT","LU","LV","MA","MC","MD","ME","MG","MH","MK","ML","MN","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PL","PM","PN","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SZ","TC","TD","TG","TH","TJ","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","VA","VC","VE","VG","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","LANG","CS","DA","EL","EN","HE","JA","KO","SQ","TL","VI","ZH","ZH_HANT","COUNTRY_LANGS","INTENT","CAPTURE","AUTHORIZE","ORDER","TOKENIZE","SUBSCRIPTION","SDK_SETTINGS","NAMESPACE","CLIENT_TOKEN","MERCHANT_ID","PARTNER_ATTRIBUTION_ID","STAGE_HOST","API_STAGE_HOST","CSP_NONCE","ENABLE_3DS","SDK_INTEGRATION_SOURCE","USER_ID_TOKEN","AMOUNT","CLIENT_METADATA_ID","PAGE_TYPE","USER_EXPERIENCE_FLOW","POPUPS_DISABLED","SDK_QUERY_KEYS","COMPONENTS","ENV","DEBUG","CACHEBUST","CLIENT_ID","LOCALE","CURRENCY","COMMIT","VAULT","BUYER_COUNTRY","ENABLE_FUNDING","DISABLE_FUNDING","DISABLE_CARD","INTEGRATION_DATE","STAGE_ALIAS","CDN_REGISTRY","VERSION","QUERY_BOOL","TRUE","FALSE","UNKNOWN","PROTOCOL","HTTP","HTTPS","PAGE_TYPES","HOME","PRODUCT","CART","CHECKOUT","PRODUCT_LISTING","SEARCH_RESULTS","PRODUCT_DETAILS","MINI_CART","DEFAULT_CURRENCY","DEFAULT_INTENT","DEFAULT_SALE_COMMIT","DEFAULT_NONSALE_COMMIT","DEFAULT_VAULT","LOCAL","STAGE","SANDBOX","PRODUCTION","TEST","FPTI_KEY","FEED","STATE","EVENT_NAME","TRANSITION","PAGE","BUTTON_TYPE","SESSION_UID","BUTTON_SESSION_UID","TOKEN","CONTEXT_ID","CONTEXT_TYPE","REFERER","MERCHANT_DOMAIN","PAY_ID","SELLER_ID","DATA_SOURCE","BUTTON_SOURCE","ERROR_CODE","ERROR_DESC","PAGE_LOAD_TIME","EXPERIMENT_NAME","TREATMENT_NAME","TRANSITION_TIME","FUNDING_LIST","FUNDING_COUNT","CHOSEN_FUNDING","BUTTON_LAYOUT","INTEGRATION_IDENTIFIER","SDK_NAME","SDK_VERSION","SDK_ENVIRONMENT","MOBILE_APP_VERSION","MOBILE_BUNDLE_IDENTIFIER","USER_AGENT","USER_ACTION","CONTEXT_CORRID","SDK_CACHE","SDK_LOAD_TIME","IS_VAULT","RESPONSE_DURATION","PAYMENT_FLOW","BUTTON_VERSION","FI_LIST","FI_ID","CHOSEN_FI_TYPE","SELECTED_FI","POTENTIAL_PAYMENT_METHODS","PAY_NOW","STICKINESS_ID","TIMESTAMP","OPTION_SELECTED","USER_IDENTITY_METHOD","FIELDS_COMPONENT_SESSION_ID","CPL_COMP_METRICS","CPL_CHUNK_METRICS","CPL_QUERY_METRICS","FPTI_USER_ACTION","CONTINUE","FPTI_DATA_SOURCE","PAYMENTS_SDK","FPTI_FEED","FPTI_SDK_NAME","CARD","VISA","MASTERCARD","AMEX","DISCOVER","HIPER","ELO","JCB","CUP","PLATFORM","DESKTOP","MOBILE","_extends","assign","target","source","apply","isDevice","userAgent","navigator","mockUserAgent","isIE","documentMode","Boolean","test","isIEIntranet","status","err","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","objectIDs","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","e","_construct","Parent","args","Class","isNativeReflectConstruct","a","instance","Function","_wrapNativeSuper","_cache","Map","undefined","indexOf","has","set","Wrapper","constructor","writable","configurable","getFunctionName","fn","__name__","displayName","setFunctionName","base64encode","str","btoa","encodeURIComponent","p1","String","fromCharCode","parseInt","Buffer","from","base64decode","atob","decodeURIComponent","charCodeAt","uniqueID","chars","toISOString","getGlobal","global","__GLOBAL__","serializeArgs","JSON","stringify","subkey","obj","WeakMap","uid","getObjectID","passed","Element","nodeType","style","ownerDocument","_","isElement","getEmptyObject","memoizeGlobalIndex","memoizeGlobalIndexValidFrom","memoize","method","options","simpleCache","thisCache","_options$thisNamespac","thisNamespace","cacheTime","time","memoizeIndex","memoizedFunction","cache","cacheKey","getOrSet","_unused","cacheResult","now","reset","inlineMemoize","logic","__inline_memoize_cache__","noop","stringifyError","level","stack","message","newErr","stringifyErrorMessage","defaultMessage","values","svgToBase64","svg","objFilter","promiseDebounce","delay","promise","timeout","clearTimeout","localPromise","ZalgoPromise","setTimeout","try","then","resolve","reject","safeInterval","loop","cancel","eventEmitter","triggered","handlers","emitter","on","eventName","handler","handlerList","cancelled","splice","once","listener","trigger","_len3","_key3","promises","_loop","all","triggerOnce","_len4","_key4","capitalizeFirstLetter","string","toUpperCase","debounce","_arguments3","_this3","clear","_ExtendableError","ExtendableError","_Error","_this6","captureStackTrace","self","ReferenceError","_assertThisInitialized","_inheritsLoose","ATTRIBUTES","UID","isDocumentReady","body","readyState","isDocumentInteractive","urlEncode","waitForWindowReady","parseQuery","queryString","params","_queryString$split2","split","pair","extendQuery","originalQuery","extendUrl","url","originalUrl","originalHash","query","hash","_url$split","_originalUrl$split","hashString","getPerformance","performance","timing","connectEnd","navigationStart","abs","isBrowser","location","getScript","_ref","_ref$host","host","path","_ref$reverse","reverse","scripts","getElementsByTagName","src","isLocalStorageEnabled","localStorage","setItem","getItem","removeItem","getBrowserLocales","nav","locales","languages","language","userLanguage","locale","_locale$split","country","lang","destroyElement","getResourceLoadTime","getEntries","entries","entry","duration","interval","setInterval","clearInterval","currentScript","getCurrentScript","getStackTrace","stackDetails","exec","scriptLocation","_i22","_Array$prototype$slic2","inferCurrentScript","currentUID","getCurrentScriptUID","getAttribute","hashedString","total","strHashStr","dataset","getStorage","_ref$lifetime","lifetime","accessedStorage","STORAGE_KEY","newStateID","getState","storage","localStorageEnabled","rawStorage","parse","getID","getSession","session","__session__","created","guid","isStateFresh","getSessionState","state","getSessionID","getBelterExperimentStorage","isEventUnique","loggedBeacons","getRandomInteger","range","experiment","group","_ref$sample","sample","_ref$logTreatment","logTreatment","_ref$logCheckpoint","logCheckpoint","_ref$sticky","sticky","throttle","throttlePercentiles","getThrottlePercentile","treatment","started","forced","exp","isEnabled","isDisabled","getTreatment","log","checkpoint","payload","logStart","logComplete","headerBuilders","request","_ref$method","_ref$headers","headers","json","data","_ref$win","_ref$timeout","normalizedHeaders","builtHeaders","headerBuilder","_Object$keys4","xhr","XMLHttpRequest","responseHeaders","rawHeaders","_rawHeaders$trim$spli2","trim","_line$split","parseHeaders","getAllResponseHeaders","contentType","isJSON","responseBody","responseText","evt","open","setRequestHeader","ontimeout","send","isPromise","item","Promise","Window","flushPromise","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushActive","startActive","endActive","_this","resolved","rejected","errorHandled","error","dispatching","isAsync","res","dispatch","_this2","j","dispatchPossiblyUnhandledError","asyncReject","chain","firstPromise","secondPromise","_handlers$i","onSuccess","onError","promiseResult","catch","finally","onFinally","toPromise","lazy","count","results","prom","awaitPromises","items","onPossiblyUnhandledException","context","flush","_objectWithoutPropertiesLoose","excluded","sourceKeys","NATIVE_BIND","require","FunctionPrototype","uncurryThisWithBind","$documentAll","documentAll","IS_HTMLDDA","argument","IE_WIN_ACCESS_ERROR","getActualProtocol","protocol","getProtocol","mockDomain","isAboutProtocol","canReadFromWindow","getActualDomain","parent","getParent","getDomain","domain","isSameDomain","desc","getOwnPropertyDescriptor","isMockProtocol","isActuallySameDomain","assertSameDomain","iframeWindows","iframeFrames","isWindowClosed","allowMock","closed","mockclosed","top","iframeIndex","collection","safeIndexOf","frame","contains","isFrameWindowClosed","linkFrameWindow","cleanIframes","isWindow","__cross_domain_utils_window_check__","isCurrentDomain","shared","hasOwn","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","getPayPalDomain","__PAYPAL_DOMAIN__","getSDKScript","errorString","buildScriptNotFoundError","__SDK_HOST__","__PATH__","_sdkScript$attributes2","attributes","attr","getLogger","Logger","clientID","info","basicAuth","__PAYPAL_API_DOMAIN__","Authorization","grant_type","access_token","getNamespace","_getScript","querySelector","getLibraryVersion","__MESSAGES__","isZoidComponent","stringStartsWith","getBelterStorage","getOrCreateStorageID","isStorageFresh","getDeviceID","_storage$messagingDev","messagingDeviceID","isScriptBeingDestroyed","__ENV__","fails","uncurryThis","isCallable","f","isForced","createNonEnumerableProperty","wrapConstructor","NativeConstructor","b","FORCED","USE_NATIVE","VIRTUAL_PROTOTYPE","sourceProperty","targetProperty","nativeProperty","resultProperty","descriptor","TARGET","GLOBAL","STATIC","stat","PROTO","proto","nativeSource","targetPrototype","dontCallGetSet","wrap","real","check","it","globalThis","partial","_len2","intialArgs","_key2","nextArgs","curry","arity","curried","_len5","_key5","toObject","isObject","$String","$TypeError","createState","initialState","objectAssign","_temp","_ref4","withCredentials","xhttp","onreadystatechange","reduce","accumulator","header","_extends2","_header$trim$split","stringIncludes","objectEntries","forEach","_ref5","parseObjFromEncoding","encodedStr","binary","bytes","Uint8Array","decodedStr","Uint16Array","buffer","createEvent","Event","event","initEvent","dynamicImport","getCurrentTime","getTime","getEventListenerPassiveOptionIfSupported","viewport","content","head","_viewport$getAttribut","_document$body$style$","_document$body$style$2","__pp_prev_content__","__pp_prev_overflow__","overflow","__pp_prev_msOverflowStyle__","msOverflowStyle","setProperty","passiveIfSupported","passive","getStandardProductOffer","offer","getTsCookieFromStorage","_getStorage$getState","_document$cookie$spli","_document$cookie$spli2","cookieVal","ts","cookie","find","cookieStr","startsWith","fromEntries","URLSearchParams","DESCRIPTORS","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","O","P","Attributes","current","CrossDomainSafeWeakMap","weakmap","freeze","testWeakMap","testKey","hasNativeWeakMap","_cleanupClosedWindows","delete","isSafeToReadWrite","index","requireObjectCoercible","$Object","stringSlice","IndexedObject","definePropertyModule","createPropertyDescriptor","toLength","ppDebug","inZoid","debugObj","search","console","warn","_setPrototypeOf","aCallable","that","getBuiltIn","isNullOrUndefined","tryToString","aFunction","variable","namespace","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","wellKnownSymbol","CORRECT_ARGUMENTS","tag","tryGet","callee","LOG_LEVEL","INFO","WARN","ERROR","AUTO_FLUSH_LEVEL","LOG_LEVEL_PRIORITY","DEFAULT_LOG_LEVEL","sendBeacon","_ref2","_ref2$win","_ref2$useBlob","useBlob","blob","Blob","extendIfDefined","prefix","_ref$logLevel","logLevel","_ref$transport","transport","_ref$enableSendBeacon","enableSendBeacon","httpWindow","beaconResult","hasHeaders","canUseSendBeacon","isAmplitude","amplitudeApiKey","_ref$flushInterval","flushInterval","events","tracking","metrics","payloadBuilders","metaBuilders","trackingBuilders","print","warning","immediateFlush","meta","builder","api_key","event_type","transition_name","event_properties","logger","logPayload","timestamp","enqueue","addBuilder","builders","debug","track","trackingPayload","metric","metricPayload","dimensions","addPayloadBuilder","addMetaBuilder","addTrackingBuilder","addHeaderBuilder","setTransport","newTransport","configure","getWindowFromElement","_node$ownerDocument","defaultView","HTMLElement","nodeName","container","className","getElementsByClassName","elem","insertBefore","span","appendImage","alt","srcset","logo","Image","_url$dimensions","width","height","svgWrapper","canvas","elementContains","parentEl","childEl","Node","ELEMENT_NODE","parentBounds","left","bottom","innerHeight","right","innerWidth","getBoundingClientRect","childBounds","elementOutside","getRoot","baseElement","elementWindow","domPath","_el","offsetHeight","computedRoot","arrayFind","elements","_elements","root","bitmap","classof","subClass","superClass","internalObjectKeys","enumBugKeys","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","store","metadata","facade","enforce","getterFor","TYPE","$propertyIsEnumerable","propertyIsEnumerable","NASHORN_BUG","1","V","toPrimitive","isSymbol","func","defineGlobalProperty","trunc","number","postfix","activeXDocument","definePropertiesModule","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","display","F","Properties","TAG","SET_METHOD","getMethod","Iterators","ITERATOR","isPrototypeOf","$","IS_PURE","FunctionName","createIteratorConstructor","setToStringTag","defineBuiltIn","IteratorsCore","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","NAME","IteratorConstructor","next","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","done","lengthOfArrayLike","arraySpeciesCreate","createMethod","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","$this","callbackfn","specificCreate","boundFunction","some","every","findIndex","filterReject","propertyIsEnumerableModule","toIndexedObject","$Symbol","iterator","V8_VERSION","getOwnPropertySymbols","symbol","version","copyright","license","EXISTS","toAbsoluteIndex","IS_INCLUDES","fromIndex","includes","toIntegerOrInfinity","min","arraySpeciesConstructor","originalArray","inspectSource","empty","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","isRegExp","MATCH","METHOD_NAME","regexp","error1","error2","PrototypeOfArrayIteratorPrototype","arrayIterator","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","names","max","integer","InternalStateModule","defineIterator","createIterResultObject","setInternalState","getInternalState","iterated","point","kind","innerResult","innerError","ArrayPrototype","propertyKey","getIteratorMethod","usingIterator","iteratorMethod","ordinaryToPrimitive","TO_PRIMITIVE","input","pref","exoticToPrim","process","Deno","versions","v8","valueOf","replacement","feature","detection","normalize","POLYFILL","NATIVE","objectKeys","getOwnPropertySymbolsModule","$assign","A","B","chr","T","argumentsLength","S","ceil","x","entryUnbind","$find","addToUnscopables","SKIPS_HOLES","isConstructor","SPECIES","$Array","C","functionToString","$includes","notARegExp","correctIsRegExpLogic","stringIndexOf","searchString","$entries","TO_ENTRIES","nativeStartsWith","CORRECT_IS_REGEXP_LOGIC","CONVERT_TO_STRING","pos","first","second","position","size","codeAt","getDescriptor","ENUMERABLE_NEXT","defineProperties","uncurryThisAccessor","aPossiblePrototype","setter","CORRECT_SETTER","checkCorrectnessOfIteration","iterable","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIterator","arrayLike","IS_CONSTRUCTOR","mapfn","mapping","step","iteratorClose","ENTRIES","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","flattenIntoArray","flatMap","sourceLen","doesNotExceedSafeInteger","original","start","depth","mapper","thisArg","targetIndex","sourceIndex","mapFn","getTagSize","classList","visibleElement","arrayFrom","getComputedStyle","getPropertyValue","getActiveTags","subHeadline","disclaimer","getRequestDuration","validateMetric","requests","entryType","_ref2$","requestStart","responseStart","setupMessage","_window$xprops$amount","_window$xprops$curren","_window$xprops$buyerC","_window$xprops$ignore","_window$xprops$offer","_window$xprops$payerI","_window$xprops$client","_window$xprops$mercha","_window$xprops$mercha2","_window$xprops$style","_window$xprops$style$","markup","parentStyles","warnings","_window$xprops","xprops","onClick","onReady","onHover","onMarkup","onProps","resize","parentDeviceID","deviceID","messageRequestId","dimensionsRef","_createState","amount","currency","buyerCountry","ignoreCache","payerId","clientId","merchantId","merchantConfigHash","setProps","_createState2","serverData","setServerData","handleHover","button","background","padding","border","outline","textAlign","align","fontFamily","fontSize","activeTags","requestDuration","styles","focus","env","features","stageTag","channel","treatmentsHash","newMessageRequestId","message_request_id","buyer_country","ignore_cache","credit_type","payer_id","client_id","merchant_id","merchant_config","treatments","acc","_ref3","origin","_data$markup","_data$parentStyles3","_data$warnings3","_data$markup3","_data$meta3","resData","encodedData","_data$meta","_data$parentStyles","_data$warnings","_data$markup2","_data$meta2","_data$parentStyles2","_data$warnings2","buttonWidth","offsetWidth","buttonHeight","createMessage"],"mappings":"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AAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GAAK,KACLC,GA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","file":"smart-credit-message.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 237);\n","/* @flow */\n\nimport { NODE_TYPE } from './constants';\n\nexport type NodePropsType = {\n [string] : any // eslint-disable-line flowtype/no-weak-types\n};\n\nexport type EmptyProps = {||};\n\nexport type NodeRenderer = (N) => O;\nexport type NodeRendererFactory = (L) => NodeRenderer;\n\ntype Primitive = string | boolean | number;\ntype NullablePrimitive = Primitive | null | void;\n\nexport type NodeType = ElementNode | TextNode | FragmentNode | ComponentNode<*>; // eslint-disable-line no-use-before-define\nexport type ChildNodeType = ElementNode | TextNode | ComponentNode<*>; // eslint-disable-line no-use-before-define\nexport type ChildType = ChildNodeType | Primitive | $ReadOnlyArray;\nexport type ChildrenType = $ReadOnlyArray;\nexport type NullableChildType = $ReadOnlyArray | ChildNodeType | NullablePrimitive;\nexport type NullableChildrenType = $ReadOnlyArray;\n\nexport type ComponentFunctionType

= (P, ChildrenType) => NullableChildType;\n\nexport type CreateElementNode =

(string, P, ...NullableChildrenType) => ElementNode; // eslint-disable-line no-undef, no-use-before-define\nexport type CreateComponentNode =

(ComponentFunctionType

, P, ...NullableChildrenType) => ComponentNode<*>; // eslint-disable-line no-undef, no-use-before-define\nexport type CreateNullComponentNode =

(ComponentFunctionType

, null, ...NullableChildrenType) => ComponentNode<*>; // eslint-disable-line no-undef, no-use-before-define\n\nexport type CreateNode = CreateNullComponentNode & CreateComponentNode & CreateElementNode;\n\nfunction renderChildren(children : $ReadOnlyArray>, renderer : NodeRenderer<*, *>) : $ReadOnlyArray { // eslint-disable-line no-use-before-define\n const result = [];\n\n for (const child of children) {\n const renderedChild = child.render(renderer);\n\n if (!renderedChild) {\n continue;\n } else if (Array.isArray(renderedChild)) {\n for (const subchild of renderedChild) {\n if (subchild) {\n result.push(subchild);\n }\n }\n } else {\n result.push(renderedChild);\n }\n }\n\n return result;\n}\n\nexport class ElementNode {\n type : (typeof NODE_TYPE.ELEMENT) = NODE_TYPE.ELEMENT;\n\n name : string;\n props : NodePropsType;\n children : $ReadOnlyArray>; // eslint-disable-line no-use-before-define\n onRender : ?(T) => void; // eslint-disable-line no-undef\n\n constructor(name : string, props : NodePropsType, children : $ReadOnlyArray>) { // eslint-disable-line no-use-before-define\n this.name = name;\n this.props = props || {};\n this.children = children;\n\n const onRender = this.props.onRender;\n if (typeof onRender === 'function') {\n this.onRender = onRender;\n delete props.onRender;\n }\n }\n\n render(renderer : NodeRenderer<*, *>) : T {\n const el = renderer(this);\n if (this.onRender) {\n this.onRender(el);\n }\n return el;\n }\n\n renderChildren(renderer : NodeRenderer<*, *>) : $ReadOnlyArray {\n return renderChildren(this.children, renderer);\n }\n}\n\nexport class FragmentNode {\n type : (typeof NODE_TYPE.FRAGMENT) = NODE_TYPE.FRAGMENT;\n\n children : $ReadOnlyArray>; // eslint-disable-line no-use-before-define\n\n constructor(children : $ReadOnlyArray>) { // eslint-disable-line no-use-before-define\n this.children = children;\n }\n\n render(renderer : NodeRenderer<*, *>) : $ReadOnlyArray {\n return renderChildren(this.children, renderer);\n }\n}\n\nexport class TextNode {\n type : (typeof NODE_TYPE.TEXT) = NODE_TYPE.TEXT;\n\n text : string;\n\n constructor(text : string) {\n this.text = text;\n }\n\n render(renderer : NodeRenderer<*, *>) : T {\n return renderer(this);\n }\n}\n\n// eslint-disable-next-line no-unused-vars\nexport class ComponentNode

{\n type : (typeof NODE_TYPE.COMPONENT) = NODE_TYPE.COMPONENT;\n\n component : ComponentFunctionType;\n props : NodePropsType;\n // eslint-disable-next-line no-use-before-define\n children : $ReadOnlyArray>;\n\n constructor(component : ComponentFunctionType, props : NodePropsType, children : $ReadOnlyArray>) {\n this.component = component;\n this.props = props || {};\n this.children = children;\n\n this.props.children = children;\n }\n\n renderComponent(renderer : NodeRenderer<*, *>) : * {\n const child = normalizeChild(this.component(this.props, this.children)); // eslint-disable-line no-use-before-define\n if (child) {\n return child.render(renderer);\n }\n }\n\n render(renderer : NodeRenderer<*, *>) : T {\n return renderer(this);\n }\n\n renderChildren(renderer : NodeRenderer<*, *>) : $ReadOnlyArray {\n return renderChildren(this.children, renderer);\n }\n}\n\nfunction normalizeChildren(children : NullableChildrenType) : $ReadOnlyArray> {\n const result = [];\n\n for (const child of children) {\n if (!child) {\n continue;\n } else if (typeof child === 'string' || typeof child === 'number') {\n result.push(new TextNode(child.toString()));\n } else if (typeof child === 'boolean') {\n continue;\n } else if (Array.isArray(child)) {\n for (const subchild of normalizeChildren(child)) {\n result.push(subchild);\n }\n } else if (child && (child.type === NODE_TYPE.ELEMENT || child.type === NODE_TYPE.TEXT || child.type === NODE_TYPE.COMPONENT)) {\n result.push(child);\n } else {\n throw new TypeError(`Unrecognized node type: ${ typeof child }`);\n }\n }\n\n return result;\n}\n\nfunction normalizeChild(child) : ElementNode | TextNode | ComponentNode<*> | FragmentNode | void {\n const children = normalizeChildren(Array.isArray(child) ? child : [ child ]);\n\n if (children.length === 1) {\n return children[0];\n } else if (children.length > 1) {\n return new FragmentNode(children);\n }\n}\n\nexport const node : CreateNode =

(element, props : P, ...children) => {\n children = normalizeChildren(children);\n\n if (typeof element === 'string') {\n // $FlowFixMe\n return new ElementNode(element, props, children);\n }\n\n if (typeof element === 'function') {\n // $FlowFixMe\n return new ComponentNode<*>(element, props, children);\n }\n\n throw new TypeError(`Expected jsx element to be a string or a function`);\n};\n\nexport const Fragment : ComponentFunctionType = (props, children) => {\n return children;\n};\n","/* @flow */\n\nexport const NODE_TYPE = {\n ELEMENT: ('element' : 'element'),\n TEXT: ('text' : 'text'),\n COMPONENT: ('component' : 'component'),\n FRAGMENT: ('fragment' : 'fragment')\n};\n","/* @flow */\n\nimport { ComponentNode, TextNode, type NodeRenderer, ElementNode } from '../node';\nimport { NODE_TYPE } from '../constants';\nimport { uniqueID } from '../util';\n\ntype DomNodeRenderer = NodeRenderer;\ntype DomTextRenderer = NodeRenderer;\ntype DomComponentRenderer = NodeRenderer, HTMLElement | TextNode | $ReadOnlyArray | void>;\ntype DomRenderer = DomComponentRenderer & DomNodeRenderer & DomTextRenderer;\n\nconst ELEMENT_TAG = {\n HTML: 'html',\n IFRAME: 'iframe',\n SCRIPT: 'script',\n SVG: 'svg',\n DEFAULT: 'default'\n};\n\nconst ELEMENT_PROP = {\n ID: 'id',\n INNER_HTML: 'innerHTML',\n EL: 'el',\n XLINK_HREF: 'xlink:href'\n};\n\nconst ELEMENT_DEFAULT_XML_NAMESPACE : {| [$Values] : string |} = {\n [ ELEMENT_TAG.SVG ]: 'http://www.w3.org/2000/svg'\n};\n\nconst ATTRIBUTE_DEFAULT_XML_NAMESPACE : {| [$Values] : string |} = {\n [ ELEMENT_PROP.XLINK_HREF ]: 'http://www.w3.org/1999/xlink'\n};\n\nfunction fixScripts(el : HTMLElement | Element, doc : Document = window.document) {\n for (const script of el.querySelectorAll('script')) {\n const parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n const newScript = doc.createElement('script');\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\nfunction createElement(doc : Document, node : ElementNode) : HTMLElement | Element {\n if (node.props[ELEMENT_PROP.EL]) {\n return node.props[ELEMENT_PROP.EL];\n } else {\n return doc.createElement(node.name);\n }\n}\n\nfunction createElementWithXMLNamespace(doc : Document, node : ElementNode, xmlNamespace : string) : HTMLElement | Element {\n return doc.createElementNS(xmlNamespace, node.name);\n}\n\nfunction createTextElement(doc : Document, node : TextNode) : Text {\n return doc.createTextNode(node.text);\n}\n\nfunction addProps(el : HTMLElement | Element, node) {\n const props = node.props;\n\n for (const prop of Object.keys(props)) {\n const val = props[prop];\n\n if (val === null || typeof val === 'undefined' || prop === ELEMENT_PROP.EL || prop === ELEMENT_PROP.INNER_HTML) {\n continue;\n }\n\n if (prop.match(/^on[A-Z][a-z]/) && typeof val === 'function') {\n el.addEventListener(prop.slice(2).toLowerCase(), val);\n } else if (typeof val === 'string' || typeof val === 'number') {\n const xmlNamespace = ATTRIBUTE_DEFAULT_XML_NAMESPACE[prop];\n if (xmlNamespace) {\n el.setAttributeNS(xmlNamespace, prop, val.toString());\n } else {\n el.setAttribute(prop, val.toString());\n }\n } else if (typeof val === 'boolean') {\n if (val === true) {\n el.setAttribute(prop, '');\n }\n }\n }\n\n if (el.tagName.toLowerCase() === ELEMENT_TAG.IFRAME && !props.id) {\n el.setAttribute(ELEMENT_PROP.ID, `jsx-iframe-${ uniqueID() }`);\n }\n}\nconst ADD_CHILDREN : { [string] : (HTMLElement | Element, ElementNode, DomNodeRenderer) => void } = {\n\n [ ELEMENT_TAG.IFRAME ]: (el, node) => {\n const firstChild = node.children[0];\n\n if (node.children.length !== 1 || !(firstChild && firstChild.type === NODE_TYPE.ELEMENT) || firstChild.name !== ELEMENT_TAG.HTML) {\n throw new Error(`Expected only single html element node as child of ${ ELEMENT_TAG.IFRAME } element`);\n }\n \n el.addEventListener('load', () => {\n\n // $FlowFixMe\n const win = el.contentWindow;\n \n if (!win) {\n throw new Error(`Expected frame to have contentWindow`);\n }\n\n const doc = win.document;\n const docElement = doc.documentElement;\n\n while (docElement.children && docElement.children.length) {\n docElement.removeChild(docElement.children[0]);\n }\n\n // eslint-disable-next-line no-use-before-define\n const child : HTMLElement = firstChild.render(dom({ doc }));\n \n while (child.children.length) {\n docElement.appendChild(child.children[0]);\n }\n });\n },\n\n [ ELEMENT_TAG.SCRIPT ]: (el, node) => {\n const firstChild = node.children[0];\n\n if (node.children.length !== 1 || !(firstChild && firstChild.type === NODE_TYPE.TEXT)) {\n throw new Error(`Expected only single text node as child of ${ ELEMENT_TAG.SCRIPT } element`);\n }\n \n // $FlowFixMe\n el.text = firstChild.text;\n },\n\n [ ELEMENT_TAG.DEFAULT ]: (el, node, renderer) => {\n for (const child of node.renderChildren(renderer)) {\n el.appendChild(child);\n }\n }\n};\n\nfunction addChildren(el : HTMLElement | Element, node : ElementNode, doc : Document, renderer : DomNodeRenderer) {\n if (node.props.hasOwnProperty(ELEMENT_PROP.INNER_HTML)) {\n\n if (node.children.length) {\n throw new Error(`Expected no children to be passed when ${ ELEMENT_PROP.INNER_HTML } prop is set`);\n }\n\n const html = node.props[ELEMENT_PROP.INNER_HTML];\n\n if (typeof html !== 'string') {\n throw new TypeError(`${ ELEMENT_PROP.INNER_HTML } prop must be string`);\n }\n\n if (node.name === ELEMENT_TAG.SCRIPT) {\n // $FlowFixMe\n el.text = html;\n } else {\n el.innerHTML = html;\n fixScripts(el, doc);\n }\n\n } else {\n const addChildrenToElement = ADD_CHILDREN[node.name] || ADD_CHILDREN[ELEMENT_TAG.DEFAULT];\n addChildrenToElement(el, node, renderer);\n }\n}\n\ntype DomOptions = {|\n doc? : Document\n|};\n\nconst getDefaultDomOptions = () : DomOptions => {\n // $FlowFixMe\n return {};\n};\n\nexport function dom(opts? : DomOptions = getDefaultDomOptions()) : DomRenderer {\n const { doc = document } = opts;\n \n const xmlNamespaceDomRenderer = (node : ElementNode, xmlNamespace : string) : HTMLElement => {\n if (node.type === NODE_TYPE.COMPONENT) {\n return node.renderComponent(childNode => xmlNamespaceDomRenderer(childNode, xmlNamespace));\n }\n \n if (node.type === NODE_TYPE.TEXT) {\n // $FlowFixMe\n return createTextElement(doc, node);\n }\n \n if (node.type === NODE_TYPE.ELEMENT) {\n const el = createElementWithXMLNamespace(doc, node, xmlNamespace);\n addProps(el, node);\n addChildren(el, node, doc, childNode => xmlNamespaceDomRenderer(childNode, xmlNamespace));\n // $FlowFixMe\n return el;\n }\n\n throw new TypeError(`Unhandleable node`);\n };\n \n const domRenderer : DomRenderer = (node) => {\n if (node.type === NODE_TYPE.COMPONENT) {\n return node.renderComponent(domRenderer);\n }\n \n if (node.type === NODE_TYPE.TEXT) {\n // $FlowFixMe\n return createTextElement(doc, node);\n }\n \n if (node.type === NODE_TYPE.ELEMENT) {\n const xmlNamespace = ELEMENT_DEFAULT_XML_NAMESPACE[node.name.toLowerCase()];\n\n if (xmlNamespace) {\n // $FlowFixMe\n return xmlNamespaceDomRenderer(node, xmlNamespace);\n }\n\n const el = createElement(doc, node);\n addProps(el, node);\n addChildren(el, node, doc, domRenderer);\n // $FlowFixMe\n return el;\n }\n\n throw new TypeError(`Unhandleable node`);\n };\n\n return domRenderer;\n}\n","/* @flow */\n\nconst ALPHA_CHARS = '0123456789abcdef';\n\nexport function uniqueID() : string {\n return 'xxxxxxxxxx'.replace(/./g, () => ALPHA_CHARS.charAt(Math.floor(Math.random() * ALPHA_CHARS.length)));\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function isDefined(val : any) : boolean %checks {\n return (val !== null && typeof val !== 'undefined');\n}\n","/* @flow */\n/* eslint unicorn/prefer-spread: off */\n\nimport { ComponentNode, TextNode, ElementNode, type NodePropsType, type NodeRenderer } from '../node';\nimport { NODE_TYPE } from '../constants';\n\ntype HTMLRenderer = NodeRenderer, string>;\n\nconst ELEMENT_PROP = {\n INNER_HTML: 'innerHTML'\n};\n\nconst SELF_CLOSING_TAGS = {\n br: true\n};\n\nfunction htmlEncode(text : string) : string {\n return text\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n}\n\nfunction propsToHTML(props : NodePropsType) : string {\n const keys = Object.keys(props).filter(key => {\n const val = props[key];\n\n if (key === ELEMENT_PROP.INNER_HTML) {\n return false;\n }\n\n if (typeof val === 'string' || typeof val === 'number' || val === true) {\n return true;\n }\n\n return false;\n });\n\n if (!keys.length) {\n return '';\n }\n\n const pairs = keys.map(key => {\n const val = props[key];\n\n if (val === true) {\n return `${ htmlEncode(key) }`;\n }\n\n if (typeof val !== 'string' && typeof val !== 'number') {\n throw new TypeError(`Unexpected prop type: ${ typeof val }`);\n }\n\n if (val === '') {\n return htmlEncode(key);\n }\n\n return `${ htmlEncode(key) }=\"${ htmlEncode(val.toString()) }\"`;\n });\n\n return ` ${ pairs.join(' ') }`;\n}\n\nexport function html() : HTMLRenderer {\n\n const htmlRenderer = (node) => {\n if (node.type === NODE_TYPE.COMPONENT) {\n return [].concat(node.renderComponent(htmlRenderer)).join('');\n }\n\n if (node.type === NODE_TYPE.ELEMENT) {\n const renderedProps = propsToHTML(node.props);\n\n if (SELF_CLOSING_TAGS[node.name]) {\n return `<${ node.name }${ renderedProps } />`;\n } else {\n const renderedChildren = (typeof node.props[ELEMENT_PROP.INNER_HTML] === 'string')\n ? node.props[ELEMENT_PROP.INNER_HTML]\n : node.renderChildren(htmlRenderer).join('');\n\n return `<${ node.name }${ renderedProps }>${ renderedChildren }`;\n }\n }\n\n if (node.type === NODE_TYPE.TEXT) {\n return htmlEncode(node.text);\n }\n\n throw new TypeError(`Unhandleable node: ${ node.type }`);\n };\n\n return htmlRenderer;\n}\n","/* @flow */\n/* eslint max-lines: 0 */\n\nexport const COUNTRY = {\n AD: (\"AD\": \"AD\"),\n AE: (\"AE\": \"AE\"),\n AG: (\"AG\": \"AG\"),\n AI: (\"AI\": \"AI\"),\n AL: (\"AL\": \"AL\"),\n AM: (\"AM\": \"AM\"),\n AN: (\"AN\": \"AN\"),\n AO: (\"AO\": \"AO\"),\n AR: (\"AR\": \"AR\"),\n AT: (\"AT\": \"AT\"),\n AU: (\"AU\": \"AU\"),\n AW: (\"AW\": \"AW\"),\n AZ: (\"AZ\": \"AZ\"),\n BA: (\"BA\": \"BA\"),\n BB: (\"BB\": \"BB\"),\n BE: (\"BE\": \"BE\"),\n BF: (\"BF\": \"BF\"),\n BG: (\"BG\": \"BG\"),\n BH: (\"BH\": \"BH\"),\n BI: (\"BI\": \"BI\"),\n BJ: (\"BJ\": \"BJ\"),\n BM: (\"BM\": \"BM\"),\n BN: (\"BN\": \"BN\"),\n BO: (\"BO\": \"BO\"),\n BR: (\"BR\": \"BR\"),\n BS: (\"BS\": \"BS\"),\n BT: (\"BT\": \"BT\"),\n BW: (\"BW\": \"BW\"),\n BY: (\"BY\": \"BY\"),\n BZ: (\"BZ\": \"BZ\"),\n CA: (\"CA\": \"CA\"),\n CD: (\"CD\": \"CD\"),\n CG: (\"CG\": \"CG\"),\n CH: (\"CH\": \"CH\"),\n CI: (\"CI\": \"CI\"),\n CK: (\"CK\": \"CK\"),\n CL: (\"CL\": \"CL\"),\n CM: (\"CM\": \"CM\"),\n CN: (\"CN\": \"CN\"),\n CO: (\"CO\": \"CO\"),\n CR: (\"CR\": \"CR\"),\n CV: (\"CV\": \"CV\"),\n CY: (\"CY\": \"CY\"),\n CZ: (\"CZ\": \"CZ\"),\n DE: (\"DE\": \"DE\"),\n DJ: (\"DJ\": \"DJ\"),\n DK: (\"DK\": \"DK\"),\n DM: (\"DM\": \"DM\"),\n DO: (\"DO\": \"DO\"),\n DZ: (\"DZ\": \"DZ\"),\n EC: (\"EC\": \"EC\"),\n EE: (\"EE\": \"EE\"),\n EG: (\"EG\": \"EG\"),\n ER: (\"ER\": \"ER\"),\n ES: (\"ES\": \"ES\"),\n ET: (\"ET\": \"ET\"),\n FI: (\"FI\": \"FI\"),\n FJ: (\"FJ\": \"FJ\"),\n FK: (\"FK\": \"FK\"),\n FM: (\"FM\": \"FM\"),\n FO: (\"FO\": \"FO\"),\n FR: (\"FR\": \"FR\"),\n GA: (\"GA\": \"GA\"),\n GB: (\"GB\": \"GB\"),\n GD: (\"GD\": \"GD\"),\n GE: (\"GE\": \"GE\"),\n GF: (\"GF\": \"GF\"),\n GI: (\"GI\": \"GI\"),\n GL: (\"GL\": \"GL\"),\n GM: (\"GM\": \"GM\"),\n GN: (\"GN\": \"GN\"),\n GP: (\"GP\": \"GP\"),\n GR: (\"GR\": \"GR\"),\n GT: (\"GT\": \"GT\"),\n GW: (\"GW\": \"GW\"),\n GY: (\"GY\": \"GY\"),\n HK: (\"HK\": \"HK\"),\n HN: (\"HN\": \"HN\"),\n HR: (\"HR\": \"HR\"),\n HU: (\"HU\": \"HU\"),\n ID: (\"ID\": \"ID\"),\n IE: (\"IE\": \"IE\"),\n IL: (\"IL\": \"IL\"),\n IN: (\"IN\": \"IN\"),\n IS: (\"IS\": \"IS\"),\n IT: (\"IT\": \"IT\"),\n JM: (\"JM\": \"JM\"),\n JO: (\"JO\": \"JO\"),\n JP: (\"JP\": \"JP\"),\n KE: (\"KE\": \"KE\"),\n KG: (\"KG\": \"KG\"),\n KH: (\"KH\": \"KH\"),\n KI: (\"KI\": \"KI\"),\n KM: (\"KM\": \"KM\"),\n KN: (\"KN\": \"KN\"),\n KR: (\"KR\": \"KR\"),\n KW: (\"KW\": \"KW\"),\n KY: (\"KY\": \"KY\"),\n KZ: (\"KZ\": \"KZ\"),\n LA: (\"LA\": \"LA\"),\n LC: (\"LC\": \"LC\"),\n LI: (\"LI\": \"LI\"),\n LK: (\"LK\": \"LK\"),\n LS: (\"LS\": \"LS\"),\n LT: (\"LT\": \"LT\"),\n LU: (\"LU\": \"LU\"),\n LV: (\"LV\": \"LV\"),\n MA: (\"MA\": \"MA\"),\n MC: (\"MC\": \"MC\"),\n MD: (\"MD\": \"MD\"),\n ME: (\"ME\": \"ME\"),\n MG: (\"MG\": \"MG\"),\n MH: (\"MH\": \"MH\"),\n MK: (\"MK\": \"MK\"),\n ML: (\"ML\": \"ML\"),\n MN: (\"MN\": \"MN\"),\n MQ: (\"MQ\": \"MQ\"),\n MR: (\"MR\": \"MR\"),\n MS: (\"MS\": \"MS\"),\n MT: (\"MT\": \"MT\"),\n MU: (\"MU\": \"MU\"),\n MV: (\"MV\": \"MV\"),\n MW: (\"MW\": \"MW\"),\n MX: (\"MX\": \"MX\"),\n MY: (\"MY\": \"MY\"),\n MZ: (\"MZ\": \"MZ\"),\n NA: (\"NA\": \"NA\"),\n NC: (\"NC\": \"NC\"),\n NE: (\"NE\": \"NE\"),\n NF: (\"NF\": \"NF\"),\n NG: (\"NG\": \"NG\"),\n NI: (\"NI\": \"NI\"),\n NL: (\"NL\": \"NL\"),\n NO: (\"NO\": \"NO\"),\n NP: (\"NP\": \"NP\"),\n NR: (\"NR\": \"NR\"),\n NU: (\"NU\": \"NU\"),\n NZ: (\"NZ\": \"NZ\"),\n OM: (\"OM\": \"OM\"),\n PA: (\"PA\": \"PA\"),\n PE: (\"PE\": \"PE\"),\n PF: (\"PF\": \"PF\"),\n PG: (\"PG\": \"PG\"),\n PH: (\"PH\": \"PH\"),\n PL: (\"PL\": \"PL\"),\n PM: (\"PM\": \"PM\"),\n PN: (\"PN\": \"PN\"),\n PT: (\"PT\": \"PT\"),\n PW: (\"PW\": \"PW\"),\n PY: (\"PY\": \"PY\"),\n QA: (\"QA\": \"QA\"),\n RE: (\"RE\": \"RE\"),\n RO: (\"RO\": \"RO\"),\n RS: (\"RS\": \"RS\"),\n RU: (\"RU\": \"RU\"),\n RW: (\"RW\": \"RW\"),\n SA: (\"SA\": \"SA\"),\n SB: (\"SB\": \"SB\"),\n SC: (\"SC\": \"SC\"),\n SE: (\"SE\": \"SE\"),\n SG: (\"SG\": \"SG\"),\n SH: (\"SH\": \"SH\"),\n SI: (\"SI\": \"SI\"),\n SJ: (\"SJ\": \"SJ\"),\n SK: (\"SK\": \"SK\"),\n SL: (\"SL\": \"SL\"),\n SM: (\"SM\": \"SM\"),\n SN: (\"SN\": \"SN\"),\n SO: (\"SO\": \"SO\"),\n SR: (\"SR\": \"SR\"),\n ST: (\"ST\": \"ST\"),\n SV: (\"SV\": \"SV\"),\n SZ: (\"SZ\": \"SZ\"),\n TC: (\"TC\": \"TC\"),\n TD: (\"TD\": \"TD\"),\n TG: (\"TG\": \"TG\"),\n TH: (\"TH\": \"TH\"),\n TJ: (\"TJ\": \"TJ\"),\n TM: (\"TM\": \"TM\"),\n TN: (\"TN\": \"TN\"),\n TO: (\"TO\": \"TO\"),\n TR: (\"TR\": \"TR\"),\n TT: (\"TT\": \"TT\"),\n TV: (\"TV\": \"TV\"),\n TW: (\"TW\": \"TW\"),\n TZ: (\"TZ\": \"TZ\"),\n UA: (\"UA\": \"UA\"),\n UG: (\"UG\": \"UG\"),\n US: (\"US\": \"US\"),\n UY: (\"UY\": \"UY\"),\n VA: (\"VA\": \"VA\"),\n VC: (\"VC\": \"VC\"),\n VE: (\"VE\": \"VE\"),\n VG: (\"VG\": \"VG\"),\n VN: (\"VN\": \"VN\"),\n VU: (\"VU\": \"VU\"),\n WF: (\"WF\": \"WF\"),\n WS: (\"WS\": \"WS\"),\n YE: (\"YE\": \"YE\"),\n YT: (\"YT\": \"YT\"),\n ZA: (\"ZA\": \"ZA\"),\n ZM: (\"ZM\": \"ZM\"),\n ZW: (\"ZW\": \"ZW\"),\n};\n\nexport const LANG = {\n AR: (\"ar\": \"ar\"),\n BG: (\"bg\": \"bg\"),\n CS: (\"cs\": \"cs\"),\n DA: (\"da\": \"da\"),\n DE: (\"de\": \"de\"),\n EL: (\"el\": \"el\"),\n EN: (\"en\": \"en\"),\n ES: (\"es\": \"es\"),\n ET: (\"et\": \"et\"),\n FI: (\"fi\": \"fi\"),\n FR: (\"fr\": \"fr\"),\n HE: (\"he\": \"he\"),\n HU: (\"hu\": \"hu\"),\n ID: (\"id\": \"id\"),\n IT: (\"it\": \"it\"),\n JA: (\"ja\": \"ja\"),\n KO: (\"ko\": \"ko\"),\n LT: (\"lt\": \"lt\"),\n LV: (\"lv\": \"lv\"),\n MS: (\"ms\": \"ms\"),\n NL: (\"nl\": \"nl\"),\n NO: (\"no\": \"no\"),\n PL: (\"pl\": \"pl\"),\n PT: (\"pt\": \"pt\"),\n RO: (\"ro\": \"ro\"),\n RU: (\"ru\": \"ru\"),\n SI: (\"si\": \"si\"),\n SK: (\"sk\": \"sk\"),\n SL: (\"sl\": \"sl\"),\n SQ: (\"sq\": \"sq\"),\n SV: (\"sv\": \"sv\"),\n TH: (\"th\": \"th\"),\n TL: (\"tl\": \"tl\"),\n TR: (\"tr\": \"tr\"),\n VI: (\"vi\": \"vi\"),\n ZH: (\"zh\": \"zh\"),\n ZH_HANT: (\"zh_Hant\": \"zh_Hant\"),\n};\n\nexport type CountryLangs = {|\n AD: \"en\" | \"fr\" | \"es\" | \"zh\",\n AE: \"en\" | \"fr\" | \"es\" | \"zh\" | \"ar\",\n AG: \"en\" | \"fr\" | \"es\" | \"zh\",\n AI: \"en\" | \"fr\" | \"es\" | \"zh\",\n AL: \"sq\" | \"en\",\n AM: \"en\" | \"fr\" | \"es\" | \"zh\",\n AN: \"en\" | \"fr\" | \"es\" | \"zh\",\n AO: \"en\" | \"fr\" | \"es\" | \"zh\",\n AR: \"es\" | \"en\",\n AT: \"de\" | \"en\",\n AU: \"en\",\n AW: \"en\" | \"fr\" | \"es\" | \"zh\",\n AZ: \"en\" | \"fr\" | \"es\" | \"zh\",\n BA: \"en\",\n BB: \"en\" | \"fr\" | \"es\" | \"zh\",\n BE: \"en\" | \"nl\" | \"fr\",\n BF: \"fr\" | \"en\" | \"es\" | \"zh\",\n BG: \"bg\" | \"en\",\n BH: \"ar\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n BI: \"fr\" | \"en\" | \"es\" | \"zh\",\n BJ: \"fr\" | \"en\" | \"es\" | \"zh\",\n BM: \"en\" | \"fr\" | \"es\" | \"zh\",\n BN: \"ms\" | \"en\",\n BO: \"es\" | \"en\" | \"fr\" | \"zh\",\n BR: \"pt\" | \"en\",\n BS: \"en\" | \"fr\" | \"es\" | \"zh\",\n BT: \"en\",\n BW: \"en\" | \"fr\" | \"es\" | \"zh\",\n BY: \"en\",\n BZ: \"en\" | \"es\" | \"fr\" | \"zh\",\n CA: \"en\" | \"fr\",\n CD: \"fr\" | \"en\" | \"es\" | \"zh\",\n CG: \"en\" | \"fr\" | \"es\" | \"zh\",\n CH: \"de\" | \"fr\" | \"en\",\n CI: \"fr\" | \"en\",\n CK: \"en\" | \"fr\" | \"es\" | \"zh\",\n CL: \"es\" | \"en\" | \"fr\" | \"zh\",\n CM: \"fr\" | \"en\",\n CN: \"zh\",\n CO: \"es\" | \"en\" | \"fr\" | \"zh\",\n CR: \"es\" | \"en\" | \"fr\" | \"zh\",\n CV: \"en\" | \"fr\" | \"es\" | \"zh\",\n CY: \"en\",\n CZ: \"cs\" | \"en\",\n DE: \"de\" | \"en\",\n DJ: \"fr\" | \"en\" | \"es\" | \"zh\",\n DK: \"da\" | \"en\",\n DM: \"en\" | \"fr\" | \"es\" | \"zh\",\n DO: \"es\" | \"en\" | \"fr\" | \"zh\",\n DZ: \"ar\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n EC: \"es\" | \"en\" | \"fr\" | \"zh\",\n EE: \"et\" | \"en\" | \"ru\",\n EG: \"ar\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n ER: \"en\" | \"fr\" | \"es\" | \"zh\",\n ES: \"es\" | \"en\",\n ET: \"en\" | \"fr\" | \"es\" | \"zh\",\n FI: \"fi\" | \"en\",\n FJ: \"en\" | \"fr\" | \"es\" | \"zh\",\n FK: \"en\" | \"fr\" | \"es\" | \"zh\",\n FM: \"en\",\n FO: \"da\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n FR: \"fr\" | \"en\",\n GA: \"fr\" | \"en\" | \"es\" | \"zh\",\n GB: \"en\",\n GD: \"en\" | \"fr\" | \"es\" | \"zh\",\n GE: \"en\" | \"fr\" | \"es\" | \"zh\",\n GF: \"en\" | \"fr\" | \"es\" | \"zh\",\n GI: \"en\" | \"fr\" | \"es\" | \"zh\",\n GL: \"da\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n GM: \"en\" | \"fr\" | \"es\" | \"zh\",\n GN: \"fr\" | \"en\" | \"es\" | \"zh\",\n GP: \"en\" | \"fr\" | \"es\" | \"zh\",\n GR: \"el\" | \"en\",\n GT: \"es\" | \"en\" | \"fr\" | \"zh\",\n GW: \"en\" | \"fr\" | \"es\" | \"zh\",\n GY: \"en\" | \"fr\" | \"es\" | \"zh\",\n HK: \"en\" | \"zh_Hant\",\n HN: \"es\" | \"en\" | \"fr\" | \"zh\",\n HR: \"en\",\n HU: \"hu\" | \"en\",\n ID: \"id\" | \"en\",\n IE: \"en\" | \"fr\" | \"es\" | \"zh\",\n IL: \"he\" | \"en\",\n IN: \"en\",\n IS: \"en\",\n IT: \"it\" | \"en\",\n JM: \"en\" | \"es\" | \"fr\" | \"zh\",\n JO: \"ar\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n JP: \"ja\" | \"en\",\n KE: \"en\" | \"fr\" | \"es\" | \"zh\",\n KG: \"en\" | \"fr\" | \"es\" | \"zh\",\n KH: \"en\",\n KI: \"en\" | \"fr\" | \"es\" | \"zh\",\n KM: \"fr\" | \"en\" | \"es\" | \"zh\",\n KN: \"en\" | \"fr\" | \"es\" | \"zh\",\n KR: \"ko\" | \"en\",\n KW: \"ar\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n KY: \"en\" | \"fr\" | \"es\" | \"zh\",\n KZ: \"en\" | \"fr\" | \"es\" | \"zh\",\n LA: \"en\",\n LC: \"en\" | \"fr\" | \"es\" | \"zh\",\n LI: \"en\" | \"fr\" | \"es\" | \"zh\",\n LK: \"si\" | \"en\",\n LS: \"en\" | \"fr\" | \"es\" | \"zh\",\n LT: \"lt\" | \"en\" | \"ru\" | \"zh\",\n LU: \"en\" | \"de\" | \"fr\" | \"es\" | \"zh\",\n LV: \"lv\" | \"en\" | \"ru\",\n MA: \"ar\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n MC: \"fr\" | \"en\",\n MD: \"en\",\n ME: \"en\",\n MG: \"en\" | \"fr\" | \"es\" | \"zh\",\n MH: \"en\" | \"fr\" | \"es\" | \"zh\",\n MK: \"en\",\n ML: \"fr\" | \"en\" | \"es\" | \"zh\",\n MN: \"en\",\n MQ: \"en\" | \"fr\" | \"es\" | \"zh\",\n MR: \"en\" | \"fr\" | \"es\" | \"zh\",\n MS: \"en\" | \"fr\" | \"es\" | \"zh\",\n MT: \"en\",\n MU: \"en\" | \"fr\" | \"es\" | \"zh\",\n MV: \"en\",\n MW: \"en\" | \"fr\" | \"es\" | \"zh\",\n MX: \"es\" | \"en\",\n MY: \"ms\" | \"en\",\n MZ: \"en\" | \"fr\" | \"es\" | \"zh\",\n NA: \"en\" | \"fr\" | \"es\" | \"zh\",\n NC: \"en\" | \"fr\" | \"es\" | \"zh\",\n NE: \"fr\" | \"en\" | \"es\" | \"zh\",\n NF: \"en\" | \"fr\" | \"es\" | \"zh\",\n NG: \"en\",\n NI: \"es\" | \"en\" | \"fr\" | \"zh\",\n NL: \"nl\" | \"en\",\n NO: \"no\" | \"en\",\n NP: \"en\",\n NR: \"en\" | \"fr\" | \"es\" | \"zh\",\n NU: \"en\" | \"fr\" | \"es\" | \"zh\",\n NZ: \"en\" | \"fr\" | \"es\" | \"zh\",\n OM: \"ar\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n PA: \"es\" | \"en\" | \"fr\" | \"zh\",\n PE: \"es\" | \"en\" | \"fr\" | \"zh\",\n PF: \"en\" | \"fr\" | \"es\" | \"zh\",\n PG: \"en\" | \"fr\" | \"es\" | \"zh\",\n PH: \"tl\" | \"en\",\n PL: \"pl\" | \"en\",\n PM: \"en\" | \"fr\" | \"es\" | \"zh\",\n PN: \"en\" | \"fr\" | \"es\" | \"zh\",\n PT: \"pt\" | \"en\",\n PW: \"en\" | \"fr\" | \"es\" | \"zh\",\n PY: \"es\" | \"en\",\n QA: \"en\" | \"fr\" | \"es\" | \"zh\" | \"ar\",\n RE: \"en\" | \"fr\" | \"es\" | \"zh\",\n RO: \"ro\" | \"en\",\n RS: \"en\" | \"fr\" | \"es\" | \"zh\",\n RU: \"ru\" | \"en\",\n RW: \"fr\" | \"en\" | \"es\" | \"zh\",\n SA: \"ar\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n SB: \"en\" | \"fr\" | \"es\" | \"zh\",\n SC: \"fr\" | \"en\" | \"es\" | \"zh\",\n SE: \"sv\" | \"en\",\n SG: \"en\",\n SH: \"en\" | \"fr\" | \"es\" | \"zh\",\n SI: \"sl\" | \"en\",\n SJ: \"en\" | \"fr\" | \"es\" | \"zh\",\n SK: \"sk\" | \"en\",\n SL: \"en\" | \"fr\" | \"es\" | \"zh\",\n SM: \"en\" | \"fr\" | \"es\" | \"zh\",\n SN: \"fr\" | \"en\" | \"es\" | \"zh\",\n SO: \"en\" | \"fr\" | \"es\" | \"zh\",\n SR: \"en\" | \"fr\" | \"es\" | \"zh\",\n ST: \"en\" | \"fr\" | \"es\" | \"zh\",\n SV: \"es\" | \"en\" | \"fr\" | \"zh\",\n SZ: \"en\" | \"fr\" | \"es\" | \"zh\",\n TC: \"en\" | \"fr\" | \"es\" | \"zh\",\n TD: \"fr\" | \"en\" | \"es\" | \"zh\",\n TG: \"fr\" | \"en\" | \"es\" | \"zh\",\n TH: \"th\" | \"en\",\n TJ: \"en\" | \"fr\" | \"es\" | \"zh\",\n TM: \"en\" | \"fr\" | \"es\" | \"zh\",\n TN: \"ar\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n TO: \"en\",\n TR: \"tr\" | \"en\",\n TT: \"en\" | \"fr\" | \"es\" | \"zh\",\n TV: \"en\" | \"fr\" | \"es\" | \"zh\",\n TW: \"zh_Hant\" | \"en\",\n TZ: \"en\" | \"fr\" | \"es\" | \"zh\",\n UA: \"en\" | \"ru\" | \"fr\" | \"es\" | \"zh\",\n UG: \"en\" | \"fr\" | \"es\" | \"zh\",\n US: \"en\" | \"fr\" | \"es\" | \"zh\",\n UY: \"es\" | \"en\" | \"fr\" | \"zh\",\n VA: \"en\" | \"fr\" | \"es\" | \"zh\",\n VC: \"en\" | \"fr\" | \"es\" | \"zh\",\n VE: \"es\" | \"en\" | \"fr\" | \"zh\",\n VG: \"en\" | \"fr\" | \"es\" | \"zh\",\n VN: \"vi\" | \"en\",\n VU: \"en\" | \"fr\" | \"es\" | \"zh\",\n WF: \"en\" | \"fr\" | \"es\" | \"zh\",\n WS: \"en\",\n YE: \"ar\" | \"en\" | \"fr\" | \"es\" | \"zh\",\n YT: \"en\" | \"fr\" | \"es\" | \"zh\",\n ZA: \"en\" | \"fr\" | \"es\" | \"zh\",\n ZM: \"en\" | \"fr\" | \"es\" | \"zh\",\n ZW: \"en\",\n|};\n\ntype CountryMap = {\n [$Values]: $ReadOnlyArray<$Values>,\n};\n\nexport const COUNTRY_LANGS: CountryMap = {\n AD: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n AE: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR],\n AG: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n AI: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n AL: [LANG.SQ, LANG.EN],\n AM: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n AN: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n AO: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n AR: [LANG.ES, LANG.EN],\n AT: [LANG.DE, LANG.EN],\n AU: [LANG.EN],\n AW: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n AZ: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n BA: [LANG.EN],\n BB: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n BE: [LANG.EN, LANG.NL, LANG.FR],\n BF: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n BG: [LANG.BG, LANG.EN],\n BH: [LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n BI: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n BJ: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n BM: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n BN: [LANG.MS, LANG.EN],\n BO: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n BR: [LANG.PT, LANG.EN],\n BS: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n BT: [LANG.EN],\n BW: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n BY: [LANG.EN],\n BZ: [LANG.EN, LANG.ES, LANG.FR, LANG.ZH],\n CA: [LANG.EN, LANG.FR],\n CD: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n CG: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n CH: [LANG.DE, LANG.FR, LANG.EN],\n CI: [LANG.FR, LANG.EN],\n CK: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n CL: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n CM: [LANG.FR, LANG.EN],\n CN: [LANG.ZH],\n CO: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n CR: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n CV: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n CY: [LANG.EN],\n CZ: [LANG.CS, LANG.EN],\n DE: [LANG.DE, LANG.EN],\n DJ: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n DK: [LANG.DA, LANG.EN],\n DM: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n DO: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n DZ: [LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n EC: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n EE: [LANG.ET, LANG.EN, LANG.RU],\n EG: [LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n ER: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n ES: [LANG.ES, LANG.EN],\n ET: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n FI: [LANG.FI, LANG.EN],\n FJ: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n FK: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n FM: [LANG.EN],\n FO: [LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n FR: [LANG.FR, LANG.EN],\n GA: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n GB: [LANG.EN],\n GD: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n GE: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n GF: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n GI: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n GL: [LANG.DA, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n GM: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n GN: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n GP: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n GR: [LANG.EL, LANG.EN],\n GT: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n GW: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n GY: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n HK: [LANG.EN, LANG.ZH_HANT, LANG.ZH],\n HN: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n HR: [LANG.EN],\n HU: [LANG.HU, LANG.EN],\n ID: [LANG.ID, LANG.EN],\n IE: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n IL: [LANG.HE, LANG.EN],\n IN: [LANG.EN],\n IS: [LANG.EN],\n IT: [LANG.IT, LANG.EN],\n JM: [LANG.EN, LANG.ES, LANG.FR, LANG.ZH],\n JO: [LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n JP: [LANG.JA, LANG.EN],\n KE: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n KG: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n KH: [LANG.EN],\n KI: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n KM: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n KN: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n KR: [LANG.KO, LANG.EN],\n KW: [LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n KY: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n KZ: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n LA: [LANG.EN],\n LC: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n LI: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n LK: [LANG.SI, LANG.EN],\n LS: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n LT: [LANG.LT, LANG.EN, LANG.RU, LANG.ZH],\n LU: [LANG.EN, LANG.DE, LANG.FR, LANG.ES, LANG.ZH],\n LV: [LANG.LV, LANG.EN, LANG.RU],\n MA: [LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n MC: [LANG.FR, LANG.EN],\n MD: [LANG.EN],\n ME: [LANG.EN],\n MG: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n MH: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n MK: [LANG.EN],\n ML: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n MN: [LANG.EN],\n MQ: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n MR: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n MS: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n MT: [LANG.EN],\n MU: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n MV: [LANG.EN],\n MW: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n MX: [LANG.ES, LANG.EN],\n MY: [LANG.MS, LANG.EN],\n MZ: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n NA: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n NC: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n NE: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n NF: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n NG: [LANG.EN],\n NI: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n NL: [LANG.NL, LANG.EN],\n NO: [LANG.NO, LANG.EN],\n NP: [LANG.EN],\n NR: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n NU: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n NZ: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n OM: [LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n PA: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n PE: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n PF: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n PG: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n PH: [LANG.TL, LANG.EN],\n PL: [LANG.PL, LANG.EN],\n PM: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n PN: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n PT: [LANG.PT, LANG.EN],\n PW: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n PY: [LANG.ES, LANG.EN],\n QA: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH, LANG.AR],\n RE: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n RO: [LANG.RO, LANG.EN],\n RS: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n RU: [LANG.RU, LANG.EN],\n RW: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n SA: [LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n SB: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n SC: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n SE: [LANG.SV, LANG.EN],\n SG: [LANG.EN],\n SH: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n SI: [LANG.SL, LANG.EN],\n SJ: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n SK: [LANG.SK, LANG.EN],\n SL: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n SM: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n SN: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n SO: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n SR: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n ST: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n SV: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n SZ: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n TC: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n TD: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n TG: [LANG.FR, LANG.EN, LANG.ES, LANG.ZH],\n TH: [LANG.TH, LANG.EN],\n TJ: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n TM: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n TN: [LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n TO: [LANG.EN],\n TR: [LANG.TR, LANG.EN],\n TT: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n TV: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n TW: [LANG.ZH_HANT, LANG.ZH, LANG.EN],\n TZ: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n UA: [LANG.EN, LANG.RU, LANG.FR, LANG.ES, LANG.ZH],\n UG: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n US: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n UY: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n VA: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n VC: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n VE: [LANG.ES, LANG.EN, LANG.FR, LANG.ZH],\n VG: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n VN: [LANG.VI, LANG.EN],\n VU: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n WF: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n WS: [LANG.EN],\n YE: [LANG.AR, LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n YT: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n ZA: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n ZM: [LANG.EN, LANG.FR, LANG.ES, LANG.ZH],\n ZW: [LANG.EN],\n};\n\nexport type LocaleType = {|\n country: $Values,\n lang: $Values,\n|};\n","/* @flow */\n\nexport const INTENT = {\n CAPTURE: (\"capture\": \"capture\"),\n AUTHORIZE: (\"authorize\": \"authorize\"),\n ORDER: (\"order\": \"order\"),\n TOKENIZE: (\"tokenize\": \"tokenize\"),\n SUBSCRIPTION: (\"subscription\": \"subscription\"),\n};\n\nexport const COMMIT = {\n TRUE: (true: true),\n FALSE: (false: false),\n};\n\nexport const VAULT = {\n TRUE: (true: true),\n FALSE: (false: false),\n};\n\nexport const CURRENCY = {\n AED: (\"AED\": \"AED\"),\n ALL: (\"ALL\": \"ALL\"),\n ANG: (\"ANG\": \"ANG\"),\n AOA: (\"AOA\": \"AOA\"),\n AUD: (\"AUD\": \"AUD\"),\n AWG: (\"AWG\": \"AWG\"),\n BAM: (\"BAM\": \"BAM\"),\n BBD: (\"BBD\": \"BBD\"),\n BGN: (\"BGN\": \"BGN\"),\n BIF: (\"BIF\": \"BIF\"),\n BMD: (\"BMD\": \"BMD\"),\n BND: (\"BND\": \"BND\"),\n BOB: (\"BOB\": \"BOB\"),\n BRL: (\"BRL\": \"BRL\"),\n BSD: (\"BSD\": \"BSD\"),\n BTN: (\"BTN\": \"BTN\"),\n CAD: (\"CAD\": \"CAD\"),\n CDF: (\"CDF\": \"CDF\"),\n CHF: (\"CHF\": \"CHF\"),\n CLP: (\"CLP\": \"CLP\"),\n COP: (\"COP\": \"COP\"),\n CRC: (\"CRC\": \"CRC\"),\n CVE: (\"CVE\": \"CVE\"),\n CZK: (\"CZK\": \"CZK\"),\n DJF: (\"DJF\": \"DJF\"),\n DKK: (\"DKK\": \"DKK\"),\n DOP: (\"DOP\": \"DOP\"),\n DZD: (\"DZD\": \"DZD\"),\n EGP: (\"EGP\": \"EGP\"),\n ETB: (\"ETB\": \"ETB\"),\n EUR: (\"EUR\": \"EUR\"),\n FJD: (\"FJD\": \"FJD\"),\n FKP: (\"FKP\": \"FKP\"),\n GBP: (\"GBP\": \"GBP\"),\n GIP: (\"GIP\": \"GIP\"),\n GMD: (\"GMD\": \"GMD\"),\n GNF: (\"GNF\": \"GNF\"),\n GTQ: (\"GTQ\": \"GTQ\"),\n GYD: (\"GYD\": \"GYD\"),\n HKD: (\"HKD\": \"HKD\"),\n HNL: (\"HNL\": \"HNL\"),\n HRK: (\"HRK\": \"HRK\"),\n HUF: (\"HUF\": \"HUF\"),\n IDR: (\"IDR\": \"IDR\"),\n ILS: (\"ILS\": \"ILS\"),\n INR: (\"INR\": \"INR\"),\n ISK: (\"ISK\": \"ISK\"),\n JMD: (\"JMD\": \"JMD\"),\n JPY: (\"JPY\": \"JPY\"),\n KES: (\"KES\": \"KES\"),\n KMF: (\"KMF\": \"KMF\"),\n KRW: (\"KRW\": \"KRW\"),\n KYD: (\"KYD\": \"KYD\"),\n LAK: (\"LAK\": \"LAK\"),\n LKR: (\"LKR\": \"LKR\"),\n MDL: (\"MDL\": \"MDL\"),\n MGA: (\"MGA\": \"MGA\"),\n MKD: (\"MKD\": \"MKD\"),\n MNT: (\"MNT\": \"MNT\"),\n MRO: (\"MRO\": \"MRO\"),\n MUR: (\"MUR\": \"MUR\"),\n MVR: (\"MVR\": \"MVR\"),\n MXN: (\"MXN\": \"MXN\"),\n MYR: (\"MYR\": \"MYR\"),\n NAD: (\"NAD\": \"NAD\"),\n NIO: (\"NIO\": \"NIO\"),\n NOK: (\"NOK\": \"NOK\"),\n NPR: (\"NPR\": \"NPR\"),\n NZD: (\"NZD\": \"NZD\"),\n PEN: (\"PEN\": \"PEN\"),\n PGK: (\"PGK\": \"PGK\"),\n PHP: (\"PHP\": \"PHP\"),\n PLN: (\"PLN\": \"PLN\"),\n PYG: (\"PYG\": \"PYG\"),\n QAR: (\"QAR\": \"QAR\"),\n RON: (\"RON\": \"RON\"),\n RSD: (\"RSD\": \"RSD\"),\n RUB: (\"RUB\": \"RUB\"),\n SAR: (\"SAR\": \"SAR\"),\n SBD: (\"SBD\": \"SBD\"),\n SCR: (\"SCR\": \"SCR\"),\n SEK: (\"SEK\": \"SEK\"),\n SGD: (\"SGD\": \"SGD\"),\n SHP: (\"SHP\": \"SHP\"),\n SLL: (\"SLL\": \"SLL\"),\n SOS: (\"SOS\": \"SOS\"),\n SRD: (\"SRD\": \"SRD\"),\n SZL: (\"SZL\": \"SZL\"),\n THB: (\"THB\": \"THB\"),\n TJS: (\"TJS\": \"TJS\"),\n TOP: (\"TOP\": \"TOP\"),\n TTD: (\"TTD\": \"TTD\"),\n TWD: (\"TWD\": \"TWD\"),\n TZS: (\"TZS\": \"TZS\"),\n USD: (\"USD\": \"USD\"),\n UYU: (\"UYU\": \"UYU\"),\n VND: (\"VND\": \"VND\"),\n VUV: (\"VUV\": \"VUV\"),\n WST: (\"WST\": \"WST\"),\n XAF: (\"XAF\": \"XAF\"),\n XCD: (\"XCD\": \"XCD\"),\n YER: (\"YER\": \"YER\"),\n};\n","/* @flow */\n\nexport const SDK_PATH = \"/sdk/js\";\n\nexport const SDK_SETTINGS = {\n NAMESPACE: (\"data-namespace\": \"data-namespace\"),\n CLIENT_TOKEN: (\"data-client-token\": \"data-client-token\"),\n MERCHANT_ID: (\"data-merchant-id\": \"data-merchant-id\"),\n PARTNER_ATTRIBUTION_ID:\n (\"data-partner-attribution-id\": \"data-partner-attribution-id\"),\n STAGE_HOST: (\"data-stage-host\": \"data-stage-host\"),\n API_STAGE_HOST: (\"data-api-stage-host\": \"data-api-stage-host\"),\n CSP_NONCE: (\"data-csp-nonce\": \"data-csp-nonce\"),\n ENABLE_3DS: (\"data-enable-3ds\": \"data-enable-3ds\"),\n SDK_INTEGRATION_SOURCE:\n (\"data-sdk-integration-source\": \"data-sdk-integration-source\"),\n USER_ID_TOKEN: (\"data-user-id-token\": \"data-user-id-token\"),\n AMOUNT: (\"data-amount\": \"data-amount\"),\n CLIENT_METADATA_ID: (\"data-client-metadata-id\": \"data-client-metadata-id\"),\n PAGE_TYPE: (\"data-page-type\": \"data-page-type\"),\n USER_EXPERIENCE_FLOW:\n (\"data-user-experience-flow\": \"data-user-experience-flow\"),\n POPUPS_DISABLED: (\"data-popups-disabled\": \"data-popups-disabled\"),\n};\n\nexport const SDK_QUERY_KEYS = {\n COMPONENTS: (\"components\": \"components\"),\n\n ENV: (\"env\": \"env\"),\n DEBUG: (\"debug\": \"debug\"),\n CACHEBUST: (\"cachebust\": \"cachebust\"),\n\n CLIENT_ID: (\"client-id\": \"client-id\"),\n MERCHANT_ID: (\"merchant-id\": \"merchant-id\"),\n\n LOCALE: (\"locale\": \"locale\"),\n\n CURRENCY: (\"currency\": \"currency\"),\n INTENT: (\"intent\": \"intent\"),\n COMMIT: (\"commit\": \"commit\"),\n VAULT: (\"vault\": \"vault\"),\n\n BUYER_COUNTRY: (\"buyer-country\": \"buyer-country\"),\n\n ENABLE_FUNDING: (\"enable-funding\": \"enable-funding\"),\n DISABLE_FUNDING: (\"disable-funding\": \"disable-funding\"),\n DISABLE_CARD: (\"disable-card\": \"disable-card\"),\n\n INTEGRATION_DATE: (\"integration-date\": \"integration-date\"),\n STAGE_HOST: (\"stage-host\": \"stage-host\"),\n STAGE_ALIAS: (\"stage-alias\": \"stage-alias\"),\n CDN_REGISTRY: (\"cdn-registry\": \"cdn-registry\"),\n VERSION: (\"version\": \"version\"),\n};\n\nexport const COMPONENTS = {\n BUTTONS: (\"buttons\": \"buttons\"),\n HOSTED_FIELDS: (\"hosted-fields\": \"hosted-fields\"),\n CARD_FIELDS: (\"card-fields\": \"card-fields\"),\n};\n\nexport const DEBUG = {\n TRUE: (true: true),\n FALSE: (false: false),\n};\n\nexport const QUERY_BOOL = {\n TRUE: (\"true\": \"true\"),\n FALSE: (\"false\": \"false\"),\n};\n\nexport const UNKNOWN = (\"unknown\": \"unknown\");\n\nexport const PROTOCOL = {\n HTTP: (\"http\": \"http\"),\n HTTPS: (\"https\": \"https\"),\n};\n\nexport const PAGE_TYPES = {\n HOME: (\"home\": \"home\"),\n PRODUCT: (\"product\": \"product\"),\n CART: (\"cart\": \"cart\"),\n CHECKOUT: (\"checkout\": \"checkout\"),\n PRODUCT_LISTING: (\"product-listing\": \"product-listing\"),\n SEARCH_RESULTS: (\"search-results\": \"search-results\"),\n PRODUCT_DETAILS: (\"product-details\": \"product-details\"),\n MINI_CART: (\"mini-cart\": \"mini-cart\"),\n};\n\nexport const MERCHANT_ID_MAX = 10;\n","/* @flow */\n\nimport { COUNTRY } from \"./locale\";\nimport { CURRENCY, INTENT, COMMIT, VAULT } from \"./order\";\nimport { COMPONENTS, DEBUG } from \"./params\";\n\nexport const DEFAULT_COUNTRY = COUNTRY.US;\nexport const DEFAULT_CURRENCY = CURRENCY.USD;\nexport const DEFAULT_INTENT = INTENT.CAPTURE;\nexport const DEFAULT_COMMIT = COMMIT.TRUE;\nexport const DEFAULT_SALE_COMMIT = COMMIT.TRUE;\nexport const DEFAULT_NONSALE_COMMIT = COMMIT.TRUE;\nexport const DEFAULT_VAULT = VAULT.FALSE;\nexport const DEFAULT_COMPONENTS = COMPONENTS.BUTTONS;\nexport const DEFAULT_DEBUG = DEBUG.FALSE;\n","/* @flow */\n\nexport const ENV = {\n LOCAL: (\"local\": \"local\"),\n STAGE: (\"stage\": \"stage\"),\n SANDBOX: (\"sandbox\": \"sandbox\"),\n PRODUCTION: (\"production\": \"production\"),\n TEST: (\"test\": \"test\"),\n};\n\nexport const MOBILE_ENV = {\n ANDROID: (\"android\": \"android\"),\n IOS: (\"iOS\": \"iOS\"),\n};\n","/* @flow */\n\nexport const FPTI_KEY = {\n FEED: (\"feed_name\": \"feed_name\"),\n STATE: (\"state_name\": \"state_name\"),\n EVENT_NAME: (\"event_name\": \"event_name\"),\n TRANSITION: (\"transition_name\": \"transition_name\"),\n PAGE: (\"page_name\": \"page_name\"),\n BUTTON_TYPE: (\"button_type\": \"button_type\"),\n SESSION_UID: (\"page_session_id\": \"page_session_id\"),\n BUTTON_SESSION_UID: (\"button_session_id\": \"button_session_id\"),\n TOKEN: (\"token\": \"token\"),\n CONTEXT_ID: (\"context_id\": \"context_id\"),\n CONTEXT_TYPE: (\"context_type\": \"context_type\"),\n REFERER: (\"referer_url\": \"referer_url\"),\n MERCHANT_DOMAIN: (\"merchant_domain\": \"merchant_domain\"),\n PAY_ID: (\"pay_id\": \"pay_id\"),\n SELLER_ID: (\"seller_id\": \"seller_id\"),\n CLIENT_ID: (\"client_id\": \"client_id\"),\n DATA_SOURCE: (\"serverside_data_source\": \"serverside_data_source\"),\n BUTTON_SOURCE: (\"button_source\": \"button_source\"),\n ERROR_CODE: (\"ext_error_code\": \"ext_error_code\"),\n ERROR_DESC: (\"ext_error_desc\": \"ext_error_desc\"),\n PAGE_LOAD_TIME: (\"page_load_time\": \"page_load_time\"),\n EXPERIMENT_NAME: (\"pxp_exp_id\": \"pxp_exp_id\"),\n TREATMENT_NAME: (\"pxp_trtmnt_id\": \"pxp_trtmnt_id\"),\n TRANSITION_TIME: (\"transition_time\": \"transition_time\"),\n FUNDING_LIST: (\"eligible_payment_methods\": \"eligible_payment_methods\"),\n FUNDING_COUNT: (\"eligible_payment_count\": \"eligible_payment_count\"),\n CHOSEN_FUNDING: (\"selected_payment_method\": \"selected_payment_method\"),\n BUTTON_LAYOUT: (\"button_layout\": \"button_layout\"),\n VERSION: (\"checkoutjs_version\": \"checkoutjs_version\"),\n LOCALE: (\"locale\": \"locale\"),\n BUYER_COUNTRY: (\"buyer_cntry\": \"buyer_cntry\"),\n INTEGRATION_IDENTIFIER: (\"integration_identifier\": \"integration_identifier\"),\n PARTNER_ATTRIBUTION_ID: (\"bn_code\": \"bn_code\"),\n PAGE_TYPE: (\"pp_placement\": \"pp_placement\"),\n SDK_NAME: (\"sdk_name\": \"sdk_name\"),\n SDK_VERSION: (\"sdk_version\": \"sdk_version\"),\n SDK_ENVIRONMENT: (\"sdk_environment\": \"sdk_environment\"),\n MOBILE_APP_VERSION: (\"mobile_app_version\": \"mobile_app_version\"),\n MOBILE_BUNDLE_IDENTIFIER: (\"mapv\": \"mapv\"),\n USER_AGENT: (\"user_agent\": \"user_agent\"),\n USER_ACTION: (\"user_action\": \"user_action\"),\n CONTEXT_CORRID: (\"context_correlation_id\": \"context_correlation_id\"),\n SDK_CACHE: (\"sdk_cache\": \"sdk_cache\"),\n SDK_LOAD_TIME: (\"sdk_load_time\": \"sdk_load_time\"),\n IS_VAULT: (\"is_vault\": \"is_vault\"),\n DISABLE_FUNDING: (\"disable_funding\": \"disable_funding\"),\n DISABLE_CARD: (\"disable_card\": \"disable_card\"),\n RESPONSE_DURATION: (\"response_duration\": \"response_duration\"),\n SDK_INTEGRATION_SOURCE: (\"sdk_integration_source\": \"sdk_integration_source\"),\n PAYMENT_FLOW: (\"payment_flow\": \"payment_flow\"),\n BUTTON_VERSION: (\"button_version\": \"button_version\"),\n FI_LIST: (\"fi_list\": \"fi_list\"),\n FI_ID: (\"fi_id\": \"fi_id\"),\n PRODUCT: (\"product\": \"product\"),\n CHOSEN_FI_TYPE: (\"chosen_fi_type\": \"chosen_fi_type\"),\n SELECTED_FI:\n (\"merchant_selected_funding_source\": \"merchant_selected_funding_source\"),\n POTENTIAL_PAYMENT_METHODS:\n (\"potential_payment_methods\": \"potential_payment_methods\"),\n PAY_NOW: (\"pay_now\": \"pay_now\"),\n STICKINESS_ID: (\"stickiness_id\": \"stickiness_id\"),\n TIMESTAMP: (\"t\": \"t\"),\n OPTION_SELECTED: (\"optsel\": \"optsel\"),\n USER_IDENTITY_METHOD: (\"user_identity_method\": \"user_identity_method\"),\n FIELDS_COMPONENT_SESSION_ID:\n (\"fields_component_session_id\": \"fields_component_session_id\"),\n CPL_COMP_METRICS: (\"cpl_comp_metrics\": \"cpl_comp_metrics\"),\n CPL_CHUNK_METRICS: (\"cpl_chunk_metrics\": \"cpl_chunk_metrics\"),\n CPL_QUERY_METRICS: (\"cpl_query_metrics\": \"cpl_query_metrics\"),\n};\n\nexport const FPTI_USER_ACTION = {\n COMMIT: (\"commit\": \"commit\"),\n CONTINUE: (\"continue\": \"continue\"),\n};\n\nexport const FPTI_DATA_SOURCE = {\n PAYMENTS_SDK: (\"checkout\": \"checkout\"),\n};\n\nexport const FPTI_FEED = {\n PAYMENTS_SDK: (\"payments_sdk\": \"payments_sdk\"),\n};\n\nexport const FPTI_SDK_NAME = {\n PAYMENTS_SDK: (\"payments_sdk\": \"payments_sdk\"),\n};\n","/* @flow */\n\nexport const FUNDING = {\n PAYPAL: (\"paypal\": \"paypal\"),\n VENMO: (\"venmo\": \"venmo\"),\n APPLEPAY: (\"applepay\": \"applepay\"),\n ITAU: (\"itau\": \"itau\"),\n CREDIT: (\"credit\": \"credit\"),\n PAYLATER: (\"paylater\": \"paylater\"),\n CARD: (\"card\": \"card\"),\n IDEAL: (\"ideal\": \"ideal\"),\n SEPA: (\"sepa\": \"sepa\"),\n BANCONTACT: (\"bancontact\": \"bancontact\"),\n GIROPAY: (\"giropay\": \"giropay\"),\n SOFORT: (\"sofort\": \"sofort\"),\n EPS: (\"eps\": \"eps\"),\n MYBANK: (\"mybank\": \"mybank\"),\n P24: (\"p24\": \"p24\"),\n VERKKOPANKKI: (\"verkkopankki\": \"verkkopankki\"),\n PAYU: (\"payu\": \"payu\"),\n BLIK: (\"blik\": \"blik\"),\n TRUSTLY: (\"trustly\": \"trustly\"),\n ZIMPLER: (\"zimpler\": \"zimpler\"),\n MAXIMA: (\"maxima\": \"maxima\"),\n OXXO: (\"oxxo\": \"oxxo\"),\n BOLETO: (\"boleto\": \"boleto\"),\n BOLETOBANCARIO: (\"boletobancario\": \"boletobancario\"),\n WECHATPAY: (\"wechatpay\": \"wechatpay\"),\n MERCADOPAGO: (\"mercadopago\": \"mercadopago\"),\n MULTIBANCO: (\"multibanco\": \"multibanco\"),\n SATISPAY: (\"satispay\": \"satispay\"),\n PAIDY: (\"paidy\": \"paidy\"),\n};\n\nexport const FUNDING_BRAND_LABEL = {\n PAYPAL: (\"PayPal\": \"PayPal\"),\n CREDIT: (\"PayPal Credit\": \"PayPal Credit\"),\n};\n\nexport const CARD = {\n VISA: (\"visa\": \"visa\"),\n MASTERCARD: (\"mastercard\": \"mastercard\"),\n AMEX: (\"amex\": \"amex\"),\n DISCOVER: (\"discover\": \"discover\"),\n HIPER: (\"hiper\": \"hiper\"),\n ELO: (\"elo\": \"elo\"),\n JCB: (\"jcb\": \"jcb\"),\n CUP: (\"cup\": \"cup\"),\n};\n\nexport const WALLET_INSTRUMENT = {\n BALANCE: (\"balance\": \"balance\"),\n CARD: (\"card\": \"card\"),\n BANK: (\"bank\": \"bank\"),\n CREDIT: (\"credit\": \"credit\"),\n};\n\nexport const FUNDING_PRODUCTS = {\n PAY_IN_3: (\"payIn3\": \"payIn3\"),\n PAY_IN_4: (\"payIn4\": \"payIn4\"),\n PAYLATER: (\"paylater\": \"paylater\"),\n CREDIT: (\"credit\": \"credit\"),\n};\n","/* @flow */\n\nexport const PLATFORM = {\n DESKTOP: (\"desktop\": \"desktop\"),\n MOBILE: (\"mobile\": \"mobile\"),\n};\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/* @flow */\nimport { sfvcScreens } from \"./screenHeights\";\n\nexport function getUserAgent(): string {\n return window.navigator.mockUserAgent || window.navigator.userAgent;\n}\n\nconst TABLET_PATTERN =\n /ip(a|ro)d|silk|xoom|playbook|tablet|kindle|Nexus 7|GT-P10|SC-01C|SHW-M180S|SM-T320|SGH-T849|SCH-I800|SHW-M180L|SPH-P100|SGH-I987|zt180|HTC( Flyer|_Flyer)|Sprint ATP51|ViewPad7|pandigital(sprnova|nova)|Ideos S7|Dell Streak 7|Advent Vega|A101IT|A70BHT|MID7015|Next2|nook|FOLIO|MB511.*RUTEM|Mac OS.*Silk/i;\n\nexport function isDevice(userAgent?: string = getUserAgent()): boolean {\n if (\n userAgent.match(\n /Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i\n )\n ) {\n return true;\n }\n\n return false;\n}\n\nexport function isTablet(userAgent?: string = getUserAgent()): boolean {\n return TABLET_PATTERN.test(userAgent);\n}\n\nexport function isWebView(): boolean {\n const userAgent = getUserAgent();\n return (\n /(iPhone|iPod|iPad|Macintosh).*AppleWebKit(?!.*Safari)|.*WKWebView/i.test(\n userAgent\n ) ||\n /\\bwv\\b/.test(userAgent) ||\n /Android.*Version\\/(\\d)\\.(\\d)/i.test(userAgent)\n );\n}\n\nexport function isStandAlone(): boolean {\n return (\n window.navigator.standalone === true ||\n window.matchMedia(\"(display-mode: standalone)\").matches\n );\n}\n\nexport function isFacebookWebView(ua?: string = getUserAgent()): boolean {\n return /FBAN/.test(ua) || /FBAV/.test(ua);\n}\n\nexport function isFirefox(ua?: string = getUserAgent()): boolean {\n return /Firefox/i.test(ua);\n}\n\nexport function isFirefoxIOS(ua?: string = getUserAgent()): boolean {\n return /FxiOS/i.test(ua);\n}\n\nexport function isEdgeIOS(ua?: string = getUserAgent()): boolean {\n return /EdgiOS/i.test(ua);\n}\n\nexport function isOperaMini(ua?: string = getUserAgent()): boolean {\n return /Opera Mini/i.test(ua);\n}\n\nexport function isAndroid(ua?: string = getUserAgent()): boolean {\n return /Android/.test(ua);\n}\n\nexport function isIos(ua?: string = getUserAgent()): boolean {\n return /iPhone|iPod|iPad/.test(ua);\n}\n\nexport function isIOS14(ua?: string = getUserAgent()): boolean {\n return /iPhone.*OS.*(1)?(?:(1)[0-4]| [0-9])_/.test(ua);\n}\n\nexport function isGoogleSearchApp(ua?: string = getUserAgent()): boolean {\n return /\\bGSA\\b/.test(ua);\n}\n\nexport function isQQBrowser(ua?: string = getUserAgent()): boolean {\n return /QQBrowser/.test(ua);\n}\n\nexport function isIosWebview(ua?: string = getUserAgent()): boolean {\n if (isIos(ua)) {\n if (isGoogleSearchApp(ua)) {\n return true;\n }\n return /.+AppleWebKit(?!.*Safari)|.*WKWebView/.test(ua);\n }\n return false;\n}\n\nexport function isSFVC(ua?: string = getUserAgent()): boolean {\n if (isIos(ua)) {\n const height = window.innerHeight;\n const scale =\n Math.round((window.screen.width / window.innerWidth) * 100) / 100;\n const computedHeight = Math.round(height * scale);\n\n let device = null;\n if (isIOS14(ua)) {\n device = sfvcScreens[window.outerHeight];\n } else {\n if (scale !== 1) {\n return true;\n }\n\n device = sfvcScreens[window.outerHeight];\n }\n\n if (!device) {\n return true;\n }\n\n if (scale > 1 && device.zoomHeight && device.zoomHeight[scale]) {\n return device.zoomHeight[scale].indexOf(computedHeight) !== -1;\n } else {\n return (\n device.textSizeHeights.indexOf(computedHeight) !== -1 ||\n device.textSizeHeightsNoTabs.indexOf(computedHeight) !== -1\n );\n }\n }\n return false;\n}\n\nexport function isSFVCorSafari(ua?: string = getUserAgent()): boolean {\n if (isIos(ua)) {\n const sfvc = isSFVC(ua);\n\n const device = isIOS14(ua) ? sfvcScreens[window.outerHeight] : null;\n\n if (!device) {\n return false;\n }\n\n const height = window.innerHeight;\n const scale =\n Math.round((window.screen.width / window.innerWidth) * 100) / 100;\n\n const computedHeight = Math.round(height * scale);\n const possibleSafariSizes = device.maybeSafari;\n\n let maybeSafari = false;\n if (\n scale > 1 &&\n possibleSafariSizes[scale] &&\n possibleSafariSizes[scale].indexOf(computedHeight) !== -1\n ) {\n maybeSafari = true;\n }\n\n return sfvc || maybeSafari;\n }\n return false;\n}\n\nexport function isAndroidWebview(ua?: string = getUserAgent()): boolean {\n if (isAndroid(ua)) {\n return /Version\\/[\\d.]+/.test(ua) && !isOperaMini(ua);\n }\n return false;\n}\n\nexport function isIE(): boolean {\n if (window.document.documentMode) {\n return true;\n }\n\n return Boolean(\n window.navigator &&\n window.navigator.userAgent &&\n /Edge|MSIE|rv:11/i.test(window.navigator.userAgent)\n );\n}\n\nexport function isIECompHeader(): boolean {\n const mHttp = window.document.querySelector(\n 'meta[http-equiv=\"X-UA-Compatible\"]'\n );\n const mContent = window.document.querySelector('meta[content=\"IE=edge\"]');\n if (mHttp && mContent) {\n return true;\n }\n return false;\n}\n\nexport function isElectron(): boolean {\n if (\n typeof process !== \"undefined\" &&\n process.versions &&\n process.versions.electron\n ) {\n return true;\n }\n return false;\n}\n\nexport function isIEIntranet(): boolean {\n // This status check only works for older versions of IE with document.documentMode set\n\n if (window.document.documentMode) {\n try {\n const status = window.status;\n\n window.status = \"testIntranetMode\";\n\n if (window.status === \"testIntranetMode\") {\n window.status = status;\n\n return true;\n }\n\n return false;\n } catch (err) {\n return false;\n }\n }\n\n return false;\n}\n\nexport function isMacOsCna(): boolean {\n const userAgent = getUserAgent();\n return /Macintosh.*AppleWebKit(?!.*Safari)/i.test(userAgent);\n}\n\nexport function supportsPopups(ua?: string = getUserAgent()): boolean {\n return !(\n isIosWebview(ua) ||\n isAndroidWebview(ua) ||\n isOperaMini(ua) ||\n isFirefoxIOS(ua) ||\n isEdgeIOS(ua) ||\n isFacebookWebView(ua) ||\n isQQBrowser(ua) ||\n isElectron() ||\n isMacOsCna() ||\n isStandAlone()\n );\n}\n\nexport function isChrome(ua?: string = getUserAgent()): boolean {\n return (\n /Chrome|Chromium|CriOS/.test(ua) && !/SamsungBrowser|Silk|EdgA/.test(ua)\n );\n}\n\nexport function isSafari(ua?: string = getUserAgent()): boolean {\n return /Safari/.test(ua) && !isChrome(ua) && !/Silk|FxiOS|EdgiOS/.test(ua);\n}\n\nexport function isApplePaySupported(): boolean {\n try {\n if (\n window.ApplePaySession &&\n window.ApplePaySession.supportsVersion(3) &&\n window.ApplePaySession.canMakePayments()\n ) {\n return true;\n }\n } catch (e) {\n return false;\n }\n\n return false;\n}\n\nexport function isCrossSiteTrackingEnabled(expectedCookieKey: string): boolean {\n return window.document.cookie.indexOf(expectedCookieKey) === -1;\n}\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport { WeakMap } from \"@krakenjs/cross-domain-safe-weakmap/src\";\n\nimport type { CancelableType } from \"./types\";\n\nexport function isElement(element: mixed): boolean {\n let passed = false;\n\n try {\n if (element instanceof window.Element) {\n passed = true;\n } else if (\n element !== null &&\n typeof element === \"object\" &&\n element.nodeType === 1 &&\n typeof element.style === \"object\" &&\n typeof element.ownerDocument === \"object\"\n ) {\n passed = true;\n }\n } catch (_) {\n // we don't have an element\n }\n\n return passed;\n}\n\nexport function getFunctionName(fn: T): string {\n return fn.name || fn.__name__ || fn.displayName || \"anonymous\";\n}\n\nexport function setFunctionName(fn: T, name: string): T {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {\n // pass\n }\n\n fn.__name__ = fn.displayName = name;\n return fn;\n}\n\nexport function base64encode(str: string): string {\n if (typeof btoa === \"function\") {\n return btoa(\n encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\n })\n ).replace(/[=]/g, \"\");\n }\n\n if (typeof Buffer !== \"undefined\") {\n return Buffer.from(str, \"utf8\").toString(\"base64\").replace(/[=]/g, \"\");\n }\n\n throw new Error(`Can not find window.btoa or Buffer`);\n}\n\nexport function base64decode(str: string): string {\n if (typeof atob === \"function\") {\n return decodeURIComponent(\n // $FlowFixMe[method-unbinding]\n Array.prototype.map\n .call(atob(str), (c) => {\n // eslint-disable-next-line prefer-template\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(\"\")\n );\n }\n\n if (typeof Buffer !== \"undefined\") {\n return Buffer.from(str, \"base64\").toString(\"utf8\");\n }\n\n throw new Error(`Can not find window.atob or Buffer`);\n}\n\nexport function uniqueID(): string {\n const chars = \"0123456789abcdef\";\n\n const randomID = \"xxxxxxxxxx\".replace(/./g, () => {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n\n const timeID = base64encode(\n new Date().toISOString().slice(11, 19).replace(\"T\", \".\")\n )\n .replace(/[^a-zA-Z0-9]/g, \"\")\n .toLowerCase();\n\n return `uid_${randomID}_${timeID}`;\n}\n\nexport function getGlobal(): Object {\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n if (typeof __GLOBAL__ !== \"undefined\") {\n return __GLOBAL__;\n }\n throw new Error(`No global found`);\n}\n\nlet objectIDs;\n\nexport function getObjectID(obj: Object): string {\n objectIDs = objectIDs || new WeakMap();\n\n if (\n obj === null ||\n obj === undefined ||\n (typeof obj !== \"object\" && typeof obj !== \"function\")\n ) {\n throw new Error(`Invalid object`);\n }\n\n let uid = objectIDs.get(obj);\n\n if (!uid) {\n uid = `${typeof obj}:${uniqueID()}`;\n objectIDs.set(obj, uid);\n }\n\n return uid;\n}\n\nfunction serializeArgs(args: $ReadOnlyArray): string {\n try {\n // $FlowFixMe[method-unbinding]\n return JSON.stringify(Array.prototype.slice.call(args), (subkey, val) => {\n // Treat each distinct function as unique for purposes of memoization\n // e.g. even if someFunction.stringify() is the same, we may use a different memoize cache\n // if the actual function is different.\n if (typeof val === \"function\") {\n return `memoize[${getObjectID(val)}]`;\n }\n\n // By default JSON.stringify(domElement) returns '{}'. This ensures that stays true even for non-standard\n // elements (e.g. React-rendered dom elements) with custom properties\n if (isElement(val)) {\n return {};\n }\n\n return val;\n });\n } catch (err) {\n throw new Error(`Arguments not serializable -- can not be used to memoize`);\n }\n}\n\nexport function getEmptyObject(): {||} {\n // $FlowFixMe\n return {};\n}\n\ntype MemoizeOptions = {|\n name?: string,\n time?: number,\n thisNamespace?: boolean,\n|};\n\nconst getDefaultMemoizeOptions = (): MemoizeOptions => {\n // $FlowFixMe\n return {};\n};\n\nexport type Memoized = F & {| reset: () => void |};\n\nlet memoizeGlobalIndex = 0;\nlet memoizeGlobalIndexValidFrom = 0;\n\nexport function memoize(\n method: F,\n options?: MemoizeOptions = getDefaultMemoizeOptions()\n): Memoized {\n const { thisNamespace = false, time: cacheTime } = options;\n\n let simpleCache;\n let thisCache;\n\n let memoizeIndex = memoizeGlobalIndex;\n memoizeGlobalIndex += 1;\n\n const memoizedFunction = function memoizedFunction(...args): mixed {\n if (memoizeIndex < memoizeGlobalIndexValidFrom) {\n simpleCache = null;\n thisCache = null;\n memoizeIndex = memoizeGlobalIndex;\n memoizeGlobalIndex += 1;\n }\n\n let cache;\n\n if (thisNamespace) {\n thisCache = thisCache || new WeakMap();\n cache = thisCache.getOrSet(this, getEmptyObject);\n } else {\n cache = simpleCache = simpleCache || {};\n }\n\n let cacheKey;\n\n try {\n cacheKey = serializeArgs(args);\n } catch {\n return method.apply(this, arguments);\n }\n\n let cacheResult = cache[cacheKey];\n\n if (cacheResult && cacheTime && Date.now() - cacheResult.time < cacheTime) {\n delete cache[cacheKey];\n cacheResult = null;\n }\n\n if (cacheResult) {\n return cacheResult.value;\n }\n\n const time = Date.now();\n const value = method.apply(this, arguments);\n\n cache[cacheKey] = { time, value };\n\n return value;\n };\n\n memoizedFunction.reset = () => {\n simpleCache = null;\n thisCache = null;\n };\n\n // $FlowFixMe\n const result: F = memoizedFunction;\n\n return setFunctionName(\n result,\n `${options.name || getFunctionName(method)}::memoized`\n );\n}\n\nmemoize.clear = () => {\n memoizeGlobalIndexValidFrom = memoizeGlobalIndex;\n};\n\nexport function promiseIdentity(\n item: ZalgoPromise | T\n): ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\nexport function memoizePromise(\n // eslint-disable-next-line flowtype/no-weak-types\n method: (...args: $ReadOnlyArray) => ZalgoPromise\n // eslint-disable-next-line flowtype/no-weak-types\n): (...args: $ReadOnlyArray) => ZalgoPromise {\n let cache = {};\n\n function memoizedPromiseFunction(\n // eslint-disable-next-line flowtype/no-weak-types\n ...args: $ReadOnlyArray\n ): ZalgoPromise {\n const key: string = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n cache[key] = ZalgoPromise.try(() => method.apply(this, arguments)).finally(\n () => {\n delete cache[key];\n }\n );\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(\n memoizedPromiseFunction,\n `${getFunctionName(method)}::promiseMemoized`\n );\n}\n\ntype PromisifyOptions = {|\n name?: string,\n|};\n\nconst getDefaultPromisifyOptions = (): PromisifyOptions => {\n // $FlowFixMe\n return {};\n};\n\nexport function promisify(\n // eslint-disable-next-line flowtype/no-weak-types\n method: (...args: $ReadOnlyArray) => R,\n options: PromisifyOptions = getDefaultPromisifyOptions()\n // eslint-disable-next-line flowtype/no-weak-types\n): (...args: $ReadOnlyArray) => ZalgoPromise {\n function promisifiedFunction(): ZalgoPromise {\n return ZalgoPromise.try(method, this, arguments);\n }\n\n if (options.name) {\n promisifiedFunction.displayName = `${options.name}:promisified`;\n }\n\n return setFunctionName(\n promisifiedFunction,\n `${getFunctionName(method)}::promisified`\n );\n}\n\nexport function inlineMemoize(\n // eslint-disable-next-line flowtype/no-weak-types\n method: (...args: $ReadOnlyArray) => R,\n // eslint-disable-next-line flowtype/no-weak-types\n logic: (...args: $ReadOnlyArray) => R,\n // eslint-disable-next-line flowtype/no-weak-types\n args: $ReadOnlyArray = []\n): R {\n // $FlowFixMe\n const cache: {| [string]: R |} = (method.__inline_memoize_cache__ =\n // $FlowFixMe\n method.__inline_memoize_cache__ || {});\n const key = serializeArgs(args);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n const result = (cache[key] = logic(...args));\n\n return result;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args: $ReadOnlyArray) {\n // pass\n}\n\nexport function once(method: Function): Function {\n let called = false;\n\n const onceFunction = function (): mixed {\n if (!called) {\n called = true;\n return method.apply(this, arguments);\n }\n };\n\n return setFunctionName(onceFunction, `${getFunctionName(method)}::once`);\n}\n\nexport function hashStr(str: string): number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash += str[i].charCodeAt(0) * Math.pow((i % 10) + 1, 5);\n }\n return Math.floor(Math.pow(Math.sqrt(hash), 5));\n}\n\nexport function strHashStr(str: string): string {\n let hash = \"\";\n\n for (let i = 0; i < str.length; i++) {\n let total = str[i].charCodeAt(0) * i;\n\n if (str[i + 1]) {\n total += str[i + 1].charCodeAt(0) * (i - 1);\n }\n\n hash += String.fromCharCode(97 + (Math.abs(total) % 26));\n }\n\n return hash;\n}\n\nexport function match(str: string, pattern: RegExp): ?string {\n const regmatch = str.match(pattern);\n if (regmatch) {\n return regmatch[1];\n }\n}\n\nexport function awaitKey(obj: Object, key: string): ZalgoPromise {\n return new ZalgoPromise((resolve) => {\n let value = obj[key];\n\n if (value) {\n return resolve(value);\n }\n\n delete obj[key];\n\n Object.defineProperty(obj, key, {\n configurable: true,\n\n set(item) {\n value = item;\n\n if (value) {\n resolve(value);\n }\n },\n\n get(): T {\n return value;\n },\n });\n });\n}\n\nexport function stringifyError(err: mixed, level: number = 1): string {\n if (level >= 3) {\n return \"stringifyError stack overflow\";\n }\n\n try {\n if (!err) {\n // $FlowFixMe[method-unbinding]\n return ``;\n }\n\n if (typeof err === \"string\") {\n return err;\n }\n\n if (err instanceof Error) {\n const stack = err && err.stack;\n const message = err && err.message;\n\n if (stack && message) {\n if (stack.indexOf(message) !== -1) {\n return stack;\n } else {\n return `${message}\\n${stack}`;\n }\n } else if (stack) {\n return stack;\n } else if (message) {\n return message;\n }\n }\n\n if (err && err.toString && typeof err.toString === \"function\") {\n // $FlowFixMe\n return err.toString();\n }\n\n // $FlowFixMe[method-unbinding]\n return Object.prototype.toString.call(err);\n } catch (newErr) {\n return `Error while stringifying error: ${stringifyError(\n newErr,\n level + 1\n )}`;\n }\n}\n\nexport function stringifyErrorMessage(err: mixed): string {\n // $FlowFixMe[method-unbinding]\n const defaultMessage = ``;\n\n if (!err) {\n return defaultMessage;\n }\n\n if (err instanceof Error) {\n return err.message || defaultMessage;\n }\n\n if (typeof err.message === \"string\") {\n return err.message || defaultMessage;\n }\n\n return defaultMessage;\n}\n\nexport function stringify(item: mixed): string {\n if (typeof item === \"string\") {\n return item;\n }\n\n if (item && item.toString && typeof item.toString === \"function\") {\n // $FlowFixMe\n return item.toString();\n }\n\n // $FlowFixMe[method-unbinding]\n return Object.prototype.toString.call(item);\n}\n\nexport function domainMatches(hostname: string, domain: string): boolean {\n hostname = hostname.split(\"://\")[1];\n const index = hostname.indexOf(domain);\n return index !== -1 && hostname.slice(index) === domain;\n}\n\nexport function patchMethod(obj: Object, name: string, handler: Function) {\n const original = obj[name];\n\n obj[name] = function patchedMethod(): mixed {\n return handler({\n context: this,\n // $FlowFixMe[method-unbinding]\n args: Array.prototype.slice.call(arguments),\n original,\n callOriginal: () => original.apply(this, arguments),\n });\n };\n}\n\nexport function extend(obj: T, source: Object): T {\n if (!source) {\n return obj;\n }\n\n if (Object.assign) {\n return Object.assign(obj, source);\n }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n}\n\nexport function values(obj: { [string]: T }): $ReadOnlyArray {\n if (Object.values) {\n // $FlowFixMe\n return Object.values(obj);\n }\n\n const result: Array = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n // $FlowFixMe[escaped-generic]\n result.push(obj[key]);\n }\n }\n\n // $FlowFixMe\n return result;\n}\n\n// eslint-disable-next-line no-undef\nexport const memoizedValues: ({ [string]: T }) => $ReadOnlyArray =\n memoize(values);\n\nexport function perc(pixels: number, percentage: number): number {\n return Math.round((pixels * percentage) / 100);\n}\n\nexport function min(...args: $ReadOnlyArray): number {\n return Math.min(...args);\n}\n\nexport function max(...args: $ReadOnlyArray): number {\n return Math.max(...args);\n}\n\nexport function roundUp(num: number, nearest: number): number {\n const remainder = num % nearest;\n return remainder ? num - remainder + nearest : num;\n}\n\nexport function regexMap(\n str: string,\n regexp: RegExp,\n handler: () => T\n): $ReadOnlyArray {\n const results = [];\n\n // $FlowFixMe\n str.replace(regexp, function regexMapMatcher(item) {\n results.push(handler ? handler.apply(null, arguments) : item);\n });\n\n // $FlowFixMe\n return results;\n}\n\nexport function svgToBase64(svg: string): string {\n return `data:image/svg+xml;base64,${base64encode(svg)}`;\n}\n\nexport function objFilter(\n obj: { [string]: T },\n filter?: (T, ?string) => mixed = Boolean\n): { [string]: R } {\n const result = {};\n\n for (const key in obj) {\n if (!obj.hasOwnProperty(key) || !filter(obj[key], key)) {\n continue;\n }\n\n result[key] = obj[key];\n }\n\n return result;\n}\n\nexport function identity(item: T): T {\n return item;\n}\n\nexport function regexTokenize(\n text: string,\n regexp: RegExp\n): $ReadOnlyArray {\n const result = [];\n text.replace(regexp, (token) => {\n result.push(token);\n return \"\";\n });\n return result;\n}\n\nexport function promiseDebounce(\n method: () => ZalgoPromise | T,\n delay: number = 50\n): () => ZalgoPromise {\n let promise;\n let timeout;\n\n const promiseDebounced = function (): ZalgoPromise {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n const localPromise = (promise = promise || new ZalgoPromise());\n\n timeout = setTimeout(() => {\n promise = null;\n timeout = null;\n\n ZalgoPromise.try(method).then(\n (result) => {\n localPromise.resolve(result);\n },\n (err) => {\n localPromise.reject(err);\n }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(\n promiseDebounced,\n `${getFunctionName(method)}::promiseDebounced`\n );\n}\n\nexport function safeInterval(\n method: Function,\n time: number\n): {| cancel: () => void |} {\n let timeout;\n\n function loop() {\n timeout = setTimeout(() => {\n method();\n loop();\n }, time);\n }\n\n loop();\n\n return {\n cancel() {\n clearTimeout(timeout);\n },\n };\n}\n\nexport function isInteger(str: string): boolean {\n return Boolean(str.match(/^[0-9]+$/));\n}\n\nexport function isFloat(str: string): boolean {\n return Boolean(str.match(/^[0-9]+\\.[0-9]+$/));\n}\n\nexport function serializePrimitive(value: string | number | boolean): string {\n return value.toString();\n}\n\nexport function deserializePrimitive(value: string): string | number | boolean {\n if (value === \"true\") {\n return true;\n } else if (value === \"false\") {\n return false;\n } else if (isInteger(value)) {\n return parseInt(value, 10);\n } else if (isFloat(value)) {\n return parseFloat(value);\n } else {\n return value;\n }\n}\n\nexport function dotify(\n obj: Object,\n prefix: string = \"\",\n newobj: Object = {}\n): { [string]: string } {\n prefix = prefix ? `${prefix}.` : prefix;\n for (const key in obj) {\n if (\n !obj.hasOwnProperty(key) ||\n obj[key] === undefined ||\n obj[key] === null ||\n typeof obj[key] === \"function\"\n ) {\n continue;\n } else if (\n obj[key] &&\n Array.isArray(obj[key]) &&\n obj[key].length &&\n obj[key].every((val) => typeof val !== \"object\")\n ) {\n newobj[`${prefix}${key}[]`] = obj[key].join(\",\");\n } else if (obj[key] && typeof obj[key] === \"object\") {\n newobj = dotify(obj[key], `${prefix}${key}`, newobj);\n } else {\n newobj[`${prefix}${key}`] = serializePrimitive(obj[key]);\n }\n }\n return newobj;\n}\n\nexport function undotify(obj: { [string]: string }): Object {\n const result = {};\n\n for (let key in obj) {\n if (!obj.hasOwnProperty(key) || typeof obj[key] !== \"string\") {\n continue;\n }\n\n let value = obj[key];\n\n if (key.match(/^.+\\[\\]$/)) {\n key = key.slice(0, -2);\n value = value.split(\",\").map(deserializePrimitive);\n } else {\n value = deserializePrimitive(value);\n }\n\n let keyResult = result;\n const parts = key.split(\".\");\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n const isLast = i + 1 === parts.length;\n const isIndex = !isLast && isInteger(parts[i + 1]);\n\n if (\n part === \"constructor\" ||\n part === \"prototype\" ||\n part === \"__proto__\"\n ) {\n throw new Error(`Disallowed key: ${part}`);\n }\n\n if (isLast) {\n // $FlowFixMe\n keyResult[part] = value;\n } else {\n // $FlowFixMe\n keyResult = keyResult[part] = keyResult[part] || (isIndex ? [] : {});\n }\n }\n }\n\n return result;\n}\n\nexport type EventEmitterType = {|\n on: (eventName: string, handler: Function) => CancelableType,\n once: (eventName: string, handler: Function) => CancelableType,\n trigger: (\n eventName: string,\n ...args: $ReadOnlyArray\n ) => ZalgoPromise,\n triggerOnce: (\n eventName: string,\n ...args: $ReadOnlyArray\n ) => ZalgoPromise,\n reset: () => void,\n|};\n\nexport function eventEmitter(): EventEmitterType {\n const triggered = {};\n let handlers = {};\n\n const emitter = {\n on(eventName: string, handler: Function): CancelableType {\n const handlerList = (handlers[eventName] = handlers[eventName] || []);\n\n handlerList.push(handler);\n\n let cancelled = false;\n\n return {\n cancel() {\n if (!cancelled) {\n cancelled = true;\n handlerList.splice(handlerList.indexOf(handler), 1);\n }\n },\n };\n },\n\n once(eventName: string, handler: Function): CancelableType {\n const listener = emitter.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(\n eventName: string,\n ...args: $ReadOnlyArray\n ): ZalgoPromise {\n const handlerList = handlers[eventName];\n const promises = [];\n\n if (handlerList) {\n for (const handler of handlerList) {\n promises.push(ZalgoPromise.try(() => handler(...args)));\n }\n }\n\n return ZalgoPromise.all(promises).then(noop);\n },\n\n triggerOnce(\n eventName: string,\n ...args: $ReadOnlyArray\n ): ZalgoPromise {\n if (triggered[eventName]) {\n return ZalgoPromise.resolve();\n }\n\n triggered[eventName] = true;\n return emitter.trigger(eventName, ...args);\n },\n\n reset() {\n handlers = {};\n },\n };\n\n return emitter;\n}\n\nexport function camelToDasherize(string: string): string {\n return string.replace(/([A-Z])/g, (g) => {\n return `-${g.toLowerCase()}`;\n });\n}\n\nexport function dasherizeToCamel(string: string): string {\n return string.replace(/-([a-z])/g, (g) => {\n return g[1].toUpperCase();\n });\n}\n\nexport function capitalizeFirstLetter(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n}\n\nexport function get(item: Object, path: string, def: mixed): mixed {\n if (!path) {\n return def;\n }\n\n const pathParts = path.split(\".\");\n\n // Loop through each section of our key path\n\n for (let i = 0; i < pathParts.length; i++) {\n // If we have an object, we can get the key\n if (typeof item === \"object\" && item !== null) {\n item = item[pathParts[i]];\n\n // Otherwise, we should return the default (undefined if not provided)\n } else {\n return def;\n }\n }\n\n // If our final result is undefined, we should return the default\n\n return item === undefined ? def : item;\n}\n\nexport function safeTimeout(method: Function, time: number) {\n const interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(\n obj: Object | $ReadOnlyArray,\n key: string | number,\n getter: () => T\n) {\n if (Array.isArray(obj)) {\n if (typeof key !== \"number\") {\n throw new TypeError(`Array key must be number`);\n }\n } else if (typeof obj === \"object\" && obj !== null) {\n if (typeof key !== \"string\") {\n throw new TypeError(`Object key must be string`);\n }\n }\n\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => {\n // $FlowFixMe\n delete obj[key];\n const value = getter();\n // $FlowFixMe\n obj[key] = value;\n return value;\n },\n set: (value: T) => {\n // $FlowFixMe\n delete obj[key];\n // $FlowFixMe\n obj[key] = value;\n },\n });\n}\n\n// eslint-disable-next-line no-undef\nexport function arrayFrom(item: Iterable): $ReadOnlyArray {\n // $FlowFixMe[method-unbinding]\n return Array.prototype.slice.call(item);\n}\n\nexport function isObject(item: mixed): boolean {\n return typeof item === \"object\" && item !== null;\n}\n\nexport function isObjectObject(obj: mixed): boolean {\n return (\n // $FlowFixMe[method-unbinding]\n isObject(obj) && Object.prototype.toString.call(obj) === \"[object Object]\"\n );\n}\n\nexport function isPlainObject(obj: mixed): boolean {\n if (!isObjectObject(obj)) {\n return false;\n }\n\n // $FlowFixMe\n const constructor = obj.constructor;\n\n if (typeof constructor !== \"function\") {\n return false;\n }\n\n const prototype = constructor.prototype;\n\n if (!isObjectObject(prototype)) {\n return false;\n }\n\n if (!prototype.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n\n return true;\n}\n\nexport function replaceObject | Object>(\n item: T,\n replacer: (mixed, string | number, string) => mixed,\n fullKey: string = \"\"\n): T {\n if (Array.isArray(item)) {\n const length = item.length;\n const result: Array = [];\n\n for (let i = 0; i < length; i++) {\n defineLazyProp(result, i, () => {\n const itemKey = fullKey ? `${fullKey}.${i}` : `${i}`;\n const el = item[i];\n\n let child = replacer(el, i, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else if (isPlainObject(item)) {\n const result = {};\n\n for (const key in item) {\n if (!item.hasOwnProperty(key)) {\n continue;\n }\n\n defineLazyProp(result, key, () => {\n const itemKey = fullKey ? `${fullKey}.${key}` : `${key}`;\n // $FlowFixMe\n const el = item[key];\n\n let child = replacer(el, key, itemKey);\n\n if (isPlainObject(child) || Array.isArray(child)) {\n // $FlowFixMe\n child = replaceObject(child, replacer, itemKey);\n }\n\n return child;\n });\n }\n\n // $FlowFixMe\n return result;\n } else {\n throw new Error(`Pass an object or array`);\n }\n}\n\nexport function copyProp(\n source: Object,\n target: Object,\n name: string,\n def: mixed\n) {\n if (source.hasOwnProperty(name)) {\n const descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n } else {\n target[name] = def;\n }\n}\n\ntype RegexResultType = {|\n text: string,\n groups: $ReadOnlyArray,\n start: number,\n end: number,\n length: number,\n replace: (text: string) => string,\n|};\n\nexport function regex(\n pattern: string | RegExp,\n string: string,\n start: number = 0\n): ?RegexResultType {\n if (typeof pattern === \"string\") {\n // eslint-disable-next-line security/detect-non-literal-regexp\n pattern = new RegExp(pattern);\n }\n\n const result = string.slice(start).match(pattern);\n\n if (!result) {\n return;\n }\n\n // $FlowFixMe\n const index: number = result.index;\n const regmatch = result[0];\n\n return {\n text: regmatch,\n groups: result.slice(1),\n start: start + index,\n end: start + index + regmatch.length,\n length: regmatch.length,\n\n replace(text: string): string {\n if (!regmatch) {\n return \"\";\n }\n\n return `${regmatch.slice(0, start + index)}${text}${regmatch.slice(\n index + regmatch.length\n )}`;\n },\n };\n}\n\nexport function regexAll(\n pattern: string | RegExp,\n string: string\n): $ReadOnlyArray {\n const matches = [];\n let start = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const regmatch = regex(pattern, string, start);\n\n if (!regmatch) {\n break;\n }\n\n matches.push(regmatch);\n start = match.end;\n }\n\n return matches;\n}\n\nexport function isDefined(value: ?mixed): boolean {\n return value !== null && value !== undefined;\n}\n\nexport function cycle(method: Function): ZalgoPromise {\n return ZalgoPromise.try(method).then(() => cycle(method));\n}\n\nexport function debounce(\n method: (...args: $ReadOnlyArray) => T,\n time: number = 100\n): (...args: $ReadOnlyArray) => void {\n let timeout;\n\n const debounceWrapper = function () {\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n return method.apply(this, arguments);\n }, time);\n };\n\n return setFunctionName(\n debounceWrapper,\n `${getFunctionName(method)}::debounced`\n );\n}\n\nexport function isRegex(item: mixed): boolean {\n // $FlowFixMe[method-unbinding]\n return Object.prototype.toString.call(item) === \"[object RegExp]\";\n}\n\ntype FunctionProxy = (method: T) => T;\n\nexport const weakMapMemoize: FunctionProxy<*> = (\n // eslint-disable-next-line flowtype/no-weak-types\n method: (arg: any) => R\n // eslint-disable-next-line flowtype/no-weak-types\n): ((...args: $ReadOnlyArray) => R) => {\n const weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoized(arg: any): R {\n return weakmap.getOrSet(arg, () => method.call(this, arg));\n };\n};\n\ntype FunctionPromiseProxy<\n R: mixed,\n T: (...args: $ReadOnlyArray) => ZalgoPromise\n> = (T) => T;\n\nexport const weakMapMemoizePromise: FunctionPromiseProxy<*, *> = (\n // eslint-disable-next-line flowtype/no-weak-types\n method: (arg: any) => ZalgoPromise\n // eslint-disable-next-line flowtype/no-weak-types\n): ((...args: $ReadOnlyArray) => ZalgoPromise) => {\n const weakmap = new WeakMap();\n\n // eslint-disable-next-line flowtype/no-weak-types\n return function weakmapMemoizedPromise(arg: any): ZalgoPromise {\n return weakmap.getOrSet(arg, () =>\n method.call(this, arg).finally(() => {\n weakmap.delete(arg);\n })\n );\n };\n};\n\nexport function getOrSet(\n obj: O,\n key: string,\n getter: () => T\n): T {\n if (obj.hasOwnProperty(key)) {\n return obj[key];\n }\n\n const val = getter();\n obj[key] = val;\n return val;\n}\n\nexport type CleanupType = {|\n set: (string, T) => T, // eslint-disable-line no-undef\n register: (Function) => {| cancel: () => void |},\n all: (err?: mixed) => ZalgoPromise,\n|};\n\nexport function cleanup(obj: Object): CleanupType {\n const tasks = [];\n let cleaned = false;\n let cleanErr;\n\n const cleaner = {\n set(name: string, item: T): T {\n if (!cleaned) {\n obj[name] = item;\n cleaner.register(() => {\n delete obj[name];\n });\n }\n return item;\n },\n\n register(method: Function): {| cancel: () => void |} {\n const task = once(() => method(cleanErr));\n\n if (cleaned) {\n method(cleanErr);\n } else {\n tasks.push(task);\n }\n\n return {\n cancel: () => {\n const index = tasks.indexOf(task);\n if (index !== -1) {\n tasks.splice(index, 1);\n }\n },\n };\n },\n\n all(err?: mixed): ZalgoPromise {\n cleanErr = err;\n\n const results = [];\n cleaned = true;\n\n while (tasks.length) {\n const task = tasks.shift();\n results.push(task());\n }\n\n return ZalgoPromise.all(results).then(noop);\n },\n };\n\n return cleaner;\n}\n\nexport function tryCatch(\n fn: () => T\n): {| result: T, error: void |} | {| result: void, error: mixed |} {\n let result;\n let error;\n\n try {\n result = fn();\n } catch (err) {\n error = err;\n }\n\n // $FlowFixMe\n return { result, error };\n}\n\n// eslint-disable-next-line flowtype/no-mutable-array\nexport function removeFromArray>(arr: T, item: X) {\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport function assertExists(name: string, thing: void | null | T): T {\n if (thing === null || typeof thing === \"undefined\") {\n throw new Error(`Expected ${name} to be present`);\n }\n\n return thing;\n}\n\nexport function unique(arr: $ReadOnlyArray): $ReadOnlyArray {\n const result = {};\n for (const item of arr) {\n result[item] = true;\n }\n return Object.keys(result);\n}\n\nexport const constHas = (\n constant: T,\n value: X\n): boolean => {\n return memoizedValues(constant).indexOf(value) !== -1;\n};\n\nexport function dedupeErrors(handler: (mixed) => T): (mixed) => T | void {\n const seenErrors = [];\n const seenStringifiedErrors = {};\n\n return (err) => {\n if (seenErrors.indexOf(err) !== -1) {\n return;\n }\n\n seenErrors.push(err);\n\n const stringifiedError = stringifyError(err);\n if (seenStringifiedErrors[stringifiedError]) {\n return;\n }\n\n seenStringifiedErrors[stringifiedError] = true;\n return handler(err);\n };\n}\n\nexport class ExtendableError extends Error {\n constructor(message: string) {\n super(message);\n // eslint-disable-next-line unicorn/custom-error-definition\n this.name = this.constructor.name;\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error(message).stack;\n }\n }\n}\n","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeFunction from \"@babel/runtime/helpers/esm/isNativeFunction\";\nimport construct from \"@babel/runtime/helpers/esm/construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","/* @flow */\n/* eslint max-lines: off */\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport {\n linkFrameWindow,\n isWindowClosed,\n assertSameDomain,\n type SameDomainWindowType,\n type CrossDomainWindowType,\n} from \"@krakenjs/cross-domain-utils/src\";\nimport { WeakMap } from \"@krakenjs/cross-domain-safe-weakmap/src\";\n\nimport {\n isElement,\n inlineMemoize,\n memoize,\n noop,\n stringify,\n capitalizeFirstLetter,\n once,\n extend,\n safeInterval,\n uniqueID,\n arrayFrom,\n ExtendableError,\n strHashStr,\n} from \"./util\";\nimport { isDevice } from \"./device\";\nimport { KEY_CODES, ATTRIBUTES, UID_HASH_LENGTH } from \"./constants\";\nimport type { CancelableType } from \"./types\";\n\ntype ElementRefType = string | HTMLElement;\n\nexport function getBody(): HTMLBodyElement {\n // eslint-disable-next-line compat/compat\n const body = document.body;\n\n if (!body) {\n throw new Error(`Body element not found`);\n }\n\n return body;\n}\n\nexport function isDocumentReady(): boolean {\n // eslint-disable-next-line compat/compat\n return Boolean(document.body) && document.readyState === \"complete\";\n}\n\nexport function isDocumentInteractive(): boolean {\n // eslint-disable-next-line compat/compat\n return Boolean(document.body) && document.readyState === \"interactive\";\n}\n\nexport function urlEncode(str: string): string {\n return encodeURIComponent(str);\n}\n\nexport function waitForWindowReady(): ZalgoPromise {\n return inlineMemoize(waitForWindowReady, (): ZalgoPromise => {\n return new ZalgoPromise((resolve) => {\n if (isDocumentReady()) {\n resolve();\n }\n\n window.addEventListener(\"load\", () => resolve());\n });\n });\n}\n\ntype WaitForDocumentReady = () => ZalgoPromise;\n\nexport const waitForDocumentReady: WaitForDocumentReady = memoize(() => {\n return new ZalgoPromise((resolve) => {\n if (isDocumentReady() || isDocumentInteractive()) {\n return resolve();\n }\n\n const interval = setInterval(() => {\n if (isDocumentReady() || isDocumentInteractive()) {\n clearInterval(interval);\n return resolve();\n }\n }, 10);\n });\n});\n\nexport function waitForDocumentBody(): ZalgoPromise {\n return ZalgoPromise.try(() => {\n if (document.body) {\n return document.body;\n }\n\n return waitForDocumentReady().then(() => {\n if (document.body) {\n return document.body;\n }\n\n throw new Error(\"Document ready but document.body not present\");\n });\n });\n}\n\nexport function parseQuery(queryString: string): Object {\n return inlineMemoize(\n parseQuery,\n (): Object => {\n const params = {};\n\n if (!queryString) {\n return params;\n }\n\n if (queryString.indexOf(\"=\") === -1) {\n return params;\n }\n\n for (let pair of queryString.split(\"&\")) {\n pair = pair.split(\"=\");\n\n if (pair[0] && pair[1]) {\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n }\n\n return params;\n },\n [queryString]\n );\n}\n\nexport function getQueryParam(name: string): string {\n return parseQuery(window.location.search.slice(1))[name];\n}\n\nexport function urlWillRedirectPage(url: string): boolean {\n if (url.indexOf(\"#\") === -1) {\n return true;\n }\n\n if (url.indexOf(\"#\") === 0) {\n return false;\n }\n\n if (url.split(\"#\")[0] === window.location.href.split(\"#\")[0]) {\n return false;\n }\n\n return true;\n}\n\nexport type Query = {\n [string]: boolean | string,\n};\n\nexport function formatQuery(obj: Query = {}): string {\n return Object.keys(obj)\n .filter((key) => {\n return typeof obj[key] === \"string\" || typeof obj[key] === \"boolean\";\n })\n .map((key) => {\n const val = obj[key];\n\n if (typeof val !== \"string\" && typeof val !== \"boolean\") {\n throw new TypeError(`Invalid type for query`);\n }\n\n return `${urlEncode(key)}=${urlEncode(val.toString())}`;\n })\n .join(\"&\");\n}\n\nexport function extendQuery(originalQuery: string, props: Query = {}): string {\n if (!props || !Object.keys(props).length) {\n return originalQuery;\n }\n\n return formatQuery({\n ...parseQuery(originalQuery),\n ...props,\n });\n}\n\nexport function extendUrl(\n url: string,\n options: {| query?: Query, hash?: Query |}\n): string {\n const query = options.query || {};\n const hash = options.hash || {};\n\n let originalUrl;\n let originalQuery;\n let originalHash;\n\n [originalUrl, originalHash] = url.split(\"#\");\n [originalUrl, originalQuery] = originalUrl.split(\"?\");\n\n const queryString = extendQuery(originalQuery, query);\n const hashString = extendQuery(originalHash, hash);\n\n if (queryString) {\n originalUrl = `${originalUrl}?${queryString}`;\n }\n\n if (hashString) {\n originalUrl = `${originalUrl}#${hashString}`;\n }\n\n return originalUrl;\n}\n\nexport function redirect(\n url: string,\n win: CrossDomainWindowType = window\n): ZalgoPromise {\n return new ZalgoPromise((resolve) => {\n win.location = url;\n if (!urlWillRedirectPage(url)) {\n resolve();\n }\n });\n}\n\nexport function hasMetaViewPort(): boolean {\n const meta = document.querySelector(\"meta[name=viewport]\");\n\n if (isDevice() && window.screen.width < 660 && !meta) {\n return false;\n }\n\n return true;\n}\n\nexport function isElementVisible(el: HTMLElement): boolean {\n return Boolean(\n el.offsetWidth || el.offsetHeight || el.getClientRects().length\n );\n}\n\nexport function getPerformance(): ?Performance {\n return inlineMemoize(getPerformance, (): ?Performance => {\n const performance = window.performance;\n\n if (\n performance &&\n performance.now &&\n performance.timing &&\n performance.timing.connectEnd &&\n performance.timing.navigationStart &&\n Math.abs(performance.now() - Date.now()) > 1000 &&\n performance.now() -\n (performance.timing.connectEnd - performance.timing.navigationStart) >\n 0\n ) {\n return performance;\n }\n });\n}\n\nexport function enablePerformance(): boolean {\n return Boolean(getPerformance());\n}\n\nexport function getPageRenderTime(): ZalgoPromise {\n return waitForDocumentReady().then(() => {\n const performance = getPerformance();\n\n if (!performance) {\n return;\n }\n\n const timing = performance.timing;\n\n if (timing.connectEnd && timing.domInteractive) {\n return timing.domInteractive - timing.connectEnd;\n }\n });\n}\n\nexport function htmlEncode(html: string = \"\"): string {\n return html\n .toString()\n .replace(/&/g, \"&\")\n .replace(//g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\")\n .replace(/\\//g, \"/\");\n}\n\nexport function isBrowser(): boolean {\n return typeof window !== \"undefined\" && window.location !== undefined;\n}\n\nexport function querySelectorAll(\n selector: string,\n doc: HTMLElement = window.document\n): $ReadOnlyArray {\n // $FlowFixMe[method-unbinding]\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\n/**\n * Sets up event handlers for click events and\n * enter/space keypresses.\n * @callback handler\n * @param {HTMLElement} element\n * @param {handler} handler\n */\nexport function onClick(element: HTMLElement, handler: (Event) => void) {\n element.addEventListener(\"touchstart\", noop, { passive: true });\n element.addEventListener(\"click\", handler);\n element.addEventListener(\"keypress\", (event: Event) => {\n if (\n // $FlowFixMe\n event.keyCode === KEY_CODES.ENTER ||\n // $FlowFixMe\n event.keyCode === KEY_CODES.SPACE\n ) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({\n host = window.location.host,\n path,\n reverse = false,\n}: {|\n host?: string,\n path: string,\n reverse?: boolean,\n|}): ?HTMLScriptElement {\n return inlineMemoize(\n getScript,\n (): ?HTMLScriptElement => {\n const url = `${host}${path}`;\n // $FlowFixMe[method-unbinding]\n const scripts = Array.prototype.slice.call(\n document.getElementsByTagName(\"script\")\n );\n\n if (reverse) {\n scripts.reverse();\n }\n\n for (const script of scripts) {\n if (!script.src) {\n continue;\n }\n\n const src = script.src.replace(/^https?:\\/\\//, \"\").split(\"?\")[0];\n\n if (src === url) {\n return script;\n }\n }\n },\n [path]\n );\n}\n\nexport function isLocalStorageEnabled(): boolean {\n return inlineMemoize(isLocalStorageEnabled, () => {\n try {\n if (typeof window === \"undefined\") {\n return false;\n }\n\n if (window.localStorage) {\n const value = Math.random().toString();\n window.localStorage.setItem(\"__test__localStorage__\", value);\n const result = window.localStorage.getItem(\"__test__localStorage__\");\n window.localStorage.removeItem(\"__test__localStorage__\");\n if (value === result) {\n return true;\n }\n }\n } catch (err) {\n // pass\n }\n return false;\n });\n}\n\nexport function getBrowserLocales(): $ReadOnlyArray<{|\n country?: string,\n lang: string,\n|}> {\n const nav = window.navigator;\n\n const locales = nav.languages ? [...nav.languages] : [];\n\n if (nav.language) {\n locales.push(nav.language);\n }\n\n if (nav.userLanguage) {\n locales.push(nav.userLanguage);\n }\n\n return locales\n .map((locale) => {\n if (locale && locale.match(/^[a-z]{2}[-_][A-Z]{2}$/)) {\n const [lang, country] = locale.split(/[-_]/);\n return { country, lang };\n }\n\n if (locale && locale.match(/^[a-z]{2}$/)) {\n return { lang: locale };\n }\n\n return null;\n })\n .filter(Boolean);\n}\n\nexport function appendChild(container: HTMLElement, child: HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function getElementSafe(\n id: ElementRefType,\n doc: Document | HTMLElement = document\n): ?HTMLElement {\n if (isElement(id)) {\n // $FlowFixMe\n return id;\n }\n\n if (typeof id === \"string\") {\n return doc.querySelector(id);\n }\n}\n\nexport function getElement(\n id: ElementRefType,\n doc: Document | HTMLElement = document\n): HTMLElement {\n const element = getElementSafe(id, doc);\n\n if (element) {\n return element;\n }\n\n throw new Error(`Can not find element: ${stringify(id)}`);\n}\n\nexport function elementReady(id: ElementRefType): ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const name = stringify(id);\n let el = getElementSafe(id);\n\n if (el) {\n return resolve(el);\n }\n\n if (isDocumentReady()) {\n return reject(\n new Error(`Document is ready and element ${name} does not exist`)\n );\n }\n\n const interval = setInterval(() => {\n el = getElementSafe(id);\n\n if (el) {\n resolve(el);\n clearInterval(interval);\n return;\n }\n\n if (isDocumentReady()) {\n clearInterval(interval);\n return reject(\n new Error(`Document is ready and element ${name} does not exist`)\n );\n }\n }, 10);\n });\n}\n\n// eslint-disable-next-line unicorn/custom-error-definition\nexport class PopupOpenError extends ExtendableError {}\n\ntype PopupOptions = {|\n name?: string,\n width?: number,\n height?: number,\n top?: number,\n left?: number,\n status?: 0 | 1,\n resizable?: 0 | 1,\n toolbar?: 0 | 1,\n menubar?: 0 | 1,\n scrollbars?: 0 | 1,\n closeOnUnload?: 0 | 1,\n|};\n\nexport function popup(\n url: string,\n options?: PopupOptions\n): CrossDomainWindowType {\n // $FlowFixMe\n options = options || {};\n\n const { closeOnUnload = 1, name = \"\", width, height } = options;\n\n let top = 0;\n let left = 0;\n\n if (width) {\n if (window.outerWidth) {\n left = Math.round((window.outerWidth - width) / 2) + window.screenX;\n } else if (window.screen.width) {\n left = Math.round((window.screen.width - width) / 2);\n }\n }\n\n if (height) {\n if (window.outerHeight) {\n top = Math.round((window.outerHeight - height) / 2) + window.screenY;\n } else if (window.screen.height) {\n top = Math.round((window.screen.height - height) / 2);\n }\n }\n\n delete options.closeOnUnload;\n delete options.name;\n\n if (width && height) {\n // $FlowFixMe\n options = {\n top,\n left,\n width,\n height,\n status: 1,\n toolbar: 0,\n menubar: 0,\n resizable: 1,\n scrollbars: 1,\n ...options,\n };\n }\n\n const params = Object.keys(options)\n // eslint-disable-next-line array-callback-return\n .map((key) => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${key}=${stringify(options[key])}`;\n }\n })\n .filter(Boolean)\n .join(\",\");\n\n let win;\n\n try {\n win = window.open(url, name, params);\n } catch (err) {\n throw new PopupOpenError(\n `Can not open popup window - ${err.stack || err.message}`\n );\n }\n\n if (isWindowClosed(win)) {\n const err = new PopupOpenError(`Can not open popup window - blocked`);\n throw err;\n }\n\n if (closeOnUnload) {\n window.addEventListener(\"unload\", () => win.close());\n }\n\n return win;\n}\n\nexport function writeToWindow(win: SameDomainWindowType, html: string) {\n try {\n win.document.open();\n win.document.write(html);\n win.document.close();\n } catch (err) {\n try {\n win.location = `javascript: document.open(); document.write(${JSON.stringify(\n html\n )}); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(\n win: SameDomainWindowType,\n el: HTMLElement\n) {\n const tag = el.tagName.toLowerCase();\n\n if (tag !== \"html\") {\n throw new Error(`Expected element to be html, got ${tag}`);\n }\n\n const documentElement = win.document.documentElement;\n\n for (const child of arrayFrom(documentElement.children)) {\n documentElement.removeChild(child);\n }\n\n for (const child of arrayFrom(el.children)) {\n documentElement.appendChild(child);\n }\n}\n\nexport function setStyle(\n el: HTMLElement,\n styleText: string,\n doc: Document = window.document\n) {\n // $FlowFixMe\n if (el.styleSheet) {\n // $FlowFixMe\n el.styleSheet.cssText = styleText;\n } else {\n el.appendChild(doc.createTextNode(styleText));\n }\n}\n\nexport type ElementOptionsType = {|\n style?: { [string]: string },\n id?: string,\n class?: ?$ReadOnlyArray,\n attributes?: { [string]: string },\n styleSheet?: ?string,\n html?: ?string,\n|};\n\nlet awaitFrameLoadPromises: WeakMap<\n HTMLIFrameElement,\n ZalgoPromise\n>;\n\nexport function awaitFrameLoad(\n frame: HTMLIFrameElement\n): ZalgoPromise {\n awaitFrameLoadPromises = awaitFrameLoadPromises || new WeakMap();\n\n if (awaitFrameLoadPromises.has(frame)) {\n const promise = awaitFrameLoadPromises.get(frame);\n if (promise) {\n return promise;\n }\n }\n\n const promise = new ZalgoPromise((resolve, reject) => {\n frame.addEventListener(\"load\", () => {\n linkFrameWindow(frame);\n resolve(frame);\n });\n\n frame.addEventListener(\"error\", (err: Event) => {\n if (frame.contentWindow) {\n resolve(frame);\n } else {\n reject(err);\n }\n });\n });\n\n awaitFrameLoadPromises.set(frame, promise);\n\n return promise;\n}\n\nexport function awaitFrameWindow(\n frame: HTMLIFrameElement\n): ZalgoPromise {\n return awaitFrameLoad(frame).then((loadedFrame) => {\n if (!loadedFrame.contentWindow) {\n throw new Error(`Could not find window in iframe`);\n }\n\n return loadedFrame.contentWindow;\n });\n}\n\nconst getDefaultCreateElementOptions = (): ElementOptionsType => {\n // $FlowFixMe\n return {};\n};\n\nexport function createElement(\n tag: string = \"div\",\n options: ElementOptionsType = getDefaultCreateElementOptions(),\n container: ?HTMLElement\n): HTMLElement {\n tag = tag.toLowerCase();\n const element = document.createElement(tag);\n\n if (options.style) {\n extend(element.style, options.style);\n }\n\n if (options.class) {\n element.className = options.class.join(\" \");\n }\n\n if (options.id) {\n element.setAttribute(\"id\", options.id);\n }\n\n if (options.attributes) {\n for (const key of Object.keys(options.attributes)) {\n element.setAttribute(key, options.attributes[key]);\n }\n }\n\n if (options.styleSheet) {\n setStyle(element, options.styleSheet);\n }\n\n if (container) {\n appendChild(container, element);\n }\n\n if (options.html) {\n if (tag === \"iframe\") {\n // $FlowFixMe\n if (!container || !element.contentWindow) {\n throw new Error(\n `Iframe html can not be written unless container provided and iframe in DOM`\n );\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n } else {\n element.innerHTML = options.html;\n }\n }\n\n return element;\n}\n\ntype StringMap = {|\n [string]: string,\n|};\n\nexport type IframeElementOptionsType = {|\n style?: StringMap,\n class?: ?$ReadOnlyArray,\n attributes?: StringMap,\n styleSheet?: ?string,\n html?: ?string,\n url?: ?string,\n|};\n\nconst getDefaultIframeOptions = (): IframeElementOptionsType => {\n // $FlowFixMe\n return {};\n};\n\nconst getDefaultStringMap = (): StringMap => {\n // $FlowFixMe\n return {};\n};\n\nexport function iframe(\n options: IframeElementOptionsType = getDefaultIframeOptions(),\n container: ?HTMLElement\n): HTMLIFrameElement {\n const attributes = options.attributes || getDefaultStringMap();\n const style = options.style || getDefaultStringMap();\n\n // $FlowFixMe\n const newAttributes = {\n allowTransparency: \"true\",\n ...attributes,\n };\n\n // $FlowFixMe\n const newStyle = {\n backgroundColor: \"transparent\",\n border: \"none\",\n ...style,\n };\n\n const frame = createElement(\"iframe\", {\n attributes: newAttributes,\n style: newStyle,\n html: options.html,\n class: options.class,\n });\n\n const isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n\n if (!frame.hasAttribute(\"id\")) {\n frame.setAttribute(\"id\", uniqueID());\n }\n\n // $FlowFixMe\n awaitFrameLoad(frame);\n\n if (container) {\n const el = getElement(container);\n el.appendChild(frame);\n }\n\n if (options.url || isIE) {\n frame.setAttribute(\"src\", options.url || \"about:blank\");\n }\n\n // $FlowFixMe\n return frame;\n}\n\nexport function addEventListener(\n obj: HTMLElement,\n event: string,\n handler: (event: Event) => void\n): CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n },\n };\n}\n\nexport function bindEvents(\n element: HTMLElement,\n eventNames: $ReadOnlyArray,\n handler: (event: Event) => void\n): CancelableType {\n handler = once(handler);\n\n for (const eventName of eventNames) {\n element.addEventListener(eventName, handler);\n }\n\n return {\n cancel: once(() => {\n for (const eventName of eventNames) {\n element.removeEventListener(eventName, handler);\n }\n }),\n };\n}\n\nconst VENDOR_PREFIXES = [\"webkit\", \"moz\", \"ms\", \"o\"];\n\nexport function setVendorCSS(\n element: HTMLElement,\n name: string,\n value: string\n) {\n // $FlowFixMe\n element.style[name] = value;\n\n const capitalizedName = capitalizeFirstLetter(name);\n\n for (const prefix of VENDOR_PREFIXES) {\n // $FlowFixMe\n element.style[`${prefix}${capitalizedName}`] = value;\n }\n}\n\nconst ANIMATION_START_EVENTS = [\n \"animationstart\",\n \"webkitAnimationStart\",\n \"oAnimationStart\",\n \"MSAnimationStart\",\n];\nconst ANIMATION_END_EVENTS = [\n \"animationend\",\n \"webkitAnimationEnd\",\n \"oAnimationEnd\",\n \"MSAnimationEnd\",\n];\n\nexport function animate(\n element: ElementRefType,\n name: string,\n clean: (Function) => void,\n timeout: number = 1000\n): ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n const el = getElement(element);\n\n if (!el) {\n return resolve();\n }\n\n let hasStarted = false;\n\n // eslint-disable-next-line prefer-const\n let startTimeout;\n let endTimeout;\n // eslint-disable-next-line prefer-const\n let startEvent;\n // eslint-disable-next-line prefer-const\n let endEvent;\n\n function cleanUp() {\n clearTimeout(startTimeout);\n clearTimeout(endTimeout);\n startEvent.cancel();\n endEvent.cancel();\n }\n\n startEvent = bindEvents(el, ANIMATION_START_EVENTS, (event) => {\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n clearTimeout(startTimeout);\n\n event.stopPropagation();\n\n startEvent.cancel();\n hasStarted = true;\n\n endTimeout = setTimeout(() => {\n cleanUp();\n resolve();\n }, timeout);\n });\n\n endEvent = bindEvents(el, ANIMATION_END_EVENTS, (event) => {\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n if (\n // $FlowFixMe\n typeof event.animationName === \"string\" &&\n event.animationName !== name\n ) {\n return reject(\n `Expected animation name to be ${name}, found ${event.animationName}`\n );\n }\n\n return resolve();\n });\n\n setVendorCSS(el, \"animationName\", name);\n\n startTimeout = setTimeout(() => {\n if (!hasStarted) {\n cleanUp();\n return resolve();\n }\n }, 200);\n\n if (clean) {\n clean(cleanUp);\n }\n });\n}\n\nexport function makeElementVisible(element: HTMLElement) {\n element.style.setProperty(\"visibility\", \"\");\n}\n\nexport function makeElementInvisible(element: HTMLElement) {\n element.style.setProperty(\"visibility\", \"hidden\", \"important\");\n}\n\nexport function showElement(element: HTMLElement) {\n element.style.setProperty(\"display\", \"\");\n}\n\nexport function hideElement(element: HTMLElement) {\n element.style.setProperty(\"display\", \"none\", \"important\");\n}\n\nexport function destroyElement(element: HTMLElement) {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nexport function showAndAnimate(\n element: HTMLElement,\n name: string,\n clean: (Function) => void\n): ZalgoPromise {\n const animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(\n element: HTMLElement,\n name: string,\n clean: (Function) => void\n): ZalgoPromise {\n return animate(element, name, clean).then(() => {\n hideElement(element);\n });\n}\n\nexport function addClass(element: HTMLElement, name: string) {\n element.classList.add(name);\n}\n\nexport function removeClass(element: HTMLElement, name: string) {\n element.classList.remove(name);\n}\n\nexport function isElementClosed(el: HTMLElement): boolean {\n if (\n !el ||\n !el.parentNode ||\n !el.ownerDocument ||\n !el.ownerDocument.documentElement ||\n !el.ownerDocument.documentElement.contains(el)\n ) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(\n element: HTMLElement,\n handler: () => mixed\n): CancelableType {\n handler = once(handler);\n\n let cancelled = false;\n const mutationObservers = [];\n // eslint-disable-next-line prefer-const\n let interval;\n // eslint-disable-next-line prefer-const\n let sacrificialFrame;\n let sacrificialFrameWin;\n\n const cancel = () => {\n cancelled = true;\n for (const observer of mutationObservers) {\n observer.disconnect();\n }\n if (interval) {\n interval.cancel();\n }\n if (sacrificialFrameWin) {\n // eslint-disable-next-line no-use-before-define\n sacrificialFrameWin.removeEventListener(\"unload\", elementClosed);\n }\n if (sacrificialFrame) {\n destroyElement(sacrificialFrame);\n }\n };\n\n const elementClosed = () => {\n if (!cancelled) {\n handler();\n cancel();\n }\n };\n\n if (isElementClosed(element)) {\n elementClosed();\n return { cancel };\n }\n\n // Strategy 1: Mutation observer\n\n if (window.MutationObserver) {\n let mutationElement = element.parentElement;\n while (mutationElement) {\n const mutationObserver = new window.MutationObserver(() => {\n if (isElementClosed(element)) {\n elementClosed();\n }\n });\n\n mutationObserver.observe(mutationElement, { childList: true });\n mutationObservers.push(mutationObserver);\n mutationElement = mutationElement.parentElement;\n }\n }\n\n // Strategy 2: Sacrificial iframe\n\n sacrificialFrame = document.createElement(\"iframe\");\n sacrificialFrame.setAttribute(\"name\", `__detect_close_${uniqueID()}__`);\n sacrificialFrame.style.display = \"none\";\n awaitFrameWindow(sacrificialFrame).then((frameWin) => {\n sacrificialFrameWin = assertSameDomain(frameWin);\n sacrificialFrameWin.addEventListener(\"unload\", elementClosed);\n });\n element.appendChild(sacrificialFrame);\n\n // Strategy 3: Poller\n\n const check = () => {\n if (isElementClosed(element)) {\n elementClosed();\n }\n };\n interval = safeInterval(check, 1000);\n\n return { cancel };\n}\n\nexport function fixScripts(el: HTMLElement, doc: Document = window.document) {\n for (const script of querySelectorAll(\"script\", el)) {\n const parentNode = script.parentNode;\n\n if (!parentNode) {\n continue;\n }\n\n const newScript = doc.createElement(\"script\");\n newScript.text = script.textContent;\n parentNode.replaceChild(newScript, script);\n }\n}\n\ntype OnResizeOptions = {|\n width?: boolean,\n height?: boolean,\n interval?: number,\n win?: SameDomainWindowType,\n|};\n\nexport function onResize(\n el: HTMLElement,\n handler: ({| width: number, height: number |}) => void,\n {\n width = true,\n height = true,\n interval = 100,\n win = window,\n }: OnResizeOptions = {}\n): {| cancel: () => void |} {\n let currentWidth = el.offsetWidth;\n let currentHeight = el.offsetHeight;\n let canceled = false;\n\n handler({ width: currentWidth, height: currentHeight });\n\n const check = () => {\n if (canceled || !isElementVisible(el)) {\n return;\n }\n\n const newWidth = el.offsetWidth;\n const newHeight = el.offsetHeight;\n\n if (\n (width && newWidth !== currentWidth) ||\n (height && newHeight !== currentHeight)\n ) {\n handler({ width: newWidth, height: newHeight });\n }\n\n currentWidth = newWidth;\n currentHeight = newHeight;\n };\n\n let observer;\n let timeout;\n\n win.addEventListener(\"resize\", check);\n\n if (typeof win.ResizeObserver !== \"undefined\") {\n observer = new win.ResizeObserver(check);\n observer.observe(el);\n timeout = safeInterval(check, interval * 10);\n } else if (typeof win.MutationObserver !== \"undefined\") {\n observer = new win.MutationObserver(check);\n observer.observe(el, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: false,\n });\n timeout = safeInterval(check, interval * 10);\n } else {\n timeout = safeInterval(check, interval);\n }\n\n return {\n cancel: () => {\n canceled = true;\n observer.disconnect();\n window.removeEventListener(\"resize\", check);\n timeout.cancel();\n },\n };\n}\n\nexport function getResourceLoadTime(url: string): ?number {\n const performance = getPerformance();\n\n if (!performance) {\n return;\n }\n\n // $FlowFixMe[method-unbinding]\n if (typeof performance.getEntries !== \"function\") {\n return;\n }\n\n const entries = performance.getEntries();\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n\n if (\n entry &&\n entry.name &&\n entry.name.indexOf(url) === 0 &&\n typeof entry.duration === \"number\"\n ) {\n return Math.floor(entry.duration);\n }\n }\n}\n\nexport function isShadowElement(element: Node): boolean {\n while (element.parentNode) {\n element = element.parentNode;\n }\n\n return element.toString() === \"[object ShadowRoot]\";\n}\n\nexport function getShadowRoot(element: Node): ?Node {\n while (element.parentNode) {\n element = element.parentNode;\n }\n\n if (isShadowElement(element)) {\n return element;\n }\n}\n\nexport function getShadowHost(element: Node): ?HTMLElement {\n const shadowRoot = getShadowRoot(element);\n\n // $FlowFixMe\n if (shadowRoot && shadowRoot.host) {\n // $FlowFixMe\n return shadowRoot.host;\n }\n}\n\nexport function insertShadowSlot(element: HTMLElement): HTMLElement {\n const shadowHost = getShadowHost(element);\n\n if (!shadowHost) {\n throw new Error(`Element is not in shadow dom`);\n }\n\n const slotName = `shadow-slot-${uniqueID()}`;\n const slot = document.createElement(\"slot\");\n slot.setAttribute(\"name\", slotName);\n element.appendChild(slot);\n\n const slotProvider = document.createElement(\"div\");\n slotProvider.setAttribute(\"slot\", slotName);\n shadowHost.appendChild(slotProvider);\n\n if (isShadowElement(shadowHost)) {\n return insertShadowSlot(slotProvider);\n }\n\n return slotProvider;\n}\n\nexport function preventClickFocus(el: HTMLElement) {\n const onFocus = (event: Event) => {\n el.removeEventListener(\"focus\", onFocus);\n event.preventDefault();\n el.blur();\n return false;\n };\n\n el.addEventListener(\"mousedown\", () => {\n el.addEventListener(\"focus\", onFocus);\n setTimeout(() => {\n el.removeEventListener(\"focus\", onFocus);\n }, 1);\n });\n}\n\nexport function getStackTrace(): string {\n try {\n throw new Error(\"_\");\n } catch (err) {\n return err.stack || \"\";\n }\n}\n\nfunction inferCurrentScript(): ?HTMLScriptElement {\n try {\n const stack = getStackTrace();\n const stackDetails = /.*at [^(]*\\((.*):(.+):(.+)\\)$/gi.exec(stack);\n const scriptLocation = stackDetails && stackDetails[1];\n\n if (!scriptLocation) {\n return;\n }\n\n // $FlowFixMe[method-unbinding]\n for (const script of Array.prototype.slice\n .call(document.getElementsByTagName(\"script\"))\n .reverse()) {\n if (script.src && script.src === scriptLocation) {\n return script;\n }\n }\n } catch (err) {\n // pass\n }\n}\n\nlet currentScript =\n // eslint-disable-next-line compat/compat\n typeof document !== \"undefined\" ? document.currentScript : null;\n\ntype GetCurrentScript = () => HTMLScriptElement;\n\nexport const getCurrentScript: GetCurrentScript = memoize(() => {\n if (currentScript) {\n return currentScript;\n }\n\n currentScript = inferCurrentScript();\n\n if (currentScript) {\n return currentScript;\n }\n\n throw new Error(\"Can not determine current script\");\n});\n\nconst currentUID = uniqueID();\n\ntype GetCurrentScriptUID = () => string;\n\nexport const getCurrentScriptUID: GetCurrentScriptUID = memoize(() => {\n let script;\n\n try {\n script = getCurrentScript();\n } catch (err) {\n return currentUID;\n }\n\n let uid = script.getAttribute(ATTRIBUTES.UID);\n\n if (uid && typeof uid === \"string\") {\n return uid;\n }\n\n uid = script.getAttribute(`${ATTRIBUTES.UID}-auto`);\n\n if (uid && typeof uid === \"string\") {\n return uid;\n }\n\n if (script.src) {\n const { src, dataset } = script;\n const stringToHash = JSON.stringify({ src, dataset });\n const hashedString = strHashStr(stringToHash);\n const hashResult = hashedString.slice(\n hashedString.length - UID_HASH_LENGTH\n );\n\n uid = `uid_${hashResult}`;\n } else {\n uid = uniqueID();\n }\n\n script.setAttribute(`${ATTRIBUTES.UID}-auto`, uid);\n\n return uid;\n});\n\ntype SubmitFormOptions = {|\n url: string,\n target: string,\n body?: {| [string]: string | boolean |},\n method?: string,\n|};\n\nexport function submitForm({\n url,\n target,\n body,\n method = \"post\",\n}: SubmitFormOptions) {\n const form = document.createElement(\"form\");\n form.setAttribute(\"target\", target);\n form.setAttribute(\"method\", method);\n form.setAttribute(\"action\", url);\n form.style.display = \"none\";\n\n if (body) {\n for (const key of Object.keys(body)) {\n const input = document.createElement(\"input\");\n input.setAttribute(\"name\", key);\n input.setAttribute(\"value\", body[key]?.toString());\n form.appendChild(input);\n }\n }\n\n getBody().appendChild(form);\n form.submit();\n getBody().removeChild(form);\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","/* @flow */\n\nexport const KEY_CODES = {\n ENTER: 13,\n SPACE: 32,\n};\n\nexport const ATTRIBUTES = {\n UID: \"data-uid\",\n};\n\nexport const UID_HASH_LENGTH = 30;\n","/* @flow */\n\nimport { uniqueID, getGlobal, inlineMemoize } from \"./util\";\nimport { isLocalStorageEnabled } from \"./dom\";\n\ntype Getter = (handler: (Object) => T) => T;\n\nexport type Storage = {|\n getState: Getter<*>,\n getID: () => string,\n isStateFresh: () => boolean,\n getSessionState: Getter<*>,\n getSessionID: () => string,\n|};\n\nconst DEFAULT_SESSION_STORAGE = 20 * 60 * 1000;\n\nexport function getStorage({\n name,\n lifetime = DEFAULT_SESSION_STORAGE,\n}: {|\n name: string,\n lifetime?: number,\n|}): Storage {\n return inlineMemoize(\n getStorage,\n () => {\n const STORAGE_KEY = `__${name}_storage__`;\n const newStateID = uniqueID();\n\n let accessedStorage;\n\n function getState(handler: (storage: Object) => T): T {\n const localStorageEnabled = isLocalStorageEnabled();\n let storage;\n\n if (accessedStorage) {\n storage = accessedStorage;\n }\n\n if (!storage && localStorageEnabled) {\n const rawStorage = window.localStorage.getItem(STORAGE_KEY);\n\n if (rawStorage) {\n storage = JSON.parse(rawStorage);\n }\n }\n\n if (!storage) {\n storage = getGlobal()[STORAGE_KEY];\n }\n\n if (!storage) {\n storage = {\n id: newStateID,\n };\n }\n\n if (!storage.id) {\n storage.id = newStateID;\n }\n\n accessedStorage = storage;\n\n const result = handler(storage);\n\n if (localStorageEnabled) {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(storage));\n } else {\n getGlobal()[STORAGE_KEY] = storage;\n }\n\n accessedStorage = null;\n\n return result;\n }\n\n function getID(): string {\n return getState((storage) => storage.id);\n }\n\n function isStateFresh(): boolean {\n return getID() === newStateID;\n }\n\n function getSession(handler: (state: Object) => T): T {\n return getState((storage) => {\n let session = storage.__session__;\n const now = Date.now();\n\n if (session && now - session.created > lifetime) {\n session = null;\n }\n\n if (!session) {\n session = {\n guid: uniqueID(),\n created: now,\n };\n }\n\n storage.__session__ = session;\n\n return handler(session);\n });\n }\n\n function getSessionState(handler: (state: Object) => T): T {\n return getSession((session) => {\n session.state = session.state || {};\n return handler(session.state);\n });\n }\n\n function getSessionID(): string {\n return getSession((session) => session.guid);\n }\n\n return {\n getState,\n getID,\n isStateFresh,\n getSessionState,\n getSessionID,\n };\n },\n [{ name, lifetime }]\n );\n}\n","/* @flow */\n\nimport { noop } from \"./util\";\nimport { getStorage } from \"./storage\";\n\nfunction getBelterExperimentStorage(): Object {\n return getStorage({ name: \"belter_experiment\" });\n}\n\nfunction isEventUnique(name: string): boolean {\n return getBelterExperimentStorage().getSessionState((state) => {\n state.loggedBeacons = state.loggedBeacons || [];\n\n if (state.loggedBeacons.indexOf(name) === -1) {\n state.loggedBeacons.push(name);\n return true;\n }\n\n return false;\n });\n}\n\ntype Payload = {\n [string]: ?(string | boolean),\n};\n\nexport type Experiment = {|\n isEnabled: () => boolean,\n isDisabled: () => boolean,\n getTreatment: () => string,\n log: (string, payload?: Payload) => Experiment,\n logStart: (payload?: Payload) => Experiment,\n logComplete: (payload?: Payload) => Experiment,\n|};\n\nfunction getRandomInteger(range: number): number {\n return Math.floor(Math.random() * range);\n}\n\nfunction getThrottlePercentile(name: string): number {\n return getBelterExperimentStorage().getState((state) => {\n state.throttlePercentiles = state.throttlePercentiles || {};\n state.throttlePercentiles[name] =\n state.throttlePercentiles[name] || getRandomInteger(100);\n return state.throttlePercentiles[name];\n });\n}\n\nconst THROTTLE_GROUP = {\n TEST: \"test\",\n CONTROL: \"control\",\n THROTTLE: \"throttle\",\n};\n\ntype ExperimentOptions = {|\n name: string,\n sample?: number,\n logTreatment?: ({|\n name: string,\n treatment: string,\n payload: Payload,\n throttle: number,\n |}) => void,\n logCheckpoint?: ({|\n name: string,\n treatment: string,\n checkpoint: string,\n payload: Payload,\n throttle: number,\n |}) => void,\n sticky?: boolean,\n|};\n\nexport function experiment({\n name,\n sample = 50,\n logTreatment = noop,\n logCheckpoint = noop,\n sticky = true,\n}: ExperimentOptions): Experiment {\n const throttle = sticky ? getThrottlePercentile(name) : getRandomInteger(100);\n\n let group;\n\n if (throttle < sample && !__TEST__) {\n group = THROTTLE_GROUP.TEST;\n } else if (sample >= 50 || (sample <= throttle && throttle < sample * 2)) {\n group = THROTTLE_GROUP.CONTROL;\n } else {\n group = THROTTLE_GROUP.THROTTLE;\n }\n\n const treatment = `${name}_${group}`;\n\n let started = false;\n let forced = false;\n\n try {\n if (window.localStorage && window.localStorage.getItem(name)) {\n forced = true;\n }\n } catch (err) {\n // pass\n }\n\n const exp = {\n isEnabled(): boolean {\n return group === THROTTLE_GROUP.TEST || forced;\n },\n\n isDisabled(): boolean {\n return group !== THROTTLE_GROUP.TEST && !forced;\n },\n\n getTreatment(): string {\n return treatment;\n },\n\n log(checkpoint: string, payload?: Payload = {}): Experiment {\n if (!started) {\n return exp;\n }\n\n if (isEventUnique(`${treatment}_${JSON.stringify(payload)}`)) {\n logTreatment({ name, treatment, payload, throttle });\n }\n\n if (\n isEventUnique(`${treatment}_${checkpoint}_${JSON.stringify(payload)}`)\n ) {\n logCheckpoint({ name, treatment, checkpoint, payload, throttle });\n }\n\n return exp;\n },\n\n logStart(payload?: Payload = {}): Experiment {\n started = true;\n return exp.log(`start`, payload);\n },\n\n logComplete(payload?: Payload = {}): Experiment {\n return exp.log(`complete`, payload);\n },\n };\n\n return exp;\n}\n","/* @flow */\n\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport { type SameDomainWindowType } from \"@krakenjs/cross-domain-utils/src\";\n\ntype RequestOptionsType = {|\n url: string,\n method?: string,\n headers?: { [key: string]: string },\n json?: $ReadOnlyArray | Object,\n data?: { [key: string]: string },\n body?: string,\n win?: SameDomainWindowType,\n timeout?: number,\n|};\n\ntype ResponseType = {|\n status: number,\n headers: { [string]: string },\n body: Object,\n|};\n\nconst HEADERS = {\n CONTENT_TYPE: \"content-type\",\n ACCEPT: \"accept\",\n};\n\nconst headerBuilders = [];\n\nfunction parseHeaders(rawHeaders: string = \"\"): { [string]: string } {\n const result = {};\n for (const line of rawHeaders.trim().split(\"\\n\")) {\n const [key, ...values] = line.split(\":\");\n result[key.toLowerCase()] = values.join(\":\").trim();\n }\n return result;\n}\n\nexport function request({\n url,\n method = \"get\",\n headers = {},\n json,\n data,\n body,\n win = window,\n timeout = 0,\n}: RequestOptionsType): ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(\n `Only options.json or options.data or options.body should be passed`\n );\n }\n\n const normalizedHeaders = {};\n\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n\n if (json) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] =\n normalizedHeaders[HEADERS.CONTENT_TYPE] || \"application/json\";\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] =\n normalizedHeaders[HEADERS.CONTENT_TYPE] ||\n \"application/x-www-form-urlencoded; charset=utf-8\";\n }\n\n normalizedHeaders[HEADERS.ACCEPT] =\n normalizedHeaders[HEADERS.ACCEPT] || \"application/json\";\n\n for (const headerBuilder of headerBuilders) {\n const builtHeaders = headerBuilder();\n\n for (const key of Object.keys(builtHeaders)) {\n normalizedHeaders[key.toLowerCase()] = builtHeaders[key];\n }\n }\n\n const xhr = new win.XMLHttpRequest();\n\n xhr.addEventListener(\n \"load\",\n function xhrLoad(): void {\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n\n if (!this.status) {\n return reject(\n new Error(\n `Request to ${method.toLowerCase()} ${url} failed: no response status code.`\n )\n );\n }\n\n const contentType = responseHeaders[\"content-type\"];\n const isJSON =\n contentType &&\n (contentType.indexOf(\"application/json\") === 0 ||\n contentType.indexOf(\"text/json\") === 0);\n let responseBody = this.responseText;\n\n try {\n responseBody = JSON.parse(responseBody);\n } catch (err) {\n if (isJSON) {\n return reject(new Error(`Invalid json: ${this.responseText}.`));\n }\n }\n\n const res = {\n status: this.status,\n headers: responseHeaders,\n body: responseBody,\n };\n\n return resolve(res);\n },\n false\n );\n\n xhr.addEventListener(\n \"error\",\n (evt) => {\n reject(\n new Error(\n `Request to ${method.toLowerCase()} ${url} failed: ${evt.toString()}.`\n )\n );\n },\n false\n );\n\n xhr.open(method, url, true);\n\n for (const key in normalizedHeaders) {\n if (normalizedHeaders.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, normalizedHeaders[key]);\n }\n }\n\n if (json) {\n body = JSON.stringify(json);\n } else if (data) {\n body = Object.keys(data)\n .map((key) => {\n return `${encodeURIComponent(key)}=${\n data ? encodeURIComponent(data[key]) : \"\"\n }`;\n })\n .join(\"&\");\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(\n new Error(`Request to ${method.toLowerCase()} ${url} has timed out`)\n );\n };\n\n xhr.send(body);\n });\n}\n\nexport function addHeaderBuilder(method: () => { [string]: string }) {\n headerBuilders.push(method);\n}\n","/* @flow */\n\nexport function isPromise(item : mixed) : boolean {\n try {\n if (!item) {\n return false;\n }\n\n if (typeof Promise !== 'undefined' && item instanceof Promise) {\n return true;\n }\n\n if (typeof window !== 'undefined' && typeof window.Window === 'function' && item instanceof window.Window) {\n return false;\n }\n\n if (typeof window !== 'undefined' && typeof window.constructor === 'function' && item instanceof window.constructor) {\n return false;\n }\n\n const toString = ({}).toString;\n\n if (toString) {\n const name = toString.call(item);\n\n if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {\n return false;\n }\n }\n\n if (typeof item.then === 'function') {\n return true;\n }\n } catch (err) {\n return false;\n }\n\n return false;\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nconst dispatchedErrors = [];\nconst possiblyUnhandledPromiseHandlers : Array<(mixed, promise? : ZalgoPromise) => void> = [];\n\nexport function dispatchPossiblyUnhandledError(err : mixed, promise : ZalgoPromise) {\n\n if (dispatchedErrors.indexOf(err) !== -1) {\n return;\n }\n\n dispatchedErrors.push(err);\n\n setTimeout(() => {\n if (__DEBUG__) {\n // $FlowFixMe\n throw new Error(`${ err.stack || err.toString() }\\n\\nFrom promise:\\n\\n${ promise.stack }`);\n }\n\n throw err;\n }, 1);\n\n for (let j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) {\n // $FlowFixMe\n possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n}\n\nexport function onPossiblyUnhandledException(handler : (mixed, promise? : ZalgoPromise) => void) : {| cancel : () => void |} {\n possiblyUnhandledPromiseHandlers.push(handler);\n\n return {\n cancel() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n}\n","/* @flow */\n\nimport type { ZalgoPromise } from './promise';\n\nlet activeCount = 0;\nlet flushPromise;\n\nfunction flushActive() {\n if (!activeCount && flushPromise) {\n const promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n}\n\nexport function startActive() {\n activeCount += 1;\n}\n\nexport function endActive() {\n activeCount -= 1;\n flushActive();\n}\n\nexport function awaitActive(Zalgo : Class>) : ZalgoPromise { // eslint-disable-line no-undef\n const promise = flushPromise = flushPromise || new Zalgo();\n flushActive();\n return promise;\n}\n","/* @flow */\n/* eslint no-use-before-define: off */\n\nimport { isPromise } from './utils';\nimport { onPossiblyUnhandledException, dispatchPossiblyUnhandledError } from './exceptions';\nimport { startActive, endActive, awaitActive } from './flush';\n\nexport class ZalgoPromise {\n\n resolved : boolean;\n rejected : boolean;\n errorHandled : boolean;\n value : R;\n error : mixed;\n // eslint-disable-next-line flowtype/no-mutable-array\n handlers : Array<{|\n promise : ZalgoPromise<*>,\n onSuccess : void | (result : R) => mixed,\n onError : void | (error : mixed) => mixed\n |}>;\n dispatching : boolean;\n stack : string;\n\n constructor(handler : ?(resolve : (result : R) => void, reject : (error : mixed) => void) => void) {\n\n this.resolved = false;\n this.rejected = false;\n this.errorHandled = false;\n\n this.handlers = [];\n\n if (handler) {\n\n let result;\n let error;\n let resolved = false;\n let rejected = false;\n let isAsync = false;\n\n startActive();\n\n try {\n handler(res => {\n if (isAsync) {\n this.resolve(res);\n } else {\n resolved = true;\n result = res;\n }\n\n }, err => {\n if (isAsync) {\n this.reject(err);\n } else {\n rejected = true;\n error = err;\n }\n });\n\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n\n endActive();\n\n isAsync = true;\n\n if (resolved) {\n // $FlowFixMe\n this.resolve(result);\n } else if (rejected) {\n this.reject(error);\n }\n }\n\n if (__DEBUG__) {\n try {\n throw new Error(`ZalgoPromise`);\n } catch (err) {\n this.stack = err.stack;\n }\n }\n }\n\n resolve(result : R) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(result)) {\n throw new Error('Can not resolve promise with another promise');\n }\n\n this.resolved = true;\n this.value = result;\n this.dispatch();\n\n return this;\n }\n\n reject(error : mixed) : ZalgoPromise {\n if (this.resolved || this.rejected) {\n return this;\n }\n\n if (isPromise(error)) {\n throw new Error('Can not reject promise with another promise');\n }\n\n if (!error) {\n // $FlowFixMe\n const err = (error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error));\n error = new Error(`Expected reject to be called with Error, got ${ err }`);\n }\n\n this.rejected = true;\n this.error = error;\n\n if (!this.errorHandled) {\n setTimeout(() => {\n if (!this.errorHandled) {\n dispatchPossiblyUnhandledError(error, this);\n }\n }, 1);\n }\n\n this.dispatch();\n\n return this;\n }\n\n asyncReject(error : mixed) : ZalgoPromise {\n this.errorHandled = true;\n this.reject(error);\n return this;\n }\n\n dispatch() {\n\n const { dispatching, resolved, rejected, handlers } = this;\n\n if (dispatching) {\n return;\n }\n\n if (!resolved && !rejected) {\n return;\n }\n\n this.dispatching = true;\n startActive();\n\n const chain = (firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n secondPromise.resolve(res);\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < handlers.length; i++) {\n\n const { onSuccess, onError, promise } = handlers[i];\n\n let result;\n\n if (resolved) {\n\n try {\n result = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n }\n\n } else if (rejected) {\n\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n\n try {\n result = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n const promiseResult : ZalgoPromise<*> = result;\n\n if (promiseResult.resolved) {\n promise.resolve(promiseResult.value);\n } else {\n promise.reject(promiseResult.error);\n }\n\n promiseResult.errorHandled = true;\n\n } else if (isPromise(result)) {\n\n if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {\n if (result.resolved) {\n promise.resolve(result.value);\n } else {\n promise.reject(result.error);\n }\n\n } else {\n // $FlowFixMe\n chain(result, promise);\n }\n\n } else {\n\n promise.resolve(result);\n }\n }\n\n handlers.length = 0;\n this.dispatching = false;\n endActive();\n }\n\n then(onSuccess : void | (result : R) => (ZalgoPromise | Y), onError : void | (error : mixed) => (ZalgoPromise | Y)) : ZalgoPromise {\n\n if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {\n throw new Error('Promise.then expected a function for success handler');\n }\n\n if (onError && typeof onError !== 'function' && !onError.call) {\n throw new Error('Promise.then expected a function for error handler');\n }\n\n const promise = new ZalgoPromise();\n\n this.handlers.push({\n promise,\n onSuccess,\n onError\n });\n\n this.errorHandled = true;\n\n this.dispatch();\n\n return promise;\n }\n\n catch(onError : (error : mixed) => ZalgoPromise | Y) : ZalgoPromise {\n // $FlowFixMe incompatible-call\n const resultPromise : ZalgoPromise = this.then(undefined, onError);\n return resultPromise;\n }\n\n finally(onFinally : () => mixed) : ZalgoPromise {\n\n if (onFinally && typeof onFinally !== 'function' && !onFinally.call) {\n throw new Error('Promise.finally expected a function');\n }\n\n return this.then((result) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n return result;\n });\n }, (err) => {\n return ZalgoPromise.try(onFinally)\n .then(() => {\n throw err;\n });\n });\n }\n\n timeout(time : number, err : ?Error) : ZalgoPromise {\n\n if (this.resolved || this.rejected) {\n return this;\n }\n\n const timeout = setTimeout(() => {\n\n if (this.resolved || this.rejected) {\n return;\n }\n\n this.reject(err || new Error(`Promise timed out after ${ time }ms`));\n\n }, time);\n\n return this.then(result => {\n clearTimeout(timeout);\n return result;\n });\n }\n\n // $FlowFixMe\n toPromise() : Promise {\n // $FlowFixMe\n if (typeof Promise === 'undefined') {\n throw new TypeError(`Could not find Promise`);\n }\n // $FlowFixMe\n return Promise.resolve(this); // eslint-disable-line compat/compat\n }\n\n lazy() : ZalgoPromise {\n this.errorHandled = true;\n return this;\n }\n\n static resolve(value : ZalgoPromise | Y) : ZalgoPromise {\n\n if (value instanceof ZalgoPromise) {\n // $FlowFixMe incompatible-type-arg\n const result : ZalgoPromise = value;\n return result;\n }\n\n if (isPromise(value)) {\n // $FlowFixMe\n return new ZalgoPromise((resolve, reject) => value.then(resolve, reject));\n }\n\n return new ZalgoPromise().resolve(value);\n }\n\n static reject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().reject(error);\n }\n\n static asyncReject(error : mixed) : ZalgoPromise {\n return new ZalgoPromise().asyncReject(error);\n }\n\n static all>(promises : X) : ZalgoPromise<$TupleMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n\n const promise = new ZalgoPromise();\n let count = promises.length;\n // eslint-disable-next-line no-undef, unicorn/prefer-spread\n const results = ([] : $TupleMap(ZalgoPromise | Y) => Y>).slice();\n\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n\n const chain = (i : number, firstPromise : ZalgoPromise, secondPromise : ZalgoPromise) => {\n return firstPromise.then(res => {\n results[i] = res;\n count -= 1;\n if (count === 0) {\n promise.resolve(results);\n }\n }, err => {\n secondPromise.reject(err);\n });\n };\n\n for (let i = 0; i < promises.length; i++) {\n const prom = promises[i];\n\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n\n if (count === 0) {\n promise.resolve(results);\n }\n\n return promise;\n }\n\n static hash(promises : O) : ZalgoPromise<$ObjMap(ZalgoPromise | Y) => Y>> { // eslint-disable-line no-undef\n const result = {};\n const awaitPromises = [];\n\n for (const key in promises) {\n if (promises.hasOwnProperty(key)) {\n const value = promises[key];\n\n if (isPromise(value)) {\n awaitPromises.push(value.then(res => {\n result[key] = res;\n }));\n } else {\n result[key] = value;\n }\n }\n }\n\n return ZalgoPromise.all(awaitPromises).then(() => result);\n }\n\n static map(items : $ReadOnlyArray, method : (T) => (ZalgoPromise | X)) : ZalgoPromise<$ReadOnlyArray> {\n // $FlowFixMe\n return ZalgoPromise.all(items.map(method));\n }\n\n static onPossiblyUnhandledException(handler : (err : mixed) => void) : {| cancel : () => void |} {\n return onPossiblyUnhandledException(handler);\n }\n\n static try>(method : (...args : $ReadOnlyArray) => (ZalgoPromise | Y), context? : C, args? : A) : ZalgoPromise {\n\n if (method && typeof method !== 'function' && !method.call) {\n throw new Error('Promise.try expected a function');\n }\n\n let result : ZalgoPromise | Y;\n\n startActive();\n\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n\n endActive();\n\n // $FlowFixMe incompatible-call\n const resultPromise = ZalgoPromise.resolve(result);\n\n return resultPromise;\n }\n\n static delay(delay : number) : ZalgoPromise {\n return new ZalgoPromise(resolve => {\n setTimeout(resolve, delay);\n });\n }\n\n static isPromise(value : mixed) : boolean {\n\n if (value && value instanceof ZalgoPromise) {\n return true;\n }\n\n return isPromise(value);\n }\n\n static flush() : ZalgoPromise {\n return awaitActive(ZalgoPromise);\n }\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","/* @flow */\n\nexport const PROTOCOL = {\n MOCK: ('mock:' : 'mock:'),\n FILE: ('file:' : 'file:'),\n ABOUT: ('about:' : 'about:')\n};\n\nexport const WILDCARD = '*';\n\nexport const WINDOW_TYPE = {\n IFRAME: ('iframe' : 'iframe'),\n POPUP: ('popup' : 'popup')\n};\n","/* @flow */\n/* eslint max-lines: 0 */\n\nimport { isRegex, noop } from './util';\nimport type { CrossDomainWindowType, SameDomainWindowType, DomainMatcher } from './types';\nimport { PROTOCOL, WILDCARD } from './constants';\n\nconst IE_WIN_ACCESS_ERROR = 'Call was rejected by callee.\\r\\n';\n\nexport function getActualProtocol(win : SameDomainWindowType = window) : ?string {\n return win.location.protocol;\n}\n\nexport function getProtocol(win : SameDomainWindowType = window) : ?string {\n if (win.mockDomain) {\n const protocol = win.mockDomain.split('//')[0];\n\n if (protocol) {\n return protocol;\n }\n }\n\n return getActualProtocol(win);\n}\n\nexport function isFileProtocol(win : SameDomainWindowType = window) : boolean {\n return getProtocol(win) === PROTOCOL.FILE;\n}\n\nexport function isAboutProtocol(win : SameDomainWindowType = window) : boolean {\n return getProtocol(win) === PROTOCOL.ABOUT;\n}\n\nexport function isMockProtocol(win : SameDomainWindowType = window) : boolean {\n return getProtocol(win) === PROTOCOL.MOCK;\n}\n\nexport function getParent(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n try {\n if (win.parent && win.parent !== win) {\n return win.parent;\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function getOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n if (!win) {\n return;\n }\n\n // Make sure we're not actually an iframe which has had window.open() called on us\n if (getParent(win)) {\n return;\n }\n\n try {\n return win.opener;\n } catch (err) {\n // pass\n }\n}\n\nexport function canReadFromWindow(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n noop(win && win.location && win.location.href);\n return true;\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function getActualDomain(win? : SameDomainWindowType = window) : string {\n\n const location = win.location;\n\n if (!location) {\n throw new Error(`Can not read window location`);\n }\n\n const protocol = getActualProtocol(win);\n\n if (!protocol) {\n throw new Error(`Can not read window protocol`);\n }\n\n if (protocol === PROTOCOL.FILE) {\n return `${ PROTOCOL.FILE }//`;\n }\n\n if (protocol === PROTOCOL.ABOUT) {\n\n const parent = getParent(win);\n if (parent && canReadFromWindow(parent)) {\n // $FlowFixMe\n return getActualDomain(parent);\n }\n\n return `${ PROTOCOL.ABOUT }//`;\n }\n\n const host = location.host;\n\n if (!host) {\n throw new Error(`Can not read window host`);\n }\n\n return `${ protocol }//${ host }`;\n}\n\nexport function getDomain(win? : SameDomainWindowType = window) : string {\n\n const domain = getActualDomain(win);\n\n if (domain && win.mockDomain && win.mockDomain.indexOf(PROTOCOL.MOCK) === 0) {\n return win.mockDomain;\n }\n\n return domain;\n}\n\nexport function isBlankDomain(win : CrossDomainWindowType) : boolean {\n try {\n // $FlowFixMe\n if (!win.location.href) {\n return true;\n }\n\n if (win.location.href === 'about:blank') {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isActuallySameDomain(win : CrossDomainWindowType) : boolean {\n\n try {\n if (win === window) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n const desc = Object.getOwnPropertyDescriptor(win, 'location');\n\n if (desc && desc.enumerable === false) {\n return false;\n }\n\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (isMockProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n try {\n // $FlowFixMe\n if (getActualDomain(win) === getActualDomain(window)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : boolean {\n\n if (!isActuallySameDomain(win)) {\n return false;\n }\n\n try {\n if (win === window) {\n return true;\n }\n \n // $FlowFixMe\n if (isAboutProtocol(win) && canReadFromWindow(win)) {\n return true;\n }\n\n // $FlowFixMe\n if (getDomain(window) === getDomain(win)) {\n return true;\n }\n\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\n\nexport function assertSameDomain(win : CrossDomainWindowType | SameDomainWindowType) : SameDomainWindowType {\n if (!isSameDomain(win)) {\n throw new Error(`Expected window to be same domain`);\n }\n\n // $FlowFixMe\n return win;\n}\n\nexport function getParents(win : CrossDomainWindowType) : $ReadOnlyArray {\n\n const result = [];\n\n try {\n\n while (win.parent !== win) {\n result.push(win.parent);\n win = win.parent;\n }\n\n } catch (err) {\n // pass\n }\n\n return result;\n}\n\nexport function isAncestorParent(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n if (!parent || !child) {\n return false;\n }\n\n const childParent = getParent(child);\n\n if (childParent) {\n return childParent === parent;\n }\n\n if (getParents(child).indexOf(parent) !== -1) {\n return true;\n }\n\n return false;\n}\n\nexport function getFrames(win : CrossDomainWindowType) : $ReadOnlyArray {\n\n const result = [];\n\n let frames;\n\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n\n let len;\n\n try {\n len = frames.length;\n } catch (err) {\n // pass\n }\n\n if (len === 0) {\n return result;\n }\n\n if (len) {\n for (let i = 0; i < len; i++) {\n\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n\n result.push(frame);\n }\n\n return result;\n }\n\n for (let i = 0; i < 100; i++) {\n let frame;\n\n try {\n frame = frames[i];\n } catch (err) {\n return result;\n }\n\n if (!frame) {\n return result;\n }\n\n result.push(frame);\n }\n\n return result;\n}\n\n\nexport function getAllChildFrames(win : CrossDomainWindowType) : $ReadOnlyArray {\n\n const result = [];\n\n for (const frame of getFrames(win)) {\n result.push(frame);\n\n for (const childFrame of getAllChildFrames(frame)) {\n result.push(childFrame);\n }\n }\n\n return result;\n}\n\nexport function getTop(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n\n try {\n if (win.top) {\n return win.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(win) === win) {\n return win;\n }\n\n try {\n if (isAncestorParent(window, win) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (isAncestorParent(win, window) && window.top) {\n return window.top;\n }\n } catch (err) {\n // pass\n }\n\n for (const frame of getAllChildFrames(win)) {\n try {\n if (frame.top) {\n return frame.top;\n }\n } catch (err) {\n // pass\n }\n\n if (getParent(frame) === frame) {\n return frame;\n }\n }\n}\n\nexport function getNextOpener(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n return getOpener(getTop(win) || win);\n}\n\nexport function getUltimateTop(win? : CrossDomainWindowType = window) : CrossDomainWindowType {\n const opener = getNextOpener(win);\n\n if (opener) {\n return getUltimateTop(opener);\n }\n\n return top;\n}\n\nexport function getAllFramesInWindow(win : CrossDomainWindowType) : $ReadOnlyArray {\n const top = getTop(win);\n\n if (!top) {\n throw new Error(`Can not determine top window`);\n }\n\n let result = [ ...getAllChildFrames(top), top ];\n\n // Win may be in shadow dom\n if (result.indexOf(win) === -1) {\n result = [ ...result, win, ...getAllChildFrames(win) ];\n }\n\n return result;\n}\n\nexport function getAllWindows(win? : CrossDomainWindowType = window) : $ReadOnlyArray {\n const frames = getAllFramesInWindow(win);\n const opener = getNextOpener(win);\n\n if (opener) {\n return [ ...getAllWindows(opener), ...frames ];\n } else {\n return frames;\n }\n}\n\nexport function isTop(win : CrossDomainWindowType) : boolean {\n return win === getTop(win);\n}\n\nexport function isFrameWindowClosed(frame : HTMLIFrameElement) : boolean {\n\n if (!frame.contentWindow) {\n return true;\n }\n\n if (!frame.parentNode) {\n return true;\n }\n\n const doc = frame.ownerDocument;\n\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n let parent = frame;\n\n while (parent.parentNode && parent.parentNode !== parent) {\n parent = parent.parentNode;\n }\n\n // $FlowFixMe\n if (!parent.host || !doc.documentElement.contains(parent.host)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction safeIndexOf(collection : $ReadOnlyArray, item : T) : number {\n for (let i = 0; i < collection.length; i++) {\n\n try {\n if (collection[i] === item) {\n return i;\n }\n } catch (err) {\n // pass\n }\n }\n\n return -1;\n}\n\nconst iframeWindows = [];\nconst iframeFrames = [];\n\nexport function isWindowClosed(win : CrossDomainWindowType, allowMock : boolean = true) : boolean {\n\n try {\n if (win === window) {\n return false;\n }\n } catch (err) {\n return true;\n }\n\n try {\n if (!win) {\n return true;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (win.closed) {\n return true;\n }\n\n } catch (err) {\n\n // I love you so much IE\n\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return false;\n }\n\n return true;\n }\n\n\n if (allowMock && isSameDomain(win)) {\n try {\n // $FlowFixMe\n if (win.mockclosed) {\n return true;\n }\n } catch (err) {\n // pass\n }\n }\n\n // Mobile safari\n\n try {\n if (!win.parent || !win.top) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n // Yes, this actually happens in IE. win === win errors out when the window\n // is from an iframe, and the iframe was removed from the page.\n\n try {\n noop(win === win); // eslint-disable-line no-self-compare\n } catch (err) {\n return true;\n }\n\n // IE orphaned frame\n\n const iframeIndex = safeIndexOf(iframeWindows, win);\n\n if (iframeIndex !== -1) {\n const frame = iframeFrames[iframeIndex];\n\n if (frame && isFrameWindowClosed(frame)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction cleanIframes() {\n for (let i = 0; i < iframeWindows.length; i++) {\n let closed = false;\n\n try {\n closed = iframeWindows[i].closed;\n } catch (err) {\n // pass\n }\n\n if (closed) {\n iframeFrames.splice(i, 1);\n iframeWindows.splice(i, 1);\n }\n }\n}\n\nexport function linkFrameWindow(frame : HTMLIFrameElement) {\n\n cleanIframes();\n\n if (frame && frame.contentWindow) {\n try {\n iframeWindows.push(frame.contentWindow);\n iframeFrames.push(frame);\n } catch (err) {\n // pass\n }\n }\n}\n\nexport function getUserAgent(win : ?SameDomainWindowType) : string {\n win = win || window;\n return win.navigator.mockUserAgent || win.navigator.userAgent;\n}\n\n\nexport function getFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n const winFrames = getFrames(win);\n\n for (const childFrame of winFrames) {\n try {\n // $FlowFixMe\n if (isSameDomain(childFrame) && childFrame.name === name && winFrames.indexOf(childFrame) !== -1) {\n return childFrame;\n }\n } catch (err) {\n // pass\n }\n }\n\n try {\n // $FlowFixMe\n if (winFrames.indexOf(win.frames[name]) !== -1) {\n // $FlowFixMe\n return win.frames[name];\n }\n } catch (err) {\n // pass\n }\n\n try {\n if (winFrames.indexOf(win[name]) !== -1) {\n return win[name];\n }\n } catch (err) {\n // pass\n }\n}\n\nexport function findChildFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n\n const frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n for (const childFrame of getFrames(win)) {\n const namedFrame = findChildFrameByName(childFrame, name);\n\n if (namedFrame) {\n return namedFrame;\n }\n }\n}\n\nexport function findFrameByName(win : CrossDomainWindowType, name : string) : ?CrossDomainWindowType {\n const frame = getFrameByName(win, name);\n\n if (frame) {\n return frame;\n }\n\n const top = getTop(win) || win;\n\n return findChildFrameByName(top, name);\n}\n\nexport function isParent(win : CrossDomainWindowType, frame : CrossDomainWindowType) : boolean {\n\n const frameParent = getParent(frame);\n\n if (frameParent) {\n return frameParent === win;\n }\n\n for (const childFrame of getFrames(win)) {\n if (childFrame === frame) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isOpener(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n return parent === getOpener(child);\n}\n\nexport function getAncestor(win? : CrossDomainWindowType = window) : ?CrossDomainWindowType {\n win = win || window;\n\n const opener = getOpener(win);\n\n if (opener) {\n return opener;\n }\n\n const parent = getParent(win);\n\n if (parent) {\n return parent;\n }\n}\n\nexport function getAncestors(win : CrossDomainWindowType) : $ReadOnlyArray {\n\n const results = [];\n\n let ancestor = win;\n\n while (ancestor) {\n ancestor = getAncestor(ancestor);\n if (ancestor) {\n results.push(ancestor);\n }\n }\n\n return results;\n}\n\n\nexport function isAncestor(parent : CrossDomainWindowType, child : CrossDomainWindowType) : boolean {\n\n const actualParent = getAncestor(child);\n\n if (actualParent) {\n if (actualParent === parent) {\n return true;\n }\n\n return false;\n }\n\n if (child === parent) {\n return false;\n }\n\n if (getTop(child) === child) {\n return false;\n }\n\n for (const frame of getFrames(parent)) {\n if (frame === child) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isPopup(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getOpener(win));\n}\n\nexport function isIframe(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(getParent(win));\n}\n\nexport function isFullpage(win? : CrossDomainWindowType = window) : boolean {\n return Boolean(!isIframe(win) && !isPopup(win));\n}\n\nfunction anyMatch(collection1, collection2) : boolean {\n\n for (const item1 of collection1) {\n for (const item2 of collection2) {\n if (item1 === item2) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function getDistanceFromTop(win : CrossDomainWindowType = window) : number {\n let distance = 0;\n let parent = win;\n\n while (parent) {\n parent = getParent(parent);\n if (parent) {\n distance += 1;\n }\n }\n\n return distance;\n}\n\nexport function getNthParent(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n let parent = win;\n\n for (let i = 0; i < n; i++) {\n if (!parent) {\n return;\n }\n\n parent = getParent(parent);\n }\n\n return parent;\n}\n\nexport function getNthParentFromTop(win : CrossDomainWindowType, n : number = 1) : ?CrossDomainWindowType {\n return getNthParent(win, getDistanceFromTop(win) - n);\n}\n\nexport function isSameTopWindow(win1 : CrossDomainWindowType, win2 : CrossDomainWindowType) : boolean {\n\n const top1 = getTop(win1) || win1;\n const top2 = getTop(win2) || win2;\n\n try {\n if (top1 && top2) {\n if (top1 === top2) {\n return true;\n }\n\n return false;\n }\n } catch (err) {\n // pass\n }\n\n const allFrames1 = getAllFramesInWindow(win1);\n const allFrames2 = getAllFramesInWindow(win2);\n\n if (anyMatch(allFrames1, allFrames2)) {\n return true;\n }\n\n const opener1 = getOpener(top1);\n const opener2 = getOpener(top2);\n\n if (opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2)) {\n return false;\n }\n\n if (opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1)) {\n return false;\n }\n\n return false;\n}\n\nexport function matchDomain(pattern : DomainMatcher, origin : DomainMatcher) : boolean {\n\n if (typeof pattern === 'string') {\n\n if (typeof origin === 'string') {\n return pattern === WILDCARD || origin === pattern;\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n }\n\n if (isRegex(pattern)) {\n\n if (isRegex(origin)) {\n return pattern.toString() === origin.toString();\n }\n\n if (Array.isArray(origin)) {\n return false;\n }\n\n // $FlowFixMe\n return Boolean(origin.match(pattern));\n }\n\n if (Array.isArray(pattern)) {\n\n if (Array.isArray(origin)) {\n return JSON.stringify(pattern) === JSON.stringify(origin);\n }\n\n if (isRegex(origin)) {\n return false;\n }\n\n return pattern.some(subpattern => matchDomain(subpattern, origin));\n }\n\n return false;\n}\n\nexport function stringifyDomainPattern(pattern : DomainMatcher) : string {\n if (Array.isArray(pattern)) {\n return `(${ pattern.join(' | ') })`;\n } else if (isRegex(pattern)) {\n return `RegExp(${ pattern.toString() })`;\n } else {\n return pattern.toString();\n }\n}\n\nexport function getDomainFromUrl(url : string) : string {\n\n let domain;\n\n if (url.match(/^(https?|mock|file):\\/\\//)) {\n domain = url;\n } else {\n return getDomain();\n }\n\n domain = domain.split('/').slice(0, 3).join('/');\n\n return domain;\n}\n\nexport function onCloseWindow(win : CrossDomainWindowType, callback : Function, delay : number = 1000, maxtime : number = Infinity) : {| cancel : () => void |} {\n\n let timeout;\n\n const check = () => {\n\n if (isWindowClosed(win)) {\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n return callback();\n }\n\n if (maxtime <= 0) {\n clearTimeout(timeout);\n } else {\n maxtime -= delay;\n timeout = setTimeout(check, delay);\n }\n };\n\n check();\n\n return {\n cancel() {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n };\n}\n\n// eslint-disable-next-line complexity\nexport function isWindow(obj : Object) : boolean {\n\n try {\n if (obj === window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n // $FlowFixMe method-unbinding\n if (Object.prototype.toString.call(obj) === '[object Window]') {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (window.Window && obj instanceof window.Window) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.self === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.parent === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (obj && obj.top === obj) {\n return true;\n }\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) {\n return true;\n }\n }\n\n try {\n if (noop(obj === obj) === '__unlikely_value__') { // eslint-disable-line no-self-compare\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if (obj && obj.__cross_domain_utils_window_check__ === '__unlikely_value__') {\n return false;\n }\n\n } catch (err) {\n return true;\n }\n\n try {\n if ('postMessage' in obj && 'self' in obj && 'location' in obj) {\n return true;\n }\n } catch (err) {\n // pass\n }\n\n return false;\n}\n\nexport function isBrowser() : boolean {\n return (typeof window !== 'undefined' && typeof window.location !== 'undefined');\n}\n\nexport function isCurrentDomain(domain : string) : boolean {\n if (!isBrowser()) {\n return false;\n }\n\n return (getDomain() === domain);\n}\n\nexport function isMockDomain(domain : string) : boolean {\n return domain.indexOf(PROTOCOL.MOCK) === 0;\n}\n\nexport function normalizeMockUrl(url : string) : string {\n if (!isMockDomain(getDomainFromUrl(url))) {\n return url;\n }\n\n if (!__TEST__) {\n throw new Error(`Mock urls not supported out of test mode`);\n }\n\n return url.replace(/^mock:\\/\\/[^/]+/, getActualDomain(window));\n}\n\nexport function getFrameForWindow(win : CrossDomainWindowType) : ?HTMLElement {\n if (isSameDomain(win)) {\n return assertSameDomain(win).frameElement;\n }\n\n for (const frame of document.querySelectorAll('iframe')) {\n if (frame && frame.contentWindow && frame.contentWindow === win) {\n return frame;\n }\n }\n}\n\nexport function closeWindow(win : CrossDomainWindowType) {\n if (isIframe(win)) {\n const frame = getFrameForWindow(win);\n if (frame && frame.parentElement) {\n frame.parentElement.removeChild(frame);\n return;\n }\n }\n\n try {\n win.close();\n } catch (err) {\n // pass\n }\n}\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","/* @flow */\n\nimport {\n ENV,\n PROTOCOL,\n COMPONENTS,\n PLATFORM,\n type FundingEligibilityType,\n} from \"@paypal/sdk-constants/src\";\nimport { isDevice } from \"@krakenjs/belter/src\";\n\nexport function getSDKHost(): string {\n return __SDK_HOST__;\n}\n\nexport function getProtocol(): $Values {\n return typeof __PROTOCOL__ !== \"undefined\" ? __PROTOCOL__ : PROTOCOL.HTTPS;\n}\n\nexport function getHost(): string {\n return __HOST__;\n}\n\nexport function getHostName(): string {\n return __HOSTNAME__;\n}\n\nexport function getPort(): number {\n return __PORT__;\n}\n\nexport function getPath(): string {\n return __PATH__;\n}\n\nexport function getEnv(): $Values {\n return __ENV__;\n}\n\nexport function getPayPalDomain(): string {\n return __PAYPAL_DOMAIN__;\n}\n\nexport function getPayPalAPIDomain(): string {\n return __PAYPAL_API_DOMAIN__;\n}\n\nexport function getDefaultServiceStageHost(): ?string {\n if (\n typeof __SERVICE_STAGE_HOST__ !== \"undefined\" &&\n __SERVICE_STAGE_HOST__ !== null\n ) {\n return __SERVICE_STAGE_HOST__;\n }\n}\n\nexport function getDefaultStageHost(): ?string {\n if (typeof __STAGE_HOST__ !== \"undefined\" && __STAGE_HOST__ !== null) {\n return __STAGE_HOST__;\n }\n}\n\nexport function getDefaultAPIStageHost(): ?string {\n const serviceStageHost = getDefaultServiceStageHost();\n const stageHost = getDefaultStageHost();\n\n if (serviceStageHost) {\n return serviceStageHost;\n } else if (stageHost) {\n return stageHost;\n }\n}\n\nexport function getStageHost(): ?string {\n return getDefaultStageHost();\n}\n\nexport function getAPIStageHost(): ?string {\n const defaultAPIStageHost = getDefaultAPIStageHost();\n\n if (defaultAPIStageHost) {\n return defaultAPIStageHost.replace(\"www.\", \"api.\");\n }\n}\n\nexport function getVersion(): string {\n return __VERSION__;\n}\n\nexport function getCorrelationID(): string {\n return __CORRELATION_ID__;\n}\n\nexport function getDefaultNamespace(): string {\n return __NAMESPACE__;\n}\n\nexport function getDebug(): boolean {\n return __DEBUG__;\n}\n\nexport function getComponents(): $ReadOnlyArray<$Values> {\n return __COMPONENTS__;\n}\n\nexport function getFundingEligibility(): FundingEligibilityType {\n return __FUNDING_ELIGIBILITY__;\n}\n\nexport function getPlatform(): $Values {\n return isDevice() ? PLATFORM.MOBILE : PLATFORM.DESKTOP;\n}\n","/* @flow */\n\nexport const SUPPORTED_BROWSERS = {\n msie: \"11\",\n firefox: \"30\",\n chrome: \"27\",\n safari: \"7\",\n opera: \"16\",\n msedge: \"12\",\n samsungBrowser: \"2.1\",\n silk: \"59.3\",\n ucbrowser: \"10.0.0.488\",\n vivaldi: \"1.91\",\n};\n\nconst SANDBOX_ALIAS =\n \"AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R\";\n\nexport const CLIENT_ID_ALIAS = {\n sandbox: SANDBOX_ALIAS,\n sb: SANDBOX_ALIAS,\n test: SANDBOX_ALIAS,\n};\n\nexport const URI = {\n LOGGER: `/xoplatform/logger/api/logger`,\n AUTH: `/v1/oauth2/token`,\n ORDER: `/v2/checkout/orders`,\n};\n","/* @flow */\n\nimport {\n getCurrentScriptUID,\n ATTRIBUTES,\n parseQuery,\n getBrowserLocales,\n base64decode,\n values,\n getCurrentScript,\n memoize,\n stringifyError,\n getScript,\n} from \"@krakenjs/belter/src\";\nimport {\n COUNTRY,\n SDK_SETTINGS,\n SDK_QUERY_KEYS,\n INTENT,\n COMMIT,\n VAULT,\n CURRENCY,\n FUNDING,\n CARD,\n COUNTRY_LANGS,\n DEFAULT_INTENT,\n DEFAULT_CURRENCY,\n DEFAULT_VAULT,\n QUERY_BOOL,\n LANG,\n type LocaleType,\n DEFAULT_SALE_COMMIT,\n DEFAULT_NONSALE_COMMIT,\n PAGE_TYPES,\n} from \"@paypal/sdk-constants/src\";\n\nimport { getPath, getDefaultNamespace, getSDKHost } from \"./global\";\nimport { CLIENT_ID_ALIAS } from \"./config\";\nimport { getComputedLocales } from \"./utils\";\n\ntype GetSDKScript = () => HTMLScriptElement;\n\nconst buildScriptNotFoundError = (host, path, error) => {\n const errorString = error ? stringifyError(error) : \"\";\n\n return new Error(\n `PayPal Payments SDK script not found on page! Expected to find