"use strict";(globalThis.blocksyJsonP=globalThis.blocksyJsonP||[]).push([[963],{865:module=>{eval("\n\nfunction isIpad() {\n const ua = window.navigator.userAgent;\n\n if (ua.indexOf('iPad') > -1) {\n return true;\n }\n\n if (ua.indexOf('Macintosh') > -1) {\n try {\n document.createEvent('TouchEvent');\n return true;\n } catch (e) {}\n }\n\n return false;\n}\n/**\n * @module ios-inner-height\n *\n * @description Get proper window.innerHeight from iOS devices,\n * excluding URL control and menu bar.\n *\n * @return {function} Callable function to retrieve the\n * cached `window.innerHeight` measurement, specific to the\n * device's current orientation.\n */\n\n\nmodule.exports = function () {\n // Avoid errors when globals are undefined (CI, etc)\n // https://github.com/tylerjpeterson/ios-inner-height/pull/7\n if (typeof window === 'undefined' || typeof navigator === 'undefined') {\n return function () {\n return 0;\n };\n } // Non-iOS browsers return window.innerHeight per usual.\n // No caching here since browsers can be resized, and setting\n // up resize-triggered cache invalidation is not in scope.\n\n /* istanbul ignore if */\n\n\n if (!navigator.userAgent.match(/iphone|ipod|ipad/i) && !isIpad()) {\n /**\n * Avoids conditional logic in the implementation\n * @return {number} - window's innerHeight measurement in pixels\n */\n return function () {\n return window.innerHeight;\n };\n } // Store initial orientation\n\n\n var axis = Math.abs(window.orientation); // And hoist cached dimensions\n\n var dims = {\n w: 0,\n h: 0\n };\n /**\n * Creates an element with a height of 100vh since iOS accurately\n * reports vp height (but not window.innerHeight). Then destroy it.\n */\n\n var createRuler = function () {\n var ruler = document.createElement('div');\n ruler.style.position = 'fixed';\n ruler.style.height = '100vh';\n ruler.style.width = 0;\n ruler.style.top = 0;\n document.documentElement.appendChild(ruler); // Set cache conscientious of device orientation\n\n dims.w = axis === 90 ? ruler.offsetHeight : window.innerWidth;\n dims.h = axis === 90 ? window.innerWidth : ruler.offsetHeight; // Clean up after ourselves\n\n document.documentElement.removeChild(ruler);\n ruler = null;\n }; // Measure once\n\n\n createRuler();\n /**\n * Returns window's cached innerHeight measurement\n * based on viewport height and device orientation\n * @return {number} - window's innerHeight measurement in pixels\n */\n\n return function () {\n if (Math.abs(window.orientation) !== 90) {\n return dims.h;\n }\n\n return dims.w;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODY1LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vY3RGcm9udGVuZC8uL3N0YXRpYy9qcy9mcm9udGVuZC9wYXJhbGxheC9pb3MtaW5uZXItaGVpZ2h0LmpzPzQ5YTIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBpc0lwYWQoKSB7XG4gIGNvbnN0IHVhID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgaWYgKHVhLmluZGV4T2YoJ2lQYWQnKSA+IC0xKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodWEuaW5kZXhPZignTWFjaW50b3NoJykgPiAtMSkge1xuICAgIHRyeSB7XG4gICAgICBkb2N1bWVudC5jcmVhdGVFdmVudCgnVG91Y2hFdmVudCcpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbi8qKlxuICogQG1vZHVsZSBpb3MtaW5uZXItaGVpZ2h0XG4gKlxuICogQGRlc2NyaXB0aW9uIEdldCBwcm9wZXIgd2luZG93LmlubmVySGVpZ2h0IGZyb20gaU9TIGRldmljZXMsXG4gKiBleGNsdWRpbmcgVVJMIGNvbnRyb2wgYW5kIG1lbnUgYmFyLlxuICpcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufSBDYWxsYWJsZSBmdW5jdGlvbiB0byByZXRyaWV2ZSB0aGVcbiAqIGNhY2hlZCBgd2luZG93LmlubmVySGVpZ2h0YCBtZWFzdXJlbWVudCwgc3BlY2lmaWMgdG8gdGhlXG4gKiBkZXZpY2UncyBjdXJyZW50IG9yaWVudGF0aW9uLlxuICovXG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIEF2b2lkIGVycm9ycyB3aGVuIGdsb2JhbHMgYXJlIHVuZGVmaW5lZCAoQ0ksIGV0YylcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3R5bGVyanBldGVyc29uL2lvcy1pbm5lci1oZWlnaHQvcHVsbC83XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgbmF2aWdhdG9yID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9O1xuICB9IC8vIE5vbi1pT1MgYnJvd3NlcnMgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCBwZXIgdXN1YWwuXG4gIC8vIE5vIGNhY2hpbmcgaGVyZSBzaW5jZSBicm93c2VycyBjYW4gYmUgcmVzaXplZCwgYW5kIHNldHRpbmdcbiAgLy8gdXAgcmVzaXplLXRyaWdnZXJlZCBjYWNoZSBpbnZhbGlkYXRpb24gaXMgbm90IGluIHNjb3BlLlxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIGlmICghbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaXBob25lfGlwb2R8aXBhZC9pKSAmJiAhaXNJcGFkKCkpIHtcbiAgICAvKipcbiAgICAgKiBBdm9pZHMgY29uZGl0aW9uYWwgbG9naWMgaW4gdGhlIGltcGxlbWVudGF0aW9uXG4gICAgICogQHJldHVybiB7bnVtYmVyfSAtIHdpbmRvdydzIGlubmVySGVpZ2h0IG1lYXN1cmVtZW50IGluIHBpeGVsc1xuICAgICAqL1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIH07XG4gIH0gLy8gU3RvcmUgaW5pdGlhbCBvcmllbnRhdGlvblxuXG5cbiAgdmFyIGF4aXMgPSBNYXRoLmFicyh3aW5kb3cub3JpZW50YXRpb24pOyAvLyBBbmQgaG9pc3QgY2FjaGVkIGRpbWVuc2lvbnNcblxuICB2YXIgZGltcyA9IHtcbiAgICB3OiAwLFxuICAgIGg6IDBcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZWxlbWVudCB3aXRoIGEgaGVpZ2h0IG9mIDEwMHZoIHNpbmNlIGlPUyBhY2N1cmF0ZWx5XG4gICAqIHJlcG9ydHMgdnAgaGVpZ2h0IChidXQgbm90IHdpbmRvdy5pbm5lckhlaWdodCkuIFRoZW4gZGVzdHJveSBpdC5cbiAgICovXG5cbiAgdmFyIGNyZWF0ZVJ1bGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBydWxlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJ1bGVyLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgICBydWxlci5zdHlsZS5oZWlnaHQgPSAnMTAwdmgnO1xuICAgIHJ1bGVyLnN0eWxlLndpZHRoID0gMDtcbiAgICBydWxlci5zdHlsZS50b3AgPSAwO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChydWxlcik7IC8vIFNldCBjYWNoZSBjb25zY2llbnRpb3VzIG9mIGRldmljZSBvcmllbnRhdGlvblxuXG4gICAgZGltcy53ID0gYXhpcyA9PT0gOTAgPyBydWxlci5vZmZzZXRIZWlnaHQgOiB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICBkaW1zLmggPSBheGlzID09PSA5MCA/IHdpbmRvdy5pbm5lcldpZHRoIDogcnVsZXIub2Zmc2V0SGVpZ2h0OyAvLyBDbGVhbiB1cCBhZnRlciBvdXJzZWx2ZXNcblxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZChydWxlcik7XG4gICAgcnVsZXIgPSBudWxsO1xuICB9OyAvLyBNZWFzdXJlIG9uY2VcblxuXG4gIGNyZWF0ZVJ1bGVyKCk7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHdpbmRvdydzIGNhY2hlZCBpbm5lckhlaWdodCBtZWFzdXJlbWVudFxuICAgKiBiYXNlZCBvbiB2aWV3cG9ydCBoZWlnaHQgYW5kIGRldmljZSBvcmllbnRhdGlvblxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IC0gd2luZG93J3MgaW5uZXJIZWlnaHQgbWVhc3VyZW1lbnQgaW4gcGl4ZWxzXG4gICAqL1xuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKE1hdGguYWJzKHdpbmRvdy5vcmllbnRhdGlvbikgIT09IDkwKSB7XG4gICAgICByZXR1cm4gZGltcy5oO1xuICAgIH1cblxuICAgIHJldHVybiBkaW1zLnc7XG4gIH07XG59KCk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///865\n")},963:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"mount\": () => (/* binding */ mount),\n \"rel\": () => (/* binding */ rel)\n});\n\n// EXTERNAL MODULE: ./static/js/frontend/helpers/current-screen.js\nvar current_screen = __webpack_require__(410);\n// EXTERNAL MODULE: ./static/js/frontend/parallax/ios-inner-height.js\nvar ios_inner_height = __webpack_require__(865);\nvar ios_inner_height_default = /*#__PURE__*/__webpack_require__.n(ios_inner_height);\n;// CONCATENATED MODULE: ./static/js/frontend/parallax/rellax.js\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// ------------------------------------------\n// Rellax.js - v1.0.0\n// Buttery smooth parallax library\n// Copyright (c) 2016 Moe Amaya (@moeamaya)\n// MIT license\n//\n// Thanks to Paraxify.js and Jaime Cabllero\n// for parallax concepts\n// ------------------------------------------\n\n // Ahh a pure function, gets new transform value\n// based on scrollPostion and speed\n// Allow for decimal pixel values\n\nconst updatePosition = (percentage, speed) => speed * (100 * (1 - percentage)); // We want to cache the parallax blocks'\n// values: base, top, height, speed\n// el: is dom object, return: el cache values\n\n\nconst createBlock = _ref => {\n let {\n el = null,\n speed = null,\n fitInsideContainer = null,\n isVisible = false,\n shouldSetHeightToIncrease = true,\n parallaxBehavior = 'desktop:tablet:mobile'\n } = _ref;\n // Optional individual block speed as data attr, otherwise global speed\n // Check if has percentage attr, and limit speed to 5, else limit it to 10\n // The function is named clamp\n speed = speed <= -5 ? -5 : speed >= 5 ? 5 : speed; // We need to guess the position the background will be, when the section\n // will reach the top of the viewport. This calculation will be based on the\n // speed for sure\n\n if (fitInsideContainer && shouldSetHeightToIncrease) {\n let heightWeWantToIncrease = 0;\n\n if (speed > 0) {\n heightWeWantToIncrease = updatePosition(0.5, speed);\n } else {\n heightWeWantToIncrease = updatePosition(ios_inner_height_default()() / (fitInsideContainer.clientHeight + ios_inner_height_default()()), speed) - updatePosition(0.5, speed);\n }\n\n heightWeWantToIncrease = Math.abs(heightWeWantToIncrease) * 2;\n el.parentNode.style.height = !isVisible ? '100%' : `calc(100% + ${heightWeWantToIncrease}px)`;\n } // initializing at scrollY = 0 (top of browser)\n // ensures elements are positioned based on HTML layout.\n\n\n let {\n top,\n height\n } = nullifyTransforms(fitInsideContainer ? fitInsideContainer : el);\n var blockTop = pageYOffset + top;\n return {\n parallaxBehavior,\n shouldSetHeightToIncrease,\n fitInsideContainer,\n el,\n top: blockTop,\n height,\n speed,\n isVisible\n };\n};\n\nfunction elementInViewport(el) {\n var rect = el.getBoundingClientRect();\n return rect.bottom > -450 && rect.top - 450 < (ios_inner_height_default()() || document.documentElement.clientHeight)\n /* or $(window).height() */\n ;\n}\n\nfunction nullifyTransforms(el) {\n if (!el) return null; //add sanity checks and default values\n\n let {\n top,\n left,\n right,\n width,\n height\n } = el.getBoundingClientRect();\n let transformArr = window.getComputedStyle(el).transform.split(/\\(|,|\\)/).slice(1, -1).map(v => parseFloat(v));\n\n if (transformArr.length != 6) {\n return el.getBoundingClientRect();\n } // 2D matrix\n // need some math to apply inverse of matrix\n // That is the matrix of the transformation of the element\n\n\n var t = transformArr;\n let det = t[0] * t[3] - t[1] * t[2];\n /*if (transformArr.length > 6)*/\n //3D matrix\n //haven't done the calculation to apply inverse of 4x4 matrix\n\n return {\n width: width / t[0],\n height: height / t[3],\n left: (left * t[3] - top * t[2] + t[2] * t[5] - t[4] * t[3]) / det,\n right: (right * t[3] - top * t[2] + t[2] * t[5] - t[4] * t[3]) / det,\n top: (-left * t[1] + top * t[0] + t[4] * t[1] - t[0] * t[5]) / det\n };\n}\n\nclass Rellax {\n constructor() {\n this.blocks = [];\n this.oldPosY = false;\n this.intersectionObserver = new IntersectionObserver(entries => {\n entries.map(_ref2 => {\n let {\n target: el,\n isIntersecting,\n intersectionRatio\n } = _ref2;\n let blocks = this.blocks.filter(_ref3 => {\n let {\n fitInsideContainer,\n el: blockEl\n } = _ref3;\n return blockEl.closest('svg') ? blockEl.closest('svg') === el : fitInsideContainer === el || blockEl === el;\n });\n blocks.map(block => {\n block.isVisible = isIntersecting && block.parallaxBehavior.indexOf((0,current_screen/* getCurrentScreen */.C)({\n withTablet: true\n })) > -1;\n this.blocks = this.blocks.map(nestedBlock => nestedBlock.el === block.el ? block : nestedBlock);\n if (!block.isVisible) block.el.removeAttribute('style');\n });\n });\n }, {\n rootMargin: '450px'\n });\n window.addEventListener('resize', () => {\n this.oldPosY = false;\n this.blocks = this.blocks.map(block => createBlock(_objectSpread(_objectSpread({}, block), {}, {\n isVisible: elementInViewport(block.fitInsideContainer ? block.fitInsideContainer : block.el) && block.parallaxBehavior.indexOf((0,current_screen/* getCurrentScreen */.C)({\n withTablet: true\n })) > -1\n })));\n this.animate();\n }); // Start the loop\n\n this.update(); // The loop does nothing if the scrollPosition did not change\n // so call animate to make sure every element has their transforms\n\n this.animate();\n }\n\n removeEl(_ref4) {\n let {\n el\n } = _ref4;\n el.removeAttribute('style');\n this.blocks = this.blocks.filter(_ref5 => {\n let {\n el: e\n } = _ref5;\n return e !== el;\n });\n }\n\n addEl(_ref6) {\n let {\n el,\n speed,\n fitInsideContainer = null,\n shouldSetHeightToIncrease = true,\n parallaxBehavior = 'desktop:tablet:mobile'\n } = _ref6;\n\n if (fitInsideContainer) {\n this.intersectionObserver.observe(fitInsideContainer);\n } else {\n this.intersectionObserver.observe(el.closest('svg') ? el.closest('svg') : el);\n }\n\n this.blocks.push(createBlock({\n el,\n speed,\n fitInsideContainer,\n isVisible: elementInViewport(fitInsideContainer ? fitInsideContainer : el) && parallaxBehavior.indexOf((0,current_screen/* getCurrentScreen */.C)({\n withTablet: true\n })) > -1,\n shouldSetHeightToIncrease,\n parallaxBehavior\n }));\n }\n\n update() {\n if (!this.oldPosY && this.oldPosY !== 0) {\n this.animate();\n }\n\n if (this.setPosition()) {\n this.animate();\n }\n\n requestAnimationFrame(this.update.bind(this));\n }\n\n setPosition() {\n if (this.blocks.length === 0) return false;\n let old = this.oldPosY;\n this.oldPosY = pageYOffset;\n return old != pageYOffset;\n }\n\n animate() {\n this.blocks.map(block => {\n if (!block.isVisible) {\n block.el.removeAttribute('style');\n return;\n }\n\n var percentage = (pageYOffset - block.top + ios_inner_height_default()()) / (block.height + ios_inner_height_default()());\n let {\n top,\n height\n } = nullifyTransforms(block.fitInsideContainer ? block.fitInsideContainer : block.el);\n\n if (!height) {\n height = (block.fitInsideContainer ? block.fitInsideContainer : block.el).getBoundingClientRect().height;\n }\n\n const newPercentage = 1 - (top + (block.el.dataset.percentage && parseInt(block.el.dataset.percentage, 10) === 0 ? 0 : height / 2)) / ios_inner_height_default()(); // Subtracting initialize value, so element stays in same spot as HTML\n\n var position = updatePosition(block.fitInsideContainer ? percentage : newPercentage, block.speed) - updatePosition(block.el.dataset.percentage ? parseInt(block.el.dataset.percentage, 10) : 0.5, block.speed); // Move that element\n\n block.el.style.transform = `translate3d(0, ${position}px, 0)`;\n });\n }\n\n}\n// EXTERNAL MODULE: ./static/js/helpers.js\nvar helpers = __webpack_require__(979);\n;// CONCATENATED MODULE: ./static/js/frontend/parallax/register-listener.js\nfunction register_listener_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction register_listener_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? register_listener_ownKeys(Object(source), !0).forEach(function (key) { register_listener_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : register_listener_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction register_listener_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nlet rel = new Rellax();\n/**\n * TODO: maybe implement code splitting for parallax elements.\n * It will speed the up the process a lot.\n *\n * Maybe do that at the lib level.\n *\n * We can go about extracting the animate() function into a separated module.\n * This module will be shared among this and the rellax lib code.\n *\n * That way, we can defer execution of the rellax lib. But I guess the code\n * inside rellax.js is very coupled for doing that trick.\n */\n\nconst mount = elWithParallax => {\n // Consider here storing the rellax instance onto the section DOM\n // element itself. And do that in a non-leaking fashion.\n //\n // section.rellaxInstance would leak memory\n if (elWithParallax.ctHasParallax && elWithParallax.querySelector('figure .ct-image-container > img')) {\n return;\n /*\n rel.removeEl({\n \tel: elWithParallax.querySelector(\n \t\t'figure .ct-image-container > img'\n \t),\n })\n */\n }\n\n if (elWithParallax.matches('[data-parallax]') && !elWithParallax.dataset.parallax) {\n elWithParallax.removeAttribute('data-parallax');\n return;\n }\n\n elWithParallax.ctHasParallax = true;\n\n if (elWithParallax.querySelector('figure .ct-image-container > img')) {\n setTimeout(() => {\n rel.addEl(register_listener_objectSpread({\n el: elWithParallax.querySelector('figure .ct-image-container > img'),\n // +elWithParallax.dataset.parallaxSpeed,\n speed: -5,\n fitInsideContainer: elWithParallax\n }, elWithParallax.dataset.parallax ? {\n parallaxBehavior: elWithParallax.dataset.parallax\n } : {}));\n }, 0);\n } else {\n rel.addEl({\n el: elWithParallax,\n speed: +elWithParallax.dataset.parallax,\n shouldSetHeightToIncrease: false\n });\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDblBBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vY3RGcm9udGVuZC8uL3N0YXRpYy9qcy9mcm9udGVuZC9wYXJhbGxheC9yZWxsYXguanM/MDRmOCIsIndlYnBhY2s6Ly9jdEZyb250ZW5kLy4vc3RhdGljL2pzL2Zyb250ZW5kL3BhcmFsbGF4L3JlZ2lzdGVyLWxpc3RlbmVyLmpzPzI5N2IiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGVudW1lcmFibGVPbmx5ICYmIChzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSkpLCBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IG51bGwgIT0gYXJndW1lbnRzW2ldID8gYXJndW1lbnRzW2ldIDoge307IGkgJSAyID8gb3duS2V5cyhPYmplY3Qoc291cmNlKSwgITApLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSkgOiBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZWxsYXguanMgLSB2MS4wLjBcbi8vIEJ1dHRlcnkgc21vb3RoIHBhcmFsbGF4IGxpYnJhcnlcbi8vIENvcHlyaWdodCAoYykgMjAxNiBNb2UgQW1heWEgKEBtb2VhbWF5YSlcbi8vIE1JVCBsaWNlbnNlXG4vL1xuLy8gVGhhbmtzIHRvIFBhcmF4aWZ5LmpzIGFuZCBKYWltZSBDYWJsbGVyb1xuLy8gZm9yIHBhcmFsbGF4IGNvbmNlcHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmltcG9ydCB7IGdldEN1cnJlbnRTY3JlZW4gfSBmcm9tICcuLi9oZWxwZXJzL2N1cnJlbnQtc2NyZWVuJztcbmltcG9ydCBpbm5lckhlaWdodCBmcm9tICcuL2lvcy1pbm5lci1oZWlnaHQnOyAvLyBBaGggYSBwdXJlIGZ1bmN0aW9uLCBnZXRzIG5ldyB0cmFuc2Zvcm0gdmFsdWVcbi8vIGJhc2VkIG9uIHNjcm9sbFBvc3Rpb24gYW5kIHNwZWVkXG4vLyBBbGxvdyBmb3IgZGVjaW1hbCBwaXhlbCB2YWx1ZXNcblxuY29uc3QgdXBkYXRlUG9zaXRpb24gPSAocGVyY2VudGFnZSwgc3BlZWQpID0+IHNwZWVkICogKDEwMCAqICgxIC0gcGVyY2VudGFnZSkpOyAvLyBXZSB3YW50IHRvIGNhY2hlIHRoZSBwYXJhbGxheCBibG9ja3MnXG4vLyB2YWx1ZXM6IGJhc2UsIHRvcCwgaGVpZ2h0LCBzcGVlZFxuLy8gZWw6IGlzIGRvbSBvYmplY3QsIHJldHVybjogZWwgY2FjaGUgdmFsdWVzXG5cblxuY29uc3QgY3JlYXRlQmxvY2sgPSBfcmVmID0+IHtcbiAgbGV0IHtcbiAgICBlbCA9IG51bGwsXG4gICAgc3BlZWQgPSBudWxsLFxuICAgIGZpdEluc2lkZUNvbnRhaW5lciA9IG51bGwsXG4gICAgaXNWaXNpYmxlID0gZmFsc2UsXG4gICAgc2hvdWxkU2V0SGVpZ2h0VG9JbmNyZWFzZSA9IHRydWUsXG4gICAgcGFyYWxsYXhCZWhhdmlvciA9ICdkZXNrdG9wOnRhYmxldDptb2JpbGUnXG4gIH0gPSBfcmVmO1xuICAvLyBPcHRpb25hbCBpbmRpdmlkdWFsIGJsb2NrIHNwZWVkIGFzIGRhdGEgYXR0ciwgb3RoZXJ3aXNlIGdsb2JhbCBzcGVlZFxuICAvLyBDaGVjayBpZiBoYXMgcGVyY2VudGFnZSBhdHRyLCBhbmQgbGltaXQgc3BlZWQgdG8gNSwgZWxzZSBsaW1pdCBpdCB0byAxMFxuICAvLyBUaGUgZnVuY3Rpb24gaXMgbmFtZWQgY2xhbXBcbiAgc3BlZWQgPSBzcGVlZCA8PSAtNSA/IC01IDogc3BlZWQgPj0gNSA/IDUgOiBzcGVlZDsgLy8gV2UgbmVlZCB0byBndWVzcyB0aGUgcG9zaXRpb24gdGhlIGJhY2tncm91bmQgd2lsbCBiZSwgd2hlbiB0aGUgc2VjdGlvblxuICAvLyB3aWxsIHJlYWNoIHRoZSB0b3Agb2YgdGhlIHZpZXdwb3J0LiBUaGlzIGNhbGN1bGF0aW9uIHdpbGwgYmUgYmFzZWQgb24gdGhlXG4gIC8vIHNwZWVkIGZvciBzdXJlXG5cbiAgaWYgKGZpdEluc2lkZUNvbnRhaW5lciAmJiBzaG91bGRTZXRIZWlnaHRUb0luY3JlYXNlKSB7XG4gICAgbGV0IGhlaWdodFdlV2FudFRvSW5jcmVhc2UgPSAwO1xuXG4gICAgaWYgKHNwZWVkID4gMCkge1xuICAgICAgaGVpZ2h0V2VXYW50VG9JbmNyZWFzZSA9IHVwZGF0ZVBvc2l0aW9uKDAuNSwgc3BlZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWlnaHRXZVdhbnRUb0luY3JlYXNlID0gdXBkYXRlUG9zaXRpb24oaW5uZXJIZWlnaHQoKSAvIChmaXRJbnNpZGVDb250YWluZXIuY2xpZW50SGVpZ2h0ICsgaW5uZXJIZWlnaHQoKSksIHNwZWVkKSAtIHVwZGF0ZVBvc2l0aW9uKDAuNSwgc3BlZWQpO1xuICAgIH1cblxuICAgIGhlaWdodFdlV2FudFRvSW5jcmVhc2UgPSBNYXRoLmFicyhoZWlnaHRXZVdhbnRUb0luY3JlYXNlKSAqIDI7XG4gICAgZWwucGFyZW50Tm9kZS5zdHlsZS5oZWlnaHQgPSAhaXNWaXNpYmxlID8gJzEwMCUnIDogYGNhbGMoMTAwJSArICR7aGVpZ2h0V2VXYW50VG9JbmNyZWFzZX1weClgO1xuICB9IC8vIGluaXRpYWxpemluZyBhdCBzY3JvbGxZID0gMCAodG9wIG9mIGJyb3dzZXIpXG4gIC8vIGVuc3VyZXMgZWxlbWVudHMgYXJlIHBvc2l0aW9uZWQgYmFzZWQgb24gSFRNTCBsYXlvdXQuXG5cblxuICBsZXQge1xuICAgIHRvcCxcbiAgICBoZWlnaHRcbiAgfSA9IG51bGxpZnlUcmFuc2Zvcm1zKGZpdEluc2lkZUNvbnRhaW5lciA/IGZpdEluc2lkZUNvbnRhaW5lciA6IGVsKTtcbiAgdmFyIGJsb2NrVG9wID0gcGFnZVlPZmZzZXQgKyB0b3A7XG4gIHJldHVybiB7XG4gICAgcGFyYWxsYXhCZWhhdmlvcixcbiAgICBzaG91bGRTZXRIZWlnaHRUb0luY3JlYXNlLFxuICAgIGZpdEluc2lkZUNvbnRhaW5lcixcbiAgICBlbCxcbiAgICB0b3A6IGJsb2NrVG9wLFxuICAgIGhlaWdodCxcbiAgICBzcGVlZCxcbiAgICBpc1Zpc2libGVcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGVsZW1lbnRJblZpZXdwb3J0KGVsKSB7XG4gIHZhciByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHJldHVybiByZWN0LmJvdHRvbSA+IC00NTAgJiYgcmVjdC50b3AgLSA0NTAgPCAoaW5uZXJIZWlnaHQoKSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KVxuICAvKiBvciAkKHdpbmRvdykuaGVpZ2h0KCkgKi9cbiAgO1xufVxuXG5mdW5jdGlvbiBudWxsaWZ5VHJhbnNmb3JtcyhlbCkge1xuICBpZiAoIWVsKSByZXR1cm4gbnVsbDsgLy9hZGQgc2FuaXR5IGNoZWNrcyBhbmQgZGVmYXVsdCB2YWx1ZXNcblxuICBsZXQge1xuICAgIHRvcCxcbiAgICBsZWZ0LFxuICAgIHJpZ2h0LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGxldCB0cmFuc2Zvcm1BcnIgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCkudHJhbnNmb3JtLnNwbGl0KC9cXCh8LHxcXCkvKS5zbGljZSgxLCAtMSkubWFwKHYgPT4gcGFyc2VGbG9hdCh2KSk7XG5cbiAgaWYgKHRyYW5zZm9ybUFyci5sZW5ndGggIT0gNikge1xuICAgIHJldHVybiBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgfSAvLyAyRCBtYXRyaXhcbiAgLy8gbmVlZCBzb21lIG1hdGggdG8gYXBwbHkgaW52ZXJzZSBvZiBtYXRyaXhcbiAgLy8gVGhhdCBpcyB0aGUgbWF0cml4IG9mIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgZWxlbWVudFxuXG5cbiAgdmFyIHQgPSB0cmFuc2Zvcm1BcnI7XG4gIGxldCBkZXQgPSB0WzBdICogdFszXSAtIHRbMV0gKiB0WzJdO1xuICAvKmlmICh0cmFuc2Zvcm1BcnIubGVuZ3RoID4gNikqL1xuICAvLzNEIG1hdHJpeFxuICAvL2hhdmVuJ3QgZG9uZSB0aGUgY2FsY3VsYXRpb24gdG8gYXBwbHkgaW52ZXJzZSBvZiA0eDQgbWF0cml4XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGggLyB0WzBdLFxuICAgIGhlaWdodDogaGVpZ2h0IC8gdFszXSxcbiAgICBsZWZ0OiAobGVmdCAqIHRbM10gLSB0b3AgKiB0WzJdICsgdFsyXSAqIHRbNV0gLSB0WzRdICogdFszXSkgLyBkZXQsXG4gICAgcmlnaHQ6IChyaWdodCAqIHRbM10gLSB0b3AgKiB0WzJdICsgdFsyXSAqIHRbNV0gLSB0WzRdICogdFszXSkgLyBkZXQsXG4gICAgdG9wOiAoLWxlZnQgKiB0WzFdICsgdG9wICogdFswXSArIHRbNF0gKiB0WzFdIC0gdFswXSAqIHRbNV0pIC8gZGV0XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBSZWxsYXgge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJsb2NrcyA9IFtdO1xuICAgIHRoaXMub2xkUG9zWSA9IGZhbHNlO1xuICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICBlbnRyaWVzLm1hcChfcmVmMiA9PiB7XG4gICAgICAgIGxldCB7XG4gICAgICAgICAgdGFyZ2V0OiBlbCxcbiAgICAgICAgICBpc0ludGVyc2VjdGluZyxcbiAgICAgICAgICBpbnRlcnNlY3Rpb25SYXRpb1xuICAgICAgICB9ID0gX3JlZjI7XG4gICAgICAgIGxldCBibG9ja3MgPSB0aGlzLmJsb2Nrcy5maWx0ZXIoX3JlZjMgPT4ge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBmaXRJbnNpZGVDb250YWluZXIsXG4gICAgICAgICAgICBlbDogYmxvY2tFbFxuICAgICAgICAgIH0gPSBfcmVmMztcbiAgICAgICAgICByZXR1cm4gYmxvY2tFbC5jbG9zZXN0KCdzdmcnKSA/IGJsb2NrRWwuY2xvc2VzdCgnc3ZnJykgPT09IGVsIDogZml0SW5zaWRlQ29udGFpbmVyID09PSBlbCB8fCBibG9ja0VsID09PSBlbDtcbiAgICAgICAgfSk7XG4gICAgICAgIGJsb2Nrcy5tYXAoYmxvY2sgPT4ge1xuICAgICAgICAgIGJsb2NrLmlzVmlzaWJsZSA9IGlzSW50ZXJzZWN0aW5nICYmIGJsb2NrLnBhcmFsbGF4QmVoYXZpb3IuaW5kZXhPZihnZXRDdXJyZW50U2NyZWVuKHtcbiAgICAgICAgICAgIHdpdGhUYWJsZXQ6IHRydWVcbiAgICAgICAgICB9KSkgPiAtMTtcbiAgICAgICAgICB0aGlzLmJsb2NrcyA9IHRoaXMuYmxvY2tzLm1hcChuZXN0ZWRCbG9jayA9PiBuZXN0ZWRCbG9jay5lbCA9PT0gYmxvY2suZWwgPyBibG9jayA6IG5lc3RlZEJsb2NrKTtcbiAgICAgICAgICBpZiAoIWJsb2NrLmlzVmlzaWJsZSkgYmxvY2suZWwucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIHtcbiAgICAgIHJvb3RNYXJnaW46ICc0NTBweCdcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xuICAgICAgdGhpcy5vbGRQb3NZID0gZmFsc2U7XG4gICAgICB0aGlzLmJsb2NrcyA9IHRoaXMuYmxvY2tzLm1hcChibG9jayA9PiBjcmVhdGVCbG9jayhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGJsb2NrKSwge30sIHtcbiAgICAgICAgaXNWaXNpYmxlOiBlbGVtZW50SW5WaWV3cG9ydChibG9jay5maXRJbnNpZGVDb250YWluZXIgPyBibG9jay5maXRJbnNpZGVDb250YWluZXIgOiBibG9jay5lbCkgJiYgYmxvY2sucGFyYWxsYXhCZWhhdmlvci5pbmRleE9mKGdldEN1cnJlbnRTY3JlZW4oe1xuICAgICAgICAgIHdpdGhUYWJsZXQ6IHRydWVcbiAgICAgICAgfSkpID4gLTFcbiAgICAgIH0pKSk7XG4gICAgICB0aGlzLmFuaW1hdGUoKTtcbiAgICB9KTsgLy8gU3RhcnQgdGhlIGxvb3BcblxuICAgIHRoaXMudXBkYXRlKCk7IC8vIFRoZSBsb29wIGRvZXMgbm90aGluZyBpZiB0aGUgc2Nyb2xsUG9zaXRpb24gZGlkIG5vdCBjaGFuZ2VcbiAgICAvLyBzbyBjYWxsIGFuaW1hdGUgdG8gbWFrZSBzdXJlIGV2ZXJ5IGVsZW1lbnQgaGFzIHRoZWlyIHRyYW5zZm9ybXNcblxuICAgIHRoaXMuYW5pbWF0ZSgpO1xuICB9XG5cbiAgcmVtb3ZlRWwoX3JlZjQpIHtcbiAgICBsZXQge1xuICAgICAgZWxcbiAgICB9ID0gX3JlZjQ7XG4gICAgZWwucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xuICAgIHRoaXMuYmxvY2tzID0gdGhpcy5ibG9ja3MuZmlsdGVyKF9yZWY1ID0+IHtcbiAgICAgIGxldCB7XG4gICAgICAgIGVsOiBlXG4gICAgICB9ID0gX3JlZjU7XG4gICAgICByZXR1cm4gZSAhPT0gZWw7XG4gICAgfSk7XG4gIH1cblxuICBhZGRFbChfcmVmNikge1xuICAgIGxldCB7XG4gICAgICBlbCxcbiAgICAgIHNwZWVkLFxuICAgICAgZml0SW5zaWRlQ29udGFpbmVyID0gbnVsbCxcbiAgICAgIHNob3VsZFNldEhlaWdodFRvSW5jcmVhc2UgPSB0cnVlLFxuICAgICAgcGFyYWxsYXhCZWhhdmlvciA9ICdkZXNrdG9wOnRhYmxldDptb2JpbGUnXG4gICAgfSA9IF9yZWY2O1xuXG4gICAgaWYgKGZpdEluc2lkZUNvbnRhaW5lcikge1xuICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKGZpdEluc2lkZUNvbnRhaW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShlbC5jbG9zZXN0KCdzdmcnKSA/IGVsLmNsb3Nlc3QoJ3N2ZycpIDogZWwpO1xuICAgIH1cblxuICAgIHRoaXMuYmxvY2tzLnB1c2goY3JlYXRlQmxvY2soe1xuICAgICAgZWwsXG4gICAgICBzcGVlZCxcbiAgICAgIGZpdEluc2lkZUNvbnRhaW5lcixcbiAgICAgIGlzVmlzaWJsZTogZWxlbWVudEluVmlld3BvcnQoZml0SW5zaWRlQ29udGFpbmVyID8gZml0SW5zaWRlQ29udGFpbmVyIDogZWwpICYmIHBhcmFsbGF4QmVoYXZpb3IuaW5kZXhPZihnZXRDdXJyZW50U2NyZWVuKHtcbiAgICAgICAgd2l0aFRhYmxldDogdHJ1ZVxuICAgICAgfSkpID4gLTEsXG4gICAgICBzaG91bGRTZXRIZWlnaHRUb0luY3JlYXNlLFxuICAgICAgcGFyYWxsYXhCZWhhdmlvclxuICAgIH0pKTtcbiAgfVxuXG4gIHVwZGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMub2xkUG9zWSAmJiB0aGlzLm9sZFBvc1kgIT09IDApIHtcbiAgICAgIHRoaXMuYW5pbWF0ZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNldFBvc2l0aW9uKCkpIHtcbiAgICAgIHRoaXMuYW5pbWF0ZSgpO1xuICAgIH1cblxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHNldFBvc2l0aW9uKCkge1xuICAgIGlmICh0aGlzLmJsb2Nrcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcbiAgICBsZXQgb2xkID0gdGhpcy5vbGRQb3NZO1xuICAgIHRoaXMub2xkUG9zWSA9IHBhZ2VZT2Zmc2V0O1xuICAgIHJldHVybiBvbGQgIT0gcGFnZVlPZmZzZXQ7XG4gIH1cblxuICBhbmltYXRlKCkge1xuICAgIHRoaXMuYmxvY2tzLm1hcChibG9jayA9PiB7XG4gICAgICBpZiAoIWJsb2NrLmlzVmlzaWJsZSkge1xuICAgICAgICBibG9jay5lbC5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHBlcmNlbnRhZ2UgPSAocGFnZVlPZmZzZXQgLSBibG9jay50b3AgKyBpbm5lckhlaWdodCgpKSAvIChibG9jay5oZWlnaHQgKyBpbm5lckhlaWdodCgpKTtcbiAgICAgIGxldCB7XG4gICAgICAgIHRvcCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICB9ID0gbnVsbGlmeVRyYW5zZm9ybXMoYmxvY2suZml0SW5zaWRlQ29udGFpbmVyID8gYmxvY2suZml0SW5zaWRlQ29udGFpbmVyIDogYmxvY2suZWwpO1xuXG4gICAgICBpZiAoIWhlaWdodCkge1xuICAgICAgICBoZWlnaHQgPSAoYmxvY2suZml0SW5zaWRlQ29udGFpbmVyID8gYmxvY2suZml0SW5zaWRlQ29udGFpbmVyIDogYmxvY2suZWwpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3UGVyY2VudGFnZSA9IDEgLSAodG9wICsgKGJsb2NrLmVsLmRhdGFzZXQucGVyY2VudGFnZSAmJiBwYXJzZUludChibG9jay5lbC5kYXRhc2V0LnBlcmNlbnRhZ2UsIDEwKSA9PT0gMCA/IDAgOiBoZWlnaHQgLyAyKSkgLyBpbm5lckhlaWdodCgpOyAvLyBTdWJ0cmFjdGluZyBpbml0aWFsaXplIHZhbHVlLCBzbyBlbGVtZW50IHN0YXlzIGluIHNhbWUgc3BvdCBhcyBIVE1MXG5cbiAgICAgIHZhciBwb3NpdGlvbiA9IHVwZGF0ZVBvc2l0aW9uKGJsb2NrLmZpdEluc2lkZUNvbnRhaW5lciA/IHBlcmNlbnRhZ2UgOiBuZXdQZXJjZW50YWdlLCBibG9jay5zcGVlZCkgLSB1cGRhdGVQb3NpdGlvbihibG9jay5lbC5kYXRhc2V0LnBlcmNlbnRhZ2UgPyBwYXJzZUludChibG9jay5lbC5kYXRhc2V0LnBlcmNlbnRhZ2UsIDEwKSA6IDAuNSwgYmxvY2suc3BlZWQpOyAvLyBNb3ZlIHRoYXQgZWxlbWVudFxuXG4gICAgICBibG9jay5lbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoMCwgJHtwb3NpdGlvbn1weCwgMClgO1xuICAgIH0pO1xuICB9XG5cbn0iLCJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgZW51bWVyYWJsZU9ubHkgJiYgKHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KSksIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gbnVsbCAhPSBhcmd1bWVudHNbaV0gPyBhcmd1bWVudHNbaV0gOiB7fTsgaSAlIDIgPyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKSA6IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgeyBSZWxsYXggfSBmcm9tICcuL3JlbGxheCc7XG5pbXBvcnQgeyBvbkRvY3VtZW50TG9hZGVkIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5leHBvcnQgbGV0IHJlbCA9IG5ldyBSZWxsYXgoKTtcbi8qKlxuICogVE9ETzogbWF5YmUgaW1wbGVtZW50IGNvZGUgc3BsaXR0aW5nIGZvciBwYXJhbGxheCBlbGVtZW50cy5cbiAqIEl0IHdpbGwgc3BlZWQgdGhlIHVwIHRoZSBwcm9jZXNzIGEgbG90LlxuICpcbiAqIE1heWJlIGRvIHRoYXQgYXQgdGhlIGxpYiBsZXZlbC5cbiAqXG4gKiBXZSBjYW4gZ28gYWJvdXQgZXh0cmFjdGluZyB0aGUgYW5pbWF0ZSgpIGZ1bmN0aW9uIGludG8gYSBzZXBhcmF0ZWQgbW9kdWxlLlxuICogVGhpcyBtb2R1bGUgd2lsbCBiZSBzaGFyZWQgYW1vbmcgdGhpcyBhbmQgdGhlIHJlbGxheCBsaWIgY29kZS5cbiAqXG4gKiBUaGF0IHdheSwgd2UgY2FuIGRlZmVyIGV4ZWN1dGlvbiBvZiB0aGUgcmVsbGF4IGxpYi4gQnV0IEkgZ3Vlc3MgdGhlIGNvZGVcbiAqIGluc2lkZSByZWxsYXguanMgaXMgdmVyeSBjb3VwbGVkIGZvciBkb2luZyB0aGF0IHRyaWNrLlxuICovXG5cbmV4cG9ydCBjb25zdCBtb3VudCA9IGVsV2l0aFBhcmFsbGF4ID0+IHtcbiAgLy8gQ29uc2lkZXIgaGVyZSBzdG9yaW5nIHRoZSByZWxsYXggaW5zdGFuY2Ugb250byB0aGUgc2VjdGlvbiBET01cbiAgLy8gZWxlbWVudCBpdHNlbGYuIEFuZCBkbyB0aGF0IGluIGEgbm9uLWxlYWtpbmcgZmFzaGlvbi5cbiAgLy9cbiAgLy8gc2VjdGlvbi5yZWxsYXhJbnN0YW5jZSB3b3VsZCBsZWFrIG1lbW9yeVxuICBpZiAoZWxXaXRoUGFyYWxsYXguY3RIYXNQYXJhbGxheCAmJiBlbFdpdGhQYXJhbGxheC5xdWVyeVNlbGVjdG9yKCdmaWd1cmUgLmN0LWltYWdlLWNvbnRhaW5lciA+IGltZycpKSB7XG4gICAgcmV0dXJuO1xuICAgIC8qXG4gICAgcmVsLnJlbW92ZUVsKHtcbiAgICBcdGVsOiBlbFdpdGhQYXJhbGxheC5xdWVyeVNlbGVjdG9yKFxuICAgIFx0XHQnZmlndXJlIC5jdC1pbWFnZS1jb250YWluZXIgPiBpbWcnXG4gICAgXHQpLFxuICAgIH0pXG4gICAgICAgICAgKi9cbiAgfVxuXG4gIGlmIChlbFdpdGhQYXJhbGxheC5tYXRjaGVzKCdbZGF0YS1wYXJhbGxheF0nKSAmJiAhZWxXaXRoUGFyYWxsYXguZGF0YXNldC5wYXJhbGxheCkge1xuICAgIGVsV2l0aFBhcmFsbGF4LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1wYXJhbGxheCcpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVsV2l0aFBhcmFsbGF4LmN0SGFzUGFyYWxsYXggPSB0cnVlO1xuXG4gIGlmIChlbFdpdGhQYXJhbGxheC5xdWVyeVNlbGVjdG9yKCdmaWd1cmUgLmN0LWltYWdlLWNvbnRhaW5lciA+IGltZycpKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICByZWwuYWRkRWwoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIGVsOiBlbFdpdGhQYXJhbGxheC5xdWVyeVNlbGVjdG9yKCdmaWd1cmUgLmN0LWltYWdlLWNvbnRhaW5lciA+IGltZycpLFxuICAgICAgICAvLyArZWxXaXRoUGFyYWxsYXguZGF0YXNldC5wYXJhbGxheFNwZWVkLFxuICAgICAgICBzcGVlZDogLTUsXG4gICAgICAgIGZpdEluc2lkZUNvbnRhaW5lcjogZWxXaXRoUGFyYWxsYXhcbiAgICAgIH0sIGVsV2l0aFBhcmFsbGF4LmRhdGFzZXQucGFyYWxsYXggPyB7XG4gICAgICAgIHBhcmFsbGF4QmVoYXZpb3I6IGVsV2l0aFBhcmFsbGF4LmRhdGFzZXQucGFyYWxsYXhcbiAgICAgIH0gOiB7fSkpO1xuICAgIH0sIDApO1xuICB9IGVsc2Uge1xuICAgIHJlbC5hZGRFbCh7XG4gICAgICBlbDogZWxXaXRoUGFyYWxsYXgsXG4gICAgICBzcGVlZDogK2VsV2l0aFBhcmFsbGF4LmRhdGFzZXQucGFyYWxsYXgsXG4gICAgICBzaG91bGRTZXRIZWlnaHRUb0luY3JlYXNlOiBmYWxzZVxuICAgIH0pO1xuICB9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///963\n")}}]);