1(function(){var __webpack_modules__={
1"./src/components/helpers/dom.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addClass: () => (/* binding */ addClass),\n/* harmony export */ append: () => (/* binding */ append),\n/* harmony export */ appendHtml: () => (/* binding */ appendHtml),\n/* harmony export */ closest: () => (/* binding */ closest),\n/* harmony export */ createElement: () => (/* binding */ createElement),\n/* harmony export */ createNodes: () => (/* binding */ createNodes),\n/* harmony export */ delegate: () => (/* binding */ delegate),\n/* harmony export */ elInViewPort: () => (/* binding */ elInViewPort),\n/* harmony export */ formToObject: () => (/* binding */ formToObject),\n/* harmony export */ getAttribute: () => (/* binding */ getAttribute),\n/* harmony export */ getChildren: () => (/* binding */ getChildren),\n/* harmony export */ getData: () => (/* binding */ getData),\n/* harmony export */ getHeight: () => (/* binding */ getHeight),\n/* harmony export */ getNumber: () => (/* binding */ getNumber),\n/* harmony export */ getParent: () => (/* binding */ getParent),\n/* harmony export */ getScrollTop: () => (/* binding */ getScrollTop),\n/* harmony export */ getStyle: () => (/* binding */ getStyle),\n/* harmony export */ getTopOffset: () => (/* binding */ getTopOffset),\n/* harmony export */ getTopPosition: () => (/* binding */ getTopPosition),\n/* harmony export */ getValue: () => (/* binding */ getValue),\n/* harmony export */ handleize: () => (/* binding */ handleize),\n/* harmony export */ hasClass: () => (/* binding */ hasClass),\n/* harmony export */ hide: () => (/* binding */ hide),\n/* harmony export */ hideModal: () => (/* binding */ hideModal),\n/* harmony export */ isIosDevice: () => (/* binding */ isIosDevice),\n/* harmony export */ loadScript: () => (/* binding */ loadScript),\n/* harmony export */ matches: () => (/* binding */ matches),\n/* harmony export */ off: () => (/* binding */ off),\n/* harmony export */ on: () => (/* binding */ on),\n/* harmony export */ onCapture: () => (/* binding */ onCapture),\n/* harmony export */ onPassive: () => (/* binding */ onPassive),\n/* harmony export */ openModal: () => (/* binding */ openModal),\n/* harmony export */ ready: () => (/* binding */ ready),\n/* harmony export */ remove: () => (/* binding */ remove),\n/* harmony export */ removeAttribute: () => (/* binding */ removeAttribute),\n/* harmony export */ removeClass: () => (/* binding */ removeClass),\n/* harmony export */ select: () => (/* binding */ select),\n/* harmony export */ selectAll: () => (/* binding */ selectAll),\n/* harmony export */ setAttribute: () => (/* binding */ setAttribute),\n/* harmony export */ setData: () => (/* binding */ setData),\n/* harmony export */ setStyle: () => (/* binding */ setStyle),\n/* harmony export */ toggleClass: () => (/* binding */ toggleClass),\n/* harmony export */ trigger: () => (/* binding */ trigger)\n/* harmony export */ });\n/* harmony import */ var helpers_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! helpers/utils */ \"./src/components/helpers/utils.js\");\n\nconst _getElementRect = el => el.getBoundingClientRect();\n\n/**\n * Add class to a list of elements. This is a curried function.\n *\n * @param {string} className\n * @param {Array<HTMLElement>} els\n * @return {Array<HTMLElement>} Same elements for chaining\n */\nconst addClass = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((className, els) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.map)(el => {\n el.classList.add(className);\n return el;\n}, els));\nconst append = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((parent, els) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.map)(el => parent.appendChild(el), els));\nconst appendHtml = (el, html) => {\n el.insertAdjacentHTML('beforeend', html);\n return el;\n};\nconst createNodes = html => {\n const wrapper = document.createElement('div');\n appendHtml(wrapper, html);\n return getChildren(wrapper);\n};\n\n/**\n * Set style for an element.\n *\n * This is a curried function.\n *\n * @param {string} k Style name\n * @param {string} v Style value\n * @param {HTMLElement} el Element\n * @return {HTMLElement}\n */\nconst setStyle = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((k, v, el) => {\n el.style[k] = v;\n return el;\n});\nconst hide = setStyle('display', 'none');\n\n/**\n * Get a style for an element.\n *\n * This is a curried function.\n *\n * @param {string} k Style name\n * @param {HTMLElement} el\n * @return {string}\n */\nconst getStyle = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((k, el) => getComputedStyle(el)[k]);\n\n/**\n * Get actual height of an element, including padding\n *\n * @param {HTMLElement} el\n * @return {number}\n */\nconst getHeight = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.getProp)('clientHeight');\n\n/**\n * Get scroll top position of an element.\n *\n * Default to getting scrolling position of the viewport\n *\n * @param {HTMLElement} el\n * @return {number}\n */\nconst getScrollTop = (el = document.documentElement) => el === document.documentElement ? window.scrollY || el.scrollTop : el.scrollTop;\n\n/**\n * Check to see if an element has a specified class.\n *\n * @param {string} className\n * @param {HTMLElement} el\n */\nconst hasClass = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((className, el) => el.classList.contains(className));\n\n/**\n * Get attribute value for an element.\n *\n * @param {string} name\n * @param {HTMLElement} el\n * @return {string}\n * @private\n */\nconst _getAttribute = (name, el) => el.getAttribute(name);\n\n/**\n * Get attribute value for an element.\n *\n * This is a curried function\n *\n * @param {string} name\n * @param {HTMLElement} el\n * @return {string}\n */\nconst getAttribute = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)(_getAttribute);\nconst setAttribute = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((name, value, el) => {\n el.setAttribute(name, value);\n return el;\n});\nconst removeAttribute = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((name, el) => {\n el.removeAttribute(name);\n});\n\n/**\n * Get data attribute.\n *\n * @param {string} name\n * @param {HTMLElement} el\n * @return {string} Parsed JSON value or object\n * @private\n */\nconst _getData = (name, el) => _getAttribute('data-' + name, el);\n\n/**\n * Get data attribute.\n *\n * This is a curried function\n *\n * @param {string} name\n * @param {HTMLElement} el\n * @return {string}\n */\nconst getData = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)(_getData);\nconst setData = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((name, value, el) => setAttribute('data-' + name, value, el));\n\n/**\n * Attach event handler for a single event\n *\n * @param {string} event\n * @param {Function} handler\n * @param {Object} capture\n * @param {HTMLElement} el\n * @returns {HTMLElement}\n * @private\n */\nconst _on = (event, handler, capture, el) => {\n el.addEventListener(event, handler, capture);\n return el;\n};\nconst _off = (event, handler, capture, el) => {\n el.removeEventListener(event, handler, capture);\n return el;\n};\nconst matches = (selector, el) => {\n const funcs = ['matches', 'matchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector', 'webkitMatchesSelector'];\n for (const func of funcs) {\n if (typeof el[func] === 'function') {\n return el[func](selector);\n }\n }\n return false;\n};\n\n/**\n * Attach event handler for a list of events.\n *\n * This is a curried function\n *\n * @param {Array|Object} els Array or array-like object\n * @param {string} event\n * @param {Function} handler\n * @return {Array<HTMLElement>}\n */\nconst on = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((event, handler, els) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.map)((0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.partial)(_on, event, handler, {}), els));\nconst off = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((event, handler, els) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.map)((0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.partial)(_off, event, handler, {}), els));\nconst onPassive = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((event, handler, els) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.map)((0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.partial)(_on, event, handler, {\n passive: true\n}), els));\nconst onCapture = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((event, handler, els) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.map)((0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.partial)(_on, event, handler, true), els));\n\n/**\n * Check to see if document has loaded\n *\n * @return {boolean}\n * @private\n */\nconst _domLoaded = () => document.attachEvent ? document.readyState === 'complete' : document.readyState !== 'loading';\n\n/**\n * Call function when document is ready\n *\n * @param {Function} f\n */\nconst ready = f => _domLoaded() ? f() : on('DOMContentLoaded', f, document);\nconst closest = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((selector, el) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.whileDo)(target => target && !matches(selector, target) && target.parentNode, target => target.parentNode === document ? null : target.parentNode, el.parentNode));\nconst _delegate = (event, handler, selector, el) => _on(event, e => {\n const matchedElement = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.whileDo)(target => target && target !== document && !matches(selector, target) && target.parentNode, target => target.parentNode, e.target);\n if (matchedElement !== document && matches(selector, matchedElement)) {\n handler.apply(el, [e]);\n }\n}, {}, el);\nconst delegate = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((event, handler, selector, els) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.map)((0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.partial)(_delegate, event, handler, selector), els));\n\n/**\n * Remove class from a list of elements. This is a curried function.\n *\n * @param {string} className\n * @param {Array<HTMLElement>} els\n * @return {Array<HTMLElement>} Same elements for chaining\n */\nconst removeClass = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((className, els) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.map)(el => {\n el.classList.remove(className);\n return el;\n}, els));\nconst toggleClass = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.curry)((className, els) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.map)(el => {\n el.classList.toggle(className);\n return el;\n}, els));\n\n/**\n * Select one element matching a selector, which is also decendant of a parent element (defaults to document)\n * @param {string} selector\n * @param {HTMLElement|HTMLDocument=} parent\n * @return {HTMLElement}\n */\nconst select = (selector, parent = document) => parent.querySelector(selector);\n\n/**\n * Select all elements matching a selector, which are also decendant of a parent element (defaults to document)\n * @param {string} selector\n * @param {HTMLElement|HTMLDocument=} parent\n * @return {Array<HTMLElement>}\n */\nconst selectAll = (selector, parent = document) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.makeArray)(parent.querySelectorAll(selector));\nconst getChildren = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.pipe)((0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.getProp)('children'), helpers_utils__WEBPACK_IMPORTED_MODULE_0__.makeArray);\nconst getParent = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.getProp)('parentNode');\nconst getTopOffset = el => _getElementRect(el).top + getScrollTop();\nconst getTopPosition = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.getProp)('offsetTop');\nconst trigger = (eventName, el, data = {}) =>
1 {\n let event;\n if (typeof window.CustomEvent === 'function') {\n event = new CustomEvent(eventName, {\n detail: data\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, true, true, data);\n }\n el.dispatchEvent(event);\n return el;\n};\nconst createElement = tag => document.createElement(tag);\nconst createScriptTag = (src, async = true, defer = true) => (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.pipe)(createElement, (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.setProp)('src', src), (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.setProp)('async', async), (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.setProp)('defer', defer))('script');\nconst loadScript = (src, async = true, defer = true) => new Promise((resolve, reject) => {\n const tag = createScriptTag(src, async, defer);\n tag.onload = resolve;\n tag.onerror = reject;\n append(document.body, tag);\n});\nconst getValue = (0,helpers_utils__WEBPACK_IMPORTED_MODULE_0__.getProp)('value');\nconst remove = el => el.parentNode.removeChild(el);\nconst isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iPad|iPhone|iPod/.test(window.navigator.platform) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);\nconst handleize = string => string.toLowerCase().replace(/[^\\w\\u00C0-\\u024f]+/g, '-').replace(/^-+|-+$/g, '').normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\nconst elInViewPort = (el, partiallyVisible = false) => {\n const {\n top,\n left,\n bottom,\n right\n } = el.getBoundingClientRect();\n const {\n innerHeight,\n innerWidth\n } = window;\n return partiallyVisible ? (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth) : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth;\n};\nconst openModal = id => {\n const modal = document.querySelector(`[data-target=\"${id}\"]`);\n if (modal) {\n modal.show(null, null, true);\n }\n};\nconst hideModal = id => {\n const modal = document.querySelector(`[data-target=\"${id}\"]`);\n if (modal) {\n modal.hide();\n }\n};\nconst formToObject = form => {\n const formData = new FormData(form);\n const formObject = {};\n for (const [key, value] of formData.entries()) {\n const keys = key.split('[').map(k => k.replace(']', ''));\n let obj = formObject;\n for (let i = 0; i < keys.length - 1; i++) {\n const _k = keys[i];\n obj[_k] = obj[_k] || {};\n obj = obj[_k];\n }\n const k = keys[keys.length - 1];\n obj[k] = value;\n }\n return formObject;\n};\nconst getNumber = string => {\n var _string$match;\n return +((_string$match = string.match(/\\d+/)) === null || _string$match === void 0 ? void 0 : _string$match[0]) || string;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29tcG9uZW50cy9oZWxwZXJzL2RvbS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFBQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBUUE7QUFJQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBS0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFNQTtBQVFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovL2dhbW1hLy4vc3JjL2NvbXBvbmVudHMvaGVscGVycy9kb20uanM/NTBlZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYWtlQXJyYXksIGN1cnJ5LCBnZXRQcm9wLCBzZXRQcm9wLCBwYXJ0aWFsLCBwaXBlLCBtYXAsIHdoaWxlRG8gfSBmcm9tICdoZWxwZXJzL3V0aWxzJ1xuXG5jb25zdCBfZ2V0RWxlbWVudFJlY3QgPSAoZWwpID0+IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbi8qKlxuICogQWRkIGNsYXNzIHRvIGEgbGlzdCBvZiBlbGVtZW50cy4gVGhpcyBpcyBh
1IGN1cnJpZWQgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxuICogQHBhcmFtIHtBcnJheTxIVE1MRWxlbWVudD59IGVsc1xuICogQHJldHVybiB7QXJyYXk8SFRNTEVsZW1lbnQ+fSBTYW1lIGVsZW1lbnRzIGZvciBjaGFpbmluZ1xuICovXG5jb25zdCBhZGRDbGFzcyA9IGN1cnJ5KChjbGFzc05hbWUsIGVscykgPT5cbiAgbWFwKChlbCkgPT4ge1xuICAgIGVsLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKVxuICAgIHJldHVybiBlbFxuICB9LCBlbHMpXG4pXG5cbmNvbnN0IGFwcGVuZCA9IGN1cnJ5KChwYXJlbnQsIGVscykgPT4gbWFwKChlbCkgPT4gcGFyZW50LmFwcGVuZENoaWxkKGVsKSwgZWxzKSlcblxuY29uc3QgYXBwZW5kSHRtbCA9IChlbCwgaHRtbCkgPT4ge1xuICBlbC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIGh0bWwpXG4gIHJldHVybiBlbFxufVxuXG5jb25zdCBjcmVhdGVOb2RlcyA9IChodG1sKSA9PiB7XG4gIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICBhcHBlbmRIdG1sKHdyYXBwZXIsIGh0bWwpXG4gIHJldHVybiBnZXRDaGlsZHJlbih3cmFwcGVyKVxufVxuXG4vKipcbiAqIFNldCBzdHlsZSBmb3IgYW4gZWxlbWVudC5cbiAqXG4gKiBUaGlzIGlzIGEgY3VycmllZCBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gayBTdHlsZSBuYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gdiBTdHlsZSB2YWx1ZVxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWwgRWxlbWVudFxuICogQHJldHVybiB7SFRNTEVsZW1lbnR9XG4gKi9cbmNvbnN0IHNldFN0eWxlID0gY3VycnkoKGssIHYsIGVsKSA9PiB7XG4gIGVsLnN0eWxlW2tdID0gdlxuICByZXR1cm4gZWxcbn0pXG5cbmNvbnN0IGhpZGUgPSBzZXRTdHlsZSgnZGlzcGxheScsICdub25lJylcblxuLyoqXG4gKiBHZXQgYSBzdHlsZSBmb3IgYW4gZWxlbWVudC5cbiAqXG4gKiBUaGlzIGlzIGEgY3VycmllZCBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gayBTdHlsZSBuYW1lXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5jb25zdCBnZXRTdHlsZSA9IGN1cnJ5KChrLCBlbCkgPT4gZ2V0Q29tcHV0ZWRTdHlsZShlbClba10pXG5cbi8qKlxuICogR2V0IGFjdHVhbCBoZWlnaHQgb2YgYW4gZWxlbWVudCwgaW5jbHVkaW5nIHBhZGRpbmdcbiAqXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5jb25zdCBnZXRIZWlnaHQgPSBnZXRQcm9wKCdjbGllbnRIZWlnaHQnKVxuXG4vKipcbiAqIEdldCBzY3JvbGwgdG9wIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQuXG4gKlxuICogRGVmYXVsdCB0byBnZXR0aW5nIHNjcm9sbGluZyBwb3NpdGlvbiBvZiB0aGUgdmlld3BvcnRcbiAqXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5jb25zdCBnZXRTY3JvbGxUb3AgPSAoZWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpID0+IChlbCA9PT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ID8gd2luZG93LnNjcm9sbFkgfHwgZWwuc2Nyb2xsVG9wIDogZWwuc2Nyb2xsVG9wKVxuXG4vKipcbiAqIENoZWNrIHRvIHNlZSBpZiBhbiBlbGVtZW50IGhhcyBhIHNwZWNpZmllZCBjbGFzcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbFxuICovXG5jb25zdCBoYXNDbGFzcyA9IGN1cnJ5KChjbGFzc05hbWUsIGVsKSA9PiBlbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSlcblxuLyoqXG4gKiBHZXQgYXR0cmlidXRlIHZhbHVlIGZvciBhbiBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbFxuICogQHJldHVybiB7c3RyaW5nfVxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgX2dldEF0dHJpYnV0ZSA9IChuYW1lLCBlbCkgPT4gZWwuZ2V0QXR0cmlidXRlKG5hbWUpXG5cbi8qKlxuICogR2V0IGF0dHJpYnV0ZSB2YWx1ZSBmb3IgYW4gZWxlbWVudC5cbiAqXG4gKiBUaGlzIGlzIGEgY3VycmllZCBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5jb25zdCBnZXRBdHRyaWJ1dGUgPSBjdXJyeShfZ2V0QXR0cmlidXRlKVxuXG5jb25zdCBzZXRBdHRyaWJ1dGUgPSBjdXJyeSgobmFtZSwgdmFsdWUsIGVsKSA9PiB7XG4gIGVsLnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSlcbiAgcmV0dXJuIGVsXG59KVxuXG5jb25zdCByZW1vdmVBdHRyaWJ1dGUgPSBjdXJyeSgobmFtZSwgZWwpID0+IHtcbiAgZWwucmVtb3ZlQXR0cmlidXRlKG5hbWUpXG59KVxuXG4vKipcbiAqIEdldCBkYXRhIGF0dHJpYnV0ZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxcbiAqIEByZXR1cm4ge3N0cmluZ30gUGFyc2VkIEpTT04gdmFsdWUgb3Igb2JqZWN0XG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBfZ2V0RGF0YSA9IChuYW1lLCBlbCkgPT4gX2dldEF0dHJpYnV0ZSgnZGF0YS0nICsgbmFtZSwgZWwpXG5cbi8qKlxuICogR2V0IGRhdGEgYXR0cmlidXRlLlxuICpcbiAqIFRoaXMgaXMgYSBjdXJyaWVkIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmNvbnN0IGdldERhdGEgPSBjdXJyeShfZ2V0RGF0YSlcblxuY29uc3Qgc2V0RGF0YSA9IGN1cnJ5KChuYW1lLCB2YWx1ZSwgZWwpID0+IHNldEF0dHJpYnV0ZSgnZGF0YS0nICsgbmFtZSwgdmFsdWUsIGVsKSlcblxuLyoqXG4gKiBBdHRhY2ggZXZlbnQgaGFuZGxlciBmb3IgYSBzaW5nbGUgZXZlbnRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXJcbiAqIEBwYXJhbSB7T2JqZWN0fSBjYXB0dXJlXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbFxuICogQHJldHVybnMge0hUTUxFbGVtZW50fVxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgX29uID0gKGV2ZW50LCBoYW5kbGVyLCBjYXB0dXJlLCBlbCkgPT4ge1xuICBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBjYXB0dXJlKVxuICByZXR1cm4gZWxcbn1cblxuY29uc3QgX29mZiA9IChldmVudCwgaGFuZGxlciwgY2FwdHVyZSwgZWwpID0+IHtcbiAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgY2FwdHVyZSlcbiAgcmV0dXJuIGVsXG59XG5cbmNvbnN0IG1hdGNoZXMgPSAoc2VsZWN0b3IsIGVsKSA9PiB7XG4gIGNvbnN0IGZ1bmNzID0gWydtYXRjaGVzJywgJ21hdGNoZXNTZWxlY3RvcicsICdtb3pNYXRjaGVzU2VsZWN0b3InLCAnbXNNYXRjaGVzU2VsZWN0b3InLCAnb01hdGNoZXNTZWxlY3RvcicsICd3ZWJraXRNYXRjaGVzU2VsZWN0b3InXVxuXG4gIGZvciAoY29uc3QgZnVuYyBvZiBmdW5jcykge1xuICAgIGlmICh0eXBlb2YgZWxbZnVuY10gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybi
1BlbFtmdW5jXShzZWxlY3RvcilcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBBdHRhY2ggZXZlbnQgaGFuZGxlciBmb3IgYSBsaXN0IG9mIGV2ZW50cy5cbiAqXG4gKiBUaGlzIGlzIGEgY3VycmllZCBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBlbHMgQXJyYXkgb3IgYXJyYXktbGlrZSBvYmplY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlclxuICogQHJldHVybiB7QXJyYXk8SFRNTEVsZW1lbnQ+fVxuICovXG5jb25zdCBvbiA9IGN1cnJ5KChldmVudCwgaGFuZGxlciwgZWxzKSA9PiBtYXAocGFydGlhbChfb24sIGV2ZW50LCBoYW5kbGVyLCB7fSksIGVscykpXG5cbmNvbnN0IG9mZiA9IGN1cnJ5KChldmVudCwgaGFuZGxlciwgZWxzKSA9PiBtYXAocGFydGlhbChfb2ZmLCBldmVudCwgaGFuZGxlciwge30pLCBlbHMpKVxuXG5jb25zdCBvblBhc3NpdmUgPSBjdXJyeSgoZXZlbnQsIGhhbmRsZXIsIGVscykgPT4gbWFwKHBhcnRpYWwoX29uLCBldmVudCwgaGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pLCBlbHMpKVxuXG5jb25zdCBvbkNhcHR1cmUgPSBjdXJyeSgoZXZlbnQsIGhhbmRsZXIsIGVscykgPT4gbWFwKHBhcnRpYWwoX29uLCBldmVudCwgaGFuZGxlciwgdHJ1ZSksIGVscykpXG5cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIGRvY3VtZW50IGhhcyBsb2FkZWRcbiAqXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgX2RvbUxvYWRlZCA9ICgpID0+IChkb2N1bWVudC5hdHRhY2hFdmVudCA/IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScgOiBkb2N1bWVudC5yZWFkeVN0YXRlICE9PSAnbG9hZGluZycpXG5cbi8qKlxuICogQ2FsbCBmdW5jdGlvbiB3aGVuIGRvY3VtZW50IGlzIHJlYWR5XG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZlxuICovXG5jb25zdCByZWFkeSA9IChmKSA9PiAoX2RvbUxvYWRlZCgpID8gZigpIDogb24oJ0RPTUNvbnRlbnRMb2FkZWQnLCBmLCBkb2N1bWVudCkpXG5cbmNvbnN0IGNsb3Nlc3QgPSBjdXJyeSgoc2VsZWN0b3IsIGVsKSA9PlxuICB3aGlsZURvKFxuICAgICh0YXJnZXQpID0+IHRhcmdldCAmJiAhbWF0Y2hlcyhzZWxlY3RvciwgdGFyZ2V0KSAmJiB0YXJnZXQucGFyZW50Tm9kZSxcbiAgICAodGFyZ2V0KSA9PiAodGFyZ2V0LnBhcmVudE5vZGUgPT09IGRvY3VtZW50ID8gbnVsbCA6IHRhcmdldC5wYXJlbnROb2RlKSxcbiAgICBlbC5wYXJlbnROb2RlXG4gIClcbilcblxuY29uc3QgX2RlbGVnYXRlID0gKGV2ZW50LCBoYW5kbGVyLCBzZWxlY3RvciwgZWwpID0+XG4gIF9vbihcbiAgICBldmVudCxcbiAgICAoZSkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hlZEVsZW1lbnQgPSB3aGlsZURvKFxuICAgICAgICAodGFyZ2V0KSA9PiB0YXJnZXQgJiYgdGFyZ2V0ICE9PSBkb2N1bWVudCAmJiAhbWF0Y2hlcyhzZWxlY3RvciwgdGFyZ2V0KSAmJiB0YXJnZXQucGFyZW50Tm9kZSxcbiAgICAgICAgKHRhcmdldCkgPT4gdGFyZ2V0LnBhcmVudE5vZGUsXG4gICAgICAgIGUudGFyZ2V0XG4gICAgICApXG5cbiAgICAgIGlmIChtYXRjaGVkRWxlbWVudCAhPT0gZG9jdW1lbnQgJiYgbWF0Y2hlcyhzZWxlY3RvciwgbWF0Y2hlZEVsZW1lbnQpKSB7XG4gICAgICAgIGhhbmRsZXIuYXBwbHkoZWwsIFtlXSlcbiAgICAgIH1cbiAgICB9LFxuICAgIHt9LFxuICAgIGVsXG4gIClcblxuY29uc3QgZGVsZWdhdGUgPSBjdXJyeSgoZXZlbnQsIGhhbmRsZXIsIHNlbGVjdG9yLCBlbHMpID0+IG1hcChwYXJ0aWFsKF9kZWxlZ2F0ZSwgZXZlbnQsIGhhbmRsZXIsIHNlbGVjdG9yKSwgZWxzKSlcblxuLyoqXG4gKiBSZW1vdmUgY2xhc3MgZnJvbSBhIGxpc3Qgb2YgZWxlbWVudHMuIFRoaXMgaXMgYSBjdXJyaWVkIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWVcbiAqIEBwYXJhbSB7QXJyYXk8SFRNTEVsZW1lbnQ+fSBlbHNcbiAqIEByZXR1cm4ge0FycmF5PEhUTUxFbGVtZW50Pn0gU2FtZSBlbGVtZW50cyBmb3IgY2hhaW5pbmdcbiAqL1xuY29uc3QgcmVtb3ZlQ2xhc3MgPSBjdXJyeSgoY2xhc3NOYW1lLCBlbHMpID0+XG4gIG1hcCgoZWwpID0+IHtcbiAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSlcbiAgICByZXR1cm4gZWxcbiAgfSwgZWxzKVxuKVxuXG5jb25zdCB0b2dnbGVDbGFzcyA9IGN1cnJ5KChjbGFzc05hbWUsIGVscykgPT5cbiAgbWFwKChlbCkgPT4ge1xuICAgIGVsLmNsYXNzTGlzdC50b2dnbGUoY2xhc3NOYW1lKVxuICAgIHJldHVybiBlbFxuICB9LCBlbHMpXG4pXG5cbi8qKlxuICogU2VsZWN0IG9uZSBlbGVtZW50IG1hdGNoaW5nIGEgc2VsZWN0b3IsIHdoaWNoIGlzIGFsc28gZGVjZW5kYW50IG9mIGEgcGFyZW50IGVsZW1lbnQgKGRlZmF1bHRzIHRvIGRvY3VtZW50KVxuICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fEhUTUxEb2N1bWVudD19IHBhcmVudFxuICogQHJldHVybiB7SFRNTEVsZW1lbnR9XG4gKi9cbmNvbnN0IHNlbGVjdCA9IChzZWxlY3RvciwgcGFyZW50ID0gZG9jdW1lbnQpID0+IHBhcmVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKVxuXG4vKipcbiAqIFNlbGVjdCBhbGwgZWxlbWVudHMgbWF0Y2hpbmcgYSBzZWxlY3Rvciwgd2hpY2ggYXJlIGFsc28gZGVjZW5kYW50IG9mIGEgcGFyZW50IGVsZW1lbnQgKGRlZmF1bHRzIHRvIGRvY3VtZW50KVxuICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fEhUTUxEb2N1bWVudD19IHBhcmVudFxuICogQHJldHVybiB7QXJyYXk8SFRNTEVsZW1lbnQ+fVxuICovXG5jb25zdCBzZWxlY3RBbGwgPSAoc2VsZWN0b3IsIHBhcmVudCA9IGRvY3VtZW50KSA9PiBtYWtlQXJyYXkocGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKVxuXG5jb25zdCBnZXRDaGlsZHJlbiA9IHBpcGUoZ2V0UHJvcCgnY2hpbGRyZW4nKSwgbWFrZUFycmF5KVxuXG5jb25zdCBnZXRQYXJlbnQgPSBnZXRQcm9wKCdwYXJlbnROb2RlJylcblxuY29uc3QgZ2V0VG9wT2Zmc2V0ID0gKGVsKSA9PiBfZ2V0RWxlbWVudFJlY3QoZWwpLnRvcCArIGdldFNjcm9sbFRvcCgpXG5cbmNvbnN0IGdldFRvcFBvc2l0aW9uID0gZ2V0UHJvcCgnb2Zmc2V0VG9wJylcblxuY29uc3QgdHJpZ2dlciA9IChldmVudE5hbWUsIGVsLCBkYXRhID0ge30pID0+IHtcbiAgbGV0IGV2ZW50XG4gIGlmICh0eXBlb2Ygd2luZG93LkN1c3RvbUV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoZXZlbnROYW1lLCB7
1IGRldGFpbDogZGF0YSB9KVxuICB9IGVsc2Uge1xuICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50JylcbiAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoZXZlbnROYW1lLCB0cnVlLCB0cnVlLCBkYXRhKVxuICB9XG4gIGVsLmRpc3BhdGNoRXZlbnQoZXZlbnQpXG4gIHJldHVybiBlbFxufVxuXG5jb25zdCBjcmVhdGVFbGVtZW50ID0gKHRhZykgPT4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpXG5cbmNvbnN0IGNyZWF0ZVNjcmlwdFRhZyA9IChzcmMsIGFzeW5jID0gdHJ1ZSwgZGVmZXIgPSB0cnVlKSA9PlxuICBwaXBlKGNyZWF0ZUVsZW1lbnQsIHNldFByb3AoJ3NyYycsIHNyYyksIHNldFByb3AoJ2FzeW5jJywgYXN5bmMpLCBzZXRQcm9wKCdkZWZlcicsIGRlZmVyKSkoJ3NjcmlwdCcpXG5cbmNvbnN0IGxvYWRTY3JpcHQgPSAoc3JjLCBhc3luYyA9IHRydWUsIGRlZmVyID0gdHJ1ZSkgPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHRhZyA9IGNyZWF0ZVNjcmlwdFRhZyhzcmMsIGFzeW5jLCBkZWZlcilcbiAgICB0YWcub25sb2FkID0gcmVzb2x2ZVxuICAgIHRhZy5vbmVycm9yID0gcmVqZWN0XG4gICAgYXBwZW5kKGRvY3VtZW50LmJvZHksIHRhZylcbiAgfSlcblxuY29uc3QgZ2V0VmFsdWUgPSBnZXRQcm9wKCd2YWx1ZScpXG5cbmNvbnN0IHJlbW92ZSA9IChlbCkgPT4gZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbClcblxuY29uc3QgaXNJb3NEZXZpY2UgPVxuICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICB3aW5kb3cubmF2aWdhdG9yICYmXG4gIHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0gJiZcbiAgKC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0pIHx8IChuYXZpZ2F0b3IucGxhdGZvcm0gPT09ICdNYWNJbnRlbCcgJiYgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMSkpXG5cbmNvbnN0IGhhbmRsZWl6ZSA9IChzdHJpbmcpID0+XG4gIHN0cmluZ1xuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1teXFx3XFx1MDBDMC1cXHUwMjRmXSsvZywgJy0nKVxuICAgIC5yZXBsYWNlKC9eLSt8LSskL2csICcnKVxuICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKVxuXG5jb25zdCBlbEluVmlld1BvcnQgPSAoZWwsIHBhcnRpYWxseVZpc2libGUgPSBmYWxzZSkgPT4ge1xuICBjb25zdCB7IHRvcCwgbGVmdCwgYm90dG9tLCByaWdodCB9ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgeyBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCB9ID0gd2luZG93XG4gIHJldHVybiBwYXJ0aWFsbHlWaXNpYmxlXG4gICAgPyAoKHRvcCA+IDAgJiYgdG9wIDwgaW5uZXJIZWlnaHQpIHx8IChib3R0b20gPiAwICYmIGJvdHRvbSA8IGlubmVySGVpZ2h0KSkgJiYgKChsZWZ0ID4gMCAmJiBsZWZ0IDwgaW5uZXJXaWR0aCkgfHwgKHJpZ2h0ID4gMCAmJiByaWdodCA8IGlubmVyV2lkdGgpKVxuICAgIDogdG9wID49IDAgJiYgbGVmdCA+PSAwICYmIGJvdHRvbSA8PSBpbm5lckhlaWdodCAmJiByaWdodCA8PSBpbm5lcldpZHRoXG59XG5cbmNvbnN0IG9wZW5Nb2RhbCA9IChpZCkgPT4ge1xuICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXRhcmdldD1cIiR7aWR9XCJdYClcbiAgaWYgKG1vZGFsKSB7XG4gICAgbW9kYWwuc2hvdyhudWxsLCBudWxsLCB0cnVlKVxuICB9XG59XG5cbmNvbnN0IGhpZGVNb2RhbCA9IChpZCkgPT4ge1xuICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXRhcmdldD1cIiR7aWR9XCJdYClcbiAgaWYgKG1vZGFsKSB7XG4gICAgbW9kYWwuaGlkZSgpXG4gIH1cbn1cblxuY29uc3QgZm9ybVRvT2JqZWN0ID0gKGZvcm0pID0+IHtcbiAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoZm9ybSlcbiAgY29uc3QgZm9ybU9iamVjdCA9IHt9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgZm9ybURhdGEuZW50cmllcygpKSB7XG4gICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnWycpLm1hcCgoaykgPT4gay5yZXBsYWNlKCddJywgJycpKVxuICAgIGxldCBvYmogPSBmb3JtT2JqZWN0XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBjb25zdCBrID0ga2V5c1tpXVxuXG4gICAgICBvYmpba10gPSBvYmpba10gfHwge31cbiAgICAgIG9iaiA9IG9ialtrXVxuICAgIH1cblxuICAgIGNvbnN0IGsgPSBrZXlzW2tleXMubGVuZ3RoIC0gMV1cblxuICAgIG9ialtrXSA9IHZhbHVlXG4gIH1cblxuICByZXR1cm4gZm9ybU9iamVjdFxufVxuXG5jb25zdCBnZXROdW1iZXIgPSAoc3RyaW5nKSA9PiArc3RyaW5nLm1hdGNoKC9cXGQrLyk/LlswXSB8fCBzdHJpbmdcblxuZXhwb3J0IHtcbiAgYWRkQ2xhc3MsXG4gIGFwcGVuZCxcbiAgZm9ybVRvT2JqZWN0LFxuICBhcHBlbmRIdG1sLFxuICBjcmVhdGVFbGVtZW50LFxuICBjcmVhdGVOb2RlcyxcbiAgY2xvc2VzdCxcbiAgZGVsZWdhdGUsXG4gIGdldEF0dHJpYnV0ZSxcbiAgZ2V0Q2hpbGRyZW4sXG4gIGdldEhlaWdodCxcbiAgZ2V0VG9wT2Zmc2V0LFxuICBnZXRUb3BQb3NpdGlvbixcbiAgZ2V0RGF0YSxcbiAgZ2V0UGFyZW50LFxuICBnZXRTY3JvbGxUb3AsXG4gIGdldFN0eWxlLFxuICBnZXRWYWx1ZSxcbiAgaGFzQ2xhc3MsXG4gIGhpZGUsXG4gIG9uLFxuICBvZmYsXG4gIG9uUGFzc2l2ZSxcbiAgb25DYXB0dXJlLFxuICBsb2FkU2NyaXB0LFxuICBtYXRjaGVzLFxuICByZWFkeSxcbiAgcmVtb3ZlLFxuICByZW1vdmVBdHRyaWJ1dGUsXG4gIHJlbW92ZUNsYXNzLFxuICBzZWxlY3QsXG4gIHNlbGVjdEFsbCxcbiAgc2V0QXR0cmlidXRlLFxuICBzZXREYXRhLFxuICBzZXRTdHlsZSxcbiAgdG9nZ2xlQ2xhc3MsXG4gIHRyaWdnZXIsXG4gIGlzSW9zRGV2aWNlLFxuICBoYW5kbGVpemUsXG4gIGVsSW5WaWV3UG9ydCxcbiAgb3Blbk1vZGFsLFxuICBoaWRlTW9kYWwsXG4gIGdldE51bWJlclxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/components/helpers/
1dom.js\n")},
1"./src/components/helpers/utils.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ add: () => (/* binding */ add),\n/* harmony export */ addQueryVar: () => (/* binding */ addQueryVar),\n/* harmony export */ addQueryVars: () => (/* binding */ addQueryVars),\n/* harmony export */ allPass: () => (/* binding */ allPass),\n/* harmony export */ always: () => (/* binding */ always),\n/* harmony export */ anyPass: () => (/* binding */ anyPass),\n/* harmony export */ chunkArray: () => (/* binding */ chunkArray),\n/* harmony export */ cond: () => (/* binding */ cond),\n/* harmony export */ curry: () => (/* binding */ curry),\n/* harmony export */ delay: () => (/* binding */ delay),\n/* harmony export */ divide: () => (/* binding */ divide),\n/* harmony export */ filter: () => (/* binding */ filter),\n/* harmony export */ first: () => (/* binding */ first),\n/* harmony export */ flipArgs: () => (/* binding */ flipArgs),\n/* harmony export */ formatName: () => (/* binding */ formatName),\n/* harmony export */ getProp: () => (/* binding */ getProp),\n/* harmony export */ getQueryVar: () => (/* binding */ getQueryVar),\n/* harmony export */ getQueryVars: () => (/* binding */ getQueryVars),\n/* harmony export */ hasOwnProperties: () => (/* binding */ hasOwnProperties),\n/* harmony export */ ifElse: () => (/* binding */ ifElse),\n/* harmony export */ inArray: () => (/* binding */ inArray),\n/* harmony export */ inViewPort: () => (/* binding */ inViewPort),\n/* harmony export */ isEmpty: () => (/* binding */ isEmpty),\n/* harmony export */ isLocationEqual: () => (/* binding */ isLocationEqual),\n/* harmony export */ isNaiveEqual: () => (/* binding */ isNaiveEqual),\n/* harmony export */ isTouch: () => (/* binding */ isTouch),\n/* harmony export */ last: () => (/* binding */ last),\n/* harmony export */ log: () => (/* binding */ log),\n/* harmony export */ lt: () => (/* binding */ lt),\n/* harmony export */ makeArray: () => (/* binding */ makeArray),\n/* harmony export */ map: () => (/* binding */ map),\n/* harmony export */ multiply: () => (/* binding */ multiply),\n/* harmony export */ nth: () => (/* binding */ nth),\n/* harmony export */ partial: () => (/* binding */ partial),\n/* harmony export */ pipe: () => (/* binding */ pipe),\n/* harmony export */ range: () => (/* binding */ range),\n/* harmony export */ removeAllQueryVars: () => (/* binding */ removeAllQueryVars),\n/* harmony export */ removeQueryVar: () => (/* binding */ removeQueryVar),\n/* harmony export */ returnFalse: () => (/* binding */ returnFalse),\n/* harmony export */ returnTrue: () => (/* binding */ returnTrue),\n/* harmony export */ scrollOver: () => (/* binding */ scrollOver),\n/* harmony export */ set: () => (/* binding */ set),\n/* harmony export */ setProp: () => (/* binding */ setProp),\n/* harmony export */ toPascalCase: () => (/* binding */ toPascalCase),\n/* harmony export */ tryCatch: () => (/* binding */ tryCatch),\n/* harmony export */ unset: () => (/* binding */ unset),\n/* harmony export */ when: () => (/* binding */ when),\n/* harmony export */ whileDo: () => (/* binding */ whileDo)\n/* harmony export */ });\n/**\n * Function that always returns True\n*/\nconst returnTrue = () => true;\n\n/**\n* Function that always returns false\n*/\nconst returnFalse = () => false;\n\n/**\n* Returns a curried function of the provided function, so that:\n*\n* f(a, b, c) = f(a, b)(c) = f(a)(b)(c) = f(a)(b, c)\n*\n* @param {Function} f\n* @param {..*} Initial parameters\n* @return {Function} The curried function\n*/\nconst curry = (f, ...args) => args.length >= f.length ? f(...args) : curry.bind(undefined, f, ...args);\nconst allPass = fs => (...args) => {\n for (let i = 0; i < fs.length; i++) {\n if (!fs[i].apply(undefined, args)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n* Takes in a list of predicates and return a function that will\n* pass its arguments through each of the predicates, returning\n* true if any predicate is satisfied.\n*\n* @param {Array<Function>}\n* @return {Function}\n*/\nconst anyPass = fs => (...args) => {\n for (let i = 0; i < fs.length;
1 i++) {\n if (fs[i].apply(undefined, args)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n* Encapsulates switch/case or if/else logic.\n*\n* Takes a list of [predicate, transformer] pairs.\n*\n* The returned function passes its arguments to predicates, evaluates them, and execute the matched transformer (passing the\n* same arguments). If there's no matched predicate, return undefined.\n*\n* @param pairs Pairs of [predicate, transformer]\n* @return {Function} Encapsulated function\n*/\nconst cond = pairs => (...args) => {\n for (let i = 0; i < pairs.length; i++) {\n if (pairs[i][0].apply(undefined, args)) {\n return pairs[i][1].apply(undefined, args);\n }\n }\n return undefined;\n};\n\n/**\n* Encapsulate if/else logic. Basically a wrapper of `cond`.\n*\n* @param p Predicate\n* @param {Function} fT Function to call when predicate is true\n* @param {Function} fF Function to call when predicate is false\n* @return {Function} Encapsulated function\n*/\nconst ifElse = (p, fT, fF) => cond([[p, fT], [returnTrue, fF]]);\nconst when = (p, f) => cond([[p, f], [returnTrue, identity]]);\n\n/**\n* Functional wrapper for array map function.\n*\n* @param {Function} f\n* @param {*} arr\n*/\nconst map = curry((f, arr) => Array.isArray(arr) ? arr.map(f) : f(arr));\nconst filter = curry((f, arr) => Array.isArray(arr) ? arr.filter(f) : f(arr) ? arr : undefined);\n\n/**\n* Partial application\n* @param {Function} f\n* @param {..*} args Initial parameters\n*/\nconst partial = (f, ...args) => f.bind(undefined, ...args);
1\n\n/**\n* Transform a value by chaining a list of function from left to right\n*\n* @param val\n* @param {..Function} funcs\n* @return {*}\n*/\nconst pipe = (...funcs) => function (val) {\n return funcs.reduce((acc, f) => f.apply(this, [acc]), val);\n};\nconst always = val => partial(val);\n\n/**\n* Get property of an object.\n*\n* This is a curried function.\n*\n* @param {string} prop\n* @param {Object} obj\n* @return {*}\n*/\nconst getProp = curry((prop, obj) => {\n return obj[prop];\n});\nconst lt = curry((b, a) => a < b);\nconst setProp = curry((prop, value, obj) => {\n obj[prop] = value;\n return obj;\n});\n\n/**\n* Delay execution of callback used on individual items of a list.\n*\n* This function is curried.\n*\n* @param {number} initial Initial timeout\n* @param {number} step Delay per execution\n* @param {Function} callback Callback\n* @param {Array} items\n*/\n\n/**\n* Encapsulate try/catch logic.\n*\n* Takes a pair of tryer and catcher functions. User must ensure tryer and catcher return the same\n* type so that chaining / composing works.\n*\n* Returns a function that can take arguments, which will be passed to both tryer and catcher.\n*\n* @param {Function} tryer\n* @param {Function} catcher\n* @return {Function} Encapsulated function\n*/\nconst tryCatch = (tryer, catcher) => (...args) => {\n try {\n return tryer(...args);\n } catch (e) {\n return catcher(e, ...args);\n }\n};\nconst whileDo = (pred, fn, initial) => pred(initial) ? whileDo(pred, fn, fn(initial)) : initial;\nconst divide = curry((b, a) => a / b);\nconst multiply = curry((b, a) => a * b);\n\n/**\n* Check if an array contains an item.\n*\n* This is a curried wrapper for Array.prototype.indexOf\n*\n* @param {Array}\n* @param {*}\n* @return {boolean}\n*/\nconst inArray = curry((array, item) => array.indexOf(item) !== -1);\n\n/**\n* Get the nth element of an array\n*\n* @param {number}\n* @param {Array}\n* @return {*}\n*/\nconst nth = curry((index, array) => index < 0 ? array[array.length + index] : array[index]);\n\n/**\n* Get the nth element of an array\n*\n* @param {Array}\n* @return {*}\n*/\nconst first = nth(1);\nconst last = nth(-1);\nconst add = curry((b, a) => a + b);\nconst _add1ToLast = pipe(last, add(1));\nconst range = (from, to) => whileDo(pipe(_add1ToLast, lt(to)), array => [...array, _add1ToLast(array)], [from]);\nconst flipArgs = f => curry((arg1, arg2) => f.apply(undefined, [arg2, arg1]));\n\n/**\n* Create an array out of an array-like object\n*\n* @param {Object} Array-like object\n* @return {Array} Array\n*/\nconst makeArray = arrayLike => Array.prototype.slice.call(arrayLike);\n\n/**\n* Log a value to console\n*\n* @param {*} val\n* @returns {*}\n*/\nconst log = val => {\n return val;\n};\nconst _getQueryPattern = key => new RegExp(`[?&]${key}=([^&]+)`);\nconst getQueryVar = (key, url = window.location.href) => {\n const pattern = _getQueryPattern(key);\n const matches = url.match(pattern);\n return matches ? matches[1] : '';\n};\n\n/**\n* Parse a query string into an object with { key: value } structure\n*\n* @param {string} url\n* @returns {Object}\n*/\nconst getQueryVars = (url = window.location.href) => url.replace(/^\\?/, '') // remove ? prefix\n.split('&') // split into `key=value` chunks\n.filter(Boolean) // remove empty string\n.reduce(\n/**\n* Aggregate key=value chunks into an Object with {key: value} structure\n* @param {Object} queryVars - aggregated object\n* @param {string} pair - e.g. 'key=value'\n* @returns {Object} - e.g. {key: value}\n*/\n(queryVars, pair) => {\n const [key, value] = pair.split('=');\n queryVars[key] = value;\n return queryVars;\n}, {});\nconst addQueryVar = (key, value, url = window.location.href) => {\n const removed = removeQueryVar(key, url);\n if (!value && value !== 0) {\n return removed;\n }\n return `${removed}${removed.indexOf('?') === -1 ? '?' : '&'}${key}=${value}`;\n};\nconst addQueryVars = (object, url = window.location.href) => Object.keys(object).reduce((agg, key) => {\n return addQueryVar(key, object[key], agg);\n}, url);\nconst removeAllQueryVars = (url = window.location.href) => url.replace(/\\?.+$/g, '');\nconst removeQueryVar = (key, url = window.location.href) => {\n const idx = url.indexOf('?');\n if (idx === -1) {\n return url;\n }\n const pattern = _getQueryPattern(key);\n const replaced = url.replace(pattern, '').replace(/\\?$/, '');\n if (replaced.indexOf('&') !== -1 && replaced.indexOf('?') === -1) {\n return replaced.replace(/&/, '?');\n }\n return replaced;\n};\nconst toPascalCase = name => name.charAt(0).toUpperCase() + name.slice(1).replace(/(-\\w)/g, m => m[1].toUpperCase());\nconst isLocationEqual = (location1, location2) => {\n const pathname1 = location1.pathname ? location1.pathname.replace(/^\\//, '') : '';\n const pathname2 = location2.pathname ? location2.pathname.replace(/^\\//, '') : '';\n return (!location1.protocol || !location2.protocol || location1.protocol === location2.protocol) && (!location1.host || !location2.host || location1.host === location2.host) && (!pathname1 || pathname2 || pathname1 === pathname2);\n};\nconst isNaiveEqual = (obj1, obj2) => {\n const objKeys1 = Object.keys(obj1);\n const objKeys2 = Object.keys(obj2);\n if (objKeys1.length !== objKeys2.length) {\n return false;\n }
1\n for (const key in obj1) {\n if (!obj2[key] || obj2[key] !== obj1[key]) {\n return false;\n }\n }\n return true;\n};\nconst set = (item, selector) => {\n if (item instanceof Array) {\n for (const i of item) {\n i.classList.add(selector);\n }\n } else {\n item.classList.add(selector);\n }\n};\nconst unset = (item, selector) => {\n if (item instanceof Array) {\n for (const i of item) {\n i.classList.remove(selector);\n }\n } else {\n item.classList.remove(selector);\n }\n};\nconst isTouch = () => 'ontouchstart' in document.documentElement;\nconst hasOwnProperties = (property, obj) => {\n return Object.prototype.hasOwnProperty.call(obj, property);\n};\nconst scrollOver = (el, callback) => {\n if (typeof callback !== 'undefined') {\n window.scrollY > el.offsetHeight + el.offsetTop && callback();\n }\n};\nconst chunkArray = (arr, size) => arr.reduce((acc, e, i) => {\n if (i % size) {\n acc[acc.length - 1].push(e);\n } else {\n acc.push([e]);\n }\n return acc;\n}, []);\nconst inViewPort = (el, callback) => {\n const rect = el.getBoundingClientRect();\n rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth) && typeof callback === 'function' && callback();\n};\nconst isEmpty = val => val == null || !(Object.keys(val) || val).length;\nconst formatName = string => string && typeof string === 'string' && string.includes('-') ? string.split('-')[1] : string;
1\nconst delay = ms => new Promise(resolve => setTimeout(resolve, ms));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29tcG9uZW50cy9oZWxwZXJzL3V0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBTUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFLQTtBQUVBO0FBRUE7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL2dhbW1hLy4vc3JjL2NvbXBvbmVudHMvaGVscGVycy91dGlscy5qcz9kODQxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRnVuY3Rpb24gdGhhdCBhbHdheXMgcmV0dXJucyBUcnVlXG4qL1xuY29uc3QgcmV0dXJuVHJ1ZSA9ICgpID0+IHRydWVcblxuLyoqXG4qIEZ1bmN0aW9uIHRoYXQgYWx3YXlzIHJldHVybnMgZmFsc2VcbiovXG5jb25zdCByZXR1cm5GYWxzZSA9ICgpID0+IGZhbHNlXG5cbi8qKlxuKiBSZXR1cm5zIGEgY3VycmllZCBmdW5jdGlvbiBvZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24sIHNvIHRoYXQ6XG4qXG4qIGYoYSwgYiwgYykgPSBmKGEsIGIpKGMpID0gZihhKShiKShjKSA9IGYoYSkoYiwgYylcbipcbiogQHBhcmFtIHtGdW5jdGlvbn0gZlxuKiBAcGFyYW0gey4uKn0gSW5pdGlhbCBwYXJhbWV0ZXJzXG4qIEByZXR1cm4ge0Z1bmN0aW9ufSBUaGUgY3VycmllZCBmdW5jdGlvblxuKi9cbmNvbnN0IGN1cnJ5ID0gKGYsIC4uLmFyZ3MpID0+IGFyZ3MubGVuZ3RoID49IGYubGVuZ3RoID8gZiguLi5hcmdzKSA6IGN1cnJ5LmJpbmQodGhpcywgZiwgLi4uYXJncylcblxuY29uc3QgYWxsUGFzcyA9IChmcykgPT4gKC4uLmFyZ3MpID0+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICghZnNbaV0uYXBwbHkodGhpcywgYXJncykpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiogVGFrZXMgaW4gYSBsaXN0IG9mIHByZWRpY2F0ZXMgYW5kIHJldHVybiBhIGZ1bmN0aW9uIHRoYXQgd2lsbFxuKiBwYXNzIGl0cyBhcmd1bWVudHMgdGhyb3VnaCBlYWNoIG9mIHRoZSBwcmVkaWNhdGVzLCByZXR1cm5pbmdcbiogdHJ1ZSBpZiBhbnkgcHJlZGljYXRlIGlzIHNhdGlzZmllZC5cbipcbiogQHBhcmFtIHtBcnJheTxGdW5jdGlvbj59XG4qIEByZXR1cm4ge0Z1bmN0aW9ufVxuKi9cbmNvbnN0IGFueVBhc3MgPSAoZnMpID0+ICguLi5hcmdzKSA9PiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZnNbaV0uYXBwbHkodGhpcywgYXJncykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuKiBFbmNhcHN1bGF0ZXMgc3dpdGNoL2Nhc2Ugb3IgaWYvZWxzZSBsb2dpYy5cbipcbiogVGFrZXMgYSBsaXN0IG9mIFtwcmVkaWNhdGUsIHRyYW5zZm9ybWVyXSBwYWlycy5cbipcbiogVGhlIHJldHVybmVkIGZ1bmN0aW9uIHBhc3NlcyBpdHMgYXJndW1lbnRzIHRvIHByZWRpY2F0ZXMsIGV2YWx1YXRlcyB0aGVtLCBhbmQgZXhlY3V0ZSB0aGUgbWF0Y2hlZCB0cmFuc2Zvcm1lciAocGFzc2luZyB0aGVcbiogc2FtZSBhcmd1bWVudHMpLiBJZiB0aGVyZSdzIG5vIG1hdGNoZWQgcHJlZGljYXRlLCByZXR1cm4gdW5kZWZpbmVkLlxuKlxuKiBAcGFyYW0gcGFpcnMgUGFpcnMgb2YgW3ByZWRpY2F0ZSwgdHJhbnNmb3JtZXJdXG4qIEByZXR1cm4ge0Z1bmN0aW9ufSBFbmNhcHN1bGF0ZWQgZnVuY3Rpb25cbiovXG5jb25zdCBjb25kID0gKHBhaXJzKSA9PiAoLi4uYXJncykgPT4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHBhaXJzW2ldWzBdLmFwcGx5KHRoaXMsIGFyZ3MpKSB7XG4gICAgICByZXR1cm4gcGFpcnNbaV1bMV0uYXBwbHkodGhpcywgYXJncylcbiAgICB9XG4gI
1H1cblxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuKiBFbmNhcHN1bGF0ZSBpZi9lbHNlIGxvZ2ljLiBCYXNpY2FsbHkgYSB3cmFwcGVyIG9mIGBjb25kYC5cbipcbiogQHBhcmFtIHAgUHJlZGljYXRlXG4qIEBwYXJhbSB7RnVuY3Rpb259IGZUIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBwcmVkaWNhdGUgaXMgdHJ1ZVxuKiBAcGFyYW0ge0Z1bmN0aW9ufSBmRiBGdW5jdGlvbiB0byBjYWxsIHdoZW4gcHJlZGljYXRlIGlzIGZhbHNlXG4qIEByZXR1cm4ge0Z1bmN0aW9ufSBFbmNhcHN1bGF0ZWQgZnVuY3Rpb25cbiovXG5jb25zdCBpZkVsc2UgPSAocCwgZlQsIGZGKSA9PiBjb25kKFtbcCwgZlRdLCBbcmV0dXJuVHJ1ZSwgZkZdXSlcblxuY29uc3Qgd2hlbiA9IChwLCBmKSA9PiBjb25kKFtbcCwgZl0sIFtyZXR1cm5UcnVlLCBpZGVudGl0eV1dKVxuXG4vKipcbiogRnVuY3Rpb25hbCB3cmFwcGVyIGZvciBhcnJheSBtYXAgZnVuY3Rpb24uXG4qXG4qIEBwYXJhbSB7RnVuY3Rpb259IGZcbiogQHBhcmFtIHsqfSBhcnJcbiovXG5jb25zdCBtYXAgPSBjdXJyeSgoZiwgYXJyKSA9PiBBcnJheS5pc0FycmF5KGFycikgPyBhcnIubWFwKGYpIDogZihhcnIpKVxuXG5jb25zdCBmaWx0ZXIgPSBjdXJyeSgoZiwgYXJyKSA9PiBBcnJheS5pc0FycmF5KGFycikgPyBhcnIuZmlsdGVyKGYpIDogKGYoYXJyKSA/IGFyciA6IHVuZGVmaW5lZCkpXG5cbi8qKlxuKiBQYXJ0aWFsIGFwcGxpY2F0aW9uXG4qIEBwYXJhbSB7RnVuY3Rpb259IGZcbiogQHBhcmFtIHsuLip9IGFyZ3MgSW5pdGlhbCBwYXJhbWV0ZXJzXG4qL1xuY29uc3QgcGFydGlhbCA9IChmLCAuLi5hcmdzKSA9PiBmLmJpbmQodGhpcywgLi4uYXJncylcblxuLyoqXG4qIFRyYW5zZm9ybSBhIHZhbHVlIGJ5IGNoYWluaW5nIGEgbGlzdCBvZiBmdW5jdGlvbiBmcm9tIGxlZnQgdG8gcmlnaHRcbipcbiogQHBhcmFtIHZhbFxuKiBAcGFyYW0gey4uRnVuY3Rpb259IGZ1bmNzXG4qIEByZXR1cm4geyp9XG4qL1xuY29uc3QgcGlwZSA9ICguLi5mdW5jcykgPT4gZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gZnVuY3MucmVkdWNlKChhY2MsIGYpID0+IGYuYXBwbHkodGhpcywgW2FjY10pLCB2YWwpIH1cblxuY29uc3QgYWx3YXlzID0gKHZhbCkgPT4gcGFydGlhbCh2YWwpXG5cbi8qKlxuKiBHZXQgcHJvcGVydHkgb2YgYW4gb2JqZWN0LlxuKlxuKiBUaGlzIGlzIGEgY3VycmllZCBmdW5jdGlvbi5cbipcbiogQHBhcmFtIHtzdHJpbmd9IHByb3BcbiogQHBhcmFtIHtPYmplY3R9IG9ialxuKiBAcmV0dXJuIHsqfVxuKi9cbmNvbnN0IGdldFByb3AgPSBjdXJyeSgocHJvcCwgb2JqKSA9PiB7XG4gIHJldHVybiBvYmpbcHJvcF1cbn0pXG5cbmNvbnN0IGx0ID0gY3VycnkoKGIsIGEpID0+IGEgPCBiKVxuXG5jb25zdCBzZXRQcm9wID0gY3VycnkoKHByb3AsIHZhbHVlLCBvYmopID0+IHtcbiAgb2JqW3Byb3BdID0gdmFsdWVcbiAgcmV0dXJuIG9ialxufSlcblxuLyoqXG4qIERlbGF5IGV4ZWN1dGlvbiBvZiBjYWxsYmFjayB1c2VkIG9uIGluZGl2aWR1YWwgaXRlbXMgb2YgYSBsaXN0LlxuKlxuKiBUaGlzIGZ1bmN0aW9uIGlzIGN1cnJpZWQuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpbml0aWFsIEluaXRpYWwgdGltZW91dFxuKiBAcGFyYW0ge251bWJlcn0gc3RlcCBEZWxheSBwZXIgZXhlY3V0aW9uXG4qIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrXG4qIEBwYXJhbSB7QXJyYXl9IGl0ZW1zXG4qL1xuXG4vKipcbiogRW5jYXBzdWxhdGUgdHJ5L2NhdGNoIGxvZ2ljLlxuKlxuKiBUYWtlcyBhIHBhaXIgb2YgdHJ5ZXIgYW5kIGNhdGNoZXIgZnVuY3Rpb25zLiBVc2VyIG11c3QgZW5zdXJlIHRyeWVyIGFuZCBjYXRjaGVyIHJldHVybiB0aGUgc2FtZVxuKiB0eXBlIHNvIHRoYXQgY2hhaW5pbmcgLyBjb21wb3Npbmcgd29ya3MuXG4qXG4qIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNhbiB0YWtlIGFyZ3VtZW50cywgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gYm90aCB0cnllciBhbmQgY2F0Y2hlci5cbipcbiogQHBhcmFtIHtGdW5jdGlvbn0gdHJ5ZXJcbiogQHBhcmFtIHtGdW5jdGlvbn0gY2F0Y2hlclxuKiBAcmV0dXJuIHtGdW5jdGlvbn0gRW5jYXBzdWxhdGVkIGZ1bmN0aW9uXG4qL1xuY29uc3QgdHJ5Q2F0Y2ggPSAodHJ5ZXIsIGNhdGNoZXIpID0+ICguLi5hcmdzKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRyeWVyKC4uLmFyZ3MpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gY2F0Y2hlcihlLCAuLi5hcmdzKVxuICB9XG59XG5cbmNvbnN0IHdoaWxlRG8gPSAocHJlZCwgZm4sIGluaXRpYWwpID0+IHByZWQoaW5pdGlhbCkgPyB3aGlsZURvKHByZWQsIGZuLCBmbihpbml0aWFsKSkgOiBpbml0aWFsXG5cbmNvbnN0IGRpdmlkZSA9IGN1cnJ5KChiLCBhKSA9PiBhIC8gYilcbmNvbnN0IG11bHRpcGx5ID0gY3VycnkoKGIsIGEpID0+IGEgKiBiKVxuXG4vKipcbiogQ2hlY2sgaWYgYW4gYXJyYXkgY29udGFpbnMgYW4gaXRlbS5cbipcbiogVGhpcyBpcyBhIGN1cnJpZWQgd3JhcHBlciBmb3IgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZcbipcbiogQHBhcmFtIHtBcnJheX1cbiogQHBhcmFtIHsqfVxuKiBAcmV0dXJuIHtib29sZWFufVxuKi9cbmNvbnN0IGluQXJyYXkgPSBjdXJyeSgoYXJyYXksIGl0ZW0pID0+IGFycmF5LmluZGV4T2YoaXRlbSkgIT09IC0xKVxuXG4vKipcbiogR2V0IHRoZSBudGggZWxlbWVudCBvZiBhbiBhcnJheVxuKlxuKiBAcGFyYW0ge251bWJlcn1cbiogQHBhcmFtIHtBcnJheX1cbiogQHJldHVybiB7Kn1cbiovXG5jb25zdCBudGggPSBjdXJyeSgoaW5kZXgsIGFycmF5KSA9PiBpbmRleCA8IDAgPyBhcnJheVthcnJheS5sZW5ndGggKyBpbmRleF0gOiBhcnJheVtpbmRleF0pXG5cbi8qKlxuKiBHZXQgdGhlIG50aCBlbGVtZW50IG9mIGFuIGFycmF5XG4qXG4qIEBwYXJhbSB7QXJyYXl9XG4qIEByZXR1cm4geyp9XG4qL1xuY29uc3QgZmlyc3QgPSBudGgoMSlcblxuY29uc3QgbGFzdCA9IG50aCgtMSlcbmNvbnN0IGFkZCA9IGN1cnJ5KChiLCBhKSA9PiBhICsgYilcbmNvbnN0IF9hZGQxVG9MYXN0ID0gcGlwZShsYXN0LCBhZGQoMSkpXG5cbmNvbnN0IHJhbmdlID0gKGZyb20sIHRvKSA9PiB3aGlsZURvKFxuICBwaXBlKF9hZGQxVG9MYXN0LCBsdCh0bykpLFxuICAoYXJyYXkpID0+IFsu
1Li5hcnJheSwgX2FkZDFUb0xhc3QoYXJyYXkpXSxcbiAgW2Zyb21dXG4pXG5cbmNvbnN0IGZsaXBBcmdzID0gKGYpID0+IGN1cnJ5KChhcmcxLCBhcmcyKSA9PiBmLmFwcGx5KHRoaXMsIFthcmcyLCBhcmcxXSkpXG5cbi8qKlxuKiBDcmVhdGUgYW4gYXJyYXkgb3V0IG9mIGFuIGFycmF5LWxpa2Ugb2JqZWN0XG4qXG4qIEBwYXJhbSB7T2JqZWN0fSBBcnJheS1saWtlIG9iamVjdFxuKiBAcmV0dXJuIHtBcnJheX0gQXJyYXlcbiovXG5jb25zdCBtYWtlQXJyYXkgPSAoYXJyYXlMaWtlKSA9PiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnJheUxpa2UpXG5cbi8qKlxuKiBMb2cgYSB2YWx1ZSB0byBjb25zb2xlXG4qXG4qIEBwYXJhbSB7Kn0gdmFsXG4qIEByZXR1cm5zIHsqfVxuKi9cbmNvbnN0IGxvZyA9ICh2YWwpID0+IHtcbiAgcmV0dXJuIHZhbFxufVxuXG5jb25zdCBfZ2V0UXVlcnlQYXR0ZXJuID0gKGtleSkgPT4gbmV3IFJlZ0V4cChgWz8mXSR7a2V5fT0oW14mXSspYClcblxuY29uc3QgZ2V0UXVlcnlWYXIgPSAoa2V5LCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT4ge1xuICBjb25zdCBwYXR0ZXJuID0gX2dldFF1ZXJ5UGF0dGVybihrZXkpXG4gIGNvbnN0IG1hdGNoZXMgPSB1cmwubWF0Y2gocGF0dGVybilcbiAgcmV0dXJuIG1hdGNoZXMgPyBtYXRjaGVzWzFdIDogJydcbn1cblxuLyoqXG4qIFBhcnNlIGEgcXVlcnkgc3RyaW5nIGludG8gYW4gb2JqZWN0IHdpdGggeyBrZXk6IHZhbHVlIH0gc3RydWN0dXJlXG4qXG4qIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiogQHJldHVybnMge09iamVjdH1cbiovXG5jb25zdCBnZXRRdWVyeVZhcnMgPSAodXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID0+XG4gIHVybC5yZXBsYWNlKC9eXFw/LywgJycpIC8vIHJlbW92ZSA/IHByZWZpeFxuICAgIC5zcGxpdCgnJicpIC8vIHNwbGl0IGludG8gYGtleT12YWx1ZWAgY2h1bmtzXG4gICAgLmZpbHRlcihCb29sZWFuKSAvLyByZW1vdmUgZW1wdHkgc3RyaW5nXG4gICAgLnJlZHVjZShcbiAgICAgIC8qKlxuICAgICAgKiBBZ2dyZWdhdGUga2V5PXZhbHVlIGNodW5rcyBpbnRvIGFuIE9iamVjdCB3aXRoIHtrZXk6IHZhbHVlfSBzdHJ1Y3R1cmVcbiAgICAgICogQHBhcmFtIHtPYmplY3R9IHF1ZXJ5VmFycyAtIGFnZ3JlZ2F0ZWQgb2JqZWN0XG4gICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYWlyIC0gZS5nLiAna2V5PXZhbHVlJ1xuICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSAtIGUuZy4ge2tleTogdmFsdWV9XG4gICAgICAqL1xuICAgICAgKHF1ZXJ5VmFycywgcGFpcikgPT4ge1xuICAgICAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBwYWlyLnNwbGl0KCc9JylcbiAgICAgICAgcXVlcnlWYXJzW2tleV0gPSB2YWx1ZVxuICAgICAgICByZXR1cm4gcXVlcnlWYXJzXG4gICAgICB9LFxuICAgICAge31cbiAgICApXG5cbmNvbnN0IGFkZFF1ZXJ5VmFyID0gKGtleSwgdmFsdWUsIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSA9PiB7XG4gIGNvbnN0IHJlbW92ZWQgPSByZW1vdmVRdWVyeVZhcihrZXksIHVybClcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiByZW1vdmVkXG4gIH1cbiAgcmV0dXJuIGAke3JlbW92ZWR9JHtyZW1vdmVkLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJid9JHtrZXl9PSR7dmFsdWV9YFxufVxuXG5jb25zdCBhZGRRdWVyeVZhcnMgPSAob2JqZWN0LCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT5cbiAgT2JqZWN0LmtleXMob2JqZWN0KS5yZWR1Y2UoKGFnZywga2V5KSA9PiB7XG4gICAgcmV0dXJuIGFkZFF1ZXJ5VmFyKGtleSwgb2JqZWN0W2tleV0sIGFnZylcbiAgfSwgdXJsKVxuXG5jb25zdCByZW1vdmVBbGxRdWVyeVZhcnMgPSAodXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID0+IHVybC5yZXBsYWNlKC9cXD8uKyQvZywgJycpXG5cbmNvbnN0IHJlbW92ZVF1ZXJ5VmFyID0gKGtleSwgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID0+IHtcbiAgY29uc3QgaWR4ID0gdXJsLmluZGV4T2YoJz8nKVxuXG4gIGlmIChpZHggPT09IC0xKSB7XG4gICAgcmV0dXJuIHVybFxuICB9XG5cbiAgY29uc3QgcGF0dGVybiA9IF9nZXRRdWVyeVBhdHRlcm4oa2V5KVxuICBjb25zdCByZXBsYWNlZCA9IHVybC5yZXBsYWNlKHBhdHRlcm4sICcnKS5yZXBsYWNlKC9cXD8kLywgJycpXG5cbiAgaWYgKHJlcGxhY2VkLmluZGV4T2YoJyYnKSAhPT0gLTEgJiYgcmVwbGFjZWQuaW5kZXhPZignPycpID09PSAtMSkge1xuICAgIHJldHVybiByZXBsYWNlZC5yZXBsYWNlKC8mLywgJz8nKVxuICB9XG5cbiAgcmV0dXJuIHJlcGxhY2VkXG59XG5cbmNvbnN0IHRvUGFzY2FsQ2FzZSA9IG5hbWUgPT4gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSkucmVwbGFjZSgvKC1cXHcpL2csIG0gPT4gbVsxXS50b1VwcGVyQ2FzZSgpKVxuXG5jb25zdCBpc0xvY2F0aW9uRXF1YWwgPSAobG9jYXRpb24xLCBsb2NhdGlvbjIpID0+IHtcbiAgY29uc3QgcGF0aG5hbWUxID0gbG9jYXRpb24xLnBhdGhuYW1lID8gbG9jYXRpb24xLnBhdGhuYW1lLnJlcGxhY2UoL15cXC8vLCAnJykgOiAnJ1xuICBjb25zdCBwYXRobmFtZTIgPSBsb2NhdGlvbjIucGF0aG5hbWUgPyBsb2NhdGlvbjIucGF0aG5hbWUucmVwbGFjZSgvXlxcLy8sICcnKSA6ICcnXG5cbiAgcmV0dXJuICghbG9jYXRpb24xLnByb3RvY29sIHx8ICFsb2NhdGlvbjIucHJvdG9jb2wgfHwgbG9jYXRpb24xLnByb3RvY29sID09PSBsb2NhdGlvbjIucHJvdG9jb2wpICYmXG4gICAgKCFsb2NhdGlvbjEuaG9zdCB8fCAhbG9jYXRpb24yLmhvc3QgfHwgbG9jYXRpb24xLmhvc3QgPT09IGxvY2F0aW9uMi5ob3N0KSAmJlxuICAgICghcGF0aG5hbWUxIHx8IHBhdGhuYW1lMiB8fCBwYXRobmFtZTEgPT09IHBhdGhuYW1lMilcbn1cblxuY29uc3QgaXNOYWl2ZUVxdWFsID0gKG9iajEsIG9iajIpID0+IHtcbiAgY29uc3Qgb2JqS2V5czEgPSBPYmplY3Qua2V5cyhvYmoxKVxuICBjb25zdCBvYmpLZXlzMiA9IE9iamVjdC5rZXlzKG9iajIpXG5cbiAgaWYgKG9iaktleXMxLmxlbmd0aCAhPT0gb2JqS2V5czIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gI
1H1cblxuICBmb3IgKGNvbnN0IGtleSBpbiBvYmoxKSB7XG4gICAgaWYgKCFvYmoyW2tleV0gfHwgb2JqMltrZXldICE9PSBvYmoxW2tleV0pIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmNvbnN0IHNldCA9IChpdGVtLCBzZWxlY3RvcikgPT4ge1xuICBpZiAoaXRlbSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgZm9yIChjb25zdCBpIG9mIGl0ZW0pIHtcbiAgICAgIGkuY2xhc3NMaXN0LmFkZChzZWxlY3RvcilcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaXRlbS5jbGFzc0xpc3QuYWRkKHNlbGVjdG9yKVxuICB9XG59XG5cbmNvbnN0IHVuc2V0ID0gKGl0ZW0sIHNlbGVjdG9yKSA9PiB7XG4gIGlmIChpdGVtIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICBmb3IgKGNvbnN0IGkgb2YgaXRlbSkge1xuICAgICAgaS5jbGFzc0xpc3QucmVtb3ZlKHNlbGVjdG9yKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpdGVtLmNsYXNzTGlzdC5yZW1vdmUoc2VsZWN0b3IpXG4gIH1cbn1cblxuY29uc3QgaXNUb3VjaCA9ICgpID0+ICdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxuXG5jb25zdCBoYXNPd25Qcm9wZXJ0aWVzID0gKHByb3BlcnR5LCBvYmopID0+IHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3BlcnR5KVxufVxuXG5jb25zdCBzY3JvbGxPdmVyID0gKGVsLCBjYWxsYmFjaykgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAndW5kZWZpbmVkJykge1xuICAgICh3aW5kb3cuc2Nyb2xsWSA+IChlbC5vZmZzZXRIZWlnaHQgKyBlbC5vZmZzZXRUb3ApKSAmJiBjYWxsYmFjaygpXG4gIH1cbn1cblxuY29uc3QgY2h1bmtBcnJheSA9IChhcnIsIHNpemUpID0+IGFyci5yZWR1Y2UoKGFjYywgZSwgaSkgPT4ge1xuICBpZiAoaSAlIHNpemUpIHtcbiAgICBhY2NbYWNjLmxlbmd0aCAtIDFdLnB1c2goZSlcbiAgfSBlbHNlIHtcbiAgICBhY2MucHVzaChbZV0pXG4gIH1cbiAgcmV0dXJuIGFjY1xufSwgW10pXG5cbmNvbnN0IGluVmlld1BvcnQgPSAoZWwsIGNhbGxiYWNrKSA9PiB7XG4gIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgKFxuICAgIHJlY3QudG9wID49IDAgJiZcbiAgICByZWN0LmxlZnQgPj0gMCAmJlxuICAgI
1HJlY3QuYm90dG9tIDw9ICh3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkgJiZcbiAgICByZWN0LnJpZ2h0IDw9ICh3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpXG4gICkgJiYgdHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nICYmIGNhbGxiYWNrKClcbn1cblxuY29uc3QgaXNFbXB0eSA9IHZhbCA9PiB2YWwgPT0gbnVsbCB8fCAhKE9iamVjdC5rZXlzKHZhbCkgfHwgdmFsKS5sZW5ndGhcblxuY29uc3QgZm9ybWF0TmFtZSA9IChzdHJpbmcpID0+IHN0cmluZyAmJiB0eXBlb2Ygc3RyaW5nID09PSAnc3RyaW5nJyAmJiBzdHJpbmcuaW5jbHVkZXMoJy0nKSA/IHN0cmluZy5zcGxpdCgnLScpWzFdIDogc3RyaW5nXG5cbmNvbnN0IGRlbGF5ID0gKG1zKSA9PiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKVxuXG5leHBvcnQge1xuICBhZGQsXG4gIGFkZFF1ZXJ5VmFyLFxuICBhZGRRdWVyeVZhcnMsXG4gIGFsbFBhc3MsXG4gIGFsd2F5cyxcbiAgYW55UGFzcyxcbiAgY29uZCxcbiAgbG9nLFxuICBtYWtlQXJyYXksXG4gIGN1cnJ5LFxuICBkaXZpZGUsXG4gIGZpbHRlcixcbiAgZmlyc3QsXG4gIGZsaXBBcmdzLFxuICBnZXRQcm9wLFxuICBnZXRRdWVyeVZhcixcbiAgZ2V0UXVlcnlWYXJzLFxuICBpZkVsc2UsXG4gIGluQXJyYXksXG4gIHRvUGFzY2FsQ2FzZSxcbiAgaXNMb2NhdGlvbkVxdWFsLFxuICBsYXN0LFxuICBsdCxcbiAgbWFwLFxuICBtdWx0aXBseSxcbiAgbnRoLFxuICBwYXJ0aWFsLFxuICBwaXBlLFxuICByYW5nZSxcbiAgcmV0dXJuVHJ1ZSxcbiAgcmV0dXJuRmFsc2UsXG4gIHNldFByb3AsXG4gIHJlbW92ZVF1ZXJ5VmFyLFxuICByZW1vdmVBbGxRdWVyeVZhcnMsXG4gIHRyeUNhdGNoLFxuICB3aGVuLFxuICB3aGlsZURvLFxuICBpc05haXZlRXF1YWwsXG4gIHNldCxcbiAgdW5zZXQsXG4gIGlzVG91Y2gsXG4gIGhhc093blByb3BlcnRpZXMsXG4gIHNjcm9sbE92ZXIsXG4gIGluVmlld1BvcnQsXG4gIGNodW5rQXJyYXksXG4gIGlzRW1wdHksXG4gIGZvcm1hdE5hbWUsXG4gIGRlbGF5XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/components/helpers/utils.js\n")},
1"./src/components/modules/menu-navigation/menu-navigation.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var helpers_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! helpers/dom */ \"./src/components/helpers/dom.js\");\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash.debounce */ \"./node_modules/lodash.debounce/index.js\");\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var body_scroll_lock__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! body-scroll-lock */ \"./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js\");\n\n\n\nconst DELAY = 0;\nconst selectors = {\n MENU_NAVIGATION_SELECTOR: '.js-menu-navigation',\n MENU_NAVIGATION_BANNER_SELECTOR: '.js-menu-navigation-banner',\n NAV_DROPDOWN_SELECTOR: '.js-nav-dropdown',\n NAV_DROPDOWN_ITEM_SELECTOR: '.js-nav-dropdown-item',\n TRIGGER_MENU_ITEM_SELECTOR: '.js-trigger-menu-item',\n MENU_ITEM_CONTENT_SELECTOR: '.js-menu-item-content',\n MENU_OVERLAY_SELECTOR: '.js-menu-overlay',\n SUB_MENU_SELECTOR: '.js-sub-menu',\n ACTIVE_CLASS: 'is-active',\n HIDDEN_CLASS: 'hidden',\n ACTIVE_ITEM_CLASS: 'active',\n DATA_COUNT_BANNER_ATTRIBUTE: 'data-count-banner',\n ONE_BANNER_WIDTH: 264,\n TWO_BANNER_WIDTH: 560\n};\nclass MenuNavigation extends HTMLElement {\n constructor() {\n super();\n this.menuNavigation = (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.select)(selectors.MENU_NAVIGATION_SELECTOR, this);\n this.navDropdown = (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.select)(selectors.NAV_DROPDOWN_SELECTOR, this);\n this.menuOverlay = (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.select)(selectors.MENU_OVERLAY_SELECTOR, this);\n this.navDropdownItems = (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.selectAll)(selectors.NAV_DROPDOWN_ITEM_SELECTOR, this);\n this.triggerMenuItems = (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.selectAll)(selectors.TRIGGER_MENU_ITEM_SELECTOR, this);\n this.subMenuItems = (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.selectAll)(selectors.SUB_MENU_SELECTOR, this);\n this.attachEvent();\n }\n attachEvent() {\n var _this$triggerMenuItem, _this$subMenuItems;
1\n let currentActiveItem = null;\n if (this.menuNavigation && this.menuNavigation.children.length > 0) {\n for (let i = 0; i < this.menuNavigation.children.length; i++) {\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.on)('click', lodash_debounce__WEBPACK_IMPORTED_MODULE_1___default()(e => {\n e.stopPropagation();\n const menuItem = this.menuNavigation.children[i];\n const isActive = menuItem.children[0].classList.contains(selectors.ACTIVE_ITEM_CLASS);\n if (isActive) {\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.ACTIVE_CLASS, this);\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.ACTIVE_ITEM_CLASS, currentActiveItem);\n this.navDropdown.style.height = 0;\n (0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_2__.clearAllBodyScrollLocks)();\n } else {\n if (menuItem.hasAttribute('data-dropdown')) {\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.addClass)(selectors.ACTIVE_CLASS, this);\n (0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_2__.disableBodyScroll)((0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.select)(selectors.MENU_ITEM_CONTENT_SELECTOR));\n } else {\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.ACTIVE_CLASS, this);\n (0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_2__.clearAllBodyScrollLocks)();\n }\n this.navDropdownItems.forEach(item => (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.addClass)(selectors.HIDDEN_CLASS, item));\n const currentDropdownItem = this.navDropdown.children[i];\n if (!currentDropdownItem) return;\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.HIDDEN_CLASS, currentDropdownItem);\n this.navDropdown.style.height = currentDropdownItem.scrollHeight + 'px';\n this.subMenuItems.forEach(sub => (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.ACTIVE_ITEM_CLASS, sub));\n this.triggerMenuItems.forEach(trigger => (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.ACTIVE_ITEM_CLASS, trigger));\n const currentDropdownSubMenus = (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.selectAll)(selectors.SUB_MENU_SELECTOR, currentDropdownItem) || [];\n const currentDropdownTriggers = (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.selectAll)(selectors.TRIGGER_MENU_ITEM_SELECTOR, currentDropdownItem) || [];\n if (currentDropdownSubMenus.length > 0 && currentDropdownTriggers.length > 0) {\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.addClass)(selectors.ACTIVE_ITEM_CLASS, currentDropdownSubMenus[0]);\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.addClass)(selectors.ACTIVE_ITEM_CLASS, currentDropdownTriggers[0]);\n }\n if (currentActiveItem) {\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.ACTIVE_ITEM_CLASS, currentActiveItem);\n }\n currentActiveItem = menuItem.children[0];\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.addClass)(selectors.ACTIVE_ITEM_CLASS, currentActiveItem);\n }\n }, DELAY), this.menuNavigation.children[i]);\n }\n }\n if (((_this$triggerMenuItem = this.triggerMenuItems) === null || _this$triggerMenuItem === void 0 ? void 0 : _this$triggerMenuItem.length) > 0 && ((_this$subMenuItems = this.subMenuItems) === null || _this$subMenuItems === void 0 ? void 0 : _this$subMenuItems.length) > 0) {\n this.triggerMenuItems.forEach((item, index) => {\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.on)('click', e => {\n e.stopPropagation();\n const subMenu = this.subMenuItems[index];\n this.subMenuItems.forEach(sub => (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.ACTIVE_ITEM_CLASS, sub));\n this.triggerMenuItems.forEach(trigger => (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.ACTIVE_ITEM_CLASS, trigger));\n if (subMenu.classList.contains(selectors.ACTIVE_ITEM_CLASS)) {\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.ACTIVE_ITEM_CLASS, subMenu);\n } else {\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.addClass)(selectors.ACTIVE_ITEM_CLASS, subMenu);\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.addClass)(selectors.ACTIVE_ITEM_CLASS, item);\n }\n }, item);\n });\n }\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.on)('click', () => {\n this.closeMegamenu(currentActiveItem);\n }, this.menuOverlay);\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.on)('keyup', event => {\n var _event$code;\n if ((event === null || event === void 0 || (_event$code = event.code) === null || _event$code === void 0 ? void 0 : _event$code.toUpperCase()) === 'ESCAPE') this.closeMegamenu(currentActiveItem);\n }, this);\n }\n closeMegamenu(currentActiveItem) {\n this.navDropdown.style.height = 0;\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.ACTIVE_CLASS, this);\n (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.removeClass)(selectors.ACTIVE_ITEM_CLASS, currentActiveItem);
1\n this.navDropdownItems.forEach(item => (0,helpers_dom__WEBPACK_IMPORTED_MODULE_0__.addClass)(selectors.HIDDEN_CLASS, item));\n (0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_2__.clearAllBodyScrollLocks)();\n }\n}\ncustomElements.define('menu-navigation', MenuNavigation);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29tcG9uZW50cy9tb2R1bGVzL21lbnUtbmF2aWdhdGlvbi9tZW51LW5hdmlnYXRpb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9nYW1tYS8uL3NyYy9jb21wb25lbnRzL21vZHVsZXMvbWVudS1uYXZpZ2F0aW9uL21lbnUtbmF2aWdhdGlvbi5qcz9lY2EwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlbGVjdCwgb24sIHNlbGVjdEFsbCwgYWRkQ2xhc3MsIHJlbW92ZUNsYXNzLCBoYXNDbGFzcyB9IGZyb20gJ2hlbHBlcnMvZG9tJ1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC5kZWJvdW5jZSdcbmltcG9ydCB7IGRpc2FibGVCb2R5U2Nyb2xsLCBjbGVhckFsbEJvZHlTY3JvbGxMb2NrcyB9IGZyb20gJ2JvZHktc2Nyb2xsLWxvY2snXG5cbmNvbnN0IERFTEFZID0gMFxuY29uc3Qgc2VsZWN0b3JzID0ge1xuICBNRU5VX05BVklHQVRJT05fU0VMRUNUT1I6ICcuanMtbWVudS1uYXZpZ2F0aW9uJyxcbiAgTUVOVV9OQVZJR0FUSU9OX0JBTk5FUl9TRUxFQ1RPUjogJy5qcy1tZW51LW5hdmlnYXRpb24tYmFubmVyJyxcbiAgTkFWX0RST1BET1dOX1NFTEVDVE9SOiAnLmpzLW5hdi1kcm9wZG93bicsXG4gIE5BVl9EUk9QRE9XTl9JVEVNX1NFTEVDVE9SOiAnLmpzLW5hdi1kcm9wZG93bi1pdGVtJyxcbiAgVFJJR0dFUl9NRU5VX0lURU1fU0VMRUNUT1I6ICcuanMtdHJpZ2dlci1tZW51LWl0ZW0nLFxuICBNRU5VX0lURU1fQ09OVEVOVF9TRUxFQ1RPUjogJy5qcy1tZW51LWl0ZW0tY29udGVudCcsXG4gIE1FTlVfT1ZFUkxBWV9TRUxFQ1RPUjogJy5qcy1tZW51LW92ZXJsYXknLFxuICBTVUJfTUVOVV9TRUxFQ1RPUjogJy5qcy1zdWItbWVudScsXG4gIEFDVElWRV9DTEFTUzogJ2lzLWFjdGl2ZScsXG4gIEhJRERFTl9DTEFTUzogJ2hpZGRlbicsXG4gIEFDVElWRV9JVEVNX0NMQVNTOiAnYWN0aXZlJyxcbiAgREFUQV9DT1VOVF9CQU5ORVJfQVRUUklCVVRFOiAnZGF0YS1jb3VudC1iYW5uZXInLFxuICBPTkVfQkFOTkVSX1dJRFRIOiAyNjQsXG4gIFRXT19CQU5ORVJfV0lEVEg6IDU2MFxufVxuXG5jbGFzcyBNZW51TmF2aWdhdGlvbiBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMubWVudU5hdmlnYXRpb24gPSBzZWxlY3Qoc2VsZWN0b3JzLk1FTlVfTkFWSUdBVElPTl9TRUxFQ1RPUiwgdGhpcylcbiAgICB0aGlzLm5hdkRyb3Bkb3duID0gc2VsZWN0KHNlbGVjdG9ycy5OQVZfRFJPUERPV05fU0VMRUNUT1IsIHRoaXMpXG4gICAgdGhpcy5tZW51T3ZlcmxheSA9IHNlbGVjdChzZWxlY3RvcnMuTUVOVV9PVkVSTEFZX1NFTEVDVE9SLCB0aGlzKVxuICAgIHRoaXMubmF2RHJvcGRvd25JdGVtcyA9IHNlbGVjdEFsbChzZWxlY3RvcnMuTkFWX0RST1BET1dOX0lURU1fU0VMRUNUT1IsIHRoaXMpXG4gICAgdGhpcy50cmlnZ2VyTWVudUl0ZW1zID0gc2VsZWN0QWxsKHNlbGVjdG9ycy5UUklHR0VSX01FTlVfSVRFTV9TRUxFQ1RPUiwgdGhpcylcbiAgICB0aGlzLnN1Yk1lbnVJdGVtcyA9IHNlbGVjdEFsbChzZWxlY3RvcnMuU1VCX01FTlVfU0VMRUNUT1IsIHRoaXMpXG4gICAgdGhpcy5hdHRhY2hFdmVudCgpXG4gIH1cblxuICBhdHRhY2hFdmVudCgpIHtcbiAgICBsZXQgY3VycmVudEFjdGl2ZUl0ZW0gPSBudWxsXG5cbiAgICBpZiAodGhpcy5tZW51TmF2aWdhdGlvbiAmJiB0aGlzLm1lbnVOYXZpZ2F0aW9uLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tZW51TmF2aWdhdGlvbi5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBvbihcbiAgICAgICAgICAnY2xpY2snLFxuICAgICAgICAgIGRlYm91bmNlKChlKSA9PiB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICBjb25zdCBtZW51SXRlbSA9IHRoaXMubWVudU5hdmlnYXRpb24uY2hpbGRyZW5baV1cbiAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gbWVudUl0ZW0uY2hpbGRyZW5bMF0uY2xhc3NMaXN0LmNvbnRhaW5zKHNlbGVjdG9ycy5BQ1RJVkVfSVRFTV9DTEFTUylcblxuICAgICAgICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHNlbGVjdG9ycy5BQ1RJVkVfQ0xBU1MsIHRoaXMpXG4gICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHNlbGVjdG9ycy5BQ1RJVkVfSVRFTV9DTEFTUywgY3VycmVudEFjdGl2ZUl0ZW0pXG4gICAgICAgICAgICAgI
1HRoaXMubmF2RHJvcGRvd24uc3R5bGUuaGVpZ2h0ID0gMFxuICAgICAgICAgICAgICBjbGVhckFsbEJvZHlTY3JvbGxMb2NrcygpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAobWVudUl0ZW0uaGFzQXR0cmlidXRlKCdkYXRhLWRyb3Bkb3duJykpIHtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyhzZWxlY3RvcnMuQUNUSVZFX0NMQVNTLCB0aGlzKVxuICAgICAgICAgICAgICAgIGRpc2FibGVCb2R5U2Nyb2xsKHNlbGVjdChzZWxlY3RvcnMuTUVOVV9JVEVNX0NPTlRFTlRfU0VMRUNUT1IpKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHNlbGVjdG9ycy5BQ1RJVkVfQ0xBU1MsIHRoaXMpXG4gICAgICAgICAgICAgICAgY2xlYXJBbGxCb2R5U2Nyb2xsTG9ja3MoKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5uYXZEcm9wZG93bkl0ZW1zLmZvckVhY2goaXRlbSA9PiBhZGRDbGFzcyhzZWxlY3RvcnMuSElEREVOX0NMQVNTLCBpdGVtKSlcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudERyb3Bkb3duSXRlbSA9IHRoaXMubmF2RHJvcGRvd24uY2hpbGRyZW5baV1cblxuICAgICAgICAgICAgICBpZiAoIWN1cnJlbnREcm9wZG93bkl0ZW0pIHJldHVyblxuXG4gICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHNlbGVjdG9ycy5ISURERU5fQ0xBU1MsIGN1cnJlbnREcm9wZG93bkl0ZW0pXG4gICAgICAgICAgICAgIHRoaXMubmF2RHJvcGRvd24uc3R5bGUuaGVpZ2h0ID0gY3VycmVudERyb3Bkb3duSXRlbS5zY3JvbGxIZWlnaHQgKyAncHgnXG5cbiAgICAgICAgICAgICAgdGhpcy5zdWJNZW51SXRlbXMuZm9yRWFjaChzdWIgPT4gcmVtb3ZlQ2xhc3Moc2VsZWN0b3JzLkFDVElWRV9JVEVNX0NMQVNTLCBzdWIpKVxuICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJNZW51SXRlbXMuZm9yRWFjaCh0cmlnZ2VyID0+IHJlbW92ZUNsYXNzKHNlbGVjdG9ycy5BQ1RJVkVfSVRFTV9DTEFTUywgdHJpZ2dlcikpXG5cbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudERyb3Bkb3duU3ViTWVudXMgPSBzZWxlY3RBbGwoc2VsZWN0b3JzLlNVQl9NRU5VX1NFTEVDVE9SLCBjdXJyZW50RHJvcGRvd25JdGVtKSB8fCBbXVxuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RHJvcGRvd25UcmlnZ2VycyA9IHNlbGVjdEFsbChzZWxlY3RvcnMuVFJJR0dFUl9NRU5VX0lURU1fU0VMRUNUT1IsIGN1cnJlbnREcm9wZG93bkl0ZW0pIHx8IFtdXG5cbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnREcm9wZG93blN1Yk1lbnVzLmxlbmd0aCA+IDAgJiYgY3VycmVudERyb3Bkb3duVHJpZ2dlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHNlbGVjdG9ycy5BQ1RJVkVfSVRFTV9DTEFTUywgY3VycmVudERyb3Bkb3duU3ViTWVudXNbMF0pXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3Moc2VsZWN0b3JzLkFDVElWRV9JVEVNX0NMQVNTLCBjdXJyZW50RHJvcGRvd25UcmlnZ2Vyc1swXSlcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjdXJyZW50QWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHNlbGVjdG9ycy5BQ1RJVkVfSVRFTV9DTEFTUywgY3VycmVudEFjdGl2ZUl0ZW0pXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjdXJyZW50QWN0aXZlSXRlbSA9IG1lbnVJdGVtLmNoaWxkcmVuWzBdXG4gICAgICAgICAgICAgIGFkZENsYXNzKHNlbGVjdG9ycy5BQ1RJVkVfSVRFTV9DTEFTUywgY3VycmVudEFjdGl2ZUl0ZW0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgREVMQVkpLFxuICAgICAgICAgIHRoaXMubWVudU5hdmlnYXRpb24uY2hpbGRyZW5baV1cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXJNZW51SXRlbXM/Lmxlbmd0aCA+IDAgJiYgdGhpcy5zdWJNZW51SXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudHJpZ2dlck1lbnVJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBvbignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBjb25zdCBzdWJNZW51ID0gdGhpcy5zdWJNZW51SXRlbXNbaW5kZXhdXG5cbiAgICAgICAgICB0aGlzLnN1Yk1lbnVJdGVtcy5mb3JFYWNoKHN1YiA9PiByZW1vdmVDbGFzcyhzZWxlY3RvcnMuQUNUSVZFX0lURU1fQ0xBU1MsIHN1YikpXG4gICAgICAgICAgdGhpcy50cmlnZ2VyTWVudUl0ZW1zLmZvckVhY2godHJpZ2dlciA9PiByZW1vdmVDbGFzcyhzZWxlY3RvcnMuQUNUSVZFX0lURU1fQ0xBU1MsIHRyaWdnZXIpKVxuXG4gICAgICAgICAgaWYgKHN1Yk1lbnUuY2xhc3NMaXN0LmNvbnRhaW5zKHNlbGVjdG9ycy5BQ1RJVkVfSVRFTV9DTEFTUykpIHtcbiAgICAgICAgICAgIHJlbW92ZUNsYXNzKHNlbGVjdG9ycy5BQ1RJVkVfSVRFTV9DTEFTUywgc3ViTWVudSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWRkQ2xhc3Moc2VsZWN0b3JzLkFDVElWRV9JVEVNX0NMQVNTLCBzdWJNZW51KVxuICAgICAgICAgICAgYWRkQ2xhc3Moc2VsZWN0b3JzLkFDVElWRV9JVEVNX0NMQVNTLCBpdGVtKVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgaXRlbSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgb24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZU1lZ2FtZW51KGN1cnJlbnRBY3RpdmVJdGVtKVxuICAgIH0sIHRoaXMubWVudU92ZXJsYXkpXG5cbiAgICBvbigna2V5dXAnLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudD8uY29kZT8udG9VcHBlckNhc2UoKSA9PT0gJ0VTQ0FQRScpIHRoaXMuY2xvc2VNZWdhbWVudShjdXJyZW50QWN0aXZlSXRlbSlcbiAgICAgIH0sXG4gICAgICB0aGlzXG4gICAgKVxuICB9XG5cbiAgY2xvc2VNZWdhbWVudShjdXJyZW50QWN0aXZlSXRlbSkge1xuICAgIHRoaXMubmF2RHJvcGRvd24uc3R5bGUuaGVpZ2h0ID0gMFxuICAgIHJlbW92ZUNsYXNzKHNlbGVjdG9ycy5BQ1RJVkVfQ0xBU1MsIHRoaXMpXG4gICAgcmVtb3ZlQ2xhc3Moc2VsZWN0b3JzLkFDVElWRV9JVEVNX0NMQVNTLCBjdXJyZW50QWN0aXZlSXRlbSlcbiAgICB0aGlzLm5hdkRyb3Bkb3duSXRlbXMuZm9yRWFjaChpdGVtID0+IGFkZENsYXNzKHNlbGVjdG9ycy5ISURERU5fQ0xBU1MsIGl0ZW0pKVxuICAgIGNsZWFyQWxsQm9keVNjcm9sbExvY2tzKClcbiAgfVxufVxuXG5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ21lbnUtbmF2aWdhdGlvbicsIE1lbnVOYXZpZ2F0aW9uKVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/components/modules/menu-navigation/menu-navigation.js\n")},
vendor: 19,527 bytes, line 1
1"./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ clearAllBodyScrollLocks: () => (/* binding */ clearAllBodyScrollLocks),\n/* harmony export */ disableBodyScroll: () => (/* binding */ disableBodyScroll),\n/* harmony export */ enableBodyScroll: () => (/* binding */ enableBodyScroll)\n/* harmony export */ });\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nvar disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n } else {\n setOverflowHidden(options);\n }\n};\n\nvar clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nvar enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n } else if (!locks.length) {\n restoreOverflowSetting();\n }\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYm9keS1zY3JvbGwtbG9jay9saWIvYm9keVNjcm9sbExvY2suZXNtLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9nYW1tYS8uL25vZGVfbW9kdWxlcy9ib2R5LXNjcm9sbC1sb2NrL2xpYi9ib2R5U2Nyb2xsTG9jay5lc20uanM/ZTE4MSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShhcnIpOyB9IH1cblxuLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBldmVudCBvcHRpb25zLCBmZWF0dXJlIGRldGVjdCBpdC5cblxuLy8gQWRvcHRlZCBhbmQgbW9kaWZpZWQgc29sdXRpb24gZnJvbSBCb2hkYW4gRGlkdWtoICgyMDE3KVxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDE1OTQ5OTcvaW9zLTEwLXNhZmFyaS1wcmV2ZW50LXNjcm9sbGluZy1iZWhpbmQtYS1maXhlZC1vdmVybGF5LWFuZC1tYWludGFpbi1zY3JvbGwtcG9zaVxuXG52YXIgaGFzUGFzc2l2ZUV2ZW50cyA9IGZhbHNlO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIHZhciBwYXNzaXZlVGVzdE9wdGlvbnMgPSB7XG4gICAgZ2V0IHBhc3NpdmUoKSB7XG4gICAgICBoYXNQYXNzaXZlRXZlbnRzID0gdHJ1ZTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdFBhc3NpdmUnLCBudWxsLCBwYXNzaXZlVGVzdE9wdGlvbnMpO1xuICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndGVzdFBhc3NpdmUnLCBudWxsLCBwYXNzaXZlVGVzdE9wdGlvbnMpO1xufVxuXG52YXIgaXNJb3NEZXZpY2UgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubmF2aWdhdG9yICYmIHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0gJiYgKC9pUChhZHxob25lfG9kKS8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtKSB8fCB3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtID09PSAnTWFjSW50ZWwnICYmIHdpbmRvdy5uYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAxKTtcblxuXG52YXIgbG9ja3MgPSBbXTtcbnZhciBkb2N1bWVudExpc3RlbmVyQWRkZWQgPSBmYWxzZTtcbnZhciBpbml0aWFsQ2xpZW50WSA9IC0xO1xudmFyIHByZXZpb3VzQm9keU92ZXJmbG93U2V0dGluZyA9IHZvaWQgMDtcbnZhciBwcmV2aW91c0JvZHlQYWRkaW5nUmlnaHQgPSB2b2lkIDA7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBgZWxgIHNob3VsZCBiZSBhbGxvd2VkIHRvIHJlY2VpdmUgdG91Y2htb3ZlIGV2ZW50cy5cbnZhciBhbGxvd1RvdWNoTW92ZSA9IGZ1bmN0aW9uIGFsbG93VG91Y2hNb3ZlKGVsKSB7XG4gIHJldHVybiBsb2Nrcy5zb21lKGZ1bmN0aW9uIChsb2NrKSB7XG4gICAgaWYgKGxvY2sub3B0aW9ucy5hbGxvd1RvdWNoTW92ZSAmJiBsb2NrLm9wdGlvbnMuYWxsb3dUb3VjaE1vdmUoZWwpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xufTtcblxudmFyIHByZXZlbnREZWZhdWx0ID0gZnVuY3Rpb24gcHJldmVudERlZmF1bHQocmF3RXZlbnQpIHtcbiAgdmFyIGUgPSByYXdFdmVudCB8fCB3aW5kb3cuZXZlbnQ7XG5cbiAgLy8gRm9yIHRoZSBjYXNlIHdoZXJlYnkgY29uc3VtZXJzIGFkZHMgYSB0b3VjaG1vdmUgZXZlbnQgbGlzdGVuZXIgdG8gZG9jdW1lbnQuXG4gIC8vIFJlY2FsbCB0aGF0IHdlIGRvIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnREZWZhdWx0LCB7IHBhc3NpdmU6IGZhbHNlIH0pXG4gIC8vIGluIGRpc2FibGVCb2R5U2Nyb2xsIC0gc28gaWYgd2UgcHJvdmlkZSB0aGlzIG9wcG9ydHVuaXR5IHRvIGFsbG93VG91Y2hNb3ZlLCB0aGVuXG4gIC8vIHRoZSB0b3VjaG1vdmUgZXZlbnQgb24gZG9jdW1lbnQgd2lsbCBicmVhay5cbiAgaWYgKGFsbG93VG91Y2hNb3ZlKGUudGFyZ2V0KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gRG8gbm90IHByZXZlbnQgaWYgdGhlIGV2ZW50IGhhcyBtb3JlIHRoYW4gb25lIHRvdWNoICh1c3VhbGx5IG1lYW5pbmcgdGhpcyBpcyBhIG11bHRpIHRvdWNoIGdlc3R1cmUgbGlrZSBwaW5jaCB0byB6b29tKS5cbiAgaWYgKGUudG91Y2hlcy5sZW5ndGggPiAxKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbnZhciBzZXRPdmVyZmxvd0hpZGRlbiA9IGZ1bmN0aW9uIHNldE92ZXJmbG93SGlkZGVuKG9wdGlvbnMpIHtcbiAgLy8gSWYgcHJldmlvdXNCb2R5UGFkZGluZ1JpZ2h0IGlzIGFscmVhZHkgc2V0LCBkb24ndCBzZXQgaXQgYWdhaW4uXG4gIGlmIChwcmV2aW91c0JvZHlQYWRkaW5nUmlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBfcmVzZXJ2ZVNjcm9sbEJhckdhcCA9ICEhb3B0aW9ucyAmJiBvcHRpb25zLnJlc2VydmVTY3JvbGxCYXJHYXAgPT09IHRydWU7XG4gICAgdmFyIHNjcm9sbEJhckdhcCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgaWYgKF9yZXNlcnZlU2Nyb2xsQmFyR2FwICYmIHNjcm9sbEJhckdhcCA+IDApIHtcbiAgICAgIHByZXZpb3VzQm9keVBhZGRpbmdSaWdodCA9IGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0O1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBzY3JvbGxCYXJHYXAgKyAncHgnO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHByZXZpb3VzQm9keU92ZXJmbG93U2V0dGluZyBpcyBhbHJlYWR5IHNldCwgZG9uJ3Qgc2V0IGl0IGFnYWluLlxuICBpZiAocHJldmlvdXNCb2R5T3ZlcmZsb3dTZXR0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICBwcmV2aW91c0JvZHlPdmVyZmxvd1NldHRpbmcgPSBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93O1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgfVxufTtcblxudmFyIHJlc3RvcmVPdmVyZmxvd1NldHRpbmcgPSBmdW5jdGlvbiByZXN0b3JlT3ZlcmZsb3dTZXR0aW5nKCkge1xuICBpZiAocHJldmlvdXNCb2R5UGFkZGluZ1JpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IHByZXZpb3VzQm9keVBhZGRpbmdSaWdodDtcblxuICAgIC8vIFJlc3RvcmUgcHJldmlvdXNCb2R5UGFkZGluZ1JpZ2h0IHRvIHVuZGVmaW5lZCBzbyBzZXRPdmVyZmxvd0hpZGRlbiBrbm93cyBpdFxuICAgIC8vIGNhbiBiZSBzZXQgYWdhaW4uXG4gICAgcHJldmlvdXNCb2R5UGFkZGluZ1JpZ2h0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHByZXZpb3VzQm9keU92ZXJmbG93U2V0dGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IHByZXZpb3VzQm9keU92ZXJmbG93U2V0dGluZztcblxuICAgIC8vIFJlc3RvcmUgcHJldmlvdXNCb2R5T3ZlcmZsb3dTZXR0aW5nIHRvIHVuZGVmaW5lZFxuICAgIC8vIHNvIHNldE92ZXJmbG93SGlkZGVuIGtub3dzIGl0IGNhbiBiZSBzZXQgYWdhaW4uXG4gICAgcHJldmlvdXNCb2R5T3ZlcmZsb3dTZXR0aW5nID0gdW5kZWZpbmVkO1xuICB9XG59O1xuXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9zY3JvbGxIZWlnaHQjUHJvYmxlbXNfYW5kX3NvbHV0aW9uc1xudmFyIGlzVGFyZ2V0RWxlbWVudFRvdGFsbHlTY3JvbGxlZCA9IGZ1bmN0aW9uIGlzVGFyZ2V0RWxlbWVudFRvdGFsbHlTY3JvbGxlZCh0YXJnZXRFbGVtZW50KSB7XG4gIHJldHVybiB0YXJnZXRFbGVtZW50ID8gdGFyZ2V0RWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0YXJnZXRFbGVtZW50LnNjcm9sbFRvcCA8PSB0YXJnZXRFbGVtZW50LmNsaWVudEhlaWdodCA6IGZhbHNlO1xufTtcblxudmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uIGhhbmRsZVNjcm9sbChldmVudCwgdGFyZ2V0RWxlbWVudCkge1xuICB2YXIgY2xpZW50WSA9IGV2ZW50LnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WSAtIGluaXRpYWxDbGllbnRZO1xuXG4gIGlmIChhbGxvd1RvdWNoTW92ZShldmVudC50YXJnZXQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC5zY3JvbGxUb3AgPT09IDAgJiYgY2xpZW50WSA+IDApIHtcbiAgICAvLyBlbGVtZW50IGlzIGF0IHRoZSB0b3Agb2YgaXRzIHNjcm9sbC5cbiAgICByZXR1cm4gcHJldmVudERlZmF1bHQoZXZlbnQpO1xuICB9XG5cbiAgaWYgKGlzVGFyZ2V0RWxlbWVudFRvdGFsbHlTY3JvbGxlZCh0YXJnZXRFbGVtZW50KSAmJiBjbGllbnRZIDwgMCkge1xuICAgIC8vIGVsZW1lbnQgaXMgYXQgdGhlIGJvdHRvbSBvZiBpdHMgc2Nyb2xsLlxuICAgIHJldHVybiBwcmV2ZW50RGVmYXVsdChldmVudCk7XG4gIH1cblxuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgdmFyIGRpc2FibGVCb2R5U2Nyb2xsID0gZnVuY3Rpb24gZGlzYWJsZUJvZHlTY3JvbGwodGFyZ2V0RWxlbWVudCwgb3B0aW9ucykge1xuICAvLyB0YXJnZXRFbGVtZW50IG11c3QgYmUgcHJvdmlkZWRcbiAgaWYgKCF0YXJnZXRFbGVtZW50KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKCdkaXNhYmxlQm9keVNjcm9sbCB1bnN1Y2Nlc3NmdWwgLSB0YXJnZXRFbGVtZW50IG11c3QgYmUgcHJvdmlkZWQgd2hlbiBjYWxsaW5nIGRpc2FibGVCb2R5U2Nyb2xsIG9uIElPUyBkZXZpY2VzLicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGRpc2FibGVCb2R5U2Nyb2xsIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQgb24gdGhpcyB0YXJnZXRFbGVtZW50IGJlZm9yZVxuICBpZiAobG9ja3Muc29tZShmdW5jdGlvbiAobG9jaykge1xuICAgIHJldHVybiBsb2NrLnRhcmdldEVsZW1lbnQgPT09IHRhcmdldEVsZW1lbnQ7XG4gIH0pKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGxvY2sgPSB7XG4gICAgdGFyZ2V0RWxlbWVudDogdGFyZ2V0RWxlbWVudCxcbiAgICBvcHRpb25zOiBvcHRpb25zIHx8IHt9XG4gIH07XG5cbiAgbG9ja3MgPSBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGxvY2tzKSwgW2xvY2tdKTtcblxuICBpZiAoaXNJb3NEZXZpY2UpIHtcbiAgICB0YXJnZXRFbGVtZW50Lm9udG91Y2hzdGFydCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldFRvdWNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIC8vIGRldGVjdCBzaW5nbGUgdG91Y2guXG4gICAgICAgIGluaXRpYWxDbGllbnRZID0gZXZlbnQudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRZO1xuICAgICAgfVxuICAgIH07XG4gICAgdGFyZ2V0RWxlbWVudC5vbnRvdWNobW92ZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldFRvdWNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIC8vIGRldGVjdCBzaW5nbGUgdG91Y2guXG4gICAgICAgIGhhbmRsZVNjcm9sbChldmVudCwgdGFyZ2V0RWxlbWVudCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghZG9jdW1lbnRMaXN0ZW5lckFkZGVkKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBwcmV2ZW50RGVmYXVsdCwgaGFzUGFzc2l2ZUV2ZW50cyA/IHsgcGFzc2l2ZTogZmFsc2UgfSA6IHVuZGVmaW5lZCk7XG4gICAgICBkb2N1bWVudExpc3RlbmVyQWRkZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzZXRPdmVyZmxvd0hpZGRlbihvcHRpb25zKTtcbiAgfVxufTtcblxuZXhwb3J0IHZhciBjbGVhckFsbEJvZHlTY3JvbGxMb2NrcyA9IGZ1bmN0aW9uIGNsZWFyQWxsQm9keVNjcm9sbExvY2tzKCkge1xuICBpZiAoaXNJb3NEZXZpY2UpIHtcbiAgICAvLyBDbGVhciBhbGwgbG9ja3Mgb250b3VjaHN0YXJ0L29udG91Y2htb3ZlIGhhbmRsZXJzLCBhbmQgdGhlIHJlZmVyZW5jZXMuXG4gICAgbG9ja3MuZm9yRWFjaChmdW5jdGlvbiAobG9jaykge1xuICAgICAgbG9jay50YXJnZXRFbGVtZW50Lm9udG91Y2hzdGFydCA9IG51bGw7XG4gICAgICBsb2NrLnRhcmdldEVsZW1lbnQub250b3VjaG1vdmUgPSBudWxsO1xuICAgIH0pO1xuXG4gICAgaWYgKGRvY3VtZW50TGlzdGVuZXJBZGRlZCkge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgcHJldmVudERlZmF1bHQsIGhhc1Bhc3NpdmVFdmVudHMgPyB7IHBhc3NpdmU6IGZhbHNlIH0gOiB1bmRlZmluZWQpO1xuICAgICAgZG9jdW1lbnRMaXN0ZW5lckFkZGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgaW5pdGlhbCBjbGllbnRZLlxuICAgIGluaXRpYWxDbGllbnRZID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgcmVzdG9yZU92ZXJmbG93U2V0dGluZygpO1xuICB9XG5cbiAgbG9ja3MgPSBbXTtcbn07XG5cbmV4cG9ydCB2YXIgZW5hYmxlQm9keVNjcm9sbCA9IGZ1bmN0aW9uIGVuYWJsZUJvZHlTY3JvbGwodGFyZ2V0RWxlbWVudCkge1xuICBpZiAoIXRhcmdldEVsZW1lbnQpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZXJyb3IoJ2VuYWJsZUJvZHlTY3JvbGwgdW5zdWNjZXNzZnVsIC0gdGFyZ2V0RWxlbWVudCBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gY2FsbGluZyBlbmFibGVCb2R5U2Nyb2xsIG9uIElPUyBkZXZpY2VzLicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvY2tzID0gbG9ja3MuZmlsdGVyKGZ1bmN0aW9uIChsb2NrKSB7XG4gICAgcmV0dXJuIGxvY2sudGFyZ2V0RWxlbWVudCAhPT0gdGFyZ2V0RWxlbWVudDtcbiAgfSk7XG5cbiAgaWYgKGlzSW9zRGV2aWNlKSB7XG4gICAgdGFyZ2V0RWxlbWVudC5vbnRvdWNoc3RhcnQgPSBudWxsO1xuICAgIHRhcmdldEVsZW1lbnQub250b3VjaG1vdmUgPSBudWxsO1xuXG4gICAgaWYgKGRvY3VtZW50TGlzdGVuZXJBZGRlZCAmJiBsb2Nrcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnREZWZhdWx0LCBoYXNQYXNzaXZlRXZlbnRzID8geyBwYXNzaXZlOiBmYWxzZSB9IDogdW5kZWZpbmVkKTtcbiAgICAgIGRvY3VtZW50TGlzdGVuZXJBZGRlZCA9IGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmICghbG9ja3MubGVuZ3RoKSB7XG4gICAgcmVzdG9yZU92ZXJmbG93U2V0dGluZygpO1xuICB9XG59O1xuXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js\n")},
vendor: 29,179 bytes, line 1
1"./node_modules/lodash.debounce/index.js":function(module,__unused_webpack_exports,__webpack_require__){eval("/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLmRlYm91bmNlL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9nYW1tYS8uL25vZGVfbW9kdWxlcy9sb2Rhc2guZGVib3VuY2UvaW5kZXguanM/ZjdmZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGxvZGFzaCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgPGh0dHBzOi8vanF1ZXJ5Lm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cblxuLyoqIFVzZWQgYXMgdGhlIGBUeXBlRXJyb3JgIG1lc3NhZ2UgZm9yIFwiRnVuY3Rpb25zXCIgbWV0aG9kcy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltID0gL15cXHMrfFxccyskL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4LFxuICAgIG5hdGl2ZU1pbiA9IE1hdGgubWluO1xuXG4vKipcbiAqIEdldHMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZVxuICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IERhdGVcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICogfSwgXy5ub3coKSk7XG4gKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICovXG52YXIgbm93ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiByb290LkRhdGUubm93KCk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBkZWJvdW5jZWQgZnVuY3Rpb24gdGhhdCBkZWxheXMgaW52b2tpbmcgYGZ1bmNgIHVudGlsIGFmdGVyIGB3YWl0YFxuICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gKiBpbnZva2VkLiBUaGUgZGVib3VuY2VkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYCBtZXRob2QgdG8gY2FuY2VsXG4gKiBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0byBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS5cbiAqIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZVxuICogbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZFxuICogd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbi4gU3Vic2VxdWVudFxuICogY2FsbHMgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2BcbiAqIGludm9jYXRpb24uXG4gKlxuICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb25cbiAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAqXG4gKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAqXG4gKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8uZGVib3VuY2VgIGFuZCBgXy50aHJvdHRsZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWJvdW5jZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPWZhbHNlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XVxuICogIFRoZSBtYXhpbXVtIHRpbWUgYGZ1bmNgIGlzIGFsbG93ZWQgdG8gYmUgZGVsYXllZCBiZWZvcmUgaXQncyBpbnZva2VkLlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBkZWJvdW5jZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEF2b2lkIGNvc3RseSBjYWxjdWxhdGlvbnMgd2hpbGUgdGhlIHdpbmRvdyBzaXplIGlzIGluIGZsdXguXG4gKiBqUXVlcnkod2luZG93KS5vbigncmVzaXplJywgXy5kZWJvdW5jZShjYWxjdWxhdGVMYXlvdXQsIDE1MCkpO1xuICpcbiAqIC8vIEludm9rZSBgc2VuZE1haWxgIHdoZW4gY2xpY2tlZCwgZGVib3VuY2luZyBzdWJzZXF1ZW50IGNhbGxzLlxuICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uZGVib3VuY2Uoc2VuZE1haWwsIDMwMCwge1xuICogICAnbGVhZGluZyc6IHRydWUsXG4gKiAgICd0cmFpbGluZyc6IGZhbHNlXG4gKiB9KSk7XG4gKlxuICogLy8gRW5zdXJlIGBiYXRjaExvZ2AgaXMgaW52b2tlZCBvbmNlIGFmdGVyIDEgc2Vjb25kIG9mIGRlYm91bmNlZCBjYWxscy5cbiAqIHZhciBkZWJvdW5jZWQgPSBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHsgJ21heFdhaXQnOiAxMDAwIH0pO1xuICogdmFyIHNvdXJjZSA9IG5ldyBFdmVudFNvdXJjZSgnL3N0cmVhbScpO1xuICogalF1ZXJ5KHNvdXJjZSkub24oJ21lc3NhZ2UnLCBkZWJvdW5jZWQpO1xuICpcbiAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgZGVib3VuY2VkIGludm9jYXRpb24uXG4gKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCBkZWJvdW5jZWQuY2FuY2VsKTtcbiAqL1xuZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICB2YXIgbGFzdEFyZ3MsXG4gICAgICBsYXN0VGhpcyxcbiAgICAgIG1heFdhaXQsXG4gICAgICByZXN1bHQsXG4gICAgICB0aW1lcklkLFxuICAgICAgbGFzdENhbGxUaW1lLFxuICAgICAgbGFzdEludm9rZVRpbWUgPSAwLFxuICAgICAgbGVhZGluZyA9IGZhbHNlLFxuICAgICAgbWF4aW5nID0gZmFsc2UsXG4gICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgd2FpdCA9IHRvTnVtYmVyKHdhaXQpIHx8IDA7XG4gIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgIGxlYWRpbmcgPSAhIW9wdGlvbnMubGVhZGluZztcbiAgICBtYXhpbmcgPSAnbWF4V2FpdCcgaW4gb3B0aW9ucztcbiAgICBtYXhXYWl0ID0gbWF4aW5nID8gbmF0aXZlTWF4KHRvTnVtYmVyKG9wdGlvbnMubWF4V2FpdCkgfHwgMCwgd2FpdCkgOiBtYXhXYWl0O1xuICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VGdW5jKHRpbWUpIHtcbiAgICB2YXIgYXJncyA9IGxhc3RBcmdzLFxuICAgICAgICB0aGlzQXJnID0gbGFzdFRoaXM7XG5cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBsZWFkaW5nRWRnZSh0aW1lKSB7XG4gICAgLy8gUmVzZXQgYW55IGBtYXhXYWl0YCB0aW1lci5cbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgLy8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbiAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIC8vIEludm9rZSB0aGUgbGVhZGluZyBlZGdlLlxuICAgIHJldHVybiBsZWFkaW5nID8gaW52b2tlRnVuYyh0aW1lKSA6IHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbWFpbmluZ1dhaXQodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWUsXG4gICAgICAgIHJlc3VsdCA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgIHJldHVybiBtYXhpbmcgPyBuYXRpdmVNaW4ocmVzdWx0LCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICB9XG4gICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgIH1cbiAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBkZWJvdW5jZWQuY2FuY2VsID0gY2FuY2VsO1xuICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgcmV0dXJuIGRlYm91bmNlZDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAhIXZhbHVlICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZGVib3VuY2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash.debounce/index.js\n")}
1},__webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(cachedModule!==void 0)return cachedModule.exports;var module2=__webpack_module_cache__[moduleId]={exports:{}};return __webpack_modules__[moduleId](module2,module2.exports,__webpack_require__),module2.exports}(function(){__webpack_require__.n=function(module2){var getter=module2&&module2.__esModule?function(){return module2.default}:function(){return module2};return __webpack_require__.d(getter,{a:getter}),getter}})(),(function(){__webpack_require__.d=function(exports,definition){for(var key in definition)__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)&&Object.defineProperty(exports,key,{enumerable:!0,get:definition[key]})}})(),(function(){__webpack_require__.g=(function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(e){if(typeof window=="object")return window}})()})(),(function(){__webpack_require__.o=function(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}})(),(function(){__webpack_require__.r=function(exports){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})}})();var __webpack_exports__=__webpack_require__("./src/components/modules/menu-navigation/menu-navigation.js")})(); 2//# sourceMappingURL=/cdn/shop/t/266/assets/module-menu-navigation.js.map?v=24298644801016799891787895849
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.