{"version":3,"file":"static/js/main.83680a74.js","mappings":"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","sources":["app-consts.ts","webpack-public-path.js","utils/array.extensions.ts","polyfills.ts","index.tsx","launcher/utils/launcher-constants/launcher-constants.ts","orbit-startup-functions.ts","utils/hybrid-utils.ts","utils/qa-mode-utils.ts","../node_modules/intersection-observer/intersection-observer.js","../node_modules/smoothscroll-polyfill/dist/smoothscroll.js","../node_modules/url-search-params-polyfill/index.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js"],"sourcesContent":["export const ALL_CONFIGS_KEY = '$allConfigs';\nexport const LAUNCHER_DATA_STORAGE_KEY = 'cgp_client';","import {ALL_CONFIGS_KEY} from \"./app-consts\";\n\nconst allConfigs = window[ALL_CONFIGS_KEY];\nif (allConfigs) {\n let orbitServerPath = allConfigs.sdk.config.ExtraProperties.paths.server;\n if(!orbitServerPath.endsWith('/')) {\n orbitServerPath = orbitServerPath + '/';\n }\n /* eslint-disable-next-line no-undef */\n __webpack_public_path__ = orbitServerPath;\n}\n\n","import {DictionaryKey} from \"../common/types/dictionary-key-type\";\nimport {NullableUndefinedString} from \"../common/types/nullable-types\";\n\n\nif (!Array.prototype.toDictionary) {\n Array.prototype.toDictionary = function(keySelector: (item: TItem, index: number) => TKey,\n valueSelector?: (item: TItem, index: number) => TValue | TItem ): Record {\n const result: Record = {};\n\n if(!valueSelector) {\n valueSelector = (item) => item;\n }\n\n this.forEach((item, index) => {\n let key: any = keySelector(item, index);\n result[key] = valueSelector(item, index);\n })\n return result;\n }\n}\n\n\nif(!Array.prototype.groupByKey) {\n Array.prototype.groupByKey = function(keySelector: (item: TItem, index: number) => TKey,\n valueSelector?: (item: TItem, index: number) => TValue | TItem ): Record> {\n\n const result: Record> = {};\n\n if(!valueSelector) {\n valueSelector = (item => item);\n }\n\n this.forEach((item, index) => {\n const key: any = keySelector(item, index);\n if(!result[key]) {\n result[key] = [];\n }\n result[key].push(valueSelector(item, index));\n });\n return result;\n }\n}\n\nif(!Array.prototype.distinct) {\n Array.prototype.distinct = function(keySelector?: (item: TItem, index: number) => TKey | TItem,\n valueSelector?: (item: TItem, index: number) => TResult | TItem): Array {\n if(this.length === 0) {\n return [];\n }\n\n if(!keySelector) {\n keySelector = item => item;\n }\n\n if(!valueSelector) {\n valueSelector = item => item;\n }\n\n const uniqueItems: Record = {};\n\n this.forEach((item, index) => {\n const key: any = keySelector(item, index);\n uniqueItems[key] = valueSelector(item, index);\n })\n\n return Object.values(uniqueItems);\n }\n}\n\nif(!Array.prototype.all) {\n Array.prototype.all = function(predicate: (item: T) => boolean): boolean {\n if(this.length === 0) {\n return false;\n }\n\n for(let item of this) {\n if(!predicate(item)) {\n return false;\n }\n }\n return true;\n }\n}\n\nif(!Array.prototype.splitToChunks) {\n Array.prototype.splitToChunks = function(chunkSize: number): Array {\n if(this.length === 0) {\n return [];\n }\n\n let result: Array = [];\n for(let i = 0; i * chunkSize < this.length; i++) {\n result.push(this.slice(i * chunkSize, i * chunkSize + chunkSize));\n }\n\n return result;\n }\n}\n\nif(!Array.prototype.selectMany) {\n Array.prototype.selectMany = function(subItemsSelector: (item: TItem, index: number) => TValue[]): TValue[] {\n\n const result: TValue[] = [];\n this.forEach((item, index) => {\n for(let value of subItemsSelector(item, index)) {\n result.push(value);\n }\n });\n return result;\n }\n}\n\nif (!Array.prototype.findFirst) {\n Array.prototype.findFirst = function(filter: (item: T) => boolean): T | undefined {\n return this.filter(filter)[0];\n }\n}\n\nif (!Array.prototype.max) {\n Array.prototype.max = function(valueSelector: (item: T) => number): T | undefined {\n if(this.length === 0) {\n return undefined;\n }\n\n let max = this[0];\n\n for(let i = 1; i < this.length; i++) {\n if(valueSelector(max) < valueSelector(this[i])) {\n max = this[i];\n }\n }\n\n return max;\n }\n}\n\nif (!Array.prototype.min) {\n Array.prototype.min = function(valueSelector: (item: T) => number): T | undefined {\n if(this.length === 0) {\n return undefined;\n }\n\n let min = this[0];\n\n for(let i = 1; i < this.length; i++) {\n if(valueSelector(min) > valueSelector(this[i])) {\n min = this[i];\n }\n }\n\n return min;\n }\n}\n\nif(!Array.prototype.sum) {\n Array.prototype.sum = function(valueSelector: (item: T) => number): number {\n if(this.length === 0) {\n return 0;\n }\n let result = 0;\n this.forEach(item => {\n result += valueSelector(item);\n });\n\n return result;\n }\n}\n\n\nexport {};\n","import 'intersection-observer';\nimport 'url-search-params-polyfill'; // Edge 41 and 42 don't have this\nimport './utils/array.extensions'\nimport smoothscroll from 'smoothscroll-polyfill'; // this is for making window.scrollTo work in Edge\nsmoothscroll.polyfill();","import './webpack-public-path';\nimport './polyfills';\nimport {isLauncherPath} from \"./launcher/utils/launcher-constants/launcher-constants\";\nimport {isOrbitInQAMode} from './utils/qa-mode-utils';\nimport {isHybridEmbedded} from \"./utils/hybrid-utils\";\n\nasync function startLauncher(): Promise {\n const module = await import(/* webpackChunkName: \"launcher\"*/ './startup-launcher');\n module.startLauncher();\n}\n\nasync function startHybridApp(): Promise {\n if (isOrbitInQAMode()) {\n if (isLauncherPath(window.location.pathname)) {\n await startLauncher();\n } else {\n const module = await import(/* webpackChunkName: \"hybrid-qa\"*/ './startup-orbit-hybrid-qa');\n await module.startOrbitHybridQA()\n }\n } else {\n const module = await import(/* webpackChunkName: \"hybrid-prod\"*/ './startup-orbit-hybrid-prod');\n await module.startupOrbitHybridProd();\n }\n}\n\nasync function startWebApp(): Promise {\n if(isOrbitInQAMode()) {\n if(isLauncherPath(window.location.pathname)) {\n await startLauncher();\n } else {\n import(/* webpackChunkName: \"orbit-qa\"*/ './startup-orbit-qa').then(module => module.startOrbitQA());\n }\n } else {\n import(/* webpackChunkName: \"orbit-prod\"*/ './startup-orbit-prod').then(module => module.startOrbitProd());\n }\n}\n\nasync function startApp(): Promise {\n if(isHybridEmbedded()) {\n await startHybridApp();\n } else {\n await startWebApp();\n }\n}\n\nstartApp();\n\n","export const MAIN_LAUNCHER_PATH = \"/launch/888debug\";\n\nconst LAUNCHER_PATHS = [MAIN_LAUNCHER_PATH, \"/cip/launch/888debug\", \"/cis/launch/888debug\"];\n\nexport function isLauncherPath(path: string): boolean {\n\n if(!path) {\n return false;\n }\n\n path = path.toLowerCase();\n for(let i = 0; i < LAUNCHER_PATHS.length; i++) {\n if(path.startsWith(LAUNCHER_PATHS[i])) {\n return true;\n }\n }\n\n return false;\n}","interface IOrbitStartupFunctions {\n isCip(): boolean;\n isCis(): boolean;\n isProgressiveWebApp(): boolean;\n logToElastic(eventCategory: string, eventAction: string, eventLabel: string, eventValue: string): void;\n isHybridEmbedded(): boolean;\n getOrbitInitParams(): {\n sdkApiOrigin: string;\n orbitCDNOrigin: string;\n country: string;\n cmsSource: string;\n languageIso3: string;\n languageIso2: string;\n publicationId: number;\n queryParams: string;\n }\n}\n\n\nexport const OrbitStartupFunctions = window['orbitStartupFunctions'] as IOrbitStartupFunctions;\n","import {OrbitStartupFunctions} from \"../orbit-startup-functions\";\n\nexport function isHybridEmbedded(): boolean {\n return OrbitStartupFunctions.isHybridEmbedded();\n}\n","import {isHybridEmbedded} from \"./hybrid-utils\";\n\nfunction isHybridEmbeddedQA(): boolean {\n if(!isHybridEmbedded()) {\n return false;\n }\n\n if(window['isQAEnvironment']) {\n return window['isQAEnvironment']();\n }\n\n return false;\n}\n\nexport function isOrbitInQAMode(): boolean {\n return Boolean(window['isOrbitWebAppInQAMode']) || isHybridEmbeddedQA();\n}","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n/**\n * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\nfunction getFrameElement(doc) {\n try {\n return doc.defaultView && doc.defaultView.frameElement || null;\n } catch (e) {\n // Ignore the error.\n return null;\n }\n}\n\n/**\n * A local reference to the root document.\n */\nvar document = (function(startDoc) {\n var doc = startDoc;\n var frame = getFrameElement(doc);\n while (frame) {\n doc = frame.ownerDocument;\n frame = getFrameElement(doc);\n }\n return doc;\n})(window.document);\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n/**\n * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nvar crossOriginUpdater = null;\n\n/**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\nvar crossOriginRect = null;\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = ensureDOMRect(entry.rootBounds);\n this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);\n this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (\n options.root &&\n options.root.nodeType != 1 &&\n options.root.nodeType != 9\n ) {\n throw new Error('root must be a Document or Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n\n /** @private @const {!Array} */\n this._monitoringDocuments = [];\n /** @private @const {!Array} */\n this._monitoringUnsubscribes = [];\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nIntersectionObserver._setupCrossOriginUpdater = function() {\n if (!crossOriginUpdater) {\n /**\n * @param {DOMRect|ClientRect} boundingClientRect\n * @param {DOMRect|ClientRect} intersectionRect\n */\n crossOriginUpdater = function(boundingClientRect, intersectionRect) {\n if (!boundingClientRect || !intersectionRect) {\n crossOriginRect = getEmptyRect();\n } else {\n crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n }\n registry.forEach(function(observer) {\n observer._checkForIntersections();\n });\n };\n }\n return crossOriginUpdater;\n};\n\n\n/**\n * Resets the cross-origin mode.\n */\nIntersectionObserver._resetCrossOriginUpdater = function() {\n crossOriginUpdater = null;\n crossOriginRect = null;\n};\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections(target.ownerDocument);\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n return item.element != target;\n });\n this._unmonitorIntersections(target.ownerDocument);\n if (this._observationTargets.length == 0) {\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorAllIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function(doc) {\n var win = doc.defaultView;\n if (!win) {\n // Already destroyed.\n return;\n }\n if (this._monitoringDocuments.indexOf(doc) != -1) {\n // Already monitoring.\n return;\n }\n\n // Private state for monitoring.\n var callback = this._checkForIntersections;\n var monitoringInterval = null;\n var domObserver = null;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);\n } else {\n addEvent(win, 'resize', callback, true);\n addEvent(doc, 'scroll', callback, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {\n domObserver = new win.MutationObserver(callback);\n domObserver.observe(doc, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n\n this._monitoringDocuments.push(doc);\n this._monitoringUnsubscribes.push(function() {\n // Get the window object again. When a friendly iframe is destroyed, it\n // will be null.\n var win = doc.defaultView;\n\n if (win) {\n if (monitoringInterval) {\n win.clearInterval(monitoringInterval);\n }\n removeEvent(win, 'resize', callback, true);\n }\n\n removeEvent(doc, 'scroll', callback, true);\n if (domObserver) {\n domObserver.disconnect();\n }\n });\n\n // Also monitor the parent.\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._monitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function(doc) {\n var index = this._monitoringDocuments.indexOf(doc);\n if (index == -1) {\n return;\n }\n\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n\n // Check if any dependent targets are still remaining.\n var hasDependentTargets =\n this._observationTargets.some(function(item) {\n var itemDoc = item.element.ownerDocument;\n // Target is in this context.\n if (itemDoc == doc) {\n return true;\n }\n // Target is nested in this context.\n while (itemDoc && itemDoc != rootDoc) {\n var frame = getFrameElement(itemDoc);\n itemDoc = frame && frame.ownerDocument;\n if (itemDoc == doc) {\n return true;\n }\n }\n return false;\n });\n if (hasDependentTargets) {\n return;\n }\n\n // Unsubscribe.\n var unsubscribe = this._monitoringUnsubscribes[index];\n this._monitoringDocuments.splice(index, 1);\n this._monitoringUnsubscribes.splice(index, 1);\n unsubscribe();\n\n // Also unmonitor the parent.\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._unmonitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorAllIntersections = function() {\n var unsubscribes = this._monitoringUnsubscribes.slice(0);\n this._monitoringDocuments.length = 0;\n this._monitoringUnsubscribes.length = 0;\n for (var i = 0; i < unsubscribes.length; i++) {\n unsubscribes[i]();\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n if (!this.root && crossOriginUpdater && !crossOriginRect) {\n // Cross origin monitoring, but no initial data available yet.\n return;\n }\n\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, targetRect, rootRect);\n\n var rootBounds = null;\n if (!this._rootContainsTarget(target)) {\n rootBounds = getEmptyRect();\n } else if (!crossOriginUpdater || this.root) {\n rootBounds = rootRect;\n }\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootBounds,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} targetRect The bounding rect of the target.\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, targetRect, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot && parent) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return null;\n\n if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {\n atRoot = true;\n if (parent == this.root || parent == document) {\n if (crossOriginUpdater && !this.root) {\n if (!crossOriginRect ||\n crossOriginRect.width == 0 && crossOriginRect.height == 0) {\n // A 0-size cross-origin intersection means no-intersection.\n parent = null;\n parentRect = null;\n intersectionRect = null;\n } else {\n parentRect = crossOriginRect;\n }\n } else {\n parentRect = rootRect;\n }\n } else {\n // Check if there's a frame that can be navigated to.\n var frame = getParentNode(parent);\n var frameRect = frame && getBoundingClientRect(frame);\n var frameIntersect =\n frame &&\n this._computeTargetAndRootIntersection(frame, frameRect, rootRect);\n if (frameRect && frameIntersect) {\n parent = frame;\n parentRect = convertFromParentRect(frameRect, frameIntersect);\n } else {\n parent = null;\n intersectionRect = null;\n }\n }\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n var doc = parent.ownerDocument;\n if (parent != doc.body &&\n parent != doc.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n }\n if (!intersectionRect) break;\n parent = parent && getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {ClientRect} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root && !isDoc(this.root)) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var doc = isDoc(this.root) ? this.root : document;\n var html = doc.documentElement;\n var body = doc.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {DOMRect|ClientRect} rect The rect object to expand.\n * @return {ClientRect} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n return (\n containsDeep(rootDoc, target) &&\n (!this.root || rootDoc == target.ownerDocument)\n );\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detachEvent == 'function') {\n node.detachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object|?ClientRect} The intersection rect or undefined if no\n * intersection is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n } || null;\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {ClientRect} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n\n/**\n * Ensure that the result has all of the necessary fields of the DOMRect.\n * Specifically this ensures that `x` and `y` fields are set.\n *\n * @param {?DOMRect|?ClientRect} rect\n * @return {?DOMRect}\n */\nfunction ensureDOMRect(rect) {\n // A `DOMRect` object has `x` and `y` fields.\n if (!rect || 'x' in rect) {\n return rect;\n }\n // A IE's `ClientRect` type does not have `x` and `y`. The same is the case\n // for internally calculated Rect objects. For the purposes of\n // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`\n // for these fields.\n return {\n top: rect.top,\n y: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n right: rect.right,\n width: rect.width,\n height: rect.height\n };\n}\n\n\n/**\n * Inverts the intersection and bounding rect from the parent (frame) BCR to\n * the local BCR space.\n * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.\n * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.\n * @return {ClientRect} The local root bounding rect for the parent's children.\n */\nfunction convertFromParentRect(parentBoundingRect, parentIntersectionRect) {\n var top = parentIntersectionRect.top - parentBoundingRect.top;\n var left = parentIntersectionRect.left - parentBoundingRect.left;\n return {\n top: top,\n left: left,\n height: parentIntersectionRect.height,\n width: parentIntersectionRect.width,\n bottom: top + parentIntersectionRect.height,\n right: left + parentIntersectionRect.width\n };\n}\n\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (node.nodeType == /* DOCUMENT */ 9 && node != document) {\n // If this node is a document node, look for the embedding frame.\n return getFrameElement(node);\n }\n\n // If the parent has element that is assigned through shadow root slot\n if (parent && parent.assignedSlot) {\n parent = parent.assignedSlot.parentNode\n }\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n\n return parent;\n}\n\n/**\n * Returns true if `node` is a Document.\n * @param {!Node} node\n * @returns {boolean}\n */\nfunction isDoc(node) {\n return node && node.nodeType === 9;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n","/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n 'use strict';\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n // commonjs\n module.exports = { polyfill: polyfill };\n } else {\n // global\n polyfill();\n }\n\n}());\n","/**\n *\n *\n * @author Jerry Bendy \n * @licence MIT\n *\n */\n\n(function(self) {\n 'use strict';\n\n var nativeURLSearchParams = (function() {\n // #41 Fix issue in RN\n try {\n if (self.URLSearchParams && (new self.URLSearchParams('foo=bar')).get('foo') === 'bar') {\n return self.URLSearchParams;\n }\n } catch (e) {}\n return null;\n })(),\n isSupportObjectConstructor = nativeURLSearchParams && (new nativeURLSearchParams({a: 1})).toString() === 'a=1',\n // There is a bug in safari 10.1 (and earlier) that incorrectly decodes `%2B` as an empty space and not a plus.\n decodesPlusesCorrectly = nativeURLSearchParams && (new nativeURLSearchParams('s=%2B').get('s') === '+'),\n __URLSearchParams__ = \"__URLSearchParams__\",\n // Fix bug in Edge which cannot encode ' &' correctly\n encodesAmpersandsCorrectly = nativeURLSearchParams ? (function() {\n var ampersandTest = new nativeURLSearchParams();\n ampersandTest.append('s', ' &');\n return ampersandTest.toString() === 's=+%26';\n })() : true,\n prototype = URLSearchParamsPolyfill.prototype,\n iterable = !!(self.Symbol && self.Symbol.iterator);\n\n if (nativeURLSearchParams && isSupportObjectConstructor && decodesPlusesCorrectly && encodesAmpersandsCorrectly) {\n return;\n }\n\n\n /**\n * Make a URLSearchParams instance\n *\n * @param {object|string|URLSearchParams} search\n * @constructor\n */\n function URLSearchParamsPolyfill(search) {\n search = search || \"\";\n\n // support construct object with another URLSearchParams instance\n if (search instanceof URLSearchParams || search instanceof URLSearchParamsPolyfill) {\n search = search.toString();\n }\n this [__URLSearchParams__] = parseToDict(search);\n }\n\n\n /**\n * Appends a specified key/value pair as a new search parameter.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.append = function(name, value) {\n appendTo(this [__URLSearchParams__], name, value);\n };\n\n /**\n * Deletes the given search parameter, and its associated value,\n * from the list of all search parameters.\n *\n * @param {string} name\n */\n prototype['delete'] = function(name) {\n delete this [__URLSearchParams__] [name];\n };\n\n /**\n * Returns the first value associated to the given search parameter.\n *\n * @param {string} name\n * @returns {string|null}\n */\n prototype.get = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict[name][0] : null;\n };\n\n /**\n * Returns all the values association with a given search parameter.\n *\n * @param {string} name\n * @returns {Array}\n */\n prototype.getAll = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict [name].slice(0) : [];\n };\n\n /**\n * Returns a Boolean indicating if such a search parameter exists.\n *\n * @param {string} name\n * @returns {boolean}\n */\n prototype.has = function(name) {\n return hasOwnProperty(this [__URLSearchParams__], name);\n };\n\n /**\n * Sets the value associated to a given search parameter to\n * the given value. If there were several values, delete the\n * others.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.set = function set(name, value) {\n this [__URLSearchParams__][name] = ['' + value];\n };\n\n /**\n * Returns a string containg a query string suitable for use in a URL.\n *\n * @returns {string}\n */\n prototype.toString = function() {\n var dict = this[__URLSearchParams__], query = [], i, key, name, value;\n for (key in dict) {\n name = encode(key);\n for (i = 0, value = dict[key]; i < value.length; i++) {\n query.push(name + '=' + encode(value[i]));\n }\n }\n return query.join('&');\n };\n\n // There is a bug in Safari 10.1 and `Proxy`ing it is not enough.\n var forSureUsePolyfill = !decodesPlusesCorrectly;\n var useProxy = (!forSureUsePolyfill && nativeURLSearchParams && !isSupportObjectConstructor && self.Proxy);\n var propValue; \n if (useProxy) {\n // Safari 10.0 doesn't support Proxy, so it won't extend URLSearchParams on safari 10.0\n propValue = new Proxy(nativeURLSearchParams, {\n construct: function (target, args) {\n return new target((new URLSearchParamsPolyfill(args[0]).toString()));\n }\n })\n // Chrome <=60 .toString() on a function proxy got error \"Function.prototype.toString is not generic\"\n propValue.toString = Function.prototype.toString.bind(URLSearchParamsPolyfill);\n } else {\n propValue = URLSearchParamsPolyfill;\n }\n /*\n * Apply polifill to global object and append other prototype into it\n */\n Object.defineProperty(self, 'URLSearchParams', {\n value: propValue\n });\n\n var USPProto = self.URLSearchParams.prototype;\n\n USPProto.polyfill = true;\n\n /**\n *\n * @param {function} callback\n * @param {object} thisArg\n */\n USPProto.forEach = USPProto.forEach || function(callback, thisArg) {\n var dict = parseToDict(this.toString());\n Object.getOwnPropertyNames(dict).forEach(function(name) {\n dict[name].forEach(function(value) {\n callback.call(thisArg, value, name, this);\n }, this);\n }, this);\n };\n\n /**\n * Sort all name-value pairs\n */\n USPProto.sort = USPProto.sort || function() {\n var dict = parseToDict(this.toString()), keys = [], k, i, j;\n for (k in dict) {\n keys.push(k);\n }\n keys.sort();\n\n for (i = 0; i < keys.length; i++) {\n this['delete'](keys[i]);\n }\n for (i = 0; i < keys.length; i++) {\n var key = keys[i], values = dict[key];\n for (j = 0; j < values.length; j++) {\n this.append(key, values[j]);\n }\n }\n };\n\n /**\n * Returns an iterator allowing to go through all keys of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n USPProto.keys = USPProto.keys || function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push(name);\n });\n return makeIterator(items);\n };\n\n /**\n * Returns an iterator allowing to go through all values of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n USPProto.values = USPProto.values || function() {\n var items = [];\n this.forEach(function(item) {\n items.push(item);\n });\n return makeIterator(items);\n };\n\n /**\n * Returns an iterator allowing to go through all key/value\n * pairs contained in this object.\n *\n * @returns {function}\n */\n USPProto.entries = USPProto.entries || function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push([name, item]);\n });\n return makeIterator(items);\n };\n\n\n if (iterable) {\n USPProto[self.Symbol.iterator] = USPProto[self.Symbol.iterator] || USPProto.entries;\n }\n\n\n function encode(str) {\n var replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'\\(\\)~]|%20|%00/g, function(match) {\n return replace[match];\n });\n }\n\n function decode(str) {\n return str\n .replace(/[ +]/g, '%20')\n .replace(/(%[a-f0-9]{2})+/ig, function(match) {\n return decodeURIComponent(match);\n });\n }\n\n function makeIterator(arr) {\n var iterator = {\n next: function() {\n var value = arr.shift();\n return {done: value === undefined, value: value};\n }\n };\n\n if (iterable) {\n iterator[self.Symbol.iterator] = function() {\n return iterator;\n };\n }\n\n return iterator;\n }\n\n function parseToDict(search) {\n var dict = {};\n\n if (typeof search === \"object\") {\n // if `search` is an array, treat it as a sequence\n if (isArray(search)) {\n for (var i = 0; i < search.length; i++) {\n var item = search[i];\n if (isArray(item) && item.length === 2) {\n appendTo(dict, item[0], item[1]);\n } else {\n throw new TypeError(\"Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements\");\n }\n }\n\n } else {\n for (var key in search) {\n if (search.hasOwnProperty(key)) {\n appendTo(dict, key, search[key]);\n }\n }\n }\n\n } else {\n // remove first '?'\n if (search.indexOf(\"?\") === 0) {\n search = search.slice(1);\n }\n\n var pairs = search.split(\"&\");\n for (var j = 0; j < pairs.length; j++) {\n var value = pairs [j],\n index = value.indexOf('=');\n\n if (-1 < index) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\n\n } else {\n if (value) {\n appendTo(dict, decode(value), '');\n }\n }\n }\n }\n\n return dict;\n }\n\n function appendTo(dict, name, value) {\n var val = typeof value === 'string' ? value : (\n value !== null && value !== undefined && typeof value.toString === 'function' ? value.toString() : JSON.stringify(value)\n );\n\n // #47 Prevent using `hasOwnProperty` as a property name\n if (hasOwnProperty(dict, name)) {\n dict[name].push(val);\n } else {\n dict[name] = [val];\n }\n }\n\n function isArray(val) {\n return !!val && '[object Array]' === Object.prototype.toString.call(val);\n }\n\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n})(typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : this));\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}"],"names":["ALL_CONFIGS_KEY","LAUNCHER_DATA_STORAGE_KEY","allConfigs","window","orbitServerPath","sdk","config","ExtraProperties","paths","server","endsWith","__webpack_public_path__","Array","prototype","toDictionary","keySelector","valueSelector","result","item","this","forEach","index","key","groupByKey","push","distinct","length","uniqueItems","Object","values","all","predicate","splitToChunks","chunkSize","i","slice","selectMany","subItemsSelector","value","findFirst","filter","max","min","sum","smoothscroll","startLauncher","startHybridApp","isOrbitInQAMode","isLauncherPath","location","pathname","module","startOrbitHybridQA","startupOrbitHybridProd","startWebApp","then","startOrbitQA","startOrbitProd","isHybridEmbedded","startApp","MAIN_LAUNCHER_PATH","LAUNCHER_PATHS","path","toLowerCase","startsWith","OrbitStartupFunctions","Boolean","IntersectionObserverEntry","defineProperty","get","intersectionRatio","document","startDoc","doc","frame","getFrameElement","ownerDocument","registry","crossOriginUpdater","crossOriginRect","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_setupCrossOriginUpdater","boundingClientRect","intersectionRect","convertFromParentRect","top","bottom","left","right","width","height","observer","_checkForIntersections","_resetCrossOriginUpdater","observe","target","_observationTargets","some","element","nodeType","Error","_registerInstance","entry","_monitorIntersections","unobserve","_unmonitorIntersections","_unregisterInstance","disconnect","_unmonitorAllIntersections","takeRecords","records","_queuedEntries","_initThresholds","opt_threshold","threshold","isArray","sort","t","a","isNaN","_parseRootMargin","opt_rootMargin","margins","split","map","margin","parts","exec","parseFloat","unit","win","defaultView","_monitoringDocuments","indexOf","callback","monitoringInterval","domObserver","setInterval","addEvent","MutationObserver","attributes","childList","characterData","subtree","_monitoringUnsubscribes","clearInterval","removeEvent","rootDoc","root","hasDependentTargets","itemDoc","unsubscribe","splice","unsubscribes","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","rootBounds","newEntry","time","performance","now","_hasCrossedThreshold","isIntersecting","_callback","getComputedStyle","display","parent","getParentNode","atRoot","parentRect","parentComputedStyle","frameRect","frameIntersect","body","documentElement","overflow","computeRectIntersection","isDoc","html","clientWidth","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","frameElement","e","ensureDOMRect","targetArea","intersectionArea","Number","toFixed","opt_options","options","fn","timeout","timer","setTimeout","throttle","bind","rootMargin","join","node","event","opt_useCapture","addEventListener","attachEvent","removeEventListener","detachEvent","rect1","rect2","Math","el","err","y","x","parentBoundingRect","parentIntersectionRect","child","parentNode","assignedSlot","host","exports","polyfill","w","d","style","__forceSmoothScrollPolyfill__","userAgent","Element","HTMLElement","SCROLL_TIME","original","scroll","scrollTo","scrollBy","elementScroll","scrollElement","scrollIntoView","Date","ROUNDING_TOLERANCE","navigator","RegExp","test","undefined","arguments","shouldBailOut","smoothScroll","call","scrollX","pageXOffset","scrollY","pageYOffset","scrollLeft","scrollTop","SyntaxError","behavior","scrollableParent","isScrollable","findScrollableParent","parentRects","clientRects","position","firstArg","TypeError","hasScrollableSpace","axis","scrollHeight","scrollWidth","canOverflow","overflowValue","isScrollableY","isScrollableX","step","context","currentX","currentY","k","elapsed","startTime","cos","PI","startX","startY","method","scrollable","requestAnimationFrame","self","nativeURLSearchParams","URLSearchParams","isSupportObjectConstructor","toString","decodesPlusesCorrectly","__URLSearchParams__","encodesAmpersandsCorrectly","ampersandTest","append","URLSearchParamsPolyfill","iterable","Symbol","iterator","propValue","name","appendTo","dict","has","getAll","hasOwnProperty","set","query","encode","Proxy","construct","args","Function","USPProto","thisArg","parseToDict","getOwnPropertyNames","j","keys","items","makeIterator","entries","search","str","replace","encodeURIComponent","match","decode","decodeURIComponent","arr","next","shift","done","pairs","val","JSON","stringify","obj","prop","global","_arrayLikeToArray","len","arr2","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","Promise","_asyncToGenerator","apply","_createForOfIteratorHelper","o","allowArrayLike","it","F","s","n","_e","f","normalCompletion","didErr","_e2","_regeneratorRuntime","Op","hasOwn","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","Context","makeInvokeMethod","tryCatch","type","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","__proto__","awrap","async","iter","object","reverse","pop","skipTempReset","prev","charAt","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","_typeof","_unsupportedIterableToArray","minLen","from"],"sourceRoot":""}