{"version":3,"sources":["webpack://crc/webpack/bootstrap","webpack://crc/./node_modules/core-js-pure/internals/global.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/core-js-pure/internals/well-known-symbol.js","webpack://crc/./node_modules/core-js-pure/internals/fails.js","webpack://crc/./node_modules/core-js-pure/stable/object/entries.js","webpack://crc/./node_modules/core-js-pure/internals/export.js","webpack://crc/./node_modules/core-js-pure/internals/descriptors.js","webpack://crc/./node_modules/core-js-pure/stable/array/find.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/includes.js","webpack://crc/./node_modules/core-js-pure/internals/is-object.js","webpack://crc/./node_modules/core-js-pure/internals/an-object.js","webpack://crc/./node_modules/core-js-pure/internals/to-object.js","webpack://crc/./node_modules/core-js-pure/stable/array/from.js","webpack://crc/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://crc/./node_modules/core-js-pure/internals/require-object-coercible.js","webpack://crc/./node_modules/core-js-pure/internals/get-built-in.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/internals/entry-unbind.js","webpack://crc/./node_modules/core-js-pure/stable/string/starts-with.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/classof-raw.js","webpack://crc/./node_modules/core-js-pure/internals/a-callable.js","webpack://crc/./node_modules/core-js-pure/internals/is-pure.js","webpack://crc/./node_modules/core-js-pure/internals/function-bind-context.js","webpack://crc/./node_modules/core-js-pure/internals/object-define-property.js","webpack://crc/./node_modules/core-js-pure/internals/classof.js","webpack://crc/./node_modules/core-js-pure/internals/to-string.js","webpack://crc/./node_modules/core-js-pure/internals/iterators.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/object-keys.js","webpack://crc/./node_modules/core-js-pure/internals/to-integer-or-infinity.js","webpack://crc/./node_modules/core-js-pure/internals/hidden-keys.js","webpack://crc/./node_modules/core-js-pure/internals/to-string-tag-support.js","webpack://crc/./node_modules/core-js-pure/internals/add-to-unscopables.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/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/native-symbol.js","webpack://crc/./node_modules/core-js-pure/internals/try-to-string.js","webpack://crc/./node_modules/core-js-pure/internals/shared.js","webpack://crc/./node_modules/core-js-pure/internals/uid.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/enum-bug-keys.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/inspect-source.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-create.js","webpack://crc/./node_modules/core-js-pure/internals/object-get-prototype-of.js","webpack://crc/./node_modules/core-js-pure/internals/redefine.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/stable/object/assign.js","webpack://crc/./node_modules/core-js-pure/stable/array/flat-map.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/function-apply.js","webpack://crc/./node_modules/core-js-pure/internals/to-primitive.js","webpack://crc/./node_modules/core-js-pure/internals/object-is-prototype-of.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/set-global.js","webpack://crc/./node_modules/core-js-pure/internals/is-forced.js","webpack://crc/./node_modules/core-js-pure/internals/object-to-array.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/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-iteration.js","webpack://crc/./node_modules/core-js-pure/internals/array-species-constructor.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/assign.js","webpack://crc/./node_modules/core-js-pure/modules/es.object.assign.js","webpack://crc/./node_modules/core-js-pure/internals/object-assign.js","webpack://crc/./node_modules/core-js-pure/internals/object-get-own-property-symbols.js","webpack://crc/./node_modules/core-js-pure/es/array/from.js","webpack://crc/./node_modules/core-js-pure/modules/es.string.iterator.js","webpack://crc/./node_modules/core-js-pure/internals/string-multibyte.js","webpack://crc/./node_modules/core-js-pure/internals/internal-state.js","webpack://crc/./node_modules/core-js-pure/internals/native-weak-map.js","webpack://crc/./node_modules/core-js-pure/internals/define-iterator.js","webpack://crc/./node_modules/core-js-pure/internals/function-name.js","webpack://crc/./node_modules/core-js-pure/internals/create-iterator-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/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/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/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/modules/es.array.unscopables.flat-map.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/grumbler-scripts/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://crc/./node_modules/zalgo-promise/src/utils.js","webpack://crc/./node_modules/zalgo-promise/src/exceptions.js","webpack://crc/./node_modules/zalgo-promise/src/flush.js","webpack://crc/./node_modules/zalgo-promise/src/promise.js","webpack://crc/./node_modules/cross-domain-utils/src/utils.js","webpack://crc/./node_modules/cross-domain-utils/src/constants.js","webpack://crc/./node_modules/cross-domain-safe-weakmap/src/util.js","webpack://crc/./node_modules/cross-domain-safe-weakmap/src/weakmap.js","webpack://crc/./node_modules/belter/src/util.js","webpack://crc/./node_modules/cross-domain-safe-weakmap/src/native.js","webpack://crc/./node_modules/belter/src/dom.js","webpack://crc/./node_modules/belter/src/constants.js","webpack://crc/./node_modules/belter/src/storage.js","webpack://crc/./node_modules/belter/src/http.js","webpack://crc/./node_modules/jsx-pragmatic/src/node.js","webpack://crc/./node_modules/jsx-pragmatic/src/constants.js","webpack://crc/./node_modules/jsx-pragmatic/src/renderers/dom.js","webpack://crc/./node_modules/jsx-pragmatic/src/util.js","webpack://crc/./src/utils/functional.js","webpack://crc/./src/utils/miscellaneous.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/beaver-logger/src/constants.js","webpack://crc/./node_modules/beaver-logger/src/config.js","webpack://crc/./node_modules/beaver-logger/src/util.js","webpack://crc/./node_modules/beaver-logger/src/logger.js","webpack://crc/./node_modules/beaver-logger/src/http.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/./src/utils/elements.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","webpack://crc/./src/utils/debug.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","check","it","Math","globalThis","window","self","global","this","Function","NATIVE_BIND","require","FunctionPrototype","prototype","uncurryThis","fn","apply","arguments","argument","shared","hasOwn","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","description","exec","error","parent","isCallable","getOwnPropertyDescriptor","f","isForced","path","createNonEnumerableProperty","wrapConstructor","NativeConstructor","Wrapper","a","b","length","options","source","USE_NATIVE","VIRTUAL_PROTOTYPE","sourceProperty","targetProperty","nativeProperty","resultProperty","descriptor","TARGET","target","GLOBAL","STATIC","stat","PROTO","proto","nativeSource","targetPrototype","forced","noTargetGet","wrap","sham","real","fails","toObject","isObject","String","TypeError","requireObjectCoercible","IndexedObject","undefined","aFunction","variable","namespace","method","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","toLength","obj","getBuiltIn","test","bitmap","configurable","writable","toString","stringSlice","slice","tryToString","aCallable","that","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","O","P","Attributes","current","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","wellKnownSymbol","CORRECT_ARGUMENTS","tag","result","tryGet","callee","classof","$propertyIsEnumerable","propertyIsEnumerable","NASHORN_BUG","1","V","split","toPrimitive","isSymbol","func","setGlobal","store","internalObjectKeys","enumBugKeys","keys","ceil","floor","number","propertyIsEnumerableModule","toIndexedObject","isPrototypeOf","$Symbol","iterator","V8_VERSION","getOwnPropertySymbols","symbol","IS_PURE","push","version","copyright","license","id","postfix","random","createElement","document","EXISTS","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","el","fromIndex","index","includes","indexOf","toIntegerOrInfinity","min","arraySpeciesConstructor","originalArray","Array","isArray","inspectSource","noop","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","functionToString","isRegExp","MATCH","METHOD_NAME","regexp","error1","error2","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","getPrototypeOf","redefine","ITERATOR","BUGGY_SAFARI_ITERATORS","activeXDocument","definePropertiesModule","hiddenKeys","html","documentCreateElement","IE_PROTO","sharedKey","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","domain","style","display","appendChild","src","contentWindow","open","F","Properties","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","constructor","TAG","SET_METHOD","getMethod","Iterators","entries","$","$entries","Reflect","ordinaryToPrimitive","TO_PRIMITIVE","input","pref","exoticToPrim","match","userAgent","process","Deno","versions","v8","val","valueOf","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","objectKeys","TO_ENTRIES","values","names","max","integer","entryUnbind","$find","find","addToUnscopables","SKIPS_HOLES","callbackfn","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","specificCreate","boundFunction","forEach","map","filter","some","every","findIndex","filterReject","isConstructor","SPECIES","C","$includes","notARegExp","correctIsRegExpLogic","stringIndexOf","searchString","assign","getOwnPropertySymbolsModule","$assign","concat","A","B","chr","join","T","argumentsLength","S","j","from","charAt","InternalStateModule","defineIterator","setInternalState","set","getInternalState","getterFor","iterated","type","point","state","done","charCodeAt","CONVERT_TO_STRING","pos","first","second","position","size","codeAt","has","NATIVE_WEAK_MAP","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","enforce","FunctionName","createIteratorConstructor","setPrototypeOf","setToStringTag","IteratorsCore","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","returnThis","Iterable","NAME","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","getDescriptor","ENUMERABLE_NEXT","defineProperties","props","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","checkCorrectnessOfIteration","iterable","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIterator","getIteratorMethod","arrayLike","IS_CONSTRUCTOR","mapfn","mapping","step","iteratorMethod","iteratorClose","ENTRIES","kind","innerResult","innerError","ArrayPrototype","propertyKey","usingIterator","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","flattenIntoArray","flatMap","sourceLen","original","start","depth","mapper","thisArg","element","targetIndex","sourceIndex","mapFn","un$StartsWith","startsWith","CORRECT_IS_REGEXP_LOGIC","search","_extends","isPromise","item","Promise","Window","then","err","flushPromise","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushActive","promise","resolve","startActive","endActive","ZalgoPromise","handler","resolved","rejected","errorHandled","handlers","dispatching","stack","isAsync","res","reject","Error","dispatch","setTimeout","dispatchPossiblyUnhandledError","asyncReject","chain","firstPromise","secondPromise","onSuccess","onError","promiseResult","catch","finally","onFinally","try","timeout","time","clearTimeout","toPromise","lazy","all","promises","count","results","prom","hash","awaitPromises","items","onPossiblyUnhandledException","cancel","splice","context","args","delay","flush","IE_WIN_ACCESS_ERROR","getActualProtocol","win","location","protocol","getProtocol","mockDomain","isAboutProtocol","canReadFromWindow","getActualDomain","PROTOCOL","getParent","host","getDomain","isSameDomain","desc","isMockProtocol","isActuallySameDomain","iframeWindows","iframeFrames","isWindowClosed","allowMock","closed","message","mockclosed","top","iframeIndex","collection","safeIndexOf","frame","parentNode","doc","ownerDocument","documentElement","contains","isFrameWindowClosed","isWindow","__cross_domain_utils_window_check__","objectIDs","CrossDomainSafeWeakMap","weakmap","freeze","testWeakMap","testKey","hasNativeWeakMap","_cleanupClosedWindows","delete","isSafeToReadWrite","entry","getOrSet","getFunctionName","__name__","displayName","setFunctionName","base64encode","str","btoa","encodeURIComponent","p1","fromCharCode","parseInt","Buffer","uniqueID","chars","Date","toISOString","getGlobal","__GLOBAL__","serializeArgs","JSON","stringify","subkey","getObjectID","Element","nodeType","getEmptyObject","memoizeGlobalIndex","memoizeGlobalIndexValidFrom","memoize","simpleCache","thisCache","thisNamespace","cacheTime","memoizeIndex","memoizedFunction","cache","cacheKey","cacheResult","now","reset","inlineMemoize","logic","__inline_memoize_cache__","objFilter","Boolean","isDocumentReady","body","readyState","isDocumentInteractive","isBrowser","isLocalStorageEnabled","localStorage","setItem","getItem","removeItem","clear","interval","setInterval","clearInterval","currentScript","getCurrentScript","getStackTrace","stackDetails","scriptLocation","getElementsByTagName","reverse","script","inferCurrentScript","currentUID","getCurrentScriptUID","getAttribute","ATTRIBUTES","hashedString","total","abs","strHashStr","dataset","setAttribute","getStorage","lifetime","accessedStorage","STORAGE_KEY","newStateID","getState","storage","localStorageEnabled","rawStorage","parse","getID","getSession","session","__session__","created","guid","isStateFresh","getSessionState","getSessionID","headerBuilders","request","url","headers","json","normalizedHeaders","builtHeaders","headerBuilder","xhr","XMLHttpRequest","addEventListener","responseHeaders","rawHeaders","trim","parseHeaders","getAllResponseHeaders","status","contentType","isJSON","responseBody","responseText","evt","setRequestHeader","ontimeout","send","renderChildren","children","renderer","renderedChild","render","subchild","ElementNode","onRender","FragmentNode","TextNode","text","ComponentNode","component","renderComponent","child","normalizeChildren","normalizeChild","ELEMENT_DEFAULT_XML_NAMESPACE","ATTRIBUTE_DEFAULT_XML_NAMESPACE","createTextElement","node","createTextNode","addProps","prop","xmlNamespace","setAttributeNS","tagName","ADD_CHILDREN","firstChild","docElement","removeChild","dom","addChildren","ELEMENT_PROP","innerHTML","querySelectorAll","newScript","textContent","replaceChild","fixScripts","opts","domRenderer","xmlNamespaceDomRenderer","childNode","createElementNS","createElementWithXMLNamespace","Map","partial","intialArgs","nextArgs","curry","arity","curried","createState","initialState","objectAssign","viewport","head","querySelector","__pp_prev_content__","__pp_prev_overflow__","overflow","__pp_prev_msOverflowStyle__","msOverflowStyle","setProperty","getPayPalDomain","__PAYPAL_DOMAIN__","getSDKScript","__SDK_HOST__","__PATH__","stringifyError","level","newErr","attributes","attr","AUTO_FLUSH_LEVEL","LOG_LEVEL_PRIORITY","sendBeacon","useBlob","navigator","blob","Blob","e","extendIfDefined","Logger","prefix","logLevel","transport","httpWin","assertSameDomain","enableSendBeacon","beaconResult","hasHeaders","canUseSendBeacon","isAmplitude","getHTTPTransport","amplitudeApiKey","flushInterval","events","tracking","payloadBuilders","metaBuilders","trackingBuilders","print","event","payload","console","log","warning","immediateFlush","meta","builder","api_key","event_type","transition_name","event_properties","localPromise","logger","logPayload","timestamp","enqueue","addBuilder","builders","loop","safeInterval","debug","info","warn","track","trackingPayload","addPayloadBuilder","addMetaBuilder","addTrackingBuilder","addHeaderBuilder","setTransport","newTransport","configure","getLogger","clientID","basicAuth","__PAYPAL_API_DOMAIN__","Authorization","grant_type","access_token","triggered","emitter","on","eventName","handlerList","cancelled","once","listener","trigger","triggerOnce","getBelterStorage","isStorageFresh","getDeviceID","messagingDeviceID","container","className","getElementsByClassName","elem","insertBefore","HTMLElement","span","appendImage","alt","srcset","logo","Image","dimensions","width","height","svgWrapper","canvas","getTagSize","classList","visibleElement","arrayFind","arrayFrom","defaultView","getWindowFromElement","getComputedStyle","getPropertyValue","toUpperCase","getActiveTags","subHeadline","disclaimer","performance","getPerformance","timing","connectEnd","navigationStart","getRequestDuration","getEntries","validateMetric","metric","requests","entryType","requestStart","responseStart","setupMessage","markup","parentStyles","warnings","xprops","onClick","onReady","onHover","onMarkup","onProps","resize","parentDeviceID","deviceID","messageRequestId","dimensionsRef","amount","currency","buyerCountry","ignoreCache","offer","payerId","clientId","merchantId","setProps","serverData","setServerData","handleHover","button","background","padding","border","outline","textAlign","align","fontFamily","fontSize","activeTags","requestDuration","styles","focus","withCredentials","env","features","stageTag","query","objectEntries","message_request_id","buyer_country","ignore_cache","credit_type","payer_id","client_id","merchant_id","reduce","acc","inZoid","debugObj","stringStartsWith","ppDebug","origin","xhttp","onreadystatechange","accumulator","header","stringIncludes","resData","encodedStr","binary","atob","bytes","Uint8Array","decodedStr","Uint16Array","buffer","parseObjFromEncoding","buttonWidth","offsetWidth","buttonHeight","offsetHeight","createMessage"],"mappings":"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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 = 127);\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\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/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var parent = require('../../es/object/entries');\n\nmodule.exports = parent;\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var parent = require('../../es/array/find');\n\nmodule.exports = parent;\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var parent = require('../../es/array/includes');\n\nmodule.exports = parent;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var parent = require('../../es/array/from');\n\nmodule.exports = parent;\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn;\n","var parent = require('../../es/string/starts-with');\n\nmodule.exports = parent;\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","module.exports = true;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","module.exports = {};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","module.exports = {};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","module.exports = function () { /* empty */ };\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var parent = require('../../es/string/includes');\n\nmodule.exports = parent;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.20.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.20.3/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var parent = require('../../es/object/assign');\n\nmodule.exports = parent;\n","var parent = require('../../es/array/flat-map');\n\nmodule.exports = parent;\n","require('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","require('../../modules/es.array.find');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'find');\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","require('../../modules/es.array.includes');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","require('../../modules/es.string.includes');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","require('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw TypeError(tryToString(argument) + ' is not iterable');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","require('../../modules/es.array.flat-map');\nrequire('../../modules/es.array.unscopables.flat-map');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'flatMap');\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A;\n aCallable(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar bind = require('../internals/function-bind-context');\n\nvar TypeError = global.TypeError;\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","require('../../modules/es.string.starts-with');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'startsWith');\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar un$StartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return un$StartsWith\n ? un$StartsWith(that, search, index)\n : stringSlice(that, index, index + search.length) === search;\n }\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 */\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\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\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","/* @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","/* @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\nexport function 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\n// eslint-disable-next-line no-unused-vars\nexport function noop(...args : $ReadOnlyArray) {\n // pass\n}\n","/* @flow */\n\nimport { isWindow, isWindowClosed } from 'cross-domain-utils/src';\n\nimport { hasNativeWeakMap } from './native';\nimport { noop, safeIndexOf } from './util';\n\nexport class CrossDomainSafeWeakMap {\n\n name : string\n weakmap : ?WeakMap\n // eslint-disable-next-line flowtype/no-mutable-array\n keys : Array\n // eslint-disable-next-line flowtype/no-mutable-array\n values : Array\n\n constructor() {\n // eslint-disable-next-line no-bitwise\n this.name = `__weakmap_${ Math.random() * 1e9 >>> 0 }__`;\n\n if (hasNativeWeakMap()) {\n try {\n this.weakmap = new WeakMap();\n } catch (err) {\n // pass\n }\n }\n\n this.keys = [];\n this.values = [];\n }\n\n _cleanupClosedWindows() {\n\n const weakmap = this.weakmap;\n const keys = this.keys;\n\n for (let i = 0; i < keys.length; i++) {\n const value = keys[i];\n\n if (isWindow(value) && isWindowClosed(value)) {\n\n if (weakmap) {\n try {\n weakmap.delete(value);\n } catch (err) {\n // pass\n }\n }\n\n keys.splice(i, 1);\n this.values.splice(i, 1);\n\n i -= 1;\n }\n }\n }\n\n isSafeToReadWrite(key : K) : boolean {\n\n if (isWindow(key)) {\n return false;\n }\n\n try {\n noop(key && key.self);\n noop(key && key[this.name]);\n } catch (err) {\n return false;\n }\n\n return true;\n }\n\n set(key : K, value : V) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n const weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n const name = this.name;\n const entry = key[name];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n } else {\n Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: true\n });\n }\n\n return;\n\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n const keys = this.keys;\n const values = this.values;\n const index = safeIndexOf(keys, key);\n\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n }\n\n get(key : K) : V | void {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n const weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return weakmap.get(key);\n }\n \n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n const entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n const keys = this.keys;\n const index = safeIndexOf(keys, key);\n\n if (index === -1) {\n return;\n }\n\n return this.values[index];\n }\n\n delete(key : K) {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n const weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n const entry = key[this.name];\n\n if (entry && entry[0] === key) {\n entry[0] = entry[1] = undefined;\n }\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n const keys = this.keys;\n const index = safeIndexOf(keys, key);\n\n if (index !== -1) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n }\n\n has(key : K) : boolean {\n\n if (!key) {\n throw new Error(`WeakMap expected key`);\n }\n\n const weakmap = this.weakmap;\n\n if (weakmap) {\n try {\n if (weakmap.has(key)) {\n return true;\n }\n } catch (err) {\n delete this.weakmap;\n }\n }\n\n if (this.isSafeToReadWrite(key)) {\n try {\n const entry = key[this.name];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n } catch (err) {\n // pass\n }\n }\n\n this._cleanupClosedWindows();\n\n const index = safeIndexOf(this.keys, key);\n return index !== -1;\n }\n\n getOrSet(key : K, getter : () => V) : V {\n if (this.has(key)) {\n // $FlowFixMe\n return this.get(key);\n }\n\n const value = getter();\n this.set(key, value);\n return value;\n }\n}\n","\n/* @flow */\n/* eslint max-lines: 0 */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport type { CancelableType } from './types';\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(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (m, p1) => {\n return String.fromCharCode(parseInt(p1, 16));\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 // $FlowFixMe[method-unbinding]\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => {\n // eslint-disable-next-line prefer-template\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\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\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 ).replace(/[^a-zA-Z0-9]/g, '').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\n objectIDs = objectIDs || new WeakMap();\n\n if (obj === null || obj === undefined || (typeof obj !== 'object' && typeof obj !== 'function')) {\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\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 // Detect DOM elements\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 (\n (typeof window !== 'undefined' && val instanceof window.Element) ||\n (val !== null && typeof val === 'object' && val.nodeType === 1 && typeof val.style === 'object' && typeof val.ownerDocument === 'object')\n ) {\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(method : F, options? : MemoizeOptions = getDefaultMemoizeOptions()) : 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(result, `${ options.name || getFunctionName(method) }::memoized`);\n}\n\nmemoize.clear = () => {\n memoizeGlobalIndexValidFrom = memoizeGlobalIndex;\n};\n\nexport function promiseIdentity(item : ZalgoPromise | T) : ZalgoPromise {\n // $FlowFixMe\n return ZalgoPromise.resolve(item);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function memoizePromise(method : (...args : $ReadOnlyArray) => ZalgoPromise) : ((...args : $ReadOnlyArray) => ZalgoPromise) {\n let cache = {};\n\n // eslint-disable-next-line flowtype/no-weak-types\n function memoizedPromiseFunction(...args : $ReadOnlyArray) : 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))\n .finally(() => {\n delete cache[key];\n });\n\n return cache[key];\n }\n\n memoizedPromiseFunction.reset = () => {\n cache = {};\n };\n\n return setFunctionName(memoizedPromiseFunction, `${ getFunctionName(method) }::promiseMemoized`);\n}\n\ntype PromisifyOptions = {|\n name ? : string\n|};\n\nconst getDefaultPromisifyOptions = () : PromisifyOptions => {\n // $FlowFixMe\n return {};\n};\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function promisify(method : (...args : $ReadOnlyArray) => R, options : PromisifyOptions = getDefaultPromisifyOptions()) : ((...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(promisifiedFunction, `${ getFunctionName(method) }::promisified`);\n}\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport function inlineMemoize(method : (...args : $ReadOnlyArray) => R, logic : (...args : $ReadOnlyArray) => R, args : $ReadOnlyArray = []) : R {\n // $FlowFixMe\n const cache : {| [string] : R |} = method.__inline_memoize_cache__ = 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\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\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\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\n } catch (newErr) {\n return `Error while stringifying error: ${ stringifyError(newErr, level + 1) }`;\n }\n}\n\nexport function stringifyErrorMessage(err : mixed) : string {\n\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 = 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\n ? (num - remainder) + nearest\n : num;\n}\n\nexport function regexMap(str : string, regexp : RegExp, handler : () => T) : $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(obj : { [string] : T }, filter? : (T, ?string) => mixed = Boolean) : { [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(text : string, regexp : RegExp) : $ReadOnlyArray {\n const result = [];\n text.replace(regexp, token => {\n result.push(token);\n return '';\n });\n return result;\n}\n\nexport function promiseDebounce(method : () => ZalgoPromise | T, delay : number = 50) : () => ZalgoPromise {\n\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 => { localPromise.resolve(result); },\n err => { localPromise.reject(err); }\n );\n }, delay);\n\n return localPromise;\n };\n\n return setFunctionName(promiseDebounced, `${ getFunctionName(method) }::promiseDebounced`);\n}\n\nexport function safeInterval(method : Function, time : number) : {| cancel : () => void |} {\n\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(obj : Object, prefix : string = '', newobj : Object = {}) : { [string] : string } {\n prefix = prefix ? `${ prefix }.` : prefix;\n for (const key in obj) {\n if (!obj.hasOwnProperty(key) || obj[key] === undefined || obj[key] === null || typeof obj[key] === 'function') {\n continue;\n } else if (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every(val => typeof val !== 'object')) {\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\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 (part === 'constructor' || part === 'prototype' || part === '__proto__') {\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 : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n triggerOnce : (eventName : string, ...args : $ReadOnlyArray) => ZalgoPromise,\n reset : () => void\n|};\n\nexport function eventEmitter() : EventEmitterType {\n const triggered = {};\n let handlers = {};\n\n const emitter = {\n\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\n once(eventName : string, handler : Function) : CancelableType {\n\n const listener = emitter.on(eventName, () => {\n listener.cancel();\n handler();\n });\n\n return listener;\n },\n\n trigger(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\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(eventName : string, ...args : $ReadOnlyArray) : ZalgoPromise {\n\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\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\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\n const interval = safeInterval(() => {\n time -= 100;\n if (time <= 0) {\n interval.cancel();\n method();\n }\n }, 100);\n}\n\nexport function defineLazyProp(obj : Object | $ReadOnlyArray, key : string | number, getter : () => T) {\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\nexport function arrayFrom(item : Iterable) : $ReadOnlyArray { // eslint-disable-line no-undef\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 // $FlowFixMe[method-unbinding]\n return isObject(obj) && Object.prototype.toString.call(obj) === '[object Object]';\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> (item : T, replacer : (mixed, string | number, string) => mixed, fullKey : string = '') : T {\n\n if (Array.isArray(item)) {\n const length = item.length;\n const result : Array = [];\n\n for (let i = 0; i < length; i++) {\n\n\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\n\nexport function copyProp(source : Object, target : Object, name : string, def : mixed) {\n if (source.hasOwnProperty(name)) {\n const descriptor = Object.getOwnPropertyDescriptor(source, name);\n // $FlowFixMe\n Object.defineProperty(target, name, descriptor);\n\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(pattern : string | RegExp, string : string, start : number = 0) : ?RegexResultType {\n\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\n if (!regmatch) {\n return '';\n }\n\n return `${ regmatch.slice(0, start + index) }${ text }${ regmatch.slice(index + regmatch.length) }`;\n }\n };\n}\n\nexport function regexAll(pattern : string | RegExp, string : string) : $ReadOnlyArray {\n\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(method : (...args : $ReadOnlyArray) => T, time : number = 100) : (...args : $ReadOnlyArray) => void {\n\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(debounceWrapper, `${ getFunctionName(method) }::debounced`);\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\n// eslint-disable-next-line flowtype/no-weak-types\nexport const weakMapMemoize : FunctionProxy<*> = (method : (arg : any) => R) : ((...args : $ReadOnlyArray) => R) => {\n\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) => ZalgoPromise> = (T) => T;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport const weakMapMemoizePromise : FunctionPromiseProxy<*, *> = (method : (arg : any) => ZalgoPromise) : ((...args : $ReadOnlyArray) => ZalgoPromise) => {\n\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\nexport function getOrSet(obj : O, key : string, getter : () => T) : 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\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(fn : () => T) : {| 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 = (constant : T, value : X) : 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","/* @flow */\n\nexport function hasNativeWeakMap() : boolean {\n\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n if (typeof Object.freeze === 'undefined') {\n return false;\n }\n\n try {\n\n const testWeakMap = new WeakMap();\n const testKey = {};\n const testValue = '__testvalue__';\n\n Object.freeze(testKey);\n\n testWeakMap.set(testKey, testValue);\n\n if (testWeakMap.get(testKey) === testValue) {\n return true;\n }\n\n return false;\n\n } catch (err) {\n\n return false;\n }\n}\n","/* @flow */\n/* eslint max-lines: off */\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { linkFrameWindow, isWindowClosed, assertSameDomain,\n type SameDomainWindowType, type CrossDomainWindowType } from 'cross-domain-utils/src';\nimport { WeakMap } from 'cross-domain-safe-weakmap/src';\n\nimport { inlineMemoize, memoize, noop, stringify, capitalizeFirstLetter,\n once, extend, safeInterval, uniqueID, arrayFrom, ExtendableError, strHashStr } 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\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(parseQuery, () : 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 }, [ 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\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\n return Object.keys(obj).filter(key => {\n return typeof obj[key] === 'string' || typeof obj[key] === 'boolean';\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 }).join('&');\n}\n\nexport function extendQuery(originalQuery : string, props : Query = {}) : string {\n\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(url : string, options : {| query? : Query, hash? : Query |}) : string {\n\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(url : string, win : CrossDomainWindowType = window) : 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(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\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() - (performance.timing.connectEnd - performance.timing.navigationStart)) > 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.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(selector : string, doc : HTMLElement = window.document) : $ReadOnlyArray {\n // $FlowFixMe[method-unbinding]\n return Array.prototype.slice.call(doc.querySelectorAll(selector));\n}\n\nexport function onClick(element : HTMLElement, handler : (Event) => void) {\n element.addEventListener('touchstart', noop);\n element.addEventListener('click', handler);\n element.addEventListener('keypress', (event : Event) => {\n // $FlowFixMe\n if (event.keyCode === KEY_CODES.ENTER || event.keyCode === KEY_CODES.SPACE) {\n return handler(event);\n }\n });\n}\n\nexport function getScript({ host = window.location.host, path, reverse = false } : {| host? : string, path : string, reverse? : boolean |}) : ?HTMLScriptElement {\n return inlineMemoize(getScript, () : ?HTMLScriptElement => {\n\n const url = `${ host }${ path }`;\n // $FlowFixMe[method-unbinding]\n const scripts = Array.prototype.slice.call(document.getElementsByTagName('script'));\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 }, [ path ]);\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<{| country? : string, lang : string |}> {\n const nav = window.navigator;\n\n const locales = nav.languages\n ? [ ...nav.languages ]\n : [];\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.map(locale => {\n\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\n\nexport function appendChild(container : HTMLElement, child : HTMLElement | Text) {\n container.appendChild(child);\n}\n\nexport function isElement(element : mixed) : boolean {\n\n if (element instanceof window.Element) {\n return true;\n }\n\n if (element !== null && typeof element === 'object' && element.nodeType === 1 && typeof element.style === 'object' && typeof element.ownerDocument === 'object') {\n return true;\n }\n\n return false;\n}\n\nexport function getElementSafe(id : ElementRefType, doc : Document | HTMLElement = document) : ?HTMLElement {\n\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(id : ElementRefType, doc : Document | HTMLElement = document) : HTMLElement {\n\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\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(new Error(`Document is ready and element ${ name } does not exist`));\n }\n\n const interval = setInterval(() => {\n\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(new Error(`Document is ready and element ${ name } does not exist`));\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(url : string, options? : PopupOptions) : CrossDomainWindowType {\n\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 // eslint-disable-next-line array-callback-return\n const params = Object.keys(options).map(key => {\n // $FlowFixMe\n if (options[key] !== null && options[key] !== undefined) {\n return `${ key }=${ stringify(options[key]) }`;\n }\n }).filter(Boolean).join(',');\n\n let win;\n\n try {\n win = window.open(url, name, params);\n } catch (err) {\n throw new PopupOpenError(`Can not open popup window - ${ err.stack || err.message }`);\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\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(html) }); document.close();`;\n } catch (err2) {\n // pass\n }\n }\n}\n\nexport function writeElementToWindow(win : SameDomainWindowType, 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(el : HTMLElement, styleText : string, doc : Document = window.document) {\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\nexport function awaitFrameLoad(frame : HTMLIFrameElement) : 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(frame : HTMLIFrameElement) : ZalgoPromise {\n return awaitFrameLoad(frame).then(loadedFrame => {\n\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(tag : string = 'div', options : ElementOptionsType = getDefaultCreateElementOptions(), container : ?HTMLElement) : HTMLElement {\n\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(`Iframe html can not be written unless container provided and iframe in DOM`);\n }\n\n // $FlowFixMe\n writeToWindow(element.contentWindow, options.html);\n\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(options : IframeElementOptionsType = getDefaultIframeOptions(), container : ?HTMLElement) : HTMLIFrameElement {\n\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(obj : HTMLElement, event : string, handler : (event : Event) => void) : CancelableType {\n obj.addEventListener(event, handler);\n return {\n cancel() {\n obj.removeEventListener(event, handler);\n }\n };\n}\n\nexport function bindEvents(element : HTMLElement, eventNames : $ReadOnlyArray, handler : (event : Event) => void) : CancelableType {\n\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(element : HTMLElement, name : string, 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 = [ 'animationstart', 'webkitAnimationStart', 'oAnimationStart', 'MSAnimationStart' ];\nconst ANIMATION_END_EVENTS = [ 'animationend', 'webkitAnimationEnd', 'oAnimationEnd', 'MSAnimationEnd' ];\n\nexport function animate(element : ElementRefType, name : string, clean : (Function) => void, timeout : number = 1000) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\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\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\n // $FlowFixMe\n if (event.target !== el || event.animationName !== name) {\n return;\n }\n\n cleanUp();\n\n // $FlowFixMe\n if (typeof event.animationName === 'string' && event.animationName !== name) {\n return reject(`Expected animation name to be ${ name }, found ${ event.animationName }`);\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\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(element : HTMLElement, name : string, clean : (Function) => void) : ZalgoPromise {\n const animation = animate(element, name, clean);\n showElement(element);\n return animation;\n}\n\nexport function animateAndHide(element : HTMLElement, name : string, clean : (Function) => void) : 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 (!el || !el.parentNode || !el.ownerDocument || !el.ownerDocument.documentElement || !el.ownerDocument.documentElement.contains(el)) {\n return true;\n }\n return false;\n}\n\nexport function watchElementForClose(element : HTMLElement, handler : () => mixed) : 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(el : HTMLElement, handler : ({| width : number, height : number |}) => void, { width = true, height = true, interval = 100, win = window } : OnResizeOptions = {}) : {| 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 ((width && newWidth !== currentWidth) || (height && newHeight !== currentHeight)) {\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\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 (entry && entry.name && entry.name.indexOf(url) === 0 && typeof entry.duration === 'number') {\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\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 }\n catch (err) {\n return err.stack || '';\n }\n}\n\nfunction inferCurrentScript() : ?HTMLScriptElement {\n try {\n const stack = getStackTrace();\n const stackDetails = (/.*at [^(]*\\((.*):(.+):(.+)\\)$/ig).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.call(document.getElementsByTagName('script')).reverse()) {\n if (script.src && script.src === scriptLocation) {\n return script;\n }\n }\n\n } catch (err) {\n // pass\n }\n}\n\n// eslint-disable-next-line compat/compat\nlet currentScript = 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\n const { src, dataset } = script;\n const stringToHash = JSON.stringify({ src, dataset });\n const hashedString = strHashStr(stringToHash);\n const hashResult = hashedString.slice(hashedString.length - UID_HASH_LENGTH);\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({ url, target, body, method = 'post' } : 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","/* @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({ name, lifetime = DEFAULT_SESSION_STORAGE } : {| name : string, lifetime? : number |}) : Storage {\n return inlineMemoize(getStorage, () => {\n const STORAGE_KEY = `__${ name }_storage__`;\n const newStateID = uniqueID();\n\n let accessedStorage;\n\n function getState(handler : (storage : Object) => T) : T {\n\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\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 }, [ { name, lifetime } ]);\n}\n","/* @flow */\n\nimport { ZalgoPromise } from 'zalgo-promise/src';\nimport { type SameDomainWindowType } from '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({ url, method = 'get', headers = {}, json, data, body, win = window, timeout = 0 } : RequestOptionsType) : ZalgoPromise {\n return new ZalgoPromise((resolve, reject) => {\n\n if ((json && data) || (json && body) || (data && json)) {\n throw new Error(`Only options.json or options.data or options.body should be passed`);\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] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/json';\n } else if (data || body) {\n normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || 'application/x-www-form-urlencoded; charset=utf-8';\n }\n\n normalizedHeaders[HEADERS.ACCEPT] = 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('load', function xhrLoad() : void {\n\n const responseHeaders = parseHeaders(this.getAllResponseHeaders());\n\n if (!this.status) {\n return reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: no response status code.`));\n }\n \n const contentType = responseHeaders['content-type'];\n const isJSON = contentType && (contentType.indexOf('application/json') === 0 || 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 xhr.addEventListener('error', (evt) => {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } failed: ${ evt.toString() }.`));\n }, false);\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).map(key => {\n return `${ encodeURIComponent(key) }=${ data ? encodeURIComponent(data[key]) : '' }`;\n }).join('&');\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = function xhrTimeout() {\n reject(new Error(`Request to ${ method.toLowerCase() } ${ url } has timed out`));\n };\n\n xhr.send(body);\n });\n}\n\nexport function addHeaderBuilder(method : () => { [string] : string }) {\n headerBuilders.push(method);\n}\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 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","/**\n * Memoize a function based on all arguments\n * @param {Function} fn Function to memoize\n * @returns {Function} Memoized function\n */\nexport function memoize(fn) {\n const cache = new Map();\n\n return (...args) => {\n const cacheKey = JSON.stringify(args);\n\n if (!cache.has(cacheKey)) {\n cache.set(cacheKey, fn(...args));\n }\n\n return cache.get(cacheKey);\n };\n}\n\n/**\n * Memoize a unary function that takes has a single object parameter\n * @param {Function} fn Function to memoize\n * @param {Array} props Property names to cache against\n * @returns {Function} Memoized function\n */\nexport function memoizeOnProps(fn, props) {\n const cache = new Map();\n\n return (options, ignoreCache = false) => {\n const cacheKey = JSON.stringify(props.map(key => options[key]));\n\n if (!cache.has(cacheKey) || ignoreCache) {\n cache.set(cacheKey, fn(options));\n }\n\n return cache.get(cacheKey);\n };\n}\n\n/**\n * Partially apply a function with specified parameters\n * @param {Function} fn Function to partially apply\n * @param {...any} intialArgs Arguments to partially apply\n * @returns {Function} Partially applied function\n */\nexport function partial(fn, ...intialArgs) {\n return (...nextArgs) => fn(...intialArgs, ...nextArgs);\n}\n\n/**\n * Curry a function\n * @param {Function} fn Function to curry\n * @param {Number} arity Number of function parameters\n * @returns {Function} Curried function\n */\nexport function curry(fn, arity = fn.length) {\n return function curried(...args) {\n if (args.length < arity) {\n return (...nextArgs) => curried(...args, ...nextArgs);\n }\n\n return fn(...args);\n };\n}\n\n/**\n * Higher order function to run an effectful function\n * and still pass along the arguments for chaining\n * @param {Function} fn Effectful function\n * @returns {Function} Pass through function\n */\nexport function passThrough(fn) {\n return arg => {\n const result = fn(arg);\n return typeof result === 'object' && result.then ? result.then(() => arg) : arg;\n };\n}\n\n/**\n * Chain function calls together, starting with an initial value\n * @param {...Function} args Functions\n * @returns {Function} Function that runs initial value through all passed in functions\n */\nexport function pipe(...args) {\n return initialValue => args.reduce((accumulator, fn) => fn(accumulator), initialValue);\n}\n\n/**\n * Retrieve a single property from an object\n * @param {String} prop Property to retrieve\n * @param {Object} obj Object to get get property from\n * @returns {Any} Object property value\n */\nexport const pluck = curry((prop, obj) => obj[prop]);\n\n/**\n * Create an object and assign the value to the property\n * @param {String} prop Property name\n * @param {Any} value Property value\n * @returns {Object} New object with property and value\n */\nexport const assignToProp = curry((prop, value) => ({ [prop]: value }));\n","/** @jsx node */\nimport arrayFind from 'core-js-pure/stable/array/find';\nimport arrayIncludes from 'core-js-pure/stable/array/includes';\nimport stringIncludes from 'core-js-pure/stable/string/includes';\nimport objectAssign from 'core-js-pure/stable/object/assign';\nimport objectEntries from 'core-js-pure/stable/object/entries';\nimport { node, dom } from 'jsx-pragmatic/src';\nimport { ZalgoPromise } from 'zalgo-promise/src';\n\nimport { partial, memoize } from './functional';\n\n/**\n * Create a state object and pass back a reference and update function\n * @param {Object} initialState Initial object to store in state\n * @returns {[Object, Function]} State object reference and update function\n */\nexport function createState(initialState = {}) {\n const state = { ...initialState };\n return [state, partial(objectAssign, state)];\n}\n\nexport function getDataByTag(data, tag) {\n let selected = arrayFind(data, ([, tags]) => arrayIncludes(tags, tag));\n if (selected) {\n return selected[0];\n }\n\n if (stringIncludes(tag, '.')) {\n const [fallbackTag] = tag.split('.', 1);\n selected = arrayFind(data, ([, tags]) => arrayIncludes(tags, fallbackTag));\n if (selected) {\n return selected[0];\n }\n }\n\n selected = arrayFind(data, ([, tags]) => arrayIncludes(tags, 'default'));\n if (selected) {\n return selected[0];\n }\n\n return '';\n}\n\nexport function request(method, url, { data, headers, withCredentials } = {}) {\n return new ZalgoPromise((resolve, reject) => {\n const xhttp = new XMLHttpRequest();\n\n if (withCredentials) {\n // Necessary to send cookies with cross-origin requests\n xhttp.withCredentials = true;\n }\n\n xhttp.onreadystatechange = () => {\n if (xhttp.readyState === 4) {\n const responseHeaders = xhttp\n .getAllResponseHeaders()\n .trim() // Remove trailing newline characters\n .split('\\n')\n .reduce((accumulator, header) => {\n const [key, val] = header.trim().split(': ');\n return {\n ...accumulator,\n // IE11 uses capitalized header names\n [key.toLowerCase()]: val\n };\n }, {});\n\n switch (xhttp.status) {\n case 200:\n resolve({\n headers: responseHeaders,\n data:\n responseHeaders['content-type'] &&\n stringIncludes(responseHeaders['content-type'], 'application/json')\n ? JSON.parse(xhttp.responseText)\n : xhttp.responseText\n });\n break;\n case 204:\n resolve({ headers: responseHeaders });\n break;\n default:\n reject(new Error('Request failed'));\n }\n }\n };\n\n xhttp.open(method, url, true);\n\n if (headers) {\n objectEntries(headers).forEach(([header, value]) => {\n xhttp.setRequestHeader(header, value);\n });\n }\n\n xhttp.send(typeof data === 'object' ? JSON.stringify(data) : data);\n });\n}\n\nexport function parseObjFromEncoding(encodedStr) {\n // equivalent to JSON.parse(fromBinary(atob(encodedStr))) as in initScript\n const binary = atob(encodedStr);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n // need to use .apply instead of spread operator so IE can understand\n const decodedStr = String.fromCharCode.apply(null, new Uint16Array(bytes.buffer));\n return JSON.parse(decodedStr);\n}\n\nexport function createEvent(name) {\n if (typeof Event === 'function') {\n return new Event(name);\n }\n\n // IE11 support\n const event = document.createEvent('Event');\n event.initEvent(name, true, true);\n\n return event;\n}\n\nexport const dynamicImport = memoize(url => {\n return new ZalgoPromise(resolve => {\n const script = document.createElement('script');\n script.src = url;\n script.addEventListener('load', () => {\n document.body.removeChild(script);\n resolve();\n });\n\n if (document.readyState === 'loading') {\n window.addEventListener('DOMContentLoaded', () => document.body.appendChild(script));\n } else {\n document.body.appendChild(script);\n }\n });\n});\n\n// // Date.now() altered on some sites: https://www.hydropool.com\nexport const getCurrentTime = () => new Date().getTime();\n\n// Memoized so that the 2 return functions can be called from different modules\nexport const viewportHijack = memoize(() => {\n const viewport =\n document.head.querySelector('meta[name=\"viewport\"]') ||\n ().render(dom({ doc: document }));\n\n // Ensure a viewport exists in the DOM\n if (!viewport.parentNode) {\n document.head.appendChild(viewport);\n }\n\n return [\n // We store state on the DOM elements themselves because we do not want multiple SDK scripts\n // with their own states causing an error preventing elements from being updated as needed\n () => {\n if (viewport.__pp_prev_content__) {\n // Viewport has already been hijacked - do nothing for now\n // This can happen when multiple messages are clicked before the modal loads\n return;\n }\n\n viewport.__pp_prev_content__ = viewport.getAttribute('content') ?? '';\n viewport.setAttribute(\n 'content',\n 'width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, minimal-ui, shrink-to-fit=no'\n );\n\n document.body.__pp_prev_overflow__ = document.body.style.overflow ?? '';\n document.body.__pp_prev_msOverflowStyle__ = document.body.style.msOverflowStyle ?? '';\n document.body.style.setProperty('overflow', 'hidden');\n document.body.style.setProperty('-ms-overflow-style', 'scrollbar');\n },\n () => {\n viewport.setAttribute('content', viewport.__pp_prev_content__);\n delete viewport.__pp_prev_content__;\n\n document.body.style.setProperty('overflow', document.body.__pp_prev_overflow__);\n document.body.style.setProperty('-ms-overflow-style', document.body.__pp_prev_msOverflowStyle__);\n delete document.body.__pp_prev_overflow__;\n delete document.body.__pp_prev_msOverflowStyle__;\n }\n ];\n});\n\n// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#improving_scrolling_performance_with_passive_listeners\nexport const getEventListenerPassiveOptionIfSupported = () => {\n let passiveIfSupported = false;\n\n try {\n // Create dummy event listener so that if supported, the object will be crawled\n // for the passive flag telling us that the option is supported in this browser\n window.addEventListener(\n '__test__',\n null,\n Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line getter-return\n get() {\n passiveIfSupported = { passive: true };\n }\n })\n );\n } catch (err) {} // eslint-disable-line no-empty\n\n return passiveIfSupported;\n};\n\nexport function getProductForOffer(offer) {\n if (typeof offer === 'undefined') {\n return 'NONE';\n }\n\n switch (offer.toUpperCase()) {\n case 'GPL':\n case 'GPLQ':\n case 'GPLNQ':\n case 'GPLNQ_RANGE':\n case 'PL':\n case 'PLQ':\n case 'GPL:EQZ':\n case 'GPL:GTZ':\n case 'GPLQ:EQZ':\n case 'GPLQ:GTZ':\n case 'GPL:EQZ:NON-DE':\n case 'GPL:GTZ:NON-DE':\n case 'GPLQ:EQZ:NON-DE':\n case 'GPLQ:GTZ:NON-DE':\n return 'GPL';\n case 'PI30':\n case 'PI30Q':\n case 'PI30NQ':\n return 'PI30';\n case 'EZP':\n case 'EZP:ANY:EQZ':\n case 'EZP:ANY:GTZ':\n case 'PALA:MULTI:EQZ':\n case 'PALA:MULTI:GTZ':\n case 'PALA:SINGLE:EQZ':\n case 'PALA:SINGLE:GTZ':\n return 'EZP';\n case 'INST':\n case 'INST:ANY:EQZ':\n case 'INST:ANY:GTZ':\n case 'PALAQ:ANY:EQZ':\n case 'PALAQ:ANY:GTZ':\n return 'INST';\n default:\n return 'NI';\n }\n}\n","/* @flow */\n\nimport { ENV, PROTOCOL, COMPONENTS, PLATFORM, type FundingEligibilityType } from '@paypal/sdk-constants/src';\nimport { isDevice } from '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 (typeof __SERVICE_STAGE_HOST__ !== 'undefined' && __SERVICE_STAGE_HOST__ !== null) {\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 = '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 { getCurrentScriptUID, ATTRIBUTES, parseQuery, getBrowserLocales, base64decode,\n values, getCurrentScript, memoize, stringifyError, getScript } from 'belter/src';\nimport { COUNTRY, SDK_SETTINGS, SDK_QUERY_KEYS, INTENT, COMMIT, VAULT, CURRENCY,\n FUNDING, CARD, COUNTRY_LANGS, DEFAULT_INTENT, DEFAULT_CURRENCY, DEFAULT_VAULT,\n QUERY_BOOL, LANG, type LocaleType, DEFAULT_SALE_COMMIT, DEFAULT_NONSALE_COMMIT,\n PAGE_TYPES } 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\nexport const getSDKScript : GetSDKScript = memoize(() => {\n if (__TEST__) {\n const script = getScript({ host: getSDKHost(), path: getPath(), reverse: true });\n if (!script) {\n throw new Error(`Can not find SDK test script`);\n }\n return script;\n }\n\n try {\n return getCurrentScript();\n } catch (err) {\n throw new Error(`PayPal Payments SDK script not found on page! Expected to find