{"mappings":"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","sources":["<anon>","js/components/swiper.js","node_modules/swiper/swiper.mjs","node_modules/swiper/shared/swiper-core.mjs","node_modules/swiper/shared/ssr-window.esm.mjs","node_modules/swiper/shared/utils.mjs","node_modules/swiper/modules/index.mjs","node_modules/swiper/modules/virtual.mjs","node_modules/swiper/modules/keyboard.mjs","node_modules/swiper/modules/mousewheel.mjs","node_modules/swiper/modules/navigation.mjs","node_modules/swiper/shared/create-element-if-not-defined.mjs","node_modules/swiper/modules/pagination.mjs","node_modules/swiper/shared/classes-to-selector.mjs","node_modules/swiper/modules/scrollbar.mjs","node_modules/swiper/modules/parallax.mjs","node_modules/swiper/modules/zoom.mjs","node_modules/swiper/modules/controller.mjs","node_modules/swiper/modules/a11y.mjs","node_modules/swiper/modules/history.mjs","node_modules/swiper/modules/hash-navigation.mjs","node_modules/swiper/modules/autoplay.mjs","node_modules/swiper/modules/thumbs.mjs","node_modules/swiper/modules/free-mode.mjs","node_modules/swiper/modules/grid.mjs","node_modules/swiper/modules/manipulation.mjs","node_modules/swiper/modules/effect-fade.mjs","node_modules/swiper/shared/effect-init.mjs","node_modules/swiper/shared/effect-target.mjs","node_modules/swiper/shared/effect-virtual-transition-end.mjs","node_modules/swiper/modules/effect-cube.mjs","node_modules/swiper/modules/effect-flip.mjs","node_modules/swiper/shared/create-shadow.mjs","node_modules/swiper/modules/effect-coverflow.mjs","node_modules/swiper/modules/effect-creative.mjs","node_modules/swiper/modules/effect-cards.mjs"],"sourcesContent":["(() => {\n/**\n * Swiper 11.1.8\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: July 26, 2024\n */ /**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */ /* eslint-disable no-param-reassign */ function $768c2f4c151a0363$var$isObject(obj) {\n    return obj !== null && typeof obj === \"object\" && \"constructor\" in obj && obj.constructor === Object;\n}\nfunction $768c2f4c151a0363$var$extend(target, src) {\n    if (target === void 0) target = {};\n    if (src === void 0) src = {};\n    Object.keys(src).forEach((key)=>{\n        if (typeof target[key] === \"undefined\") target[key] = src[key];\n        else if ($768c2f4c151a0363$var$isObject(src[key]) && $768c2f4c151a0363$var$isObject(target[key]) && Object.keys(src[key]).length > 0) $768c2f4c151a0363$var$extend(target[key], src[key]);\n    });\n}\nconst $768c2f4c151a0363$var$ssrDocument = {\n    body: {},\n    addEventListener () {},\n    removeEventListener () {},\n    activeElement: {\n        blur () {},\n        nodeName: \"\"\n    },\n    querySelector () {\n        return null;\n    },\n    querySelectorAll () {\n        return [];\n    },\n    getElementById () {\n        return null;\n    },\n    createEvent () {\n        return {\n            initEvent () {}\n        };\n    },\n    createElement () {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute () {},\n            getElementsByTagName () {\n                return [];\n            }\n        };\n    },\n    createElementNS () {\n        return {};\n    },\n    importNode () {\n        return null;\n    },\n    location: {\n        hash: \"\",\n        host: \"\",\n        hostname: \"\",\n        href: \"\",\n        origin: \"\",\n        pathname: \"\",\n        protocol: \"\",\n        search: \"\"\n    }\n};\nfunction $768c2f4c151a0363$export$39b482c5e57630a8() {\n    const doc = typeof document !== \"undefined\" ? document : {};\n    $768c2f4c151a0363$var$extend(doc, $768c2f4c151a0363$var$ssrDocument);\n    return doc;\n}\nconst $768c2f4c151a0363$var$ssrWindow = {\n    document: $768c2f4c151a0363$var$ssrDocument,\n    navigator: {\n        userAgent: \"\"\n    },\n    location: {\n        hash: \"\",\n        host: \"\",\n        hostname: \"\",\n        href: \"\",\n        origin: \"\",\n        pathname: \"\",\n        protocol: \"\",\n        search: \"\"\n    },\n    history: {\n        replaceState () {},\n        pushState () {},\n        go () {},\n        back () {}\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener () {},\n    removeEventListener () {},\n    getComputedStyle () {\n        return {\n            getPropertyValue () {\n                return \"\";\n            }\n        };\n    },\n    Image () {},\n    Date () {},\n    screen: {},\n    setTimeout () {},\n    clearTimeout () {},\n    matchMedia () {\n        return {};\n    },\n    requestAnimationFrame (callback) {\n        if (typeof setTimeout === \"undefined\") {\n            callback();\n            return null;\n        }\n        return setTimeout(callback, 0);\n    },\n    cancelAnimationFrame (id) {\n        if (typeof setTimeout === \"undefined\") return;\n        clearTimeout(id);\n    }\n};\nfunction $768c2f4c151a0363$export$407448d2b89b1813() {\n    const win = typeof window !== \"undefined\" ? window : {};\n    $768c2f4c151a0363$var$extend(win, $768c2f4c151a0363$var$ssrWindow);\n    return win;\n}\n\n\n\nfunction $3e0e2b092da8f124$export$23f2a1d2818174ef(classes) {\n    if (classes === void 0) classes = \"\";\n    return classes.trim().split(\" \").filter((c)=>!!c.trim());\n}\nfunction $3e0e2b092da8f124$export$d141bba7fdc215a3(obj) {\n    const object = obj;\n    Object.keys(object).forEach((key)=>{\n        try {\n            object[key] = null;\n        } catch (e) {\n        // no getter for object\n        }\n        try {\n            delete object[key];\n        } catch (e) {\n        // something got wrong\n        }\n    });\n}\nfunction $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5(callback, delay) {\n    if (delay === void 0) delay = 0;\n    return setTimeout(callback, delay);\n}\nfunction $3e0e2b092da8f124$export$4368d992c4eafac0() {\n    return Date.now();\n}\nfunction $3e0e2b092da8f124$var$getComputedStyle(el) {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    let style;\n    if (window1.getComputedStyle) style = window1.getComputedStyle(el, null);\n    if (!style && el.currentStyle) style = el.currentStyle;\n    if (!style) style = el.style;\n    return style;\n}\nfunction $3e0e2b092da8f124$export$35e795649ee09318(el, axis) {\n    if (axis === void 0) axis = \"x\";\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    let matrix;\n    let curTransform;\n    let transformMatrix;\n    const curStyle = $3e0e2b092da8f124$var$getComputedStyle(el);\n    if (window1.WebKitCSSMatrix) {\n        curTransform = curStyle.transform || curStyle.webkitTransform;\n        if (curTransform.split(\",\").length > 6) curTransform = curTransform.split(\", \").map((a)=>a.replace(\",\", \".\")).join(\", \");\n        // Some old versions of Webkit choke when 'none' is passed; pass\n        // empty string instead in this case\n        transformMatrix = new window1.WebKitCSSMatrix(curTransform === \"none\" ? \"\" : curTransform);\n    } else {\n        transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue(\"transform\").replace(\"translate(\", \"matrix(1, 0, 0, 1,\");\n        matrix = transformMatrix.toString().split(\",\");\n    }\n    if (axis === \"x\") {\n        // Latest Chrome and webkits Fix\n        if (window1.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n        else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n        else curTransform = parseFloat(matrix[4]);\n    }\n    if (axis === \"y\") {\n        // Latest Chrome and webkits Fix\n        if (window1.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n        else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n        else curTransform = parseFloat(matrix[5]);\n    }\n    return curTransform || 0;\n}\nfunction $3e0e2b092da8f124$export$882b5998b3b9117c(o) {\n    return typeof o === \"object\" && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === \"Object\";\n}\nfunction $3e0e2b092da8f124$var$isNode(node) {\n    // eslint-disable-next-line\n    if (typeof window !== \"undefined\" && typeof window.HTMLElement !== \"undefined\") return node instanceof HTMLElement;\n    return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction $3e0e2b092da8f124$export$efccba1c4a2ef57b() {\n    const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n    const noExtend = [\n        \"__proto__\",\n        \"constructor\",\n        \"prototype\"\n    ];\n    for(let i = 1; i < arguments.length; i += 1){\n        const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n        if (nextSource !== undefined && nextSource !== null && !$3e0e2b092da8f124$var$isNode(nextSource)) {\n            const keysArray = Object.keys(Object(nextSource)).filter((key)=>noExtend.indexOf(key) < 0);\n            for(let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1){\n                const nextKey = keysArray[nextIndex];\n                const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n                if (desc !== undefined && desc.enumerable) {\n                    if ($3e0e2b092da8f124$export$882b5998b3b9117c(to[nextKey]) && $3e0e2b092da8f124$export$882b5998b3b9117c(nextSource[nextKey])) {\n                        if (nextSource[nextKey].__swiper__) to[nextKey] = nextSource[nextKey];\n                        else $3e0e2b092da8f124$export$efccba1c4a2ef57b(to[nextKey], nextSource[nextKey]);\n                    } else if (!$3e0e2b092da8f124$export$882b5998b3b9117c(to[nextKey]) && $3e0e2b092da8f124$export$882b5998b3b9117c(nextSource[nextKey])) {\n                        to[nextKey] = {};\n                        if (nextSource[nextKey].__swiper__) to[nextKey] = nextSource[nextKey];\n                        else $3e0e2b092da8f124$export$efccba1c4a2ef57b(to[nextKey], nextSource[nextKey]);\n                    } else to[nextKey] = nextSource[nextKey];\n                }\n            }\n        }\n    }\n    return to;\n}\nfunction $3e0e2b092da8f124$export$2408f22a0fab9ae5(el, varName, varValue) {\n    el.style.setProperty(varName, varValue);\n}\nfunction $3e0e2b092da8f124$export$625550452a3fa3ec(_ref) {\n    let { swiper: swiper, targetPosition: targetPosition, side: side } = _ref;\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const startPosition = -swiper.translate;\n    let startTime = null;\n    let time;\n    const duration = swiper.params.speed;\n    swiper.wrapperEl.style.scrollSnapType = \"none\";\n    window1.cancelAnimationFrame(swiper.cssModeFrameID);\n    const dir = targetPosition > startPosition ? \"next\" : \"prev\";\n    const isOutOfBound = (current, target)=>{\n        return dir === \"next\" && current >= target || dir === \"prev\" && current <= target;\n    };\n    const animate = ()=>{\n        time = new Date().getTime();\n        if (startTime === null) startTime = time;\n        const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n        const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n        let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n        if (isOutOfBound(currentPosition, targetPosition)) currentPosition = targetPosition;\n        swiper.wrapperEl.scrollTo({\n            [side]: currentPosition\n        });\n        if (isOutOfBound(currentPosition, targetPosition)) {\n            swiper.wrapperEl.style.overflow = \"hidden\";\n            swiper.wrapperEl.style.scrollSnapType = \"\";\n            setTimeout(()=>{\n                swiper.wrapperEl.style.overflow = \"\";\n                swiper.wrapperEl.scrollTo({\n                    [side]: currentPosition\n                });\n            });\n            window1.cancelAnimationFrame(swiper.cssModeFrameID);\n            return;\n        }\n        swiper.cssModeFrameID = window1.requestAnimationFrame(animate);\n    };\n    animate();\n}\nfunction $3e0e2b092da8f124$export$39b482c5e57630a8(slideEl) {\n    return slideEl.querySelector(\".swiper-slide-transform\") || slideEl.shadowRoot && slideEl.shadowRoot.querySelector(\".swiper-slide-transform\") || slideEl;\n}\nfunction $3e0e2b092da8f124$export$f1e1789686576879(element, selector) {\n    if (selector === void 0) selector = \"\";\n    const children = [\n        ...element.children\n    ];\n    if (element instanceof HTMLSlotElement) children.push(...element.assignedElements());\n    if (!selector) return children;\n    return children.filter((el)=>el.matches(selector));\n}\nfunction $3e0e2b092da8f124$export$90a7f3efeed30595(el, parent) {\n    const isChild = parent.contains(el);\n    if (!isChild && parent instanceof HTMLSlotElement) {\n        const children = [\n            ...parent.assignedElements()\n        ];\n        return children.includes(el);\n    }\n    return isChild;\n}\nfunction $3e0e2b092da8f124$export$3b14a55fb2447963(text) {\n    try {\n        console.warn(text);\n        return;\n    } catch (err) {\n    // err\n    }\n}\nfunction $3e0e2b092da8f124$export$db3b6bfb95261072(tag, classes) {\n    if (classes === void 0) classes = [];\n    const el = document.createElement(tag);\n    el.classList.add(...Array.isArray(classes) ? classes : $3e0e2b092da8f124$export$23f2a1d2818174ef(classes));\n    return el;\n}\nfunction $3e0e2b092da8f124$export$8b22cf2602fb60ce(el) {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const box = el.getBoundingClientRect();\n    const body = document1.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window1 ? window1.scrollY : el.scrollTop;\n    const scrollLeft = el === window1 ? window1.scrollX : el.scrollLeft;\n    return {\n        top: box.top + scrollTop - clientTop,\n        left: box.left + scrollLeft - clientLeft\n    };\n}\nfunction $3e0e2b092da8f124$export$43caf9889c228507(el, selector) {\n    const prevEls = [];\n    while(el.previousElementSibling){\n        const prev = el.previousElementSibling; // eslint-disable-line\n        if (selector) {\n            if (prev.matches(selector)) prevEls.push(prev);\n        } else prevEls.push(prev);\n        el = prev;\n    }\n    return prevEls;\n}\nfunction $3e0e2b092da8f124$export$9e5f44173e64f162(el, selector) {\n    const nextEls = [];\n    while(el.nextElementSibling){\n        const next = el.nextElementSibling; // eslint-disable-line\n        if (selector) {\n            if (next.matches(selector)) nextEls.push(next);\n        } else nextEls.push(next);\n        el = next;\n    }\n    return nextEls;\n}\nfunction $3e0e2b092da8f124$export$ffb5f4729a158638(el, prop) {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    return window1.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction $3e0e2b092da8f124$export$dda1d9f60106f0e9(el) {\n    let child = el;\n    let i;\n    if (child) {\n        i = 0;\n        // eslint-disable-next-line\n        while((child = child.previousSibling) !== null)if (child.nodeType === 1) i += 1;\n        return i;\n    }\n    return undefined;\n}\nfunction $3e0e2b092da8f124$export$407448d2b89b1813(el, selector) {\n    const parents = []; // eslint-disable-line\n    let parent = el.parentElement; // eslint-disable-line\n    while(parent){\n        if (selector) {\n            if (parent.matches(selector)) parents.push(parent);\n        } else parents.push(parent);\n        parent = parent.parentElement;\n    }\n    return parents;\n}\nfunction $3e0e2b092da8f124$export$342063e11d6c3cad(el, callback) {\n    function fireCallBack(e) {\n        if (e.target !== el) return;\n        callback.call(el, e);\n        el.removeEventListener(\"transitionend\", fireCallBack);\n    }\n    if (callback) el.addEventListener(\"transitionend\", fireCallBack);\n}\nfunction $3e0e2b092da8f124$export$2d1720544b23b823(el, size, includeMargins) {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    if (includeMargins) return el[size === \"width\" ? \"offsetWidth\" : \"offsetHeight\"] + parseFloat(window1.getComputedStyle(el, null).getPropertyValue(size === \"width\" ? \"margin-right\" : \"margin-top\")) + parseFloat(window1.getComputedStyle(el, null).getPropertyValue(size === \"width\" ? \"margin-left\" : \"margin-bottom\"));\n    return el.offsetWidth;\n}\nfunction $3e0e2b092da8f124$export$953cecd6e717a553(el) {\n    return (Array.isArray(el) ? el : [\n        el\n    ]).filter((e)=>!!e);\n}\nfunction $3e0e2b092da8f124$export$ae1af26003f05816(swiper) {\n    return (v)=>{\n        if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) return v + 0.001;\n        return v;\n    };\n}\n\n\nlet $6946bfb4689eabba$var$support;\nfunction $6946bfb4689eabba$var$calcSupport() {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    return {\n        smoothScroll: document1.documentElement && document1.documentElement.style && \"scrollBehavior\" in document1.documentElement.style,\n        touch: !!(\"ontouchstart\" in window1 || window1.DocumentTouch && document1 instanceof window1.DocumentTouch)\n    };\n}\nfunction $6946bfb4689eabba$var$getSupport() {\n    if (!$6946bfb4689eabba$var$support) $6946bfb4689eabba$var$support = $6946bfb4689eabba$var$calcSupport();\n    return $6946bfb4689eabba$var$support;\n}\nlet $6946bfb4689eabba$var$deviceCached;\nfunction $6946bfb4689eabba$var$calcDevice(_temp) {\n    let { userAgent: userAgent } = _temp === void 0 ? {} : _temp;\n    const support = $6946bfb4689eabba$var$getSupport();\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const platform = window1.navigator.platform;\n    const ua = userAgent || window1.navigator.userAgent;\n    const device = {\n        ios: false,\n        android: false\n    };\n    const screenWidth = window1.screen.width;\n    const screenHeight = window1.screen.height;\n    const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n    let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n    const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n    const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n    const windows = platform === \"Win32\";\n    let macos = platform === \"MacIntel\";\n    // iPadOs 13 fix\n    const iPadScreens = [\n        \"1024x1366\",\n        \"1366x1024\",\n        \"834x1194\",\n        \"1194x834\",\n        \"834x1112\",\n        \"1112x834\",\n        \"768x1024\",\n        \"1024x768\",\n        \"820x1180\",\n        \"1180x820\",\n        \"810x1080\",\n        \"1080x810\"\n    ];\n    if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n        ipad = ua.match(/(Version)\\/([\\d.]+)/);\n        if (!ipad) ipad = [\n            0,\n            1,\n            \"13_0_0\"\n        ];\n        macos = false;\n    }\n    // Android\n    if (android && !windows) {\n        device.os = \"android\";\n        device.android = true;\n    }\n    if (ipad || iphone || ipod) {\n        device.os = \"ios\";\n        device.ios = true;\n    }\n    // Export object\n    return device;\n}\nfunction $6946bfb4689eabba$var$getDevice(overrides) {\n    if (overrides === void 0) overrides = {};\n    if (!$6946bfb4689eabba$var$deviceCached) $6946bfb4689eabba$var$deviceCached = $6946bfb4689eabba$var$calcDevice(overrides);\n    return $6946bfb4689eabba$var$deviceCached;\n}\nlet $6946bfb4689eabba$var$browser;\nfunction $6946bfb4689eabba$var$calcBrowser() {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const device = $6946bfb4689eabba$var$getDevice();\n    let needPerspectiveFix = false;\n    function isSafari() {\n        const ua = window1.navigator.userAgent.toLowerCase();\n        return ua.indexOf(\"safari\") >= 0 && ua.indexOf(\"chrome\") < 0 && ua.indexOf(\"android\") < 0;\n    }\n    if (isSafari()) {\n        const ua = String(window1.navigator.userAgent);\n        if (ua.includes(\"Version/\")) {\n            const [major, minor] = ua.split(\"Version/\")[1].split(\" \")[0].split(\".\").map((num)=>Number(num));\n            needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n        }\n    }\n    const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window1.navigator.userAgent);\n    const isSafariBrowser = isSafari();\n    const need3dFix = isSafariBrowser || isWebView && device.ios;\n    return {\n        isSafari: needPerspectiveFix || isSafariBrowser,\n        needPerspectiveFix: needPerspectiveFix,\n        need3dFix: need3dFix,\n        isWebView: isWebView\n    };\n}\nfunction $6946bfb4689eabba$var$getBrowser() {\n    if (!$6946bfb4689eabba$var$browser) $6946bfb4689eabba$var$browser = $6946bfb4689eabba$var$calcBrowser();\n    return $6946bfb4689eabba$var$browser;\n}\nfunction $6946bfb4689eabba$var$Resize(_ref) {\n    let { swiper: swiper, on: on, emit: emit } = _ref;\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    let observer = null;\n    let animationFrame = null;\n    const resizeHandler = ()=>{\n        if (!swiper || swiper.destroyed || !swiper.initialized) return;\n        emit(\"beforeResize\");\n        emit(\"resize\");\n    };\n    const createObserver = ()=>{\n        if (!swiper || swiper.destroyed || !swiper.initialized) return;\n        observer = new ResizeObserver((entries)=>{\n            animationFrame = window1.requestAnimationFrame(()=>{\n                const { width: width, height: height } = swiper;\n                let newWidth = width;\n                let newHeight = height;\n                entries.forEach((_ref2)=>{\n                    let { contentBoxSize: contentBoxSize, contentRect: contentRect, target: target } = _ref2;\n                    if (target && target !== swiper.el) return;\n                    newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n                    newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n                });\n                if (newWidth !== width || newHeight !== height) resizeHandler();\n            });\n        });\n        observer.observe(swiper.el);\n    };\n    const removeObserver = ()=>{\n        if (animationFrame) window1.cancelAnimationFrame(animationFrame);\n        if (observer && observer.unobserve && swiper.el) {\n            observer.unobserve(swiper.el);\n            observer = null;\n        }\n    };\n    const orientationChangeHandler = ()=>{\n        if (!swiper || swiper.destroyed || !swiper.initialized) return;\n        emit(\"orientationchange\");\n    };\n    on(\"init\", ()=>{\n        if (swiper.params.resizeObserver && typeof window1.ResizeObserver !== \"undefined\") {\n            createObserver();\n            return;\n        }\n        window1.addEventListener(\"resize\", resizeHandler);\n        window1.addEventListener(\"orientationchange\", orientationChangeHandler);\n    });\n    on(\"destroy\", ()=>{\n        removeObserver();\n        window1.removeEventListener(\"resize\", resizeHandler);\n        window1.removeEventListener(\"orientationchange\", orientationChangeHandler);\n    });\n}\nfunction $6946bfb4689eabba$var$Observer(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const observers = [];\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const attach = function(target, options) {\n        if (options === void 0) options = {};\n        const ObserverFunc = window1.MutationObserver || window1.WebkitMutationObserver;\n        const observer = new ObserverFunc((mutations)=>{\n            // The observerUpdate event should only be triggered\n            // once despite the number of mutations.  Additional\n            // triggers are redundant and are very costly\n            if (swiper.__preventObserver__) return;\n            if (mutations.length === 1) {\n                emit(\"observerUpdate\", mutations[0]);\n                return;\n            }\n            const observerUpdate = function observerUpdate() {\n                emit(\"observerUpdate\", mutations[0]);\n            };\n            if (window1.requestAnimationFrame) window1.requestAnimationFrame(observerUpdate);\n            else window1.setTimeout(observerUpdate, 0);\n        });\n        observer.observe(target, {\n            attributes: typeof options.attributes === \"undefined\" ? true : options.attributes,\n            childList: swiper.isElement || (typeof options.childList === \"undefined\" ? true : options).childList,\n            characterData: typeof options.characterData === \"undefined\" ? true : options.characterData\n        });\n        observers.push(observer);\n    };\n    const init = ()=>{\n        if (!swiper.params.observer) return;\n        if (swiper.params.observeParents) {\n            const containerParents = (0, $3e0e2b092da8f124$export$407448d2b89b1813)(swiper.hostEl);\n            for(let i = 0; i < containerParents.length; i += 1)attach(containerParents[i]);\n        }\n        // Observe container\n        attach(swiper.hostEl, {\n            childList: swiper.params.observeSlideChildren\n        });\n        // Observe wrapper\n        attach(swiper.wrapperEl, {\n            attributes: false\n        });\n    };\n    const destroy = ()=>{\n        observers.forEach((observer)=>{\n            observer.disconnect();\n        });\n        observers.splice(0, observers.length);\n    };\n    extendParams({\n        observer: false,\n        observeParents: false,\n        observeSlideChildren: false\n    });\n    on(\"init\", init);\n    on(\"destroy\", destroy);\n}\n/* eslint-disable no-underscore-dangle */ var $6946bfb4689eabba$var$eventsEmitter = {\n    on (events, handler, priority) {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (typeof handler !== \"function\") return self;\n        const method = priority ? \"unshift\" : \"push\";\n        events.split(\" \").forEach((event)=>{\n            if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n            self.eventsListeners[event][method](handler);\n        });\n        return self;\n    },\n    once (events, handler, priority) {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (typeof handler !== \"function\") return self;\n        function onceHandler() {\n            self.off(events, onceHandler);\n            if (onceHandler.__emitterProxy) delete onceHandler.__emitterProxy;\n            for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n            handler.apply(self, args);\n        }\n        onceHandler.__emitterProxy = handler;\n        return self.on(events, onceHandler, priority);\n    },\n    onAny (handler, priority) {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (typeof handler !== \"function\") return self;\n        const method = priority ? \"unshift\" : \"push\";\n        if (self.eventsAnyListeners.indexOf(handler) < 0) self.eventsAnyListeners[method](handler);\n        return self;\n    },\n    offAny (handler) {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (!self.eventsAnyListeners) return self;\n        const index = self.eventsAnyListeners.indexOf(handler);\n        if (index >= 0) self.eventsAnyListeners.splice(index, 1);\n        return self;\n    },\n    off (events, handler) {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (!self.eventsListeners) return self;\n        events.split(\" \").forEach((event)=>{\n            if (typeof handler === \"undefined\") self.eventsListeners[event] = [];\n            else if (self.eventsListeners[event]) self.eventsListeners[event].forEach((eventHandler, index)=>{\n                if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) self.eventsListeners[event].splice(index, 1);\n            });\n        });\n        return self;\n    },\n    emit () {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (!self.eventsListeners) return self;\n        let events;\n        let data;\n        let context;\n        for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)args[_key2] = arguments[_key2];\n        if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n            events = args[0];\n            data = args.slice(1, args.length);\n            context = self;\n        } else {\n            events = args[0].events;\n            data = args[0].data;\n            context = args[0].context || self;\n        }\n        data.unshift(context);\n        const eventsArray = Array.isArray(events) ? events : events.split(\" \");\n        eventsArray.forEach((event)=>{\n            if (self.eventsAnyListeners && self.eventsAnyListeners.length) self.eventsAnyListeners.forEach((eventHandler)=>{\n                eventHandler.apply(context, [\n                    event,\n                    ...data\n                ]);\n            });\n            if (self.eventsListeners && self.eventsListeners[event]) self.eventsListeners[event].forEach((eventHandler)=>{\n                eventHandler.apply(context, data);\n            });\n        });\n        return self;\n    }\n};\nfunction $6946bfb4689eabba$var$updateSize() {\n    const swiper = this;\n    let width;\n    let height;\n    const el = swiper.el;\n    if (typeof swiper.params.width !== \"undefined\" && swiper.params.width !== null) width = swiper.params.width;\n    else width = el.clientWidth;\n    if (typeof swiper.params.height !== \"undefined\" && swiper.params.height !== null) height = swiper.params.height;\n    else height = el.clientHeight;\n    if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) return;\n    // Subtract paddings\n    width = width - parseInt((0, $3e0e2b092da8f124$export$ffb5f4729a158638)(el, \"padding-left\") || 0, 10) - parseInt((0, $3e0e2b092da8f124$export$ffb5f4729a158638)(el, \"padding-right\") || 0, 10);\n    height = height - parseInt((0, $3e0e2b092da8f124$export$ffb5f4729a158638)(el, \"padding-top\") || 0, 10) - parseInt((0, $3e0e2b092da8f124$export$ffb5f4729a158638)(el, \"padding-bottom\") || 0, 10);\n    if (Number.isNaN(width)) width = 0;\n    if (Number.isNaN(height)) height = 0;\n    Object.assign(swiper, {\n        width: width,\n        height: height,\n        size: swiper.isHorizontal() ? width : height\n    });\n}\nfunction $6946bfb4689eabba$var$updateSlides() {\n    const swiper = this;\n    function getDirectionPropertyValue(node, label) {\n        return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n    }\n    const params = swiper.params;\n    const { wrapperEl: wrapperEl, slidesEl: slidesEl, size: swiperSize, rtlTranslate: rtl, wrongRTL: wrongRTL } = swiper;\n    const isVirtual = swiper.virtual && params.virtual.enabled;\n    const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n    const slides = (0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n    const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n    let snapGrid = [];\n    const slidesGrid = [];\n    const slidesSizesGrid = [];\n    let offsetBefore = params.slidesOffsetBefore;\n    if (typeof offsetBefore === \"function\") offsetBefore = params.slidesOffsetBefore.call(swiper);\n    let offsetAfter = params.slidesOffsetAfter;\n    if (typeof offsetAfter === \"function\") offsetAfter = params.slidesOffsetAfter.call(swiper);\n    const previousSnapGridLength = swiper.snapGrid.length;\n    const previousSlidesGridLength = swiper.slidesGrid.length;\n    let spaceBetween = params.spaceBetween;\n    let slidePosition = -offsetBefore;\n    let prevSlideSize = 0;\n    let index = 0;\n    if (typeof swiperSize === \"undefined\") return;\n    if (typeof spaceBetween === \"string\" && spaceBetween.indexOf(\"%\") >= 0) spaceBetween = parseFloat(spaceBetween.replace(\"%\", \"\")) / 100 * swiperSize;\n    else if (typeof spaceBetween === \"string\") spaceBetween = parseFloat(spaceBetween);\n    swiper.virtualSize = -spaceBetween;\n    // reset margins\n    slides.forEach((slideEl)=>{\n        if (rtl) slideEl.style.marginLeft = \"\";\n        else slideEl.style.marginRight = \"\";\n        slideEl.style.marginBottom = \"\";\n        slideEl.style.marginTop = \"\";\n    });\n    // reset cssMode offsets\n    if (params.centeredSlides && params.cssMode) {\n        (0, $3e0e2b092da8f124$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-before\", \"\");\n        (0, $3e0e2b092da8f124$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-after\", \"\");\n    }\n    const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n    if (gridEnabled) swiper.grid.initSlides(slides);\n    else if (swiper.grid) swiper.grid.unsetSlides();\n    // Calc slides\n    let slideSize;\n    const shouldResetSlideSize = params.slidesPerView === \"auto\" && params.breakpoints && Object.keys(params.breakpoints).filter((key)=>{\n        return typeof params.breakpoints[key].slidesPerView !== \"undefined\";\n    }).length > 0;\n    for(let i = 0; i < slidesLength; i += 1){\n        slideSize = 0;\n        let slide;\n        if (slides[i]) slide = slides[i];\n        if (gridEnabled) swiper.grid.updateSlide(i, slide, slides);\n        if (slides[i] && (0, $3e0e2b092da8f124$export$ffb5f4729a158638)(slide, \"display\") === \"none\") continue; // eslint-disable-line\n        if (params.slidesPerView === \"auto\") {\n            if (shouldResetSlideSize) slides[i].style[swiper.getDirectionLabel(\"width\")] = ``;\n            const slideStyles = getComputedStyle(slide);\n            const currentTransform = slide.style.transform;\n            const currentWebKitTransform = slide.style.webkitTransform;\n            if (currentTransform) slide.style.transform = \"none\";\n            if (currentWebKitTransform) slide.style.webkitTransform = \"none\";\n            if (params.roundLengths) slideSize = swiper.isHorizontal() ? (0, $3e0e2b092da8f124$export$2d1720544b23b823)(slide, \"width\", true) : (0, $3e0e2b092da8f124$export$2d1720544b23b823)(slide, \"height\", true);\n            else {\n                // eslint-disable-next-line\n                const width = getDirectionPropertyValue(slideStyles, \"width\");\n                const paddingLeft = getDirectionPropertyValue(slideStyles, \"padding-left\");\n                const paddingRight = getDirectionPropertyValue(slideStyles, \"padding-right\");\n                const marginLeft = getDirectionPropertyValue(slideStyles, \"margin-left\");\n                const marginRight = getDirectionPropertyValue(slideStyles, \"margin-right\");\n                const boxSizing = slideStyles.getPropertyValue(\"box-sizing\");\n                if (boxSizing && boxSizing === \"border-box\") slideSize = width + marginLeft + marginRight;\n                else {\n                    const { clientWidth: clientWidth, offsetWidth: offsetWidth } = slide;\n                    slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n                }\n            }\n            if (currentTransform) slide.style.transform = currentTransform;\n            if (currentWebKitTransform) slide.style.webkitTransform = currentWebKitTransform;\n            if (params.roundLengths) slideSize = Math.floor(slideSize);\n        } else {\n            slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n            if (params.roundLengths) slideSize = Math.floor(slideSize);\n            if (slides[i]) slides[i].style[swiper.getDirectionLabel(\"width\")] = `${slideSize}px`;\n        }\n        if (slides[i]) slides[i].swiperSlideSize = slideSize;\n        slidesSizesGrid.push(slideSize);\n        if (params.centeredSlides) {\n            slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n            if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n            if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n            if (Math.abs(slidePosition) < 0.001) slidePosition = 0;\n            if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n            if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n            slidesGrid.push(slidePosition);\n        } else {\n            if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n            if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n            slidesGrid.push(slidePosition);\n            slidePosition = slidePosition + slideSize + spaceBetween;\n        }\n        swiper.virtualSize += slideSize + spaceBetween;\n        prevSlideSize = slideSize;\n        index += 1;\n    }\n    swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n    if (rtl && wrongRTL && (params.effect === \"slide\" || params.effect === \"coverflow\")) wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n    if (params.setWrapperSize) wrapperEl.style[swiper.getDirectionLabel(\"width\")] = `${swiper.virtualSize + spaceBetween}px`;\n    if (gridEnabled) swiper.grid.updateWrapperSize(slideSize, snapGrid);\n    // Remove last grid elements depending on width\n    if (!params.centeredSlides) {\n        const newSlidesGrid = [];\n        for(let i = 0; i < snapGrid.length; i += 1){\n            let slidesGridItem = snapGrid[i];\n            if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n            if (snapGrid[i] <= swiper.virtualSize - swiperSize) newSlidesGrid.push(slidesGridItem);\n        }\n        snapGrid = newSlidesGrid;\n        if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n    if (isVirtual && params.loop) {\n        const size = slidesSizesGrid[0] + spaceBetween;\n        if (params.slidesPerGroup > 1) {\n            const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n            const groupSize = size * params.slidesPerGroup;\n            for(let i = 0; i < groups; i += 1)snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n        }\n        for(let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1){\n            if (params.slidesPerGroup === 1) snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n            slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n            swiper.virtualSize += size;\n        }\n    }\n    if (snapGrid.length === 0) snapGrid = [\n        0\n    ];\n    if (spaceBetween !== 0) {\n        const key = swiper.isHorizontal() && rtl ? \"marginLeft\" : swiper.getDirectionLabel(\"marginRight\");\n        slides.filter((_, slideIndex)=>{\n            if (!params.cssMode || params.loop) return true;\n            if (slideIndex === slides.length - 1) return false;\n            return true;\n        }).forEach((slideEl)=>{\n            slideEl.style[key] = `${spaceBetween}px`;\n        });\n    }\n    if (params.centeredSlides && params.centeredSlidesBounds) {\n        let allSlidesSize = 0;\n        slidesSizesGrid.forEach((slideSizeValue)=>{\n            allSlidesSize += slideSizeValue + (spaceBetween || 0);\n        });\n        allSlidesSize -= spaceBetween;\n        const maxSnap = allSlidesSize - swiperSize;\n        snapGrid = snapGrid.map((snap)=>{\n            if (snap <= 0) return -offsetBefore;\n            if (snap > maxSnap) return maxSnap + offsetAfter;\n            return snap;\n        });\n    }\n    if (params.centerInsufficientSlides) {\n        let allSlidesSize = 0;\n        slidesSizesGrid.forEach((slideSizeValue)=>{\n            allSlidesSize += slideSizeValue + (spaceBetween || 0);\n        });\n        allSlidesSize -= spaceBetween;\n        const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n        if (allSlidesSize + offsetSize < swiperSize) {\n            const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n            snapGrid.forEach((snap, snapIndex)=>{\n                snapGrid[snapIndex] = snap - allSlidesOffset;\n            });\n            slidesGrid.forEach((snap, snapIndex)=>{\n                slidesGrid[snapIndex] = snap + allSlidesOffset;\n            });\n        }\n    }\n    Object.assign(swiper, {\n        slides: slides,\n        snapGrid: snapGrid,\n        slidesGrid: slidesGrid,\n        slidesSizesGrid: slidesSizesGrid\n    });\n    if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n        (0, $3e0e2b092da8f124$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-before\", `${-snapGrid[0]}px`);\n        (0, $3e0e2b092da8f124$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-after\", `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n        const addToSnapGrid = -swiper.snapGrid[0];\n        const addToSlidesGrid = -swiper.slidesGrid[0];\n        swiper.snapGrid = swiper.snapGrid.map((v)=>v + addToSnapGrid);\n        swiper.slidesGrid = swiper.slidesGrid.map((v)=>v + addToSlidesGrid);\n    }\n    if (slidesLength !== previousSlidesLength) swiper.emit(\"slidesLengthChange\");\n    if (snapGrid.length !== previousSnapGridLength) {\n        if (swiper.params.watchOverflow) swiper.checkOverflow();\n        swiper.emit(\"snapGridLengthChange\");\n    }\n    if (slidesGrid.length !== previousSlidesGridLength) swiper.emit(\"slidesGridLengthChange\");\n    if (params.watchSlidesProgress) swiper.updateSlidesOffset();\n    swiper.emit(\"slidesUpdated\");\n    if (!isVirtual && !params.cssMode && (params.effect === \"slide\" || params.effect === \"fade\")) {\n        const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n        const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n        if (slidesLength <= params.maxBackfaceHiddenSlides) {\n            if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n        } else if (hasClassBackfaceClassAdded) swiper.el.classList.remove(backFaceHiddenClass);\n    }\n}\nfunction $6946bfb4689eabba$var$updateAutoHeight(speed) {\n    const swiper = this;\n    const activeSlides = [];\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let newHeight = 0;\n    let i;\n    if (typeof speed === \"number\") swiper.setTransition(speed);\n    else if (speed === true) swiper.setTransition(swiper.params.speed);\n    const getSlideByIndex = (index)=>{\n        if (isVirtual) return swiper.slides[swiper.getSlideIndexByData(index)];\n        return swiper.slides[index];\n    };\n    // Find slides currently in view\n    if (swiper.params.slidesPerView !== \"auto\" && swiper.params.slidesPerView > 1) {\n        if (swiper.params.centeredSlides) (swiper.visibleSlides || []).forEach((slide)=>{\n            activeSlides.push(slide);\n        });\n        else for(i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1){\n            const index = swiper.activeIndex + i;\n            if (index > swiper.slides.length && !isVirtual) break;\n            activeSlides.push(getSlideByIndex(index));\n        }\n    } else activeSlides.push(getSlideByIndex(swiper.activeIndex));\n    // Find new height from highest slide in view\n    for(i = 0; i < activeSlides.length; i += 1)if (typeof activeSlides[i] !== \"undefined\") {\n        const height = activeSlides[i].offsetHeight;\n        newHeight = height > newHeight ? height : newHeight;\n    }\n    // Update Height\n    if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\nfunction $6946bfb4689eabba$var$updateSlidesOffset() {\n    const swiper = this;\n    const slides = swiper.slides;\n    // eslint-disable-next-line\n    const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n    for(let i = 0; i < slides.length; i += 1)slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n}\nconst $6946bfb4689eabba$var$toggleSlideClasses$1 = (slideEl, condition, className)=>{\n    if (condition && !slideEl.classList.contains(className)) slideEl.classList.add(className);\n    else if (!condition && slideEl.classList.contains(className)) slideEl.classList.remove(className);\n};\nfunction $6946bfb4689eabba$var$updateSlidesProgress(translate) {\n    if (translate === void 0) translate = this && this.translate || 0;\n    const swiper = this;\n    const params = swiper.params;\n    const { slides: slides, rtlTranslate: rtl, snapGrid: snapGrid } = swiper;\n    if (slides.length === 0) return;\n    if (typeof slides[0].swiperSlideOffset === \"undefined\") swiper.updateSlidesOffset();\n    let offsetCenter = -translate;\n    if (rtl) offsetCenter = translate;\n    swiper.visibleSlidesIndexes = [];\n    swiper.visibleSlides = [];\n    let spaceBetween = params.spaceBetween;\n    if (typeof spaceBetween === \"string\" && spaceBetween.indexOf(\"%\") >= 0) spaceBetween = parseFloat(spaceBetween.replace(\"%\", \"\")) / 100 * swiper.size;\n    else if (typeof spaceBetween === \"string\") spaceBetween = parseFloat(spaceBetween);\n    for(let i = 0; i < slides.length; i += 1){\n        const slide = slides[i];\n        let slideOffset = slide.swiperSlideOffset;\n        if (params.cssMode && params.centeredSlides) slideOffset -= slides[0].swiperSlideOffset;\n        const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n        const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n        const slideBefore = -(offsetCenter - slideOffset);\n        const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n        const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n        const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n        if (isVisible) {\n            swiper.visibleSlides.push(slide);\n            swiper.visibleSlidesIndexes.push(i);\n        }\n        $6946bfb4689eabba$var$toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n        $6946bfb4689eabba$var$toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n        slide.progress = rtl ? -slideProgress : slideProgress;\n        slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n    }\n}\nfunction $6946bfb4689eabba$var$updateProgress(translate) {\n    const swiper = this;\n    if (typeof translate === \"undefined\") {\n        const multiplier = swiper.rtlTranslate ? -1 : 1;\n        // eslint-disable-next-line\n        translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n    }\n    const params = swiper.params;\n    const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n    let { progress: progress, isBeginning: isBeginning, isEnd: isEnd, progressLoop: progressLoop } = swiper;\n    const wasBeginning = isBeginning;\n    const wasEnd = isEnd;\n    if (translatesDiff === 0) {\n        progress = 0;\n        isBeginning = true;\n        isEnd = true;\n    } else {\n        progress = (translate - swiper.minTranslate()) / translatesDiff;\n        const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n        const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n        isBeginning = isBeginningRounded || progress <= 0;\n        isEnd = isEndRounded || progress >= 1;\n        if (isBeginningRounded) progress = 0;\n        if (isEndRounded) progress = 1;\n    }\n    if (params.loop) {\n        const firstSlideIndex = swiper.getSlideIndexByData(0);\n        const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n        const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n        const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n        const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n        const translateAbs = Math.abs(translate);\n        if (translateAbs >= firstSlideTranslate) progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n        else progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n        if (progressLoop > 1) progressLoop -= 1;\n    }\n    Object.assign(swiper, {\n        progress: progress,\n        progressLoop: progressLoop,\n        isBeginning: isBeginning,\n        isEnd: isEnd\n    });\n    if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n    if (isBeginning && !wasBeginning) swiper.emit(\"reachBeginning toEdge\");\n    if (isEnd && !wasEnd) swiper.emit(\"reachEnd toEdge\");\n    if (wasBeginning && !isBeginning || wasEnd && !isEnd) swiper.emit(\"fromEdge\");\n    swiper.emit(\"progress\", progress);\n}\nconst $6946bfb4689eabba$var$toggleSlideClasses = (slideEl, condition, className)=>{\n    if (condition && !slideEl.classList.contains(className)) slideEl.classList.add(className);\n    else if (!condition && slideEl.classList.contains(className)) slideEl.classList.remove(className);\n};\nfunction $6946bfb4689eabba$var$updateSlidesClasses() {\n    const swiper = this;\n    const { slides: slides, params: params, slidesEl: slidesEl, activeIndex: activeIndex } = swiper;\n    const isVirtual = swiper.virtual && params.virtual.enabled;\n    const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n    const getFilteredSlide = (selector)=>{\n        return (0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n    };\n    let activeSlide;\n    let prevSlide;\n    let nextSlide;\n    if (isVirtual) {\n        if (params.loop) {\n            let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n            if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n            if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n            activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n        } else activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n    } else if (gridEnabled) {\n        activeSlide = slides.filter((slideEl)=>slideEl.column === activeIndex)[0];\n        nextSlide = slides.filter((slideEl)=>slideEl.column === activeIndex + 1)[0];\n        prevSlide = slides.filter((slideEl)=>slideEl.column === activeIndex - 1)[0];\n    } else activeSlide = slides[activeIndex];\n    if (activeSlide) {\n        if (!gridEnabled) {\n            // Next Slide\n            nextSlide = (0, $3e0e2b092da8f124$export$9e5f44173e64f162)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n            if (params.loop && !nextSlide) nextSlide = slides[0];\n            // Prev Slide\n            prevSlide = (0, $3e0e2b092da8f124$export$43caf9889c228507)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n            params.loop;\n        }\n    }\n    slides.forEach((slideEl)=>{\n        $6946bfb4689eabba$var$toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n        $6946bfb4689eabba$var$toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n        $6946bfb4689eabba$var$toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n    });\n    swiper.emitSlidesClasses();\n}\nconst $6946bfb4689eabba$var$processLazyPreloader = (swiper, imageEl)=>{\n    if (!swiper || swiper.destroyed || !swiper.params) return;\n    const slideSelector = ()=>swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n    const slideEl = imageEl.closest(slideSelector());\n    if (slideEl) {\n        let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n        if (!lazyEl && swiper.isElement) {\n            if (slideEl.shadowRoot) lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n            else // init later\n            requestAnimationFrame(()=>{\n                if (slideEl.shadowRoot) {\n                    lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n                    if (lazyEl) lazyEl.remove();\n                }\n            });\n        }\n        if (lazyEl) lazyEl.remove();\n    }\n};\nconst $6946bfb4689eabba$var$unlazy = (swiper, index)=>{\n    if (!swiper.slides[index]) return;\n    const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n    if (imageEl) imageEl.removeAttribute(\"loading\");\n};\nconst $6946bfb4689eabba$var$preload = (swiper)=>{\n    if (!swiper || swiper.destroyed || !swiper.params) return;\n    let amount = swiper.params.lazyPreloadPrevNext;\n    const len = swiper.slides.length;\n    if (!len || !amount || amount < 0) return;\n    amount = Math.min(amount, len);\n    const slidesPerView = swiper.params.slidesPerView === \"auto\" ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n    const activeIndex = swiper.activeIndex;\n    if (swiper.params.grid && swiper.params.grid.rows > 1) {\n        const activeColumn = activeIndex;\n        const preloadColumns = [\n            activeColumn - amount\n        ];\n        preloadColumns.push(...Array.from({\n            length: amount\n        }).map((_, i)=>{\n            return activeColumn + slidesPerView + i;\n        }));\n        swiper.slides.forEach((slideEl, i)=>{\n            if (preloadColumns.includes(slideEl.column)) $6946bfb4689eabba$var$unlazy(swiper, i);\n        });\n        return;\n    }\n    const slideIndexLastInView = activeIndex + slidesPerView - 1;\n    if (swiper.params.rewind || swiper.params.loop) for(let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1){\n        const realIndex = (i % len + len) % len;\n        if (realIndex < activeIndex || realIndex > slideIndexLastInView) $6946bfb4689eabba$var$unlazy(swiper, realIndex);\n    }\n    else {\n        for(let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1)if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) $6946bfb4689eabba$var$unlazy(swiper, i);\n    }\n};\nfunction $6946bfb4689eabba$var$getActiveIndexByTranslate(swiper) {\n    const { slidesGrid: slidesGrid, params: params } = swiper;\n    const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n    let activeIndex;\n    for(let i = 0; i < slidesGrid.length; i += 1){\n        if (typeof slidesGrid[i + 1] !== \"undefined\") {\n            if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) activeIndex = i;\n            else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) activeIndex = i + 1;\n        } else if (translate >= slidesGrid[i]) activeIndex = i;\n    }\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) {\n        if (activeIndex < 0 || typeof activeIndex === \"undefined\") activeIndex = 0;\n    }\n    return activeIndex;\n}\nfunction $6946bfb4689eabba$var$updateActiveIndex(newActiveIndex) {\n    const swiper = this;\n    const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n    const { snapGrid: snapGrid, params: params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex } = swiper;\n    let activeIndex = newActiveIndex;\n    let snapIndex;\n    const getVirtualRealIndex = (aIndex)=>{\n        let realIndex = aIndex - swiper.virtual.slidesBefore;\n        if (realIndex < 0) realIndex = swiper.virtual.slides.length + realIndex;\n        if (realIndex >= swiper.virtual.slides.length) realIndex -= swiper.virtual.slides.length;\n        return realIndex;\n    };\n    if (typeof activeIndex === \"undefined\") activeIndex = $6946bfb4689eabba$var$getActiveIndexByTranslate(swiper);\n    if (snapGrid.indexOf(translate) >= 0) snapIndex = snapGrid.indexOf(translate);\n    else {\n        const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n        snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n    }\n    if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n    if (activeIndex === previousIndex && !swiper.params.loop) {\n        if (snapIndex !== previousSnapIndex) {\n            swiper.snapIndex = snapIndex;\n            swiper.emit(\"snapIndexChange\");\n        }\n        return;\n    }\n    if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n        swiper.realIndex = getVirtualRealIndex(activeIndex);\n        return;\n    }\n    const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n    // Get real index\n    let realIndex;\n    if (swiper.virtual && params.virtual.enabled && params.loop) realIndex = getVirtualRealIndex(activeIndex);\n    else if (gridEnabled) {\n        const firstSlideInColumn = swiper.slides.filter((slideEl)=>slideEl.column === activeIndex)[0];\n        let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute(\"data-swiper-slide-index\"), 10);\n        if (Number.isNaN(activeSlideIndex)) activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n        realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n    } else if (swiper.slides[activeIndex]) {\n        const slideIndex = swiper.slides[activeIndex].getAttribute(\"data-swiper-slide-index\");\n        if (slideIndex) realIndex = parseInt(slideIndex, 10);\n        else realIndex = activeIndex;\n    } else realIndex = activeIndex;\n    Object.assign(swiper, {\n        previousSnapIndex: previousSnapIndex,\n        snapIndex: snapIndex,\n        previousRealIndex: previousRealIndex,\n        realIndex: realIndex,\n        previousIndex: previousIndex,\n        activeIndex: activeIndex\n    });\n    if (swiper.initialized) $6946bfb4689eabba$var$preload(swiper);\n    swiper.emit(\"activeIndexChange\");\n    swiper.emit(\"snapIndexChange\");\n    if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n        if (previousRealIndex !== realIndex) swiper.emit(\"realIndexChange\");\n        swiper.emit(\"slideChange\");\n    }\n}\nfunction $6946bfb4689eabba$var$updateClickedSlide(el, path) {\n    const swiper = this;\n    const params = swiper.params;\n    let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n    if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) [\n        ...path.slice(path.indexOf(el) + 1, path.length)\n    ].forEach((pathEl)=>{\n        if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) slide = pathEl;\n    });\n    let slideFound = false;\n    let slideIndex;\n    if (slide) {\n        for(let i = 0; i < swiper.slides.length; i += 1)if (swiper.slides[i] === slide) {\n            slideFound = true;\n            slideIndex = i;\n            break;\n        }\n    }\n    if (slide && slideFound) {\n        swiper.clickedSlide = slide;\n        if (swiper.virtual && swiper.params.virtual.enabled) swiper.clickedIndex = parseInt(slide.getAttribute(\"data-swiper-slide-index\"), 10);\n        else swiper.clickedIndex = slideIndex;\n    } else {\n        swiper.clickedSlide = undefined;\n        swiper.clickedIndex = undefined;\n        return;\n    }\n    if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) swiper.slideToClickedSlide();\n}\nvar $6946bfb4689eabba$var$update = {\n    updateSize: $6946bfb4689eabba$var$updateSize,\n    updateSlides: $6946bfb4689eabba$var$updateSlides,\n    updateAutoHeight: $6946bfb4689eabba$var$updateAutoHeight,\n    updateSlidesOffset: $6946bfb4689eabba$var$updateSlidesOffset,\n    updateSlidesProgress: $6946bfb4689eabba$var$updateSlidesProgress,\n    updateProgress: $6946bfb4689eabba$var$updateProgress,\n    updateSlidesClasses: $6946bfb4689eabba$var$updateSlidesClasses,\n    updateActiveIndex: $6946bfb4689eabba$var$updateActiveIndex,\n    updateClickedSlide: $6946bfb4689eabba$var$updateClickedSlide\n};\nfunction $6946bfb4689eabba$var$getSwiperTranslate(axis) {\n    if (axis === void 0) axis = this.isHorizontal() ? \"x\" : \"y\";\n    const swiper = this;\n    const { params: params, rtlTranslate: rtl, translate: translate, wrapperEl: wrapperEl } = swiper;\n    if (params.virtualTranslate) return rtl ? -translate : translate;\n    if (params.cssMode) return translate;\n    let currentTranslate = (0, $3e0e2b092da8f124$export$35e795649ee09318)(wrapperEl, axis);\n    currentTranslate += swiper.cssOverflowAdjustment();\n    if (rtl) currentTranslate = -currentTranslate;\n    return currentTranslate || 0;\n}\nfunction $6946bfb4689eabba$var$setTranslate(translate, byController) {\n    const swiper = this;\n    const { rtlTranslate: rtl, params: params, wrapperEl: wrapperEl, progress: progress } = swiper;\n    let x = 0;\n    let y = 0;\n    const z = 0;\n    if (swiper.isHorizontal()) x = rtl ? -translate : translate;\n    else y = translate;\n    if (params.roundLengths) {\n        x = Math.floor(x);\n        y = Math.floor(y);\n    }\n    swiper.previousTranslate = swiper.translate;\n    swiper.translate = swiper.isHorizontal() ? x : y;\n    if (params.cssMode) wrapperEl[swiper.isHorizontal() ? \"scrollLeft\" : \"scrollTop\"] = swiper.isHorizontal() ? -x : -y;\n    else if (!params.virtualTranslate) {\n        if (swiper.isHorizontal()) x -= swiper.cssOverflowAdjustment();\n        else y -= swiper.cssOverflowAdjustment();\n        wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n    }\n    // Check if we need to update progress\n    let newProgress;\n    const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n    if (translatesDiff === 0) newProgress = 0;\n    else newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n    if (newProgress !== progress) swiper.updateProgress(translate);\n    swiper.emit(\"setTranslate\", swiper.translate, byController);\n}\nfunction $6946bfb4689eabba$var$minTranslate() {\n    return -this.snapGrid[0];\n}\nfunction $6946bfb4689eabba$var$maxTranslate() {\n    return -this.snapGrid[this.snapGrid.length - 1];\n}\nfunction $6946bfb4689eabba$var$translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n    if (translate === void 0) translate = 0;\n    if (speed === void 0) speed = this.params.speed;\n    if (runCallbacks === void 0) runCallbacks = true;\n    if (translateBounds === void 0) translateBounds = true;\n    const swiper = this;\n    const { params: params, wrapperEl: wrapperEl } = swiper;\n    if (swiper.animating && params.preventInteractionOnTransition) return false;\n    const minTranslate = swiper.minTranslate();\n    const maxTranslate = swiper.maxTranslate();\n    let newTranslate;\n    if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n    else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n    else newTranslate = translate;\n    // Update progress\n    swiper.updateProgress(newTranslate);\n    if (params.cssMode) {\n        const isH = swiper.isHorizontal();\n        if (speed === 0) wrapperEl[isH ? \"scrollLeft\" : \"scrollTop\"] = -newTranslate;\n        else {\n            if (!swiper.support.smoothScroll) {\n                (0, $3e0e2b092da8f124$export$625550452a3fa3ec)({\n                    swiper: swiper,\n                    targetPosition: -newTranslate,\n                    side: isH ? \"left\" : \"top\"\n                });\n                return true;\n            }\n            wrapperEl.scrollTo({\n                [isH ? \"left\" : \"top\"]: -newTranslate,\n                behavior: \"smooth\"\n            });\n        }\n        return true;\n    }\n    if (speed === 0) {\n        swiper.setTransition(0);\n        swiper.setTranslate(newTranslate);\n        if (runCallbacks) {\n            swiper.emit(\"beforeTransitionStart\", speed, internal);\n            swiper.emit(\"transitionEnd\");\n        }\n    } else {\n        swiper.setTransition(speed);\n        swiper.setTranslate(newTranslate);\n        if (runCallbacks) {\n            swiper.emit(\"beforeTransitionStart\", speed, internal);\n            swiper.emit(\"transitionStart\");\n        }\n        if (!swiper.animating) {\n            swiper.animating = true;\n            if (!swiper.onTranslateToWrapperTransitionEnd) swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n                if (!swiper || swiper.destroyed) return;\n                if (e.target !== this) return;\n                swiper.wrapperEl.removeEventListener(\"transitionend\", swiper.onTranslateToWrapperTransitionEnd);\n                swiper.onTranslateToWrapperTransitionEnd = null;\n                delete swiper.onTranslateToWrapperTransitionEnd;\n                swiper.animating = false;\n                if (runCallbacks) swiper.emit(\"transitionEnd\");\n            };\n            swiper.wrapperEl.addEventListener(\"transitionend\", swiper.onTranslateToWrapperTransitionEnd);\n        }\n    }\n    return true;\n}\nvar $6946bfb4689eabba$var$translate = {\n    getTranslate: $6946bfb4689eabba$var$getSwiperTranslate,\n    setTranslate: $6946bfb4689eabba$var$setTranslate,\n    minTranslate: $6946bfb4689eabba$var$minTranslate,\n    maxTranslate: $6946bfb4689eabba$var$maxTranslate,\n    translateTo: $6946bfb4689eabba$var$translateTo\n};\nfunction $6946bfb4689eabba$var$setTransition(duration, byController) {\n    const swiper = this;\n    if (!swiper.params.cssMode) {\n        swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n        swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : \"\";\n    }\n    swiper.emit(\"setTransition\", duration, byController);\n}\nfunction $6946bfb4689eabba$var$transitionEmit(_ref) {\n    let { swiper: swiper, runCallbacks: runCallbacks, direction: direction, step: step } = _ref;\n    const { activeIndex: activeIndex, previousIndex: previousIndex } = swiper;\n    let dir = direction;\n    if (!dir) {\n        if (activeIndex > previousIndex) dir = \"next\";\n        else if (activeIndex < previousIndex) dir = \"prev\";\n        else dir = \"reset\";\n    }\n    swiper.emit(`transition${step}`);\n    if (runCallbacks && activeIndex !== previousIndex) {\n        if (dir === \"reset\") {\n            swiper.emit(`slideResetTransition${step}`);\n            return;\n        }\n        swiper.emit(`slideChangeTransition${step}`);\n        if (dir === \"next\") swiper.emit(`slideNextTransition${step}`);\n        else swiper.emit(`slidePrevTransition${step}`);\n    }\n}\nfunction $6946bfb4689eabba$var$transitionStart(runCallbacks, direction) {\n    if (runCallbacks === void 0) runCallbacks = true;\n    const swiper = this;\n    const { params: params } = swiper;\n    if (params.cssMode) return;\n    if (params.autoHeight) swiper.updateAutoHeight();\n    $6946bfb4689eabba$var$transitionEmit({\n        swiper: swiper,\n        runCallbacks: runCallbacks,\n        direction: direction,\n        step: \"Start\"\n    });\n}\nfunction $6946bfb4689eabba$var$transitionEnd(runCallbacks, direction) {\n    if (runCallbacks === void 0) runCallbacks = true;\n    const swiper = this;\n    const { params: params } = swiper;\n    swiper.animating = false;\n    if (params.cssMode) return;\n    swiper.setTransition(0);\n    $6946bfb4689eabba$var$transitionEmit({\n        swiper: swiper,\n        runCallbacks: runCallbacks,\n        direction: direction,\n        step: \"End\"\n    });\n}\nvar $6946bfb4689eabba$var$transition = {\n    setTransition: $6946bfb4689eabba$var$setTransition,\n    transitionStart: $6946bfb4689eabba$var$transitionStart,\n    transitionEnd: $6946bfb4689eabba$var$transitionEnd\n};\nfunction $6946bfb4689eabba$var$slideTo(index, speed, runCallbacks, internal, initial) {\n    if (index === void 0) index = 0;\n    if (runCallbacks === void 0) runCallbacks = true;\n    if (typeof index === \"string\") index = parseInt(index, 10);\n    const swiper = this;\n    let slideIndex = index;\n    if (slideIndex < 0) slideIndex = 0;\n    const { params: params, snapGrid: snapGrid, slidesGrid: slidesGrid, previousIndex: previousIndex, activeIndex: activeIndex, rtlTranslate: rtl, wrapperEl: wrapperEl, enabled: enabled } = swiper;\n    if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) return false;\n    if (typeof speed === \"undefined\") speed = swiper.params.speed;\n    const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n    let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n    if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n    const translate = -snapGrid[snapIndex];\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) for(let i = 0; i < slidesGrid.length; i += 1){\n        const normalizedTranslate = -Math.floor(translate * 100);\n        const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n        const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n        if (typeof slidesGrid[i + 1] !== \"undefined\") {\n            if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) slideIndex = i;\n            else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) slideIndex = i + 1;\n        } else if (normalizedTranslate >= normalizedGrid) slideIndex = i;\n    }\n    // Directions locks\n    if (swiper.initialized && slideIndex !== activeIndex) {\n        if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) return false;\n        if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n            if ((activeIndex || 0) !== slideIndex) return false;\n        }\n    }\n    if (slideIndex !== (previousIndex || 0) && runCallbacks) swiper.emit(\"beforeSlideChangeStart\");\n    // Update progress\n    swiper.updateProgress(translate);\n    let direction;\n    if (slideIndex > activeIndex) direction = \"next\";\n    else if (slideIndex < activeIndex) direction = \"prev\";\n    else direction = \"reset\";\n    // Update Index\n    if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n        swiper.updateActiveIndex(slideIndex);\n        // Update Height\n        if (params.autoHeight) swiper.updateAutoHeight();\n        swiper.updateSlidesClasses();\n        if (params.effect !== \"slide\") swiper.setTranslate(translate);\n        if (direction !== \"reset\") {\n            swiper.transitionStart(runCallbacks, direction);\n            swiper.transitionEnd(runCallbacks, direction);\n        }\n        return false;\n    }\n    if (params.cssMode) {\n        const isH = swiper.isHorizontal();\n        const t = rtl ? translate : -translate;\n        if (speed === 0) {\n            const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n            if (isVirtual) {\n                swiper.wrapperEl.style.scrollSnapType = \"none\";\n                swiper._immediateVirtual = true;\n            }\n            if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n                swiper._cssModeVirtualInitialSet = true;\n                requestAnimationFrame(()=>{\n                    wrapperEl[isH ? \"scrollLeft\" : \"scrollTop\"] = t;\n                });\n            } else wrapperEl[isH ? \"scrollLeft\" : \"scrollTop\"] = t;\n            if (isVirtual) requestAnimationFrame(()=>{\n                swiper.wrapperEl.style.scrollSnapType = \"\";\n                swiper._immediateVirtual = false;\n            });\n        } else {\n            if (!swiper.support.smoothScroll) {\n                (0, $3e0e2b092da8f124$export$625550452a3fa3ec)({\n                    swiper: swiper,\n                    targetPosition: t,\n                    side: isH ? \"left\" : \"top\"\n                });\n                return true;\n            }\n            wrapperEl.scrollTo({\n                [isH ? \"left\" : \"top\"]: t,\n                behavior: \"smooth\"\n            });\n        }\n        return true;\n    }\n    swiper.setTransition(speed);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit(\"beforeTransitionStart\", speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    if (speed === 0) swiper.transitionEnd(runCallbacks, direction);\n    else if (!swiper.animating) {\n        swiper.animating = true;\n        if (!swiper.onSlideToWrapperTransitionEnd) swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n            if (!swiper || swiper.destroyed) return;\n            if (e.target !== this) return;\n            swiper.wrapperEl.removeEventListener(\"transitionend\", swiper.onSlideToWrapperTransitionEnd);\n            swiper.onSlideToWrapperTransitionEnd = null;\n            delete swiper.onSlideToWrapperTransitionEnd;\n            swiper.transitionEnd(runCallbacks, direction);\n        };\n        swiper.wrapperEl.addEventListener(\"transitionend\", swiper.onSlideToWrapperTransitionEnd);\n    }\n    return true;\n}\nfunction $6946bfb4689eabba$var$slideToLoop(index, speed, runCallbacks, internal) {\n    if (index === void 0) index = 0;\n    if (runCallbacks === void 0) runCallbacks = true;\n    if (typeof index === \"string\") {\n        const indexAsNumber = parseInt(index, 10);\n        index = indexAsNumber;\n    }\n    const swiper = this;\n    if (swiper.destroyed) return;\n    if (typeof speed === \"undefined\") speed = swiper.params.speed;\n    const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n    let newIndex = index;\n    if (swiper.params.loop) {\n        if (swiper.virtual && swiper.params.virtual.enabled) // eslint-disable-next-line\n        newIndex = newIndex + swiper.virtual.slidesBefore;\n        else {\n            let targetSlideIndex;\n            if (gridEnabled) {\n                const slideIndex = newIndex * swiper.params.grid.rows;\n                targetSlideIndex = swiper.slides.filter((slideEl)=>slideEl.getAttribute(\"data-swiper-slide-index\") * 1 === slideIndex)[0].column;\n            } else targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n            const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n            const { centeredSlides: centeredSlides } = swiper.params;\n            let slidesPerView = swiper.params.slidesPerView;\n            if (slidesPerView === \"auto\") slidesPerView = swiper.slidesPerViewDynamic();\n            else {\n                slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n                if (centeredSlides && slidesPerView % 2 === 0) slidesPerView = slidesPerView + 1;\n            }\n            let needLoopFix = cols - targetSlideIndex < slidesPerView;\n            if (centeredSlides) needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n            if (internal && centeredSlides && swiper.params.slidesPerView !== \"auto\" && !gridEnabled) needLoopFix = false;\n            if (needLoopFix) {\n                const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? \"prev\" : \"next\" : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? \"next\" : \"prev\";\n                swiper.loopFix({\n                    direction: direction,\n                    slideTo: true,\n                    activeSlideIndex: direction === \"next\" ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n                    slideRealIndex: direction === \"next\" ? swiper.realIndex : undefined\n                });\n            }\n            if (gridEnabled) {\n                const slideIndex = newIndex * swiper.params.grid.rows;\n                newIndex = swiper.slides.filter((slideEl)=>slideEl.getAttribute(\"data-swiper-slide-index\") * 1 === slideIndex)[0].column;\n            } else newIndex = swiper.getSlideIndexByData(newIndex);\n        }\n    }\n    requestAnimationFrame(()=>{\n        swiper.slideTo(newIndex, speed, runCallbacks, internal);\n    });\n    return swiper;\n}\n/* eslint no-unused-vars: \"off\" */ function $6946bfb4689eabba$var$slideNext(speed, runCallbacks, internal) {\n    if (runCallbacks === void 0) runCallbacks = true;\n    const swiper = this;\n    const { enabled: enabled, params: params, animating: animating } = swiper;\n    if (!enabled || swiper.destroyed) return swiper;\n    if (typeof speed === \"undefined\") speed = swiper.params.speed;\n    let perGroup = params.slidesPerGroup;\n    if (params.slidesPerView === \"auto\" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) perGroup = Math.max(swiper.slidesPerViewDynamic(\"current\", true), 1);\n    const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n    const isVirtual = swiper.virtual && params.virtual.enabled;\n    if (params.loop) {\n        if (animating && !isVirtual && params.loopPreventsSliding) return false;\n        swiper.loopFix({\n            direction: \"next\"\n        });\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.wrapperEl.clientLeft;\n        if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n            requestAnimationFrame(()=>{\n                swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n            });\n            return true;\n        }\n    }\n    if (params.rewind && swiper.isEnd) return swiper.slideTo(0, speed, runCallbacks, internal);\n    return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */ function $6946bfb4689eabba$var$slidePrev(speed, runCallbacks, internal) {\n    if (runCallbacks === void 0) runCallbacks = true;\n    const swiper = this;\n    const { params: params, snapGrid: snapGrid, slidesGrid: slidesGrid, rtlTranslate: rtlTranslate, enabled: enabled, animating: animating } = swiper;\n    if (!enabled || swiper.destroyed) return swiper;\n    if (typeof speed === \"undefined\") speed = swiper.params.speed;\n    const isVirtual = swiper.virtual && params.virtual.enabled;\n    if (params.loop) {\n        if (animating && !isVirtual && params.loopPreventsSliding) return false;\n        swiper.loopFix({\n            direction: \"prev\"\n        });\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.wrapperEl.clientLeft;\n    }\n    const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n    function normalize(val) {\n        if (val < 0) return -Math.floor(Math.abs(val));\n        return Math.floor(val);\n    }\n    const normalizedTranslate = normalize(translate);\n    const normalizedSnapGrid = snapGrid.map((val)=>normalize(val));\n    let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n    if (typeof prevSnap === \"undefined\" && params.cssMode) {\n        let prevSnapIndex;\n        snapGrid.forEach((snap, snapIndex)=>{\n            if (normalizedTranslate >= snap) // prevSnap = snap;\n            prevSnapIndex = snapIndex;\n        });\n        if (typeof prevSnapIndex !== \"undefined\") prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n    let prevIndex = 0;\n    if (typeof prevSnap !== \"undefined\") {\n        prevIndex = slidesGrid.indexOf(prevSnap);\n        if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n        if (params.slidesPerView === \"auto\" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n            prevIndex = prevIndex - swiper.slidesPerViewDynamic(\"previous\", true) + 1;\n            prevIndex = Math.max(prevIndex, 0);\n        }\n    }\n    if (params.rewind && swiper.isBeginning) {\n        const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n        return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n    } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n        requestAnimationFrame(()=>{\n            swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n        });\n        return true;\n    }\n    return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */ function $6946bfb4689eabba$var$slideReset(speed, runCallbacks, internal) {\n    if (runCallbacks === void 0) runCallbacks = true;\n    const swiper = this;\n    if (swiper.destroyed) return;\n    if (typeof speed === \"undefined\") speed = swiper.params.speed;\n    return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */ function $6946bfb4689eabba$var$slideToClosest(speed, runCallbacks, internal, threshold) {\n    if (runCallbacks === void 0) runCallbacks = true;\n    if (threshold === void 0) threshold = 0.5;\n    const swiper = this;\n    if (swiper.destroyed) return;\n    if (typeof speed === \"undefined\") speed = swiper.params.speed;\n    let index = swiper.activeIndex;\n    const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n    const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n    const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n    if (translate >= swiper.snapGrid[snapIndex]) {\n        // The current translate is on or after the current snap index, so the choice\n        // is between the current index and the one after it.\n        const currentSnap = swiper.snapGrid[snapIndex];\n        const nextSnap = swiper.snapGrid[snapIndex + 1];\n        if (translate - currentSnap > (nextSnap - currentSnap) * threshold) index += swiper.params.slidesPerGroup;\n    } else {\n        // The current translate is before the current snap index, so the choice\n        // is between the current index and the one before it.\n        const prevSnap = swiper.snapGrid[snapIndex - 1];\n        const currentSnap = swiper.snapGrid[snapIndex];\n        if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) index -= swiper.params.slidesPerGroup;\n    }\n    index = Math.max(index, 0);\n    index = Math.min(index, swiper.slidesGrid.length - 1);\n    return swiper.slideTo(index, speed, runCallbacks, internal);\n}\nfunction $6946bfb4689eabba$var$slideToClickedSlide() {\n    const swiper = this;\n    if (swiper.destroyed) return;\n    const { params: params, slidesEl: slidesEl } = swiper;\n    const slidesPerView = params.slidesPerView === \"auto\" ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n    let slideToIndex = swiper.clickedIndex;\n    let realIndex;\n    const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n    if (params.loop) {\n        if (swiper.animating) return;\n        realIndex = parseInt(swiper.clickedSlide.getAttribute(\"data-swiper-slide-index\"), 10);\n        if (params.centeredSlides) {\n            if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n                swiper.loopFix();\n                slideToIndex = swiper.getSlideIndex((0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n                (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                    swiper.slideTo(slideToIndex);\n                });\n            } else swiper.slideTo(slideToIndex);\n        } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n            swiper.loopFix();\n            slideToIndex = swiper.getSlideIndex((0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n            (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                swiper.slideTo(slideToIndex);\n            });\n        } else swiper.slideTo(slideToIndex);\n    } else swiper.slideTo(slideToIndex);\n}\nvar $6946bfb4689eabba$var$slide = {\n    slideTo: $6946bfb4689eabba$var$slideTo,\n    slideToLoop: $6946bfb4689eabba$var$slideToLoop,\n    slideNext: $6946bfb4689eabba$var$slideNext,\n    slidePrev: $6946bfb4689eabba$var$slidePrev,\n    slideReset: $6946bfb4689eabba$var$slideReset,\n    slideToClosest: $6946bfb4689eabba$var$slideToClosest,\n    slideToClickedSlide: $6946bfb4689eabba$var$slideToClickedSlide\n};\nfunction $6946bfb4689eabba$var$loopCreate(slideRealIndex) {\n    const swiper = this;\n    const { params: params, slidesEl: slidesEl } = swiper;\n    if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n    const initSlides = ()=>{\n        const slides = (0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`);\n        slides.forEach((el, index)=>{\n            el.setAttribute(\"data-swiper-slide-index\", index);\n        });\n    };\n    const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n    const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n    const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n    const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n    const addBlankSlides = (amountOfSlides)=>{\n        for(let i = 0; i < amountOfSlides; i += 1){\n            const slideEl = swiper.isElement ? (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"swiper-slide\", [\n                params.slideBlankClass\n            ]) : (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", [\n                params.slideClass,\n                params.slideBlankClass\n            ]);\n            swiper.slidesEl.append(slideEl);\n        }\n    };\n    if (shouldFillGroup) {\n        if (params.loopAddBlankSlides) {\n            const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n            addBlankSlides(slidesToAdd);\n            swiper.recalcSlides();\n            swiper.updateSlides();\n        } else (0, $3e0e2b092da8f124$export$3b14a55fb2447963)(\"Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)\");\n        initSlides();\n    } else if (shouldFillGrid) {\n        if (params.loopAddBlankSlides) {\n            const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n            addBlankSlides(slidesToAdd);\n            swiper.recalcSlides();\n            swiper.updateSlides();\n        } else (0, $3e0e2b092da8f124$export$3b14a55fb2447963)(\"Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)\");\n        initSlides();\n    } else initSlides();\n    swiper.loopFix({\n        slideRealIndex: slideRealIndex,\n        direction: params.centeredSlides ? undefined : \"next\"\n    });\n}\nfunction $6946bfb4689eabba$var$loopFix(_temp) {\n    let { slideRealIndex: slideRealIndex, slideTo: slideTo = true, direction: direction, setTranslate: setTranslate, activeSlideIndex: activeSlideIndex, byController: byController, byMousewheel: byMousewheel } = _temp === void 0 ? {} : _temp;\n    const swiper = this;\n    if (!swiper.params.loop) return;\n    swiper.emit(\"beforeLoopFix\");\n    const { slides: slides, allowSlidePrev: allowSlidePrev, allowSlideNext: allowSlideNext, slidesEl: slidesEl, params: params } = swiper;\n    const { centeredSlides: centeredSlides } = params;\n    swiper.allowSlidePrev = true;\n    swiper.allowSlideNext = true;\n    if (swiper.virtual && params.virtual.enabled) {\n        if (slideTo) {\n            if (!params.centeredSlides && swiper.snapIndex === 0) swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n            else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n            else if (swiper.snapIndex === swiper.snapGrid.length - 1) swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n        }\n        swiper.allowSlidePrev = allowSlidePrev;\n        swiper.allowSlideNext = allowSlideNext;\n        swiper.emit(\"loopFix\");\n        return;\n    }\n    let slidesPerView = params.slidesPerView;\n    if (slidesPerView === \"auto\") slidesPerView = swiper.slidesPerViewDynamic();\n    else {\n        slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n        if (centeredSlides && slidesPerView % 2 === 0) slidesPerView = slidesPerView + 1;\n    }\n    const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n    let loopedSlides = slidesPerGroup;\n    if (loopedSlides % slidesPerGroup !== 0) loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n    loopedSlides += params.loopAdditionalSlides;\n    swiper.loopedSlides = loopedSlides;\n    const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n    if (slides.length < slidesPerView + loopedSlides) (0, $3e0e2b092da8f124$export$3b14a55fb2447963)(\"Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters\");\n    else if (gridEnabled && params.grid.fill === \"row\") (0, $3e0e2b092da8f124$export$3b14a55fb2447963)(\"Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`\");\n    const prependSlidesIndexes = [];\n    const appendSlidesIndexes = [];\n    let activeIndex = swiper.activeIndex;\n    if (typeof activeSlideIndex === \"undefined\") activeSlideIndex = swiper.getSlideIndex(slides.filter((el)=>el.classList.contains(params.slideActiveClass))[0]);\n    else activeIndex = activeSlideIndex;\n    const isNext = direction === \"next\" || !direction;\n    const isPrev = direction === \"prev\" || !direction;\n    let slidesPrepended = 0;\n    let slidesAppended = 0;\n    const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n    const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n    const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === \"undefined\" ? -slidesPerView / 2 + 0.5 : 0);\n    // prepend last slides before start\n    if (activeColIndexWithShift < loopedSlides) {\n        slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n        for(let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1){\n            const index = i - Math.floor(i / cols) * cols;\n            if (gridEnabled) {\n                const colIndexToPrepend = cols - index - 1;\n                for(let i = slides.length - 1; i >= 0; i -= 1)if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n            // slides.forEach((slide, slideIndex) => {\n            //   if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n            // });\n            } else prependSlidesIndexes.push(cols - index - 1);\n        }\n    } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n        slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n        for(let i = 0; i < slidesAppended; i += 1){\n            const index = i - Math.floor(i / cols) * cols;\n            if (gridEnabled) slides.forEach((slide, slideIndex)=>{\n                if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n            });\n            else appendSlidesIndexes.push(index);\n        }\n    }\n    swiper.__preventObserver__ = true;\n    requestAnimationFrame(()=>{\n        swiper.__preventObserver__ = false;\n    });\n    if (isPrev) prependSlidesIndexes.forEach((index)=>{\n        slides[index].swiperLoopMoveDOM = true;\n        slidesEl.prepend(slides[index]);\n        slides[index].swiperLoopMoveDOM = false;\n    });\n    if (isNext) appendSlidesIndexes.forEach((index)=>{\n        slides[index].swiperLoopMoveDOM = true;\n        slidesEl.append(slides[index]);\n        slides[index].swiperLoopMoveDOM = false;\n    });\n    swiper.recalcSlides();\n    if (params.slidesPerView === \"auto\") swiper.updateSlides();\n    else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) swiper.slides.forEach((slide, slideIndex)=>{\n        swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n    });\n    if (params.watchSlidesProgress) swiper.updateSlidesOffset();\n    if (slideTo) {\n        if (prependSlidesIndexes.length > 0 && isPrev) {\n            if (typeof slideRealIndex === \"undefined\") {\n                const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n                const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n                const diff = newSlideTranslate - currentSlideTranslate;\n                if (byMousewheel) swiper.setTranslate(swiper.translate - diff);\n                else {\n                    swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n                    if (setTranslate) {\n                        swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n                        swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n                    }\n                }\n            } else if (setTranslate) {\n                const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n                swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n                swiper.touchEventsData.currentTranslate = swiper.translate;\n            }\n        } else if (appendSlidesIndexes.length > 0 && isNext) {\n            if (typeof slideRealIndex === \"undefined\") {\n                const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n                const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n                const diff = newSlideTranslate - currentSlideTranslate;\n                if (byMousewheel) swiper.setTranslate(swiper.translate - diff);\n                else {\n                    swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n                    if (setTranslate) {\n                        swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n                        swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n                    }\n                }\n            } else {\n                const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n                swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n            }\n        }\n    }\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    if (swiper.controller && swiper.controller.control && !byController) {\n        const loopParams = {\n            slideRealIndex: slideRealIndex,\n            direction: direction,\n            setTranslate: setTranslate,\n            activeSlideIndex: activeSlideIndex,\n            byController: true\n        };\n        if (Array.isArray(swiper.controller.control)) swiper.controller.control.forEach((c)=>{\n            if (!c.destroyed && c.params.loop) c.loopFix({\n                ...loopParams,\n                slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n            });\n        });\n        else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) swiper.controller.control.loopFix({\n            ...loopParams,\n            slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n        });\n    }\n    swiper.emit(\"loopFix\");\n}\nfunction $6946bfb4689eabba$var$loopDestroy() {\n    const swiper = this;\n    const { params: params, slidesEl: slidesEl } = swiper;\n    if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n    swiper.recalcSlides();\n    const newSlidesOrder = [];\n    swiper.slides.forEach((slideEl)=>{\n        const index = typeof slideEl.swiperSlideIndex === \"undefined\" ? slideEl.getAttribute(\"data-swiper-slide-index\") * 1 : slideEl.swiperSlideIndex;\n        newSlidesOrder[index] = slideEl;\n    });\n    swiper.slides.forEach((slideEl)=>{\n        slideEl.removeAttribute(\"data-swiper-slide-index\");\n    });\n    newSlidesOrder.forEach((slideEl)=>{\n        slidesEl.append(slideEl);\n    });\n    swiper.recalcSlides();\n    swiper.slideTo(swiper.realIndex, 0);\n}\nvar $6946bfb4689eabba$var$loop = {\n    loopCreate: $6946bfb4689eabba$var$loopCreate,\n    loopFix: $6946bfb4689eabba$var$loopFix,\n    loopDestroy: $6946bfb4689eabba$var$loopDestroy\n};\nfunction $6946bfb4689eabba$var$setGrabCursor(moving) {\n    const swiper = this;\n    if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n    const el = swiper.params.touchEventsTarget === \"container\" ? swiper.el : swiper.wrapperEl;\n    if (swiper.isElement) swiper.__preventObserver__ = true;\n    el.style.cursor = \"move\";\n    el.style.cursor = moving ? \"grabbing\" : \"grab\";\n    if (swiper.isElement) requestAnimationFrame(()=>{\n        swiper.__preventObserver__ = false;\n    });\n}\nfunction $6946bfb4689eabba$var$unsetGrabCursor() {\n    const swiper = this;\n    if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n    if (swiper.isElement) swiper.__preventObserver__ = true;\n    swiper[swiper.params.touchEventsTarget === \"container\" ? \"el\" : \"wrapperEl\"].style.cursor = \"\";\n    if (swiper.isElement) requestAnimationFrame(()=>{\n        swiper.__preventObserver__ = false;\n    });\n}\nvar $6946bfb4689eabba$var$grabCursor = {\n    setGrabCursor: $6946bfb4689eabba$var$setGrabCursor,\n    unsetGrabCursor: $6946bfb4689eabba$var$unsetGrabCursor\n};\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction $6946bfb4689eabba$var$closestElement(selector, base) {\n    if (base === void 0) base = this;\n    function __closestFrom(el) {\n        if (!el || el === (0, $768c2f4c151a0363$export$39b482c5e57630a8)() || el === (0, $768c2f4c151a0363$export$407448d2b89b1813)()) return null;\n        if (el.assignedSlot) el = el.assignedSlot;\n        const found = el.closest(selector);\n        if (!found && !el.getRootNode) return null;\n        return found || __closestFrom(el.getRootNode().host);\n    }\n    return __closestFrom(base);\n}\nfunction $6946bfb4689eabba$var$preventEdgeSwipe(swiper, event, startX) {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const { params: params } = swiper;\n    const edgeSwipeDetection = params.edgeSwipeDetection;\n    const edgeSwipeThreshold = params.edgeSwipeThreshold;\n    if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window1.innerWidth - edgeSwipeThreshold)) {\n        if (edgeSwipeDetection === \"prevent\") {\n            event.preventDefault();\n            return true;\n        }\n        return false;\n    }\n    return true;\n}\nfunction $6946bfb4689eabba$var$onTouchStart(event) {\n    const swiper = this;\n    const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent;\n    const data = swiper.touchEventsData;\n    if (e.type === \"pointerdown\") {\n        if (data.pointerId !== null && data.pointerId !== e.pointerId) return;\n        data.pointerId = e.pointerId;\n    } else if (e.type === \"touchstart\" && e.targetTouches.length === 1) data.touchId = e.targetTouches[0].identifier;\n    if (e.type === \"touchstart\") {\n        // don't proceed touch event\n        $6946bfb4689eabba$var$preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n        return;\n    }\n    const { params: params, touches: touches, enabled: enabled } = swiper;\n    if (!enabled) return;\n    if (!params.simulateTouch && e.pointerType === \"mouse\") return;\n    if (swiper.animating && params.preventInteractionOnTransition) return;\n    if (!swiper.animating && params.cssMode && params.loop) swiper.loopFix();\n    let targetEl = e.target;\n    if (params.touchEventsTarget === \"wrapper\") {\n        if (!(0, $3e0e2b092da8f124$export$90a7f3efeed30595)(targetEl, swiper.wrapperEl)) return;\n    }\n    if (\"which\" in e && e.which === 3) return;\n    if (\"button\" in e && e.button > 0) return;\n    if (data.isTouched && data.isMoved) return;\n    // change target el for shadow root component\n    const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== \"\";\n    // eslint-disable-next-line\n    const eventPath = e.composedPath ? e.composedPath() : e.path;\n    if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) targetEl = eventPath[0];\n    const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n    const isTargetShadow = !!(e.target && e.target.shadowRoot);\n    // use closestElement for shadow root element to get the actual closest for nested shadow root element\n    if (params.noSwiping && (isTargetShadow ? $6946bfb4689eabba$var$closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n        swiper.allowClick = true;\n        return;\n    }\n    if (params.swipeHandler) {\n        if (!targetEl.closest(params.swipeHandler)) return;\n    }\n    touches.currentX = e.pageX;\n    touches.currentY = e.pageY;\n    const startX = touches.currentX;\n    const startY = touches.currentY;\n    // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n    if (!$6946bfb4689eabba$var$preventEdgeSwipe(swiper, e, startX)) return;\n    Object.assign(data, {\n        isTouched: true,\n        isMoved: false,\n        allowTouchCallbacks: true,\n        isScrolling: undefined,\n        startMoving: undefined\n    });\n    touches.startX = startX;\n    touches.startY = startY;\n    data.touchStartTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n    swiper.allowClick = true;\n    swiper.updateSize();\n    swiper.swipeDirection = undefined;\n    if (params.threshold > 0) data.allowThresholdMove = false;\n    let preventDefault = true;\n    if (targetEl.matches(data.focusableElements)) {\n        preventDefault = false;\n        if (targetEl.nodeName === \"SELECT\") data.isTouched = false;\n    }\n    if (document1.activeElement && document1.activeElement.matches(data.focusableElements) && document1.activeElement !== targetEl) document1.activeElement.blur();\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n    if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) e.preventDefault();\n    if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) swiper.freeMode.onTouchStart();\n    swiper.emit(\"touchStart\", e);\n}\nfunction $6946bfb4689eabba$var$onTouchMove(event) {\n    const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const swiper = this;\n    const data = swiper.touchEventsData;\n    const { params: params, touches: touches, rtlTranslate: rtl, enabled: enabled } = swiper;\n    if (!enabled) return;\n    if (!params.simulateTouch && event.pointerType === \"mouse\") return;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent;\n    if (e.type === \"pointermove\") {\n        if (data.touchId !== null) return; // return from pointer if we use touch\n        const id = e.pointerId;\n        if (id !== data.pointerId) return;\n    }\n    let targetTouch;\n    if (e.type === \"touchmove\") {\n        targetTouch = [\n            ...e.changedTouches\n        ].filter((t)=>t.identifier === data.touchId)[0];\n        if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n    } else targetTouch = e;\n    if (!data.isTouched) {\n        if (data.startMoving && data.isScrolling) swiper.emit(\"touchMoveOpposite\", e);\n        return;\n    }\n    const pageX = targetTouch.pageX;\n    const pageY = targetTouch.pageY;\n    if (e.preventedByNestedSwiper) {\n        touches.startX = pageX;\n        touches.startY = pageY;\n        return;\n    }\n    if (!swiper.allowTouchMove) {\n        if (!e.target.matches(data.focusableElements)) swiper.allowClick = false;\n        if (data.isTouched) {\n            Object.assign(touches, {\n                startX: pageX,\n                startY: pageY,\n                currentX: pageX,\n                currentY: pageY\n            });\n            data.touchStartTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n        }\n        return;\n    }\n    if (params.touchReleaseOnEdges && !params.loop) {\n        if (swiper.isVertical()) // Vertical\n        {\n            if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n                data.isTouched = false;\n                data.isMoved = false;\n                return;\n            }\n        } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) return;\n    }\n    if (document1.activeElement) {\n        if (e.target === document1.activeElement && e.target.matches(data.focusableElements)) {\n            data.isMoved = true;\n            swiper.allowClick = false;\n            return;\n        }\n    }\n    if (data.allowTouchCallbacks) swiper.emit(\"touchMove\", e);\n    touches.previousX = touches.currentX;\n    touches.previousY = touches.currentY;\n    touches.currentX = pageX;\n    touches.currentY = pageY;\n    const diffX = touches.currentX - touches.startX;\n    const diffY = touches.currentY - touches.startY;\n    if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n    if (typeof data.isScrolling === \"undefined\") {\n        let touchAngle;\n        if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) data.isScrolling = false;\n        else // eslint-disable-next-line\n        if (diffX * diffX + diffY * diffY >= 25) {\n            touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n            data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n        }\n    }\n    if (data.isScrolling) swiper.emit(\"touchMoveOpposite\", e);\n    if (typeof data.startMoving === \"undefined\") {\n        if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) data.startMoving = true;\n    }\n    if (data.isScrolling || e.type === \"touchmove\" && data.preventTouchMoveFromPointerMove) {\n        data.isTouched = false;\n        return;\n    }\n    if (!data.startMoving) return;\n    swiper.allowClick = false;\n    if (!params.cssMode && e.cancelable) e.preventDefault();\n    if (params.touchMoveStopPropagation && !params.nested) e.stopPropagation();\n    let diff = swiper.isHorizontal() ? diffX : diffY;\n    let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n    if (params.oneWayMovement) {\n        diff = Math.abs(diff) * (rtl ? 1 : -1);\n        touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n    }\n    touches.diff = diff;\n    diff *= params.touchRatio;\n    if (rtl) {\n        diff = -diff;\n        touchesDiff = -touchesDiff;\n    }\n    const prevTouchesDirection = swiper.touchesDirection;\n    swiper.swipeDirection = diff > 0 ? \"prev\" : \"next\";\n    swiper.touchesDirection = touchesDiff > 0 ? \"prev\" : \"next\";\n    const isLoop = swiper.params.loop && !params.cssMode;\n    const allowLoopFix = swiper.touchesDirection === \"next\" && swiper.allowSlideNext || swiper.touchesDirection === \"prev\" && swiper.allowSlidePrev;\n    if (!data.isMoved) {\n        if (isLoop && allowLoopFix) swiper.loopFix({\n            direction: swiper.swipeDirection\n        });\n        data.startTranslate = swiper.getTranslate();\n        swiper.setTransition(0);\n        if (swiper.animating) {\n            const evt = new window.CustomEvent(\"transitionend\", {\n                bubbles: true,\n                cancelable: true,\n                detail: {\n                    bySwiperTouchMove: true\n                }\n            });\n            swiper.wrapperEl.dispatchEvent(evt);\n        }\n        data.allowMomentumBounce = false;\n        // Grab Cursor\n        if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) swiper.setGrabCursor(true);\n        swiper.emit(\"sliderFirstMove\", e);\n    }\n    let loopFixed;\n    new Date().getTime();\n    if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n        Object.assign(touches, {\n            startX: pageX,\n            startY: pageY,\n            currentX: pageX,\n            currentY: pageY,\n            startTranslate: data.currentTranslate\n        });\n        data.loopSwapReset = true;\n        data.startTranslate = data.currentTranslate;\n        return;\n    }\n    swiper.emit(\"sliderMove\", e);\n    data.isMoved = true;\n    data.currentTranslate = diff + data.startTranslate;\n    let disableParentSwiper = true;\n    let resistanceRatio = params.resistanceRatio;\n    if (params.touchReleaseOnEdges) resistanceRatio = 0;\n    if (diff > 0) {\n        if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) swiper.loopFix({\n            direction: \"prev\",\n            setTranslate: true,\n            activeSlideIndex: 0\n        });\n        if (data.currentTranslate > swiper.minTranslate()) {\n            disableParentSwiper = false;\n            if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n        }\n    } else if (diff < 0) {\n        if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) swiper.loopFix({\n            direction: \"next\",\n            setTranslate: true,\n            activeSlideIndex: swiper.slides.length - (params.slidesPerView === \"auto\" ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n        });\n        if (data.currentTranslate < swiper.maxTranslate()) {\n            disableParentSwiper = false;\n            if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n        }\n    }\n    if (disableParentSwiper) e.preventedByNestedSwiper = true;\n    // Directions locks\n    if (!swiper.allowSlideNext && swiper.swipeDirection === \"next\" && data.currentTranslate < data.startTranslate) data.currentTranslate = data.startTranslate;\n    if (!swiper.allowSlidePrev && swiper.swipeDirection === \"prev\" && data.currentTranslate > data.startTranslate) data.currentTranslate = data.startTranslate;\n    if (!swiper.allowSlidePrev && !swiper.allowSlideNext) data.currentTranslate = data.startTranslate;\n    // Threshold\n    if (params.threshold > 0) {\n        if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n            if (!data.allowThresholdMove) {\n                data.allowThresholdMove = true;\n                touches.startX = touches.currentX;\n                touches.startY = touches.currentY;\n                data.currentTranslate = data.startTranslate;\n                touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n                return;\n            }\n        } else {\n            data.currentTranslate = data.startTranslate;\n            return;\n        }\n    }\n    if (!params.followFinger || params.cssMode) return;\n    // Update active index in free mode\n    if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n    }\n    if (params.freeMode && params.freeMode.enabled && swiper.freeMode) swiper.freeMode.onTouchMove();\n    // Update progress\n    swiper.updateProgress(data.currentTranslate);\n    // Update translate\n    swiper.setTranslate(data.currentTranslate);\n}\nfunction $6946bfb4689eabba$var$onTouchEnd(event) {\n    const swiper = this;\n    const data = swiper.touchEventsData;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent;\n    let targetTouch;\n    const isTouchEvent = e.type === \"touchend\" || e.type === \"touchcancel\";\n    if (!isTouchEvent) {\n        if (data.touchId !== null) return; // return from pointer if we use touch\n        if (e.pointerId !== data.pointerId) return;\n        targetTouch = e;\n    } else {\n        targetTouch = [\n            ...e.changedTouches\n        ].filter((t)=>t.identifier === data.touchId)[0];\n        if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n    }\n    if ([\n        \"pointercancel\",\n        \"pointerout\",\n        \"pointerleave\",\n        \"contextmenu\"\n    ].includes(e.type)) {\n        const proceed = [\n            \"pointercancel\",\n            \"contextmenu\"\n        ].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n        if (!proceed) return;\n    }\n    data.pointerId = null;\n    data.touchId = null;\n    const { params: params, touches: touches, rtlTranslate: rtl, slidesGrid: slidesGrid, enabled: enabled } = swiper;\n    if (!enabled) return;\n    if (!params.simulateTouch && e.pointerType === \"mouse\") return;\n    if (data.allowTouchCallbacks) swiper.emit(\"touchEnd\", e);\n    data.allowTouchCallbacks = false;\n    if (!data.isTouched) {\n        if (data.isMoved && params.grabCursor) swiper.setGrabCursor(false);\n        data.isMoved = false;\n        data.startMoving = false;\n        return;\n    }\n    // Return Grab Cursor\n    if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) swiper.setGrabCursor(false);\n    // Time diff\n    const touchEndTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n    const timeDiff = touchEndTime - data.touchStartTime;\n    // Tap, doubleTap, Click\n    if (swiper.allowClick) {\n        const pathTree = e.path || e.composedPath && e.composedPath();\n        swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n        swiper.emit(\"tap click\", e);\n        if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) swiper.emit(\"doubleTap doubleClick\", e);\n    }\n    data.lastClickTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n    (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n        if (!swiper.destroyed) swiper.allowClick = true;\n    });\n    if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n        data.isTouched = false;\n        data.isMoved = false;\n        data.startMoving = false;\n        return;\n    }\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    let currentPos;\n    if (params.followFinger) currentPos = rtl ? swiper.translate : -swiper.translate;\n    else currentPos = -data.currentTranslate;\n    if (params.cssMode) return;\n    if (params.freeMode && params.freeMode.enabled) {\n        swiper.freeMode.onTouchEnd({\n            currentPos: currentPos\n        });\n        return;\n    }\n    // Find current slide\n    const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n    let stopIndex = 0;\n    let groupSize = swiper.slidesSizesGrid[0];\n    for(let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup){\n        const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n        if (typeof slidesGrid[i + increment] !== \"undefined\") {\n            if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n                stopIndex = i;\n                groupSize = slidesGrid[i + increment] - slidesGrid[i];\n            }\n        } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n            stopIndex = i;\n            groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n        }\n    }\n    let rewindFirstIndex = null;\n    let rewindLastIndex = null;\n    if (params.rewind) {\n        if (swiper.isBeginning) rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n        else if (swiper.isEnd) rewindFirstIndex = 0;\n    }\n    // Find current slide size\n    const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n    const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (timeDiff > params.longSwipesMs) {\n        // Long touches\n        if (!params.longSwipes) {\n            swiper.slideTo(swiper.activeIndex);\n            return;\n        }\n        if (swiper.swipeDirection === \"next\") {\n            if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);\n            else swiper.slideTo(stopIndex);\n        }\n        if (swiper.swipeDirection === \"prev\") {\n            if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n            else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) swiper.slideTo(rewindLastIndex);\n            else swiper.slideTo(stopIndex);\n        }\n    } else {\n        // Short swipes\n        if (!params.shortSwipes) {\n            swiper.slideTo(swiper.activeIndex);\n            return;\n        }\n        const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n        if (!isNavButtonTarget) {\n            if (swiper.swipeDirection === \"next\") swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n            if (swiper.swipeDirection === \"prev\") swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n        } else if (e.target === swiper.navigation.nextEl) swiper.slideTo(stopIndex + increment);\n        else swiper.slideTo(stopIndex);\n    }\n}\nfunction $6946bfb4689eabba$var$onResize() {\n    const swiper = this;\n    const { params: params, el: el } = swiper;\n    if (el && el.offsetWidth === 0) return;\n    // Breakpoints\n    if (params.breakpoints) swiper.setBreakpoint();\n    // Save locks\n    const { allowSlideNext: allowSlideNext, allowSlidePrev: allowSlidePrev, snapGrid: snapGrid } = swiper;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    // Disable locks on resize\n    swiper.allowSlideNext = true;\n    swiper.allowSlidePrev = true;\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateSlidesClasses();\n    const isVirtualLoop = isVirtual && params.loop;\n    if ((params.slidesPerView === \"auto\" || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n    else if (swiper.params.loop && !isVirtual) swiper.slideToLoop(swiper.realIndex, 0, false, true);\n    else swiper.slideTo(swiper.activeIndex, 0, false, true);\n    if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        clearTimeout(swiper.autoplay.resizeTimeout);\n        swiper.autoplay.resizeTimeout = setTimeout(()=>{\n            if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) swiper.autoplay.resume();\n        }, 500);\n    }\n    // Return locks after resize\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) swiper.checkOverflow();\n}\nfunction $6946bfb4689eabba$var$onClick(e) {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    if (!swiper.allowClick) {\n        if (swiper.params.preventClicks) e.preventDefault();\n        if (swiper.params.preventClicksPropagation && swiper.animating) {\n            e.stopPropagation();\n            e.stopImmediatePropagation();\n        }\n    }\n}\nfunction $6946bfb4689eabba$var$onScroll() {\n    const swiper = this;\n    const { wrapperEl: wrapperEl, rtlTranslate: rtlTranslate, enabled: enabled } = swiper;\n    if (!enabled) return;\n    swiper.previousTranslate = swiper.translate;\n    if (swiper.isHorizontal()) swiper.translate = -wrapperEl.scrollLeft;\n    else swiper.translate = -wrapperEl.scrollTop;\n    // eslint-disable-next-line\n    if (swiper.translate === 0) swiper.translate = 0;\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n    let newProgress;\n    const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n    if (translatesDiff === 0) newProgress = 0;\n    else newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n    if (newProgress !== swiper.progress) swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n    swiper.emit(\"setTranslate\", swiper.translate, false);\n}\nfunction $6946bfb4689eabba$var$onLoad(e) {\n    const swiper = this;\n    $6946bfb4689eabba$var$processLazyPreloader(swiper, e.target);\n    if (swiper.params.cssMode || swiper.params.slidesPerView !== \"auto\" && !swiper.params.autoHeight) return;\n    swiper.update();\n}\nfunction $6946bfb4689eabba$var$onDocumentTouchStart() {\n    const swiper = this;\n    if (swiper.documentTouchHandlerProceeded) return;\n    swiper.documentTouchHandlerProceeded = true;\n    if (swiper.params.touchReleaseOnEdges) swiper.el.style.touchAction = \"auto\";\n}\nconst $6946bfb4689eabba$var$events = (swiper, method)=>{\n    const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const { params: params, el: el, wrapperEl: wrapperEl, device: device } = swiper;\n    const capture = !!params.nested;\n    const domMethod = method === \"on\" ? \"addEventListener\" : \"removeEventListener\";\n    const swiperMethod = method;\n    if (!el || typeof el === \"string\") return;\n    // Touch Events\n    document1[domMethod](\"touchstart\", swiper.onDocumentTouchStart, {\n        passive: false,\n        capture: capture\n    });\n    el[domMethod](\"touchstart\", swiper.onTouchStart, {\n        passive: false\n    });\n    el[domMethod](\"pointerdown\", swiper.onTouchStart, {\n        passive: false\n    });\n    document1[domMethod](\"touchmove\", swiper.onTouchMove, {\n        passive: false,\n        capture: capture\n    });\n    document1[domMethod](\"pointermove\", swiper.onTouchMove, {\n        passive: false,\n        capture: capture\n    });\n    document1[domMethod](\"touchend\", swiper.onTouchEnd, {\n        passive: true\n    });\n    document1[domMethod](\"pointerup\", swiper.onTouchEnd, {\n        passive: true\n    });\n    document1[domMethod](\"pointercancel\", swiper.onTouchEnd, {\n        passive: true\n    });\n    document1[domMethod](\"touchcancel\", swiper.onTouchEnd, {\n        passive: true\n    });\n    document1[domMethod](\"pointerout\", swiper.onTouchEnd, {\n        passive: true\n    });\n    document1[domMethod](\"pointerleave\", swiper.onTouchEnd, {\n        passive: true\n    });\n    document1[domMethod](\"contextmenu\", swiper.onTouchEnd, {\n        passive: true\n    });\n    // Prevent Links Clicks\n    if (params.preventClicks || params.preventClicksPropagation) el[domMethod](\"click\", swiper.onClick, true);\n    if (params.cssMode) wrapperEl[domMethod](\"scroll\", swiper.onScroll);\n    // Resize handler\n    if (params.updateOnWindowResize) swiper[swiperMethod](device.ios || device.android ? \"resize orientationchange observerUpdate\" : \"resize observerUpdate\", $6946bfb4689eabba$var$onResize, true);\n    else swiper[swiperMethod](\"observerUpdate\", $6946bfb4689eabba$var$onResize, true);\n    // Images loader\n    el[domMethod](\"load\", swiper.onLoad, {\n        capture: true\n    });\n};\nfunction $6946bfb4689eabba$var$attachEvents() {\n    const swiper = this;\n    const { params: params } = swiper;\n    swiper.onTouchStart = $6946bfb4689eabba$var$onTouchStart.bind(swiper);\n    swiper.onTouchMove = $6946bfb4689eabba$var$onTouchMove.bind(swiper);\n    swiper.onTouchEnd = $6946bfb4689eabba$var$onTouchEnd.bind(swiper);\n    swiper.onDocumentTouchStart = $6946bfb4689eabba$var$onDocumentTouchStart.bind(swiper);\n    if (params.cssMode) swiper.onScroll = $6946bfb4689eabba$var$onScroll.bind(swiper);\n    swiper.onClick = $6946bfb4689eabba$var$onClick.bind(swiper);\n    swiper.onLoad = $6946bfb4689eabba$var$onLoad.bind(swiper);\n    $6946bfb4689eabba$var$events(swiper, \"on\");\n}\nfunction $6946bfb4689eabba$var$detachEvents() {\n    const swiper = this;\n    $6946bfb4689eabba$var$events(swiper, \"off\");\n}\nvar $6946bfb4689eabba$var$events$1 = {\n    attachEvents: $6946bfb4689eabba$var$attachEvents,\n    detachEvents: $6946bfb4689eabba$var$detachEvents\n};\nconst $6946bfb4689eabba$var$isGridEnabled = (swiper, params)=>{\n    return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction $6946bfb4689eabba$var$setBreakpoint() {\n    const swiper = this;\n    const { realIndex: realIndex, initialized: initialized, params: params, el: el } = swiper;\n    const breakpoints = params.breakpoints;\n    if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n    // Get breakpoint for window width and update parameters\n    const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n    if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n    const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n    const wasMultiRow = $6946bfb4689eabba$var$isGridEnabled(swiper, params);\n    const isMultiRow = $6946bfb4689eabba$var$isGridEnabled(swiper, breakpointParams);\n    const wasGrabCursor = swiper.params.grabCursor;\n    const isGrabCursor = breakpointParams.grabCursor;\n    const wasEnabled = params.enabled;\n    if (wasMultiRow && !isMultiRow) {\n        el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n        swiper.emitContainerClasses();\n    } else if (!wasMultiRow && isMultiRow) {\n        el.classList.add(`${params.containerModifierClass}grid`);\n        if (breakpointParams.grid.fill && breakpointParams.grid.fill === \"column\" || !breakpointParams.grid.fill && params.grid.fill === \"column\") el.classList.add(`${params.containerModifierClass}grid-column`);\n        swiper.emitContainerClasses();\n    }\n    if (wasGrabCursor && !isGrabCursor) swiper.unsetGrabCursor();\n    else if (!wasGrabCursor && isGrabCursor) swiper.setGrabCursor();\n    // Toggle navigation, pagination, scrollbar\n    [\n        \"navigation\",\n        \"pagination\",\n        \"scrollbar\"\n    ].forEach((prop)=>{\n        if (typeof breakpointParams[prop] === \"undefined\") return;\n        const wasModuleEnabled = params[prop] && params[prop].enabled;\n        const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n        if (wasModuleEnabled && !isModuleEnabled) swiper[prop].disable();\n        if (!wasModuleEnabled && isModuleEnabled) swiper[prop].enable();\n    });\n    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n    const wasLoop = params.loop;\n    if (directionChanged && initialized) swiper.changeDirection();\n    (0, $3e0e2b092da8f124$export$efccba1c4a2ef57b)(swiper.params, breakpointParams);\n    const isEnabled = swiper.params.enabled;\n    const hasLoop = swiper.params.loop;\n    Object.assign(swiper, {\n        allowTouchMove: swiper.params.allowTouchMove,\n        allowSlideNext: swiper.params.allowSlideNext,\n        allowSlidePrev: swiper.params.allowSlidePrev\n    });\n    if (wasEnabled && !isEnabled) swiper.disable();\n    else if (!wasEnabled && isEnabled) swiper.enable();\n    swiper.currentBreakpoint = breakpoint;\n    swiper.emit(\"_beforeBreakpoint\", breakpointParams);\n    if (initialized) {\n        if (needsReLoop) {\n            swiper.loopDestroy();\n            swiper.loopCreate(realIndex);\n            swiper.updateSlides();\n        } else if (!wasLoop && hasLoop) {\n            swiper.loopCreate(realIndex);\n            swiper.updateSlides();\n        } else if (wasLoop && !hasLoop) swiper.loopDestroy();\n    }\n    swiper.emit(\"breakpoint\", breakpointParams);\n}\nfunction $6946bfb4689eabba$var$getBreakpoint(breakpoints, base, containerEl) {\n    if (base === void 0) base = \"window\";\n    if (!breakpoints || base === \"container\" && !containerEl) return undefined;\n    let breakpoint = false;\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const currentHeight = base === \"window\" ? window1.innerHeight : containerEl.clientHeight;\n    const points = Object.keys(breakpoints).map((point)=>{\n        if (typeof point === \"string\" && point.indexOf(\"@\") === 0) {\n            const minRatio = parseFloat(point.substr(1));\n            const value = currentHeight * minRatio;\n            return {\n                value: value,\n                point: point\n            };\n        }\n        return {\n            value: point,\n            point: point\n        };\n    });\n    points.sort((a, b)=>parseInt(a.value, 10) - parseInt(b.value, 10));\n    for(let i = 0; i < points.length; i += 1){\n        const { point: point, value: value } = points[i];\n        if (base === \"window\") {\n            if (window1.matchMedia(`(min-width: ${value}px)`).matches) breakpoint = point;\n        } else if (value <= containerEl.clientWidth) breakpoint = point;\n    }\n    return breakpoint || \"max\";\n}\nvar $6946bfb4689eabba$var$breakpoints = {\n    setBreakpoint: $6946bfb4689eabba$var$setBreakpoint,\n    getBreakpoint: $6946bfb4689eabba$var$getBreakpoint\n};\nfunction $6946bfb4689eabba$var$prepareClasses(entries, prefix) {\n    const resultClasses = [];\n    entries.forEach((item)=>{\n        if (typeof item === \"object\") Object.keys(item).forEach((classNames)=>{\n            if (item[classNames]) resultClasses.push(prefix + classNames);\n        });\n        else if (typeof item === \"string\") resultClasses.push(prefix + item);\n    });\n    return resultClasses;\n}\nfunction $6946bfb4689eabba$var$addClasses() {\n    const swiper = this;\n    const { classNames: classNames, params: params, rtl: rtl, el: el, device: device } = swiper;\n    // prettier-ignore\n    const suffixes = $6946bfb4689eabba$var$prepareClasses([\n        \"initialized\",\n        params.direction,\n        {\n            \"free-mode\": swiper.params.freeMode && params.freeMode.enabled\n        },\n        {\n            \"autoheight\": params.autoHeight\n        },\n        {\n            \"rtl\": rtl\n        },\n        {\n            \"grid\": params.grid && params.grid.rows > 1\n        },\n        {\n            \"grid-column\": params.grid && params.grid.rows > 1 && params.grid.fill === \"column\"\n        },\n        {\n            \"android\": device.android\n        },\n        {\n            \"ios\": device.ios\n        },\n        {\n            \"css-mode\": params.cssMode\n        },\n        {\n            \"centered\": params.cssMode && params.centeredSlides\n        },\n        {\n            \"watch-progress\": params.watchSlidesProgress\n        }\n    ], params.containerModifierClass);\n    classNames.push(...suffixes);\n    el.classList.add(...classNames);\n    swiper.emitContainerClasses();\n}\nfunction $6946bfb4689eabba$var$removeClasses() {\n    const swiper = this;\n    const { el: el, classNames: classNames } = swiper;\n    if (!el || typeof el === \"string\") return;\n    el.classList.remove(...classNames);\n    swiper.emitContainerClasses();\n}\nvar $6946bfb4689eabba$var$classes = {\n    addClasses: $6946bfb4689eabba$var$addClasses,\n    removeClasses: $6946bfb4689eabba$var$removeClasses\n};\nfunction $6946bfb4689eabba$var$checkOverflow() {\n    const swiper = this;\n    const { isLocked: wasLocked, params: params } = swiper;\n    const { slidesOffsetBefore: slidesOffsetBefore } = params;\n    if (slidesOffsetBefore) {\n        const lastSlideIndex = swiper.slides.length - 1;\n        const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n        swiper.isLocked = swiper.size > lastSlideRightEdge;\n    } else swiper.isLocked = swiper.snapGrid.length === 1;\n    if (params.allowSlideNext === true) swiper.allowSlideNext = !swiper.isLocked;\n    if (params.allowSlidePrev === true) swiper.allowSlidePrev = !swiper.isLocked;\n    if (wasLocked && wasLocked !== swiper.isLocked) swiper.isEnd = false;\n    if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? \"lock\" : \"unlock\");\n}\nvar $6946bfb4689eabba$var$checkOverflow$1 = {\n    checkOverflow: $6946bfb4689eabba$var$checkOverflow\n};\nvar $6946bfb4689eabba$export$4368d992c4eafac0 = {\n    init: true,\n    direction: \"horizontal\",\n    oneWayMovement: false,\n    swiperElementNodeName: \"SWIPER-CONTAINER\",\n    touchEventsTarget: \"wrapper\",\n    initialSlide: 0,\n    speed: 300,\n    cssMode: false,\n    updateOnWindowResize: true,\n    resizeObserver: true,\n    nested: false,\n    createElements: false,\n    eventsPrefix: \"swiper\",\n    enabled: true,\n    focusableElements: \"input, select, option, textarea, button, video, label\",\n    // Overrides\n    width: null,\n    height: null,\n    //\n    preventInteractionOnTransition: false,\n    // ssr\n    userAgent: null,\n    url: null,\n    // To support iOS's swipe-to-go-back gesture (when being used in-app).\n    edgeSwipeDetection: false,\n    edgeSwipeThreshold: 20,\n    // Autoheight\n    autoHeight: false,\n    // Set wrapper width\n    setWrapperSize: false,\n    // Virtual Translate\n    virtualTranslate: false,\n    // Effects\n    effect: \"slide\",\n    // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n    // Breakpoints\n    breakpoints: undefined,\n    breakpointsBase: \"window\",\n    // Slides grid\n    spaceBetween: 0,\n    slidesPerView: 1,\n    slidesPerGroup: 1,\n    slidesPerGroupSkip: 0,\n    slidesPerGroupAuto: false,\n    centeredSlides: false,\n    centeredSlidesBounds: false,\n    slidesOffsetBefore: 0,\n    // in px\n    slidesOffsetAfter: 0,\n    // in px\n    normalizeSlideIndex: true,\n    centerInsufficientSlides: false,\n    // Disable swiper and hide navigation when container not overflow\n    watchOverflow: true,\n    // Round length\n    roundLengths: false,\n    // Touches\n    touchRatio: 1,\n    touchAngle: 45,\n    simulateTouch: true,\n    shortSwipes: true,\n    longSwipes: true,\n    longSwipesRatio: 0.5,\n    longSwipesMs: 300,\n    followFinger: true,\n    allowTouchMove: true,\n    threshold: 5,\n    touchMoveStopPropagation: false,\n    touchStartPreventDefault: true,\n    touchStartForcePreventDefault: false,\n    touchReleaseOnEdges: false,\n    // Unique Navigation Elements\n    uniqueNavElements: true,\n    // Resistance\n    resistance: true,\n    resistanceRatio: 0.85,\n    // Progress\n    watchSlidesProgress: false,\n    // Cursor\n    grabCursor: false,\n    // Clicks\n    preventClicks: true,\n    preventClicksPropagation: true,\n    slideToClickedSlide: false,\n    // loop\n    loop: false,\n    loopAddBlankSlides: true,\n    loopAdditionalSlides: 0,\n    loopPreventsSliding: true,\n    // rewind\n    rewind: false,\n    // Swiping/no swiping\n    allowSlidePrev: true,\n    allowSlideNext: true,\n    swipeHandler: null,\n    // '.swipe-handler',\n    noSwiping: true,\n    noSwipingClass: \"swiper-no-swiping\",\n    noSwipingSelector: null,\n    // Passive Listeners\n    passiveListeners: true,\n    maxBackfaceHiddenSlides: 10,\n    // NS\n    containerModifierClass: \"swiper-\",\n    // NEW\n    slideClass: \"swiper-slide\",\n    slideBlankClass: \"swiper-slide-blank\",\n    slideActiveClass: \"swiper-slide-active\",\n    slideVisibleClass: \"swiper-slide-visible\",\n    slideFullyVisibleClass: \"swiper-slide-fully-visible\",\n    slideNextClass: \"swiper-slide-next\",\n    slidePrevClass: \"swiper-slide-prev\",\n    wrapperClass: \"swiper-wrapper\",\n    lazyPreloaderClass: \"swiper-lazy-preloader\",\n    lazyPreloadPrevNext: 0,\n    // Callbacks\n    runCallbacksOnInit: true,\n    // Internals\n    _emitClasses: false\n};\nfunction $6946bfb4689eabba$var$moduleExtendParams(params, allModulesParams) {\n    return function extendParams(obj) {\n        if (obj === void 0) obj = {};\n        const moduleParamName = Object.keys(obj)[0];\n        const moduleParams = obj[moduleParamName];\n        if (typeof moduleParams !== \"object\" || moduleParams === null) {\n            (0, $3e0e2b092da8f124$export$efccba1c4a2ef57b)(allModulesParams, obj);\n            return;\n        }\n        if (params[moduleParamName] === true) params[moduleParamName] = {\n            enabled: true\n        };\n        if (moduleParamName === \"navigation\" && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) params[moduleParamName].auto = true;\n        if ([\n            \"pagination\",\n            \"scrollbar\"\n        ].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) params[moduleParamName].auto = true;\n        if (!(moduleParamName in params && \"enabled\" in moduleParams)) {\n            (0, $3e0e2b092da8f124$export$efccba1c4a2ef57b)(allModulesParams, obj);\n            return;\n        }\n        if (typeof params[moduleParamName] === \"object\" && !(\"enabled\" in params[moduleParamName])) params[moduleParamName].enabled = true;\n        if (!params[moduleParamName]) params[moduleParamName] = {\n            enabled: false\n        };\n        (0, $3e0e2b092da8f124$export$efccba1c4a2ef57b)(allModulesParams, obj);\n    };\n}\n/* eslint no-param-reassign: \"off\" */ const $6946bfb4689eabba$var$prototypes = {\n    eventsEmitter: $6946bfb4689eabba$var$eventsEmitter,\n    update: $6946bfb4689eabba$var$update,\n    translate: $6946bfb4689eabba$var$translate,\n    transition: $6946bfb4689eabba$var$transition,\n    slide: $6946bfb4689eabba$var$slide,\n    loop: $6946bfb4689eabba$var$loop,\n    grabCursor: $6946bfb4689eabba$var$grabCursor,\n    events: $6946bfb4689eabba$var$events$1,\n    breakpoints: $6946bfb4689eabba$var$breakpoints,\n    checkOverflow: $6946bfb4689eabba$var$checkOverflow$1,\n    classes: $6946bfb4689eabba$var$classes\n};\nconst $6946bfb4689eabba$var$extendedDefaults = {};\nclass $6946bfb4689eabba$export$25ce5a424b770e84 {\n    constructor(){\n        let el;\n        let params;\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n        if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === \"Object\") params = args[0];\n        else [el, params] = args;\n        if (!params) params = {};\n        params = (0, $3e0e2b092da8f124$export$efccba1c4a2ef57b)({}, params);\n        if (el && !params.el) params.el = el;\n        const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n        if (params.el && typeof params.el === \"string\" && document1.querySelectorAll(params.el).length > 1) {\n            const swipers = [];\n            document1.querySelectorAll(params.el).forEach((containerEl)=>{\n                const newParams = (0, $3e0e2b092da8f124$export$efccba1c4a2ef57b)({}, params, {\n                    el: containerEl\n                });\n                swipers.push(new $6946bfb4689eabba$export$25ce5a424b770e84(newParams));\n            });\n            // eslint-disable-next-line no-constructor-return\n            return swipers;\n        }\n        // Swiper Instance\n        const swiper = this;\n        swiper.__swiper__ = true;\n        swiper.support = $6946bfb4689eabba$var$getSupport();\n        swiper.device = $6946bfb4689eabba$var$getDevice({\n            userAgent: params.userAgent\n        });\n        swiper.browser = $6946bfb4689eabba$var$getBrowser();\n        swiper.eventsListeners = {};\n        swiper.eventsAnyListeners = [];\n        swiper.modules = [\n            ...swiper.__modules__\n        ];\n        if (params.modules && Array.isArray(params.modules)) swiper.modules.push(...params.modules);\n        const allModulesParams = {};\n        swiper.modules.forEach((mod)=>{\n            mod({\n                params: params,\n                swiper: swiper,\n                extendParams: $6946bfb4689eabba$var$moduleExtendParams(params, allModulesParams),\n                on: swiper.on.bind(swiper),\n                once: swiper.once.bind(swiper),\n                off: swiper.off.bind(swiper),\n                emit: swiper.emit.bind(swiper)\n            });\n        });\n        // Extend defaults with modules params\n        const swiperParams = (0, $3e0e2b092da8f124$export$efccba1c4a2ef57b)({}, $6946bfb4689eabba$export$4368d992c4eafac0, allModulesParams);\n        // Extend defaults with passed params\n        swiper.params = (0, $3e0e2b092da8f124$export$efccba1c4a2ef57b)({}, swiperParams, $6946bfb4689eabba$var$extendedDefaults, params);\n        swiper.originalParams = (0, $3e0e2b092da8f124$export$efccba1c4a2ef57b)({}, swiper.params);\n        swiper.passedParams = (0, $3e0e2b092da8f124$export$efccba1c4a2ef57b)({}, params);\n        // add event listeners\n        if (swiper.params && swiper.params.on) Object.keys(swiper.params.on).forEach((eventName)=>{\n            swiper.on(eventName, swiper.params.on[eventName]);\n        });\n        if (swiper.params && swiper.params.onAny) swiper.onAny(swiper.params.onAny);\n        // Extend Swiper\n        Object.assign(swiper, {\n            enabled: swiper.params.enabled,\n            el: el,\n            // Classes\n            classNames: [],\n            // Slides\n            slides: [],\n            slidesGrid: [],\n            snapGrid: [],\n            slidesSizesGrid: [],\n            // isDirection\n            isHorizontal () {\n                return swiper.params.direction === \"horizontal\";\n            },\n            isVertical () {\n                return swiper.params.direction === \"vertical\";\n            },\n            // Indexes\n            activeIndex: 0,\n            realIndex: 0,\n            //\n            isBeginning: true,\n            isEnd: false,\n            // Props\n            translate: 0,\n            previousTranslate: 0,\n            progress: 0,\n            velocity: 0,\n            animating: false,\n            cssOverflowAdjustment () {\n                // Returns 0 unless `translate` is > 2**23\n                // Should be subtracted from css values to prevent overflow\n                return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n            },\n            // Locks\n            allowSlideNext: swiper.params.allowSlideNext,\n            allowSlidePrev: swiper.params.allowSlidePrev,\n            // Touch Events\n            touchEventsData: {\n                isTouched: undefined,\n                isMoved: undefined,\n                allowTouchCallbacks: undefined,\n                touchStartTime: undefined,\n                isScrolling: undefined,\n                currentTranslate: undefined,\n                startTranslate: undefined,\n                allowThresholdMove: undefined,\n                // Form elements to match\n                focusableElements: swiper.params.focusableElements,\n                // Last click time\n                lastClickTime: 0,\n                clickTimeout: undefined,\n                // Velocities\n                velocities: [],\n                allowMomentumBounce: undefined,\n                startMoving: undefined,\n                pointerId: null,\n                touchId: null\n            },\n            // Clicks\n            allowClick: true,\n            // Touches\n            allowTouchMove: swiper.params.allowTouchMove,\n            touches: {\n                startX: 0,\n                startY: 0,\n                currentX: 0,\n                currentY: 0,\n                diff: 0\n            },\n            // Images\n            imagesToLoad: [],\n            imagesLoaded: 0\n        });\n        swiper.emit(\"_swiper\");\n        // Init\n        if (swiper.params.init) swiper.init();\n        // Return app instance\n        // eslint-disable-next-line no-constructor-return\n        return swiper;\n    }\n    getDirectionLabel(property) {\n        if (this.isHorizontal()) return property;\n        // prettier-ignore\n        return ({\n            \"width\": \"height\",\n            \"margin-top\": \"margin-left\",\n            \"margin-bottom \": \"margin-right\",\n            \"margin-left\": \"margin-top\",\n            \"margin-right\": \"margin-bottom\",\n            \"padding-left\": \"padding-top\",\n            \"padding-right\": \"padding-bottom\",\n            \"marginRight\": \"marginBottom\"\n        })[property];\n    }\n    getSlideIndex(slideEl) {\n        const { slidesEl: slidesEl, params: params } = this;\n        const slides = (0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`);\n        const firstSlideIndex = (0, $3e0e2b092da8f124$export$dda1d9f60106f0e9)(slides[0]);\n        return (0, $3e0e2b092da8f124$export$dda1d9f60106f0e9)(slideEl) - firstSlideIndex;\n    }\n    getSlideIndexByData(index) {\n        return this.getSlideIndex(this.slides.filter((slideEl)=>slideEl.getAttribute(\"data-swiper-slide-index\") * 1 === index)[0]);\n    }\n    recalcSlides() {\n        const swiper = this;\n        const { slidesEl: slidesEl, params: params } = swiper;\n        swiper.slides = (0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`);\n    }\n    enable() {\n        const swiper = this;\n        if (swiper.enabled) return;\n        swiper.enabled = true;\n        if (swiper.params.grabCursor) swiper.setGrabCursor();\n        swiper.emit(\"enable\");\n    }\n    disable() {\n        const swiper = this;\n        if (!swiper.enabled) return;\n        swiper.enabled = false;\n        if (swiper.params.grabCursor) swiper.unsetGrabCursor();\n        swiper.emit(\"disable\");\n    }\n    setProgress(progress, speed) {\n        const swiper = this;\n        progress = Math.min(Math.max(progress, 0), 1);\n        const min = swiper.minTranslate();\n        const max = swiper.maxTranslate();\n        const current = (max - min) * progress + min;\n        swiper.translateTo(current, typeof speed === \"undefined\" ? 0 : speed);\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n    }\n    emitContainerClasses() {\n        const swiper = this;\n        if (!swiper.params._emitClasses || !swiper.el) return;\n        const cls = swiper.el.className.split(\" \").filter((className)=>{\n            return className.indexOf(\"swiper\") === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n        });\n        swiper.emit(\"_containerClasses\", cls.join(\" \"));\n    }\n    getSlideClasses(slideEl) {\n        const swiper = this;\n        if (swiper.destroyed) return \"\";\n        return slideEl.className.split(\" \").filter((className)=>{\n            return className.indexOf(\"swiper-slide\") === 0 || className.indexOf(swiper.params.slideClass) === 0;\n        }).join(\" \");\n    }\n    emitSlidesClasses() {\n        const swiper = this;\n        if (!swiper.params._emitClasses || !swiper.el) return;\n        const updates = [];\n        swiper.slides.forEach((slideEl)=>{\n            const classNames = swiper.getSlideClasses(slideEl);\n            updates.push({\n                slideEl: slideEl,\n                classNames: classNames\n            });\n            swiper.emit(\"_slideClass\", slideEl, classNames);\n        });\n        swiper.emit(\"_slideClasses\", updates);\n    }\n    slidesPerViewDynamic(view, exact) {\n        if (view === void 0) view = \"current\";\n        if (exact === void 0) exact = false;\n        const swiper = this;\n        const { params: params, slides: slides, slidesGrid: slidesGrid, slidesSizesGrid: slidesSizesGrid, size: swiperSize, activeIndex: activeIndex } = swiper;\n        let spv = 1;\n        if (typeof params.slidesPerView === \"number\") return params.slidesPerView;\n        if (params.centeredSlides) {\n            let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n            let breakLoop;\n            for(let i = activeIndex + 1; i < slides.length; i += 1)if (slides[i] && !breakLoop) {\n                slideSize += Math.ceil(slides[i].swiperSlideSize);\n                spv += 1;\n                if (slideSize > swiperSize) breakLoop = true;\n            }\n            for(let i = activeIndex - 1; i >= 0; i -= 1)if (slides[i] && !breakLoop) {\n                slideSize += slides[i].swiperSlideSize;\n                spv += 1;\n                if (slideSize > swiperSize) breakLoop = true;\n            }\n        } else {\n            // eslint-disable-next-line\n            if (view === \"current\") for(let i = activeIndex + 1; i < slides.length; i += 1){\n                const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n                if (slideInView) spv += 1;\n            }\n            else // previous\n            for(let i = activeIndex - 1; i >= 0; i -= 1){\n                const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n                if (slideInView) spv += 1;\n            }\n        }\n        return spv;\n    }\n    update() {\n        const swiper = this;\n        if (!swiper || swiper.destroyed) return;\n        const { snapGrid: snapGrid, params: params } = swiper;\n        // Breakpoints\n        if (params.breakpoints) swiper.setBreakpoint();\n        [\n            ...swiper.el.querySelectorAll('[loading=\"lazy\"]')\n        ].forEach((imageEl)=>{\n            if (imageEl.complete) $6946bfb4689eabba$var$processLazyPreloader(swiper, imageEl);\n        });\n        swiper.updateSize();\n        swiper.updateSlides();\n        swiper.updateProgress();\n        swiper.updateSlidesClasses();\n        function setTranslate() {\n            const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n            const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n            swiper.setTranslate(newTranslate);\n            swiper.updateActiveIndex();\n            swiper.updateSlidesClasses();\n        }\n        let translated;\n        if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n            setTranslate();\n            if (params.autoHeight) swiper.updateAutoHeight();\n        } else {\n            if ((params.slidesPerView === \"auto\" || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n                const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n                translated = swiper.slideTo(slides.length - 1, 0, false, true);\n            } else translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n            if (!translated) setTranslate();\n        }\n        if (params.watchOverflow && snapGrid !== swiper.snapGrid) swiper.checkOverflow();\n        swiper.emit(\"update\");\n    }\n    changeDirection(newDirection, needUpdate) {\n        if (needUpdate === void 0) needUpdate = true;\n        const swiper = this;\n        const currentDirection = swiper.params.direction;\n        if (!newDirection) // eslint-disable-next-line\n        newDirection = currentDirection === \"horizontal\" ? \"vertical\" : \"horizontal\";\n        if (newDirection === currentDirection || newDirection !== \"horizontal\" && newDirection !== \"vertical\") return swiper;\n        swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n        swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n        swiper.emitContainerClasses();\n        swiper.params.direction = newDirection;\n        swiper.slides.forEach((slideEl)=>{\n            if (newDirection === \"vertical\") slideEl.style.width = \"\";\n            else slideEl.style.height = \"\";\n        });\n        swiper.emit(\"changeDirection\");\n        if (needUpdate) swiper.update();\n        return swiper;\n    }\n    changeLanguageDirection(direction) {\n        const swiper = this;\n        if (swiper.rtl && direction === \"rtl\" || !swiper.rtl && direction === \"ltr\") return;\n        swiper.rtl = direction === \"rtl\";\n        swiper.rtlTranslate = swiper.params.direction === \"horizontal\" && swiper.rtl;\n        if (swiper.rtl) {\n            swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n            swiper.el.dir = \"rtl\";\n        } else {\n            swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n            swiper.el.dir = \"ltr\";\n        }\n        swiper.update();\n    }\n    mount(element) {\n        const swiper = this;\n        if (swiper.mounted) return true;\n        // Find el\n        let el = element || swiper.params.el;\n        if (typeof el === \"string\") el = document.querySelector(el);\n        if (!el) return false;\n        el.swiper = swiper;\n        if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) swiper.isElement = true;\n        const getWrapperSelector = ()=>{\n            return `.${(swiper.params.wrapperClass || \"\").trim().split(\" \").join(\".\")}`;\n        };\n        const getWrapper = ()=>{\n            if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n                const res = el.shadowRoot.querySelector(getWrapperSelector());\n                // Children needs to return slot items\n                return res;\n            }\n            return (0, $3e0e2b092da8f124$export$f1e1789686576879)(el, getWrapperSelector())[0];\n        };\n        // Find Wrapper\n        let wrapperEl = getWrapper();\n        if (!wrapperEl && swiper.params.createElements) {\n            wrapperEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", swiper.params.wrapperClass);\n            el.append(wrapperEl);\n            (0, $3e0e2b092da8f124$export$f1e1789686576879)(el, `.${swiper.params.slideClass}`).forEach((slideEl)=>{\n                wrapperEl.append(slideEl);\n            });\n        }\n        Object.assign(swiper, {\n            el: el,\n            wrapperEl: wrapperEl,\n            slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n            hostEl: swiper.isElement ? el.parentNode.host : el,\n            mounted: true,\n            // RTL\n            rtl: el.dir.toLowerCase() === \"rtl\" || (0, $3e0e2b092da8f124$export$ffb5f4729a158638)(el, \"direction\") === \"rtl\",\n            rtlTranslate: swiper.params.direction === \"horizontal\" && (el.dir.toLowerCase() === \"rtl\" || (0, $3e0e2b092da8f124$export$ffb5f4729a158638)(el, \"direction\") === \"rtl\"),\n            wrongRTL: (0, $3e0e2b092da8f124$export$ffb5f4729a158638)(wrapperEl, \"display\") === \"-webkit-box\"\n        });\n        return true;\n    }\n    init(el) {\n        const swiper = this;\n        if (swiper.initialized) return swiper;\n        const mounted = swiper.mount(el);\n        if (mounted === false) return swiper;\n        swiper.emit(\"beforeInit\");\n        // Set breakpoint\n        if (swiper.params.breakpoints) swiper.setBreakpoint();\n        // Add Classes\n        swiper.addClasses();\n        // Update size\n        swiper.updateSize();\n        // Update slides\n        swiper.updateSlides();\n        if (swiper.params.watchOverflow) swiper.checkOverflow();\n        // Set Grab Cursor\n        if (swiper.params.grabCursor && swiper.enabled) swiper.setGrabCursor();\n        // Slide To Initial Slide\n        if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n        else swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n        // Create loop\n        if (swiper.params.loop) swiper.loopCreate();\n        // Attach events\n        swiper.attachEvents();\n        const lazyElements = [\n            ...swiper.el.querySelectorAll('[loading=\"lazy\"]')\n        ];\n        if (swiper.isElement) lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n        lazyElements.forEach((imageEl)=>{\n            if (imageEl.complete) $6946bfb4689eabba$var$processLazyPreloader(swiper, imageEl);\n            else imageEl.addEventListener(\"load\", (e)=>{\n                $6946bfb4689eabba$var$processLazyPreloader(swiper, e.target);\n            });\n        });\n        $6946bfb4689eabba$var$preload(swiper);\n        // Init Flag\n        swiper.initialized = true;\n        $6946bfb4689eabba$var$preload(swiper);\n        // Emit\n        swiper.emit(\"init\");\n        swiper.emit(\"afterInit\");\n        return swiper;\n    }\n    destroy(deleteInstance, cleanStyles) {\n        if (deleteInstance === void 0) deleteInstance = true;\n        if (cleanStyles === void 0) cleanStyles = true;\n        const swiper = this;\n        const { params: params, el: el, wrapperEl: wrapperEl, slides: slides } = swiper;\n        if (typeof swiper.params === \"undefined\" || swiper.destroyed) return null;\n        swiper.emit(\"beforeDestroy\");\n        // Init Flag\n        swiper.initialized = false;\n        // Detach events\n        swiper.detachEvents();\n        // Destroy loop\n        if (params.loop) swiper.loopDestroy();\n        // Cleanup styles\n        if (cleanStyles) {\n            swiper.removeClasses();\n            if (el && typeof el !== \"string\") el.removeAttribute(\"style\");\n            if (wrapperEl) wrapperEl.removeAttribute(\"style\");\n            if (slides && slides.length) slides.forEach((slideEl)=>{\n                slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n                slideEl.removeAttribute(\"style\");\n                slideEl.removeAttribute(\"data-swiper-slide-index\");\n            });\n        }\n        swiper.emit(\"destroy\");\n        // Detach emitter events\n        Object.keys(swiper.eventsListeners).forEach((eventName)=>{\n            swiper.off(eventName);\n        });\n        if (deleteInstance !== false) {\n            if (swiper.el && typeof swiper.el !== \"string\") swiper.el.swiper = null;\n            (0, $3e0e2b092da8f124$export$d141bba7fdc215a3)(swiper);\n        }\n        swiper.destroyed = true;\n        return null;\n    }\n    static extendDefaults(newDefaults) {\n        (0, $3e0e2b092da8f124$export$efccba1c4a2ef57b)($6946bfb4689eabba$var$extendedDefaults, newDefaults);\n    }\n    static get extendedDefaults() {\n        return $6946bfb4689eabba$var$extendedDefaults;\n    }\n    static get defaults() {\n        return $6946bfb4689eabba$export$4368d992c4eafac0;\n    }\n    static installModule(mod) {\n        if (!$6946bfb4689eabba$export$25ce5a424b770e84.prototype.__modules__) $6946bfb4689eabba$export$25ce5a424b770e84.prototype.__modules__ = [];\n        const modules = $6946bfb4689eabba$export$25ce5a424b770e84.prototype.__modules__;\n        if (typeof mod === \"function\" && modules.indexOf(mod) < 0) modules.push(mod);\n    }\n    static use(module) {\n        if (Array.isArray(module)) {\n            module.forEach((m)=>$6946bfb4689eabba$export$25ce5a424b770e84.installModule(m));\n            return $6946bfb4689eabba$export$25ce5a424b770e84;\n        }\n        $6946bfb4689eabba$export$25ce5a424b770e84.installModule(module);\n        return $6946bfb4689eabba$export$25ce5a424b770e84;\n    }\n}\nObject.keys($6946bfb4689eabba$var$prototypes).forEach((prototypeGroup)=>{\n    Object.keys($6946bfb4689eabba$var$prototypes[prototypeGroup]).forEach((protoMethod)=>{\n        $6946bfb4689eabba$export$25ce5a424b770e84.prototype[protoMethod] = $6946bfb4689eabba$var$prototypes[prototypeGroup][protoMethod];\n    });\n});\n$6946bfb4689eabba$export$25ce5a424b770e84.use([\n    $6946bfb4689eabba$var$Resize,\n    $6946bfb4689eabba$var$Observer\n]);\n\n\n\n\n\n\nfunction $46fa7b324a069045$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    extendParams({\n        virtual: {\n            enabled: false,\n            slides: [],\n            cache: true,\n            renderSlide: null,\n            renderExternal: null,\n            renderExternalUpdate: true,\n            addSlidesBefore: 0,\n            addSlidesAfter: 0\n        }\n    });\n    let cssModeTimeout;\n    const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    swiper.virtual = {\n        cache: {},\n        from: undefined,\n        to: undefined,\n        slides: [],\n        offset: 0,\n        slidesGrid: []\n    };\n    const tempDOM = document.createElement(\"div\");\n    function renderSlide(slide, index) {\n        const params = swiper.params.virtual;\n        if (params.cache && swiper.virtual.cache[index]) return swiper.virtual.cache[index];\n        // eslint-disable-next-line\n        let slideEl;\n        if (params.renderSlide) {\n            slideEl = params.renderSlide.call(swiper, slide, index);\n            if (typeof slideEl === \"string\") {\n                tempDOM.innerHTML = slideEl;\n                slideEl = tempDOM.children[0];\n            }\n        } else if (swiper.isElement) slideEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"swiper-slide\");\n        else slideEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", swiper.params.slideClass);\n        slideEl.setAttribute(\"data-swiper-slide-index\", index);\n        if (!params.renderSlide) slideEl.innerHTML = slide;\n        if (params.cache) swiper.virtual.cache[index] = slideEl;\n        return slideEl;\n    }\n    function update(force, beforeInit) {\n        const { slidesPerView: slidesPerView, slidesPerGroup: slidesPerGroup, centeredSlides: centeredSlides, loop: isLoop, initialSlide: initialSlide } = swiper.params;\n        if (beforeInit && !isLoop && initialSlide > 0) return;\n        const { addSlidesBefore: addSlidesBefore, addSlidesAfter: addSlidesAfter } = swiper.params.virtual;\n        const { from: previousFrom, to: previousTo, slides: slides, slidesGrid: previousSlidesGrid, offset: previousOffset } = swiper.virtual;\n        if (!swiper.params.cssMode) swiper.updateActiveIndex();\n        const activeIndex = swiper.activeIndex || 0;\n        let offsetProp;\n        if (swiper.rtlTranslate) offsetProp = \"right\";\n        else offsetProp = swiper.isHorizontal() ? \"left\" : \"top\";\n        let slidesAfter;\n        let slidesBefore;\n        if (centeredSlides) {\n            slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n            slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n        } else {\n            slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n            slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n        }\n        let from = activeIndex - slidesBefore;\n        let to = activeIndex + slidesAfter;\n        if (!isLoop) {\n            from = Math.max(from, 0);\n            to = Math.min(to, slides.length - 1);\n        }\n        let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n        if (isLoop && activeIndex >= slidesBefore) {\n            from -= slidesBefore;\n            if (!centeredSlides) offset += swiper.slidesGrid[0];\n        } else if (isLoop && activeIndex < slidesBefore) {\n            from = -slidesBefore;\n            if (centeredSlides) offset += swiper.slidesGrid[0];\n        }\n        Object.assign(swiper.virtual, {\n            from: from,\n            to: to,\n            offset: offset,\n            slidesGrid: swiper.slidesGrid,\n            slidesBefore: slidesBefore,\n            slidesAfter: slidesAfter\n        });\n        function onRendered() {\n            swiper.updateSlides();\n            swiper.updateProgress();\n            swiper.updateSlidesClasses();\n            emit(\"virtualUpdate\");\n        }\n        if (previousFrom === from && previousTo === to && !force) {\n            if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) swiper.slides.forEach((slideEl)=>{\n                slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n            });\n            swiper.updateProgress();\n            emit(\"virtualUpdate\");\n            return;\n        }\n        if (swiper.params.virtual.renderExternal) {\n            swiper.params.virtual.renderExternal.call(swiper, {\n                offset: offset,\n                from: from,\n                to: to,\n                slides: function getSlides() {\n                    const slidesToRender = [];\n                    for(let i = from; i <= to; i += 1)slidesToRender.push(slides[i]);\n                    return slidesToRender;\n                }()\n            });\n            if (swiper.params.virtual.renderExternalUpdate) onRendered();\n            else emit(\"virtualUpdate\");\n            return;\n        }\n        const prependIndexes = [];\n        const appendIndexes = [];\n        const getSlideIndex = (index)=>{\n            let slideIndex = index;\n            if (index < 0) slideIndex = slides.length + index;\n            else if (slideIndex >= slides.length) // eslint-disable-next-line\n            slideIndex = slideIndex - slides.length;\n            return slideIndex;\n        };\n        if (force) swiper.slides.filter((el)=>el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach((slideEl)=>{\n            slideEl.remove();\n        });\n        else {\n            for(let i = previousFrom; i <= previousTo; i += 1)if (i < from || i > to) {\n                const slideIndex = getSlideIndex(i);\n                swiper.slides.filter((el)=>el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach((slideEl)=>{\n                    slideEl.remove();\n                });\n            }\n        }\n        const loopFrom = isLoop ? -slides.length : 0;\n        const loopTo = isLoop ? slides.length * 2 : slides.length;\n        for(let i = loopFrom; i < loopTo; i += 1)if (i >= from && i <= to) {\n            const slideIndex = getSlideIndex(i);\n            if (typeof previousTo === \"undefined\" || force) appendIndexes.push(slideIndex);\n            else {\n                if (i > previousTo) appendIndexes.push(slideIndex);\n                if (i < previousFrom) prependIndexes.push(slideIndex);\n            }\n        }\n        appendIndexes.forEach((index)=>{\n            swiper.slidesEl.append(renderSlide(slides[index], index));\n        });\n        if (isLoop) for(let i = prependIndexes.length - 1; i >= 0; i -= 1){\n            const index = prependIndexes[i];\n            swiper.slidesEl.prepend(renderSlide(slides[index], index));\n        }\n        else {\n            prependIndexes.sort((a, b)=>b - a);\n            prependIndexes.forEach((index)=>{\n                swiper.slidesEl.prepend(renderSlide(slides[index], index));\n            });\n        }\n        (0, $3e0e2b092da8f124$export$f1e1789686576879)(swiper.slidesEl, \".swiper-slide, swiper-slide\").forEach((slideEl)=>{\n            slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n        });\n        onRendered();\n    }\n    function appendSlide(slides) {\n        if (typeof slides === \"object\" && \"length\" in slides) {\n            for(let i = 0; i < slides.length; i += 1)if (slides[i]) swiper.virtual.slides.push(slides[i]);\n        } else swiper.virtual.slides.push(slides);\n        update(true);\n    }\n    function prependSlide(slides) {\n        const activeIndex = swiper.activeIndex;\n        let newActiveIndex = activeIndex + 1;\n        let numberOfNewSlides = 1;\n        if (Array.isArray(slides)) {\n            for(let i = 0; i < slides.length; i += 1)if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n            newActiveIndex = activeIndex + slides.length;\n            numberOfNewSlides = slides.length;\n        } else swiper.virtual.slides.unshift(slides);\n        if (swiper.params.virtual.cache) {\n            const cache = swiper.virtual.cache;\n            const newCache = {};\n            Object.keys(cache).forEach((cachedIndex)=>{\n                const cachedEl = cache[cachedIndex];\n                const cachedElIndex = cachedEl.getAttribute(\"data-swiper-slide-index\");\n                if (cachedElIndex) cachedEl.setAttribute(\"data-swiper-slide-index\", parseInt(cachedElIndex, 10) + numberOfNewSlides);\n                newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n            });\n            swiper.virtual.cache = newCache;\n        }\n        update(true);\n        swiper.slideTo(newActiveIndex, 0);\n    }\n    function removeSlide(slidesIndexes) {\n        if (typeof slidesIndexes === \"undefined\" || slidesIndexes === null) return;\n        let activeIndex = swiper.activeIndex;\n        if (Array.isArray(slidesIndexes)) for(let i = slidesIndexes.length - 1; i >= 0; i -= 1){\n            if (swiper.params.virtual.cache) {\n                delete swiper.virtual.cache[slidesIndexes[i]];\n                // shift cache indexes\n                Object.keys(swiper.virtual.cache).forEach((key)=>{\n                    if (key > slidesIndexes) {\n                        swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n                        swiper.virtual.cache[key - 1].setAttribute(\"data-swiper-slide-index\", key - 1);\n                        delete swiper.virtual.cache[key];\n                    }\n                });\n            }\n            swiper.virtual.slides.splice(slidesIndexes[i], 1);\n            if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n            activeIndex = Math.max(activeIndex, 0);\n        }\n        else {\n            if (swiper.params.virtual.cache) {\n                delete swiper.virtual.cache[slidesIndexes];\n                // shift cache indexes\n                Object.keys(swiper.virtual.cache).forEach((key)=>{\n                    if (key > slidesIndexes) {\n                        swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n                        swiper.virtual.cache[key - 1].setAttribute(\"data-swiper-slide-index\", key - 1);\n                        delete swiper.virtual.cache[key];\n                    }\n                });\n            }\n            swiper.virtual.slides.splice(slidesIndexes, 1);\n            if (slidesIndexes < activeIndex) activeIndex -= 1;\n            activeIndex = Math.max(activeIndex, 0);\n        }\n        update(true);\n        swiper.slideTo(activeIndex, 0);\n    }\n    function removeAllSlides() {\n        swiper.virtual.slides = [];\n        if (swiper.params.virtual.cache) swiper.virtual.cache = {};\n        update(true);\n        swiper.slideTo(0, 0);\n    }\n    on(\"beforeInit\", ()=>{\n        if (!swiper.params.virtual.enabled) return;\n        let domSlidesAssigned;\n        if (typeof swiper.passedParams.virtual.slides === \"undefined\") {\n            const slides = [\n                ...swiper.slidesEl.children\n            ].filter((el)=>el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n            if (slides && slides.length) {\n                swiper.virtual.slides = [\n                    ...slides\n                ];\n                domSlidesAssigned = true;\n                slides.forEach((slideEl, slideIndex)=>{\n                    slideEl.setAttribute(\"data-swiper-slide-index\", slideIndex);\n                    swiper.virtual.cache[slideIndex] = slideEl;\n                    slideEl.remove();\n                });\n            }\n        }\n        if (!domSlidesAssigned) swiper.virtual.slides = swiper.params.virtual.slides;\n        swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n        swiper.params.watchSlidesProgress = true;\n        swiper.originalParams.watchSlidesProgress = true;\n        update(false, true);\n    });\n    on(\"setTranslate\", ()=>{\n        if (!swiper.params.virtual.enabled) return;\n        if (swiper.params.cssMode && !swiper._immediateVirtual) {\n            clearTimeout(cssModeTimeout);\n            cssModeTimeout = setTimeout(()=>{\n                update();\n            }, 100);\n        } else update();\n    });\n    on(\"init update resize\", ()=>{\n        if (!swiper.params.virtual.enabled) return;\n        if (swiper.params.cssMode) (0, $3e0e2b092da8f124$export$2408f22a0fab9ae5)(swiper.wrapperEl, \"--swiper-virtual-size\", `${swiper.virtualSize}px`);\n    });\n    Object.assign(swiper.virtual, {\n        appendSlide: appendSlide,\n        prependSlide: prependSlide,\n        removeSlide: removeSlide,\n        removeAllSlides: removeAllSlides,\n        update: update\n    });\n}\n\n\n\n\n/* eslint-disable consistent-return */ function $398e6017151607ad$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    swiper.keyboard = {\n        enabled: false\n    };\n    extendParams({\n        keyboard: {\n            enabled: false,\n            onlyInViewport: true,\n            pageUpDown: true\n        }\n    });\n    function handle(event) {\n        if (!swiper.enabled) return;\n        const { rtlTranslate: rtl } = swiper;\n        let e = event;\n        if (e.originalEvent) e = e.originalEvent; // jquery fix\n        const kc = e.keyCode || e.charCode;\n        const pageUpDown = swiper.params.keyboard.pageUpDown;\n        const isPageUp = pageUpDown && kc === 33;\n        const isPageDown = pageUpDown && kc === 34;\n        const isArrowLeft = kc === 37;\n        const isArrowRight = kc === 39;\n        const isArrowUp = kc === 38;\n        const isArrowDown = kc === 40;\n        // Directions locks\n        if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) return false;\n        if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) return false;\n        if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) return undefined;\n        if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === \"input\" || document.activeElement.nodeName.toLowerCase() === \"textarea\")) return undefined;\n        if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n            let inView = false;\n            // Check that swiper should be inside of visible area of window\n            if ((0, $3e0e2b092da8f124$export$407448d2b89b1813)(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && (0, $3e0e2b092da8f124$export$407448d2b89b1813)(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) return undefined;\n            const el = swiper.el;\n            const swiperWidth = el.clientWidth;\n            const swiperHeight = el.clientHeight;\n            const windowWidth = window.innerWidth;\n            const windowHeight = window.innerHeight;\n            const swiperOffset = (0, $3e0e2b092da8f124$export$8b22cf2602fb60ce)(el);\n            if (rtl) swiperOffset.left -= el.scrollLeft;\n            const swiperCoord = [\n                [\n                    swiperOffset.left,\n                    swiperOffset.top\n                ],\n                [\n                    swiperOffset.left + swiperWidth,\n                    swiperOffset.top\n                ],\n                [\n                    swiperOffset.left,\n                    swiperOffset.top + swiperHeight\n                ],\n                [\n                    swiperOffset.left + swiperWidth,\n                    swiperOffset.top + swiperHeight\n                ]\n            ];\n            for(let i = 0; i < swiperCoord.length; i += 1){\n                const point = swiperCoord[i];\n                if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n                    if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n                    inView = true;\n                }\n            }\n            if (!inView) return undefined;\n        }\n        if (swiper.isHorizontal()) {\n            if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n                if (e.preventDefault) e.preventDefault();\n                else e.returnValue = false;\n            }\n            if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n            if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n        } else {\n            if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n                if (e.preventDefault) e.preventDefault();\n                else e.returnValue = false;\n            }\n            if (isPageDown || isArrowDown) swiper.slideNext();\n            if (isPageUp || isArrowUp) swiper.slidePrev();\n        }\n        emit(\"keyPress\", kc);\n        return undefined;\n    }\n    function enable() {\n        if (swiper.keyboard.enabled) return;\n        document.addEventListener(\"keydown\", handle);\n        swiper.keyboard.enabled = true;\n    }\n    function disable() {\n        if (!swiper.keyboard.enabled) return;\n        document.removeEventListener(\"keydown\", handle);\n        swiper.keyboard.enabled = false;\n    }\n    on(\"init\", ()=>{\n        if (swiper.params.keyboard.enabled) enable();\n    });\n    on(\"destroy\", ()=>{\n        if (swiper.keyboard.enabled) disable();\n    });\n    Object.assign(swiper.keyboard, {\n        enable: enable,\n        disable: disable\n    });\n}\n\n\n\n\n/* eslint-disable consistent-return */ function $343d866400a2e3c2$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    extendParams({\n        mousewheel: {\n            enabled: false,\n            releaseOnEdges: false,\n            invert: false,\n            forceToAxis: false,\n            sensitivity: 1,\n            eventsTarget: \"container\",\n            thresholdDelta: null,\n            thresholdTime: null,\n            noMousewheelClass: \"swiper-no-mousewheel\"\n        }\n    });\n    swiper.mousewheel = {\n        enabled: false\n    };\n    let timeout;\n    let lastScrollTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n    let lastEventBeforeSnap;\n    const recentWheelEvents = [];\n    function normalize(e) {\n        // Reasonable defaults\n        const PIXEL_STEP = 10;\n        const LINE_HEIGHT = 40;\n        const PAGE_HEIGHT = 800;\n        let sX = 0;\n        let sY = 0; // spinX, spinY\n        let pX = 0;\n        let pY = 0; // pixelX, pixelY\n        // Legacy\n        if (\"detail\" in e) sY = e.detail;\n        if (\"wheelDelta\" in e) sY = -e.wheelDelta / 120;\n        if (\"wheelDeltaY\" in e) sY = -e.wheelDeltaY / 120;\n        if (\"wheelDeltaX\" in e) sX = -e.wheelDeltaX / 120;\n        // side scrolling on FF with DOMMouseScroll\n        if (\"axis\" in e && e.axis === e.HORIZONTAL_AXIS) {\n            sX = sY;\n            sY = 0;\n        }\n        pX = sX * PIXEL_STEP;\n        pY = sY * PIXEL_STEP;\n        if (\"deltaY\" in e) pY = e.deltaY;\n        if (\"deltaX\" in e) pX = e.deltaX;\n        if (e.shiftKey && !pX) {\n            // if user scrolls with shift he wants horizontal scroll\n            pX = pY;\n            pY = 0;\n        }\n        if ((pX || pY) && e.deltaMode) {\n            if (e.deltaMode === 1) {\n                // delta in LINE units\n                pX *= LINE_HEIGHT;\n                pY *= LINE_HEIGHT;\n            } else {\n                // delta in PAGE units\n                pX *= PAGE_HEIGHT;\n                pY *= PAGE_HEIGHT;\n            }\n        }\n        // Fall-back if spin cannot be determined\n        if (pX && !sX) sX = pX < 1 ? -1 : 1;\n        if (pY && !sY) sY = pY < 1 ? -1 : 1;\n        return {\n            spinX: sX,\n            spinY: sY,\n            pixelX: pX,\n            pixelY: pY\n        };\n    }\n    function handleMouseEnter() {\n        if (!swiper.enabled) return;\n        swiper.mouseEntered = true;\n    }\n    function handleMouseLeave() {\n        if (!swiper.enabled) return;\n        swiper.mouseEntered = false;\n    }\n    function animateSlider(newEvent) {\n        if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) // Prevent if delta of wheel scroll delta is below configured threshold\n        return false;\n        if (swiper.params.mousewheel.thresholdTime && (0, $3e0e2b092da8f124$export$4368d992c4eafac0)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) // Prevent if time between scrolls is below configured threshold\n        return false;\n        // If the movement is NOT big enough and\n        // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n        //   Don't go any further (avoid insignificant scroll movement).\n        if (newEvent.delta >= 6 && (0, $3e0e2b092da8f124$export$4368d992c4eafac0)() - lastScrollTime < 60) // Return false as a default\n        return true;\n        // If user is scrolling towards the end:\n        //   If the slider hasn't hit the latest slide or\n        //   if the slider is a loop and\n        //   if the slider isn't moving right now:\n        //     Go to next slide and\n        //     emit a scroll event.\n        // Else (the user is scrolling towards the beginning) and\n        // if the slider hasn't hit the first slide or\n        // if the slider is a loop and\n        // if the slider isn't moving right now:\n        //   Go to prev slide and\n        //   emit a scroll event.\n        if (newEvent.direction < 0) {\n            if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n                swiper.slideNext();\n                emit(\"scroll\", newEvent.raw);\n            }\n        } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n            swiper.slidePrev();\n            emit(\"scroll\", newEvent.raw);\n        }\n        // If you got here is because an animation has been triggered so store the current time\n        lastScrollTime = new window.Date().getTime();\n        // Return false as a default\n        return false;\n    }\n    function releaseScroll(newEvent) {\n        const params = swiper.params.mousewheel;\n        if (newEvent.direction < 0) {\n            if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) // Return true to animate scroll on edges\n            return true;\n        } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) // Return true to animate scroll on edges\n        return true;\n        return false;\n    }\n    function handle(event1) {\n        let e = event1;\n        let disableParentSwiper = true;\n        if (!swiper.enabled) return;\n        // Ignore event if the target or its parents have the swiper-no-mousewheel class\n        if (event1.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n        const params = swiper.params.mousewheel;\n        if (swiper.params.cssMode) e.preventDefault();\n        let targetEl = swiper.el;\n        if (swiper.params.mousewheel.eventsTarget !== \"container\") targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n        const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n        if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n        if (e.originalEvent) e = e.originalEvent; // jquery fix\n        let delta = 0;\n        const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n        const data = normalize(e);\n        if (params.forceToAxis) {\n            if (swiper.isHorizontal()) {\n                if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n                else return true;\n            } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n            else return true;\n        } else delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n        if (delta === 0) return true;\n        if (params.invert) delta = -delta;\n        // Get the scroll positions\n        let positions = swiper.getTranslate() + delta * params.sensitivity;\n        if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n        if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n        // When loop is true:\n        //     the disableParentSwiper will be true.\n        // When loop is false:\n        //     if the scroll positions is not on edge,\n        //     then the disableParentSwiper will be true.\n        //     if the scroll on edge positions,\n        //     then the disableParentSwiper will be false.\n        disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n        if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n        if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n            // Register the new event in a variable which stores the relevant data\n            const newEvent = {\n                time: (0, $3e0e2b092da8f124$export$4368d992c4eafac0)(),\n                delta: Math.abs(delta),\n                direction: Math.sign(delta),\n                raw: event1\n            };\n            // Keep the most recent events\n            if (recentWheelEvents.length >= 2) recentWheelEvents.shift(); // only store the last N events\n            const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n            recentWheelEvents.push(newEvent);\n            // If there is at least one previous recorded event:\n            //   If direction has changed or\n            //   if the scroll is quicker than the previous one:\n            //     Animate the slider.\n            // Else (this is the first time the wheel is moved):\n            //     Animate the slider.\n            if (prevEvent) {\n                if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) animateSlider(newEvent);\n            } else animateSlider(newEvent);\n            // If it's time to release the scroll:\n            //   Return now so you don't hit the preventDefault.\n            if (releaseScroll(newEvent)) return true;\n        } else {\n            // Freemode or scrollContainer:\n            // If we recently snapped after a momentum scroll, then ignore wheel events\n            // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n            // or if it's a new scroll (larger delta or inverse sign as last event before\n            // an end-of-momentum snap).\n            const newEvent = {\n                time: (0, $3e0e2b092da8f124$export$4368d992c4eafac0)(),\n                delta: Math.abs(delta),\n                direction: Math.sign(delta)\n            };\n            const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n            if (!ignoreWheelEvents) {\n                lastEventBeforeSnap = undefined;\n                let position = swiper.getTranslate() + delta * params.sensitivity;\n                const wasBeginning = swiper.isBeginning;\n                const wasEnd = swiper.isEnd;\n                if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n                if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n                swiper.setTransition(0);\n                swiper.setTranslate(position);\n                swiper.updateProgress();\n                swiper.updateActiveIndex();\n                swiper.updateSlidesClasses();\n                if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) swiper.updateSlidesClasses();\n                if (swiper.params.loop) swiper.loopFix({\n                    direction: newEvent.direction < 0 ? \"next\" : \"prev\",\n                    byMousewheel: true\n                });\n                if (swiper.params.freeMode.sticky) {\n                    // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n                    // the end of a momentum scroll by storing recent (N=15?) wheel events.\n                    // 1. do all N events have decreasing or same (absolute value) delta?\n                    // 2. did all N events arrive in the last M (M=500?) msecs?\n                    // 3. does the earliest event have an (absolute value) delta that's\n                    //    at least P (P=1?) larger than the most recent event's delta?\n                    // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n                    // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n                    // Snap immediately and ignore remaining wheel events in this scroll.\n                    // See comment above for \"remaining wheel events in this scroll\" determination.\n                    // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n                    clearTimeout(timeout);\n                    timeout = undefined;\n                    if (recentWheelEvents.length >= 15) recentWheelEvents.shift(); // only store the last N events\n                    const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n                    const firstEvent = recentWheelEvents[0];\n                    recentWheelEvents.push(newEvent);\n                    if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n                    recentWheelEvents.splice(0);\n                    else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n                        // We're at the end of the deceleration of a momentum scroll, so there's no need\n                        // to wait for more events. Snap ASAP on the next tick.\n                        // Also, because there's some remaining momentum we'll bias the snap in the\n                        // direction of the ongoing scroll because it's better UX for the scroll to snap\n                        // in the same direction as the scroll instead of reversing to snap.  Therefore,\n                        // if it's already scrolled more than 20% in the current direction, keep going.\n                        const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n                        lastEventBeforeSnap = newEvent;\n                        recentWheelEvents.splice(0);\n                        timeout = (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                            swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n                        }, 0); // no delay; move on next tick\n                    }\n                    if (!timeout) // if we get here, then we haven't detected the end of a momentum scroll, so\n                    // we'll consider a scroll \"complete\" when there haven't been any wheel events\n                    // for 500ms.\n                    timeout = (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                        const snapToThreshold = 0.5;\n                        lastEventBeforeSnap = newEvent;\n                        recentWheelEvents.splice(0);\n                        swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n                    }, 500);\n                }\n                // Emit event\n                if (!ignoreWheelEvents) emit(\"scroll\", e);\n                // Stop autoplay\n                if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n                // Return page scroll on edge positions\n                if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) return true;\n            }\n        }\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n        return false;\n    }\n    function events(method) {\n        let targetEl = swiper.el;\n        if (swiper.params.mousewheel.eventsTarget !== \"container\") targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n        targetEl[method](\"mouseenter\", handleMouseEnter);\n        targetEl[method](\"mouseleave\", handleMouseLeave);\n        targetEl[method](\"wheel\", handle);\n    }\n    function enable() {\n        if (swiper.params.cssMode) {\n            swiper.wrapperEl.removeEventListener(\"wheel\", handle);\n            return true;\n        }\n        if (swiper.mousewheel.enabled) return false;\n        events(\"addEventListener\");\n        swiper.mousewheel.enabled = true;\n        return true;\n    }\n    function disable() {\n        if (swiper.params.cssMode) {\n            swiper.wrapperEl.addEventListener(event, handle);\n            return true;\n        }\n        if (!swiper.mousewheel.enabled) return false;\n        events(\"removeEventListener\");\n        swiper.mousewheel.enabled = false;\n        return true;\n    }\n    on(\"init\", ()=>{\n        if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) disable();\n        if (swiper.params.mousewheel.enabled) enable();\n    });\n    on(\"destroy\", ()=>{\n        if (swiper.params.cssMode) enable();\n        if (swiper.mousewheel.enabled) disable();\n    });\n    Object.assign(swiper.mousewheel, {\n        enable: enable,\n        disable: disable\n    });\n}\n\n\n\nfunction $d6f86baea06bd282$export$db3b6bfb95261072(swiper, originalParams, params, checkProps) {\n    if (swiper.params.createElements) Object.keys(checkProps).forEach((key)=>{\n        if (!params[key] && params.auto === true) {\n            let element = (0, $3e0e2b092da8f124$export$f1e1789686576879)(swiper.el, `.${checkProps[key]}`)[0];\n            if (!element) {\n                element = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", checkProps[key]);\n                element.className = checkProps[key];\n                swiper.el.append(element);\n            }\n            params[key] = element;\n            originalParams[key] = element;\n        }\n    });\n    return params;\n}\n\n\n\nfunction $ad56a2ca63fb5863$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    extendParams({\n        navigation: {\n            nextEl: null,\n            prevEl: null,\n            hideOnClick: false,\n            disabledClass: \"swiper-button-disabled\",\n            hiddenClass: \"swiper-button-hidden\",\n            lockClass: \"swiper-button-lock\",\n            navigationDisabledClass: \"swiper-navigation-disabled\"\n        }\n    });\n    swiper.navigation = {\n        nextEl: null,\n        prevEl: null\n    };\n    function getEl(el) {\n        let res;\n        if (el && typeof el === \"string\" && swiper.isElement) {\n            res = swiper.el.querySelector(el);\n            if (res) return res;\n        }\n        if (el) {\n            if (typeof el === \"string\") res = [\n                ...document.querySelectorAll(el)\n            ];\n            if (swiper.params.uniqueNavElements && typeof el === \"string\" && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) res = swiper.el.querySelector(el);\n            else if (res && res.length === 1) res = res[0];\n        }\n        if (el && !res) return el;\n        // if (Array.isArray(res) && res.length === 1) res = res[0];\n        return res;\n    }\n    function toggleEl(el, disabled) {\n        const params = swiper.params.navigation;\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            if (subEl) {\n                subEl.classList[disabled ? \"add\" : \"remove\"](...params.disabledClass.split(\" \"));\n                if (subEl.tagName === \"BUTTON\") subEl.disabled = disabled;\n                if (swiper.params.watchOverflow && swiper.enabled) subEl.classList[swiper.isLocked ? \"add\" : \"remove\"](params.lockClass);\n            }\n        });\n    }\n    function update() {\n        // Update Navigation Buttons\n        const { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n        if (swiper.params.loop) {\n            toggleEl(prevEl, false);\n            toggleEl(nextEl, false);\n            return;\n        }\n        toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n        toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n    }\n    function onPrevClick(e) {\n        e.preventDefault();\n        if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n        swiper.slidePrev();\n        emit(\"navigationPrev\");\n    }\n    function onNextClick(e) {\n        e.preventDefault();\n        if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n        swiper.slideNext();\n        emit(\"navigationNext\");\n    }\n    function init() {\n        const params = swiper.params.navigation;\n        swiper.params.navigation = (0, $d6f86baea06bd282$export$db3b6bfb95261072)(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n            nextEl: \"swiper-button-next\",\n            prevEl: \"swiper-button-prev\"\n        });\n        if (!(params.nextEl || params.prevEl)) return;\n        let nextEl = getEl(params.nextEl);\n        let prevEl = getEl(params.prevEl);\n        Object.assign(swiper.navigation, {\n            nextEl: nextEl,\n            prevEl: prevEl\n        });\n        nextEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(nextEl);\n        prevEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(prevEl);\n        const initButton = (el, dir)=>{\n            if (el) el.addEventListener(\"click\", dir === \"next\" ? onNextClick : onPrevClick);\n            if (!swiper.enabled && el) el.classList.add(...params.lockClass.split(\" \"));\n        };\n        nextEl.forEach((el)=>initButton(el, \"next\"));\n        prevEl.forEach((el)=>initButton(el, \"prev\"));\n    }\n    function destroy() {\n        let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n        nextEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(nextEl);\n        prevEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(prevEl);\n        const destroyButton = (el, dir)=>{\n            el.removeEventListener(\"click\", dir === \"next\" ? onNextClick : onPrevClick);\n            el.classList.remove(...swiper.params.navigation.disabledClass.split(\" \"));\n        };\n        nextEl.forEach((el)=>destroyButton(el, \"next\"));\n        prevEl.forEach((el)=>destroyButton(el, \"prev\"));\n    }\n    on(\"init\", ()=>{\n        if (swiper.params.navigation.enabled === false) // eslint-disable-next-line\n        disable();\n        else {\n            init();\n            update();\n        }\n    });\n    on(\"toEdge fromEdge lock unlock\", ()=>{\n        update();\n    });\n    on(\"destroy\", ()=>{\n        destroy();\n    });\n    on(\"enable disable\", ()=>{\n        let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n        nextEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(nextEl);\n        prevEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(prevEl);\n        if (swiper.enabled) {\n            update();\n            return;\n        }\n        [\n            ...nextEl,\n            ...prevEl\n        ].filter((el)=>!!el).forEach((el)=>el.classList.add(swiper.params.navigation.lockClass));\n    });\n    on(\"click\", (_s, e)=>{\n        let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n        nextEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(nextEl);\n        prevEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(prevEl);\n        const targetEl = e.target;\n        let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n        if (swiper.isElement && !targetIsButton) {\n            const path = e.path || e.composedPath && e.composedPath();\n            if (path) targetIsButton = path.find((pathEl)=>nextEl.includes(pathEl) || prevEl.includes(pathEl));\n        }\n        if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n            if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n            let isHidden;\n            if (nextEl.length) isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n            else if (prevEl.length) isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n            if (isHidden === true) emit(\"navigationShow\");\n            else emit(\"navigationHide\");\n            [\n                ...nextEl,\n                ...prevEl\n            ].filter((el)=>!!el).forEach((el)=>el.classList.toggle(swiper.params.navigation.hiddenClass));\n        }\n    });\n    const enable = ()=>{\n        swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(\" \"));\n        init();\n        update();\n    };\n    const disable = ()=>{\n        swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(\" \"));\n        destroy();\n    };\n    Object.assign(swiper.navigation, {\n        enable: enable,\n        disable: disable,\n        update: update,\n        init: init,\n        destroy: destroy\n    });\n}\n\n\nfunction $452edee79264d178$export$db3b6bfb95261072(classes) {\n    if (classes === void 0) classes = \"\";\n    return `.${classes.trim().replace(/([\\.:!+\\/])/g, \"\\\\$1\") // eslint-disable-line\n    .replace(/ /g, \".\")}`;\n}\n\n\n\n\nfunction $4b9f6507912f3e92$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const pfx = \"swiper-pagination\";\n    extendParams({\n        pagination: {\n            el: null,\n            bulletElement: \"span\",\n            clickable: false,\n            hideOnClick: false,\n            renderBullet: null,\n            renderProgressbar: null,\n            renderFraction: null,\n            renderCustom: null,\n            progressbarOpposite: false,\n            type: \"bullets\",\n            // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n            dynamicBullets: false,\n            dynamicMainBullets: 1,\n            formatFractionCurrent: (number)=>number,\n            formatFractionTotal: (number)=>number,\n            bulletClass: `${pfx}-bullet`,\n            bulletActiveClass: `${pfx}-bullet-active`,\n            modifierClass: `${pfx}-`,\n            currentClass: `${pfx}-current`,\n            totalClass: `${pfx}-total`,\n            hiddenClass: `${pfx}-hidden`,\n            progressbarFillClass: `${pfx}-progressbar-fill`,\n            progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n            clickableClass: `${pfx}-clickable`,\n            lockClass: `${pfx}-lock`,\n            horizontalClass: `${pfx}-horizontal`,\n            verticalClass: `${pfx}-vertical`,\n            paginationDisabledClass: `${pfx}-disabled`\n        }\n    });\n    swiper.pagination = {\n        el: null,\n        bullets: []\n    };\n    let bulletSize;\n    let dynamicBulletIndex = 0;\n    function isPaginationDisabled() {\n        return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n    }\n    function setSideBullets(bulletEl, position) {\n        const { bulletActiveClass: bulletActiveClass } = swiper.params.pagination;\n        if (!bulletEl) return;\n        bulletEl = bulletEl[`${position === \"prev\" ? \"previous\" : \"next\"}ElementSibling`];\n        if (bulletEl) {\n            bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n            bulletEl = bulletEl[`${position === \"prev\" ? \"previous\" : \"next\"}ElementSibling`];\n            if (bulletEl) bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n        }\n    }\n    function onBulletClick(e) {\n        const bulletEl = e.target.closest((0, $452edee79264d178$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass));\n        if (!bulletEl) return;\n        e.preventDefault();\n        const index = (0, $3e0e2b092da8f124$export$dda1d9f60106f0e9)(bulletEl) * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) {\n            if (swiper.realIndex === index) return;\n            swiper.slideToLoop(index);\n        } else swiper.slideTo(index);\n    }\n    function update() {\n        // Render || Update Pagination bullets/items\n        const rtl = swiper.rtl;\n        const params = swiper.params.pagination;\n        if (isPaginationDisabled()) return;\n        let el = swiper.pagination.el;\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        // Current/Total\n        let current;\n        let previousIndex;\n        const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n        const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n        if (swiper.params.loop) {\n            previousIndex = swiper.previousRealIndex || 0;\n            current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n        } else if (typeof swiper.snapIndex !== \"undefined\") {\n            current = swiper.snapIndex;\n            previousIndex = swiper.previousSnapIndex;\n        } else {\n            previousIndex = swiper.previousIndex || 0;\n            current = swiper.activeIndex || 0;\n        }\n        // Types\n        if (params.type === \"bullets\" && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n            const bullets = swiper.pagination.bullets;\n            let firstIndex;\n            let lastIndex;\n            let midIndex;\n            if (params.dynamicBullets) {\n                bulletSize = (0, $3e0e2b092da8f124$export$2d1720544b23b823)(bullets[0], swiper.isHorizontal() ? \"width\" : \"height\", true);\n                el.forEach((subEl)=>{\n                    subEl.style[swiper.isHorizontal() ? \"width\" : \"height\"] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n                });\n                if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n                    dynamicBulletIndex += current - (previousIndex || 0);\n                    if (dynamicBulletIndex > params.dynamicMainBullets - 1) dynamicBulletIndex = params.dynamicMainBullets - 1;\n                    else if (dynamicBulletIndex < 0) dynamicBulletIndex = 0;\n                }\n                firstIndex = Math.max(current - dynamicBulletIndex, 0);\n                lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n                midIndex = (lastIndex + firstIndex) / 2;\n            }\n            bullets.forEach((bulletEl)=>{\n                const classesToRemove = [\n                    ...[\n                        \"\",\n                        \"-next\",\n                        \"-next-next\",\n                        \"-prev\",\n                        \"-prev-prev\",\n                        \"-main\"\n                    ].map((suffix)=>`${params.bulletActiveClass}${suffix}`)\n                ].map((s)=>typeof s === \"string\" && s.includes(\" \") ? s.split(\" \") : s).flat();\n                bulletEl.classList.remove(...classesToRemove);\n            });\n            if (el.length > 1) bullets.forEach((bullet)=>{\n                const bulletIndex = (0, $3e0e2b092da8f124$export$dda1d9f60106f0e9)(bullet);\n                if (bulletIndex === current) bullet.classList.add(...params.bulletActiveClass.split(\" \"));\n                else if (swiper.isElement) bullet.setAttribute(\"part\", \"bullet\");\n                if (params.dynamicBullets) {\n                    if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) bullet.classList.add(...`${params.bulletActiveClass}-main`.split(\" \"));\n                    if (bulletIndex === firstIndex) setSideBullets(bullet, \"prev\");\n                    if (bulletIndex === lastIndex) setSideBullets(bullet, \"next\");\n                }\n            });\n            else {\n                const bullet = bullets[current];\n                if (bullet) bullet.classList.add(...params.bulletActiveClass.split(\" \"));\n                if (swiper.isElement) bullets.forEach((bulletEl, bulletIndex)=>{\n                    bulletEl.setAttribute(\"part\", bulletIndex === current ? \"bullet-active\" : \"bullet\");\n                });\n                if (params.dynamicBullets) {\n                    const firstDisplayedBullet = bullets[firstIndex];\n                    const lastDisplayedBullet = bullets[lastIndex];\n                    for(let i = firstIndex; i <= lastIndex; i += 1)if (bullets[i]) bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(\" \"));\n                    setSideBullets(firstDisplayedBullet, \"prev\");\n                    setSideBullets(lastDisplayedBullet, \"next\");\n                }\n            }\n            if (params.dynamicBullets) {\n                const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n                const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n                const offsetProp = rtl ? \"right\" : \"left\";\n                bullets.forEach((bullet)=>{\n                    bullet.style[swiper.isHorizontal() ? offsetProp : \"top\"] = `${bulletsOffset}px`;\n                });\n            }\n        }\n        el.forEach((subEl, subElIndex)=>{\n            if (params.type === \"fraction\") {\n                subEl.querySelectorAll((0, $452edee79264d178$export$db3b6bfb95261072)(params.currentClass)).forEach((fractionEl)=>{\n                    fractionEl.textContent = params.formatFractionCurrent(current + 1);\n                });\n                subEl.querySelectorAll((0, $452edee79264d178$export$db3b6bfb95261072)(params.totalClass)).forEach((totalEl)=>{\n                    totalEl.textContent = params.formatFractionTotal(total);\n                });\n            }\n            if (params.type === \"progressbar\") {\n                let progressbarDirection;\n                if (params.progressbarOpposite) progressbarDirection = swiper.isHorizontal() ? \"vertical\" : \"horizontal\";\n                else progressbarDirection = swiper.isHorizontal() ? \"horizontal\" : \"vertical\";\n                const scale = (current + 1) / total;\n                let scaleX = 1;\n                let scaleY = 1;\n                if (progressbarDirection === \"horizontal\") scaleX = scale;\n                else scaleY = scale;\n                subEl.querySelectorAll((0, $452edee79264d178$export$db3b6bfb95261072)(params.progressbarFillClass)).forEach((progressEl)=>{\n                    progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n                    progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n                });\n            }\n            if (params.type === \"custom\" && params.renderCustom) {\n                subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n                if (subElIndex === 0) emit(\"paginationRender\", subEl);\n            } else {\n                if (subElIndex === 0) emit(\"paginationRender\", subEl);\n                emit(\"paginationUpdate\", subEl);\n            }\n            if (swiper.params.watchOverflow && swiper.enabled) subEl.classList[swiper.isLocked ? \"add\" : \"remove\"](params.lockClass);\n        });\n    }\n    function render() {\n        // Render Container\n        const params = swiper.params.pagination;\n        if (isPaginationDisabled()) return;\n        const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n        let el = swiper.pagination.el;\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        let paginationHTML = \"\";\n        if (params.type === \"bullets\") {\n            let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n            if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) numberOfBullets = slidesLength;\n            for(let i = 0; i < numberOfBullets; i += 1)if (params.renderBullet) paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n            else // prettier-ignore\n            paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : \"\"} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n        if (params.type === \"fraction\") {\n            if (params.renderFraction) paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n            else paginationHTML = `<span class=\"${params.currentClass}\"></span>` + \" / \" + `<span class=\"${params.totalClass}\"></span>`;\n        }\n        if (params.type === \"progressbar\") {\n            if (params.renderProgressbar) paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n            else paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n        }\n        swiper.pagination.bullets = [];\n        el.forEach((subEl)=>{\n            if (params.type !== \"custom\") subEl.innerHTML = paginationHTML || \"\";\n            if (params.type === \"bullets\") swiper.pagination.bullets.push(...subEl.querySelectorAll((0, $452edee79264d178$export$db3b6bfb95261072)(params.bulletClass)));\n        });\n        if (params.type !== \"custom\") emit(\"paginationRender\", el[0]);\n    }\n    function init() {\n        swiper.params.pagination = (0, $d6f86baea06bd282$export$db3b6bfb95261072)(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n            el: \"swiper-pagination\"\n        });\n        const params = swiper.params.pagination;\n        if (!params.el) return;\n        let el;\n        if (typeof params.el === \"string\" && swiper.isElement) el = swiper.el.querySelector(params.el);\n        if (!el && typeof params.el === \"string\") el = [\n            ...document.querySelectorAll(params.el)\n        ];\n        if (!el) el = params.el;\n        if (!el || el.length === 0) return;\n        if (swiper.params.uniqueNavElements && typeof params.el === \"string\" && Array.isArray(el) && el.length > 1) {\n            el = [\n                ...swiper.el.querySelectorAll(params.el)\n            ];\n            // check if it belongs to another nested Swiper\n            if (el.length > 1) el = el.filter((subEl)=>{\n                if ((0, $3e0e2b092da8f124$export$407448d2b89b1813)(subEl, \".swiper\")[0] !== swiper.el) return false;\n                return true;\n            })[0];\n        }\n        if (Array.isArray(el) && el.length === 1) el = el[0];\n        Object.assign(swiper.pagination, {\n            el: el\n        });\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            if (params.type === \"bullets\" && params.clickable) subEl.classList.add(...(params.clickableClass || \"\").split(\" \"));\n            subEl.classList.add(params.modifierClass + params.type);\n            subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n            if (params.type === \"bullets\" && params.dynamicBullets) {\n                subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n                dynamicBulletIndex = 0;\n                if (params.dynamicMainBullets < 1) params.dynamicMainBullets = 1;\n            }\n            if (params.type === \"progressbar\" && params.progressbarOpposite) subEl.classList.add(params.progressbarOppositeClass);\n            if (params.clickable) subEl.addEventListener(\"click\", onBulletClick);\n            if (!swiper.enabled) subEl.classList.add(params.lockClass);\n        });\n    }\n    function destroy() {\n        const params = swiper.params.pagination;\n        if (isPaginationDisabled()) return;\n        let el = swiper.pagination.el;\n        if (el) {\n            el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n            el.forEach((subEl)=>{\n                subEl.classList.remove(params.hiddenClass);\n                subEl.classList.remove(params.modifierClass + params.type);\n                subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n                if (params.clickable) {\n                    subEl.classList.remove(...(params.clickableClass || \"\").split(\" \"));\n                    subEl.removeEventListener(\"click\", onBulletClick);\n                }\n            });\n        }\n        if (swiper.pagination.bullets) swiper.pagination.bullets.forEach((subEl)=>subEl.classList.remove(...params.bulletActiveClass.split(\" \")));\n    }\n    on(\"changeDirection\", ()=>{\n        if (!swiper.pagination || !swiper.pagination.el) return;\n        const params = swiper.params.pagination;\n        let { el: el } = swiper.pagination;\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.classList.remove(params.horizontalClass, params.verticalClass);\n            subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        });\n    });\n    on(\"init\", ()=>{\n        if (swiper.params.pagination.enabled === false) // eslint-disable-next-line\n        disable();\n        else {\n            init();\n            render();\n            update();\n        }\n    });\n    on(\"activeIndexChange\", ()=>{\n        if (typeof swiper.snapIndex === \"undefined\") update();\n    });\n    on(\"snapIndexChange\", ()=>{\n        update();\n    });\n    on(\"snapGridLengthChange\", ()=>{\n        render();\n        update();\n    });\n    on(\"destroy\", ()=>{\n        destroy();\n    });\n    on(\"enable disable\", ()=>{\n        let { el: el } = swiper.pagination;\n        if (el) {\n            el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n            el.forEach((subEl)=>subEl.classList[swiper.enabled ? \"remove\" : \"add\"](swiper.params.pagination.lockClass));\n        }\n    });\n    on(\"lock unlock\", ()=>{\n        update();\n    });\n    on(\"click\", (_s, e)=>{\n        const targetEl = e.target;\n        const el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(swiper.pagination.el);\n        if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n            if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n            const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n            if (isHidden === true) emit(\"paginationShow\");\n            else emit(\"paginationHide\");\n            el.forEach((subEl)=>subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n        }\n    });\n    const enable = ()=>{\n        swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n        let { el: el } = swiper.pagination;\n        if (el) {\n            el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n            el.forEach((subEl)=>subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n        }\n        init();\n        render();\n        update();\n    };\n    const disable = ()=>{\n        swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n        let { el: el } = swiper.pagination;\n        if (el) {\n            el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n            el.forEach((subEl)=>subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n        }\n        destroy();\n    };\n    Object.assign(swiper.pagination, {\n        enable: enable,\n        disable: disable,\n        render: render,\n        update: update,\n        init: init,\n        destroy: destroy\n    });\n}\n\n\n\n\n\n\nfunction $86d9ada396b8d520$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    let isTouched = false;\n    let timeout = null;\n    let dragTimeout = null;\n    let dragStartPos;\n    let dragSize;\n    let trackSize;\n    let divider;\n    extendParams({\n        scrollbar: {\n            el: null,\n            dragSize: \"auto\",\n            hide: false,\n            draggable: false,\n            snapOnRelease: true,\n            lockClass: \"swiper-scrollbar-lock\",\n            dragClass: \"swiper-scrollbar-drag\",\n            scrollbarDisabledClass: \"swiper-scrollbar-disabled\",\n            horizontalClass: `swiper-scrollbar-horizontal`,\n            verticalClass: `swiper-scrollbar-vertical`\n        }\n    });\n    swiper.scrollbar = {\n        el: null,\n        dragEl: null\n    };\n    function setTranslate() {\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n        const { scrollbar: scrollbar, rtlTranslate: rtl } = swiper;\n        const { dragEl: dragEl, el: el } = scrollbar;\n        const params = swiper.params.scrollbar;\n        const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n        let newSize = dragSize;\n        let newPos = (trackSize - dragSize) * progress;\n        if (rtl) {\n            newPos = -newPos;\n            if (newPos > 0) {\n                newSize = dragSize - newPos;\n                newPos = 0;\n            } else if (-newPos + dragSize > trackSize) newSize = trackSize + newPos;\n        } else if (newPos < 0) {\n            newSize = dragSize + newPos;\n            newPos = 0;\n        } else if (newPos + dragSize > trackSize) newSize = trackSize - newPos;\n        if (swiper.isHorizontal()) {\n            dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n            dragEl.style.width = `${newSize}px`;\n        } else {\n            dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n            dragEl.style.height = `${newSize}px`;\n        }\n        if (params.hide) {\n            clearTimeout(timeout);\n            el.style.opacity = 1;\n            timeout = setTimeout(()=>{\n                el.style.opacity = 0;\n                el.style.transitionDuration = \"400ms\";\n            }, 1000);\n        }\n    }\n    function setTransition(duration) {\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n        swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n    }\n    function updateSize() {\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n        const { scrollbar: scrollbar } = swiper;\n        const { dragEl: dragEl, el: el } = scrollbar;\n        dragEl.style.width = \"\";\n        dragEl.style.height = \"\";\n        trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n        divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n        if (swiper.params.scrollbar.dragSize === \"auto\") dragSize = trackSize * divider;\n        else dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n        if (swiper.isHorizontal()) dragEl.style.width = `${dragSize}px`;\n        else dragEl.style.height = `${dragSize}px`;\n        if (divider >= 1) el.style.display = \"none\";\n        else el.style.display = \"\";\n        if (swiper.params.scrollbar.hide) el.style.opacity = 0;\n        if (swiper.params.watchOverflow && swiper.enabled) scrollbar.el.classList[swiper.isLocked ? \"add\" : \"remove\"](swiper.params.scrollbar.lockClass);\n    }\n    function getPointerPosition(e) {\n        return swiper.isHorizontal() ? e.clientX : e.clientY;\n    }\n    function setDragPosition(e) {\n        const { scrollbar: scrollbar, rtlTranslate: rtl } = swiper;\n        const { el: el } = scrollbar;\n        let positionRatio;\n        positionRatio = (getPointerPosition(e) - (0, $3e0e2b092da8f124$export$8b22cf2602fb60ce)(el)[swiper.isHorizontal() ? \"left\" : \"top\"] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n        positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n        if (rtl) positionRatio = 1 - positionRatio;\n        const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n        swiper.updateProgress(position);\n        swiper.setTranslate(position);\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n    }\n    function onDragStart(e) {\n        const params = swiper.params.scrollbar;\n        const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper;\n        const { el: el, dragEl: dragEl } = scrollbar;\n        isTouched = true;\n        dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? \"left\" : \"top\"] : null;\n        e.preventDefault();\n        e.stopPropagation();\n        wrapperEl.style.transitionDuration = \"100ms\";\n        dragEl.style.transitionDuration = \"100ms\";\n        setDragPosition(e);\n        clearTimeout(dragTimeout);\n        el.style.transitionDuration = \"0ms\";\n        if (params.hide) el.style.opacity = 1;\n        if (swiper.params.cssMode) swiper.wrapperEl.style[\"scroll-snap-type\"] = \"none\";\n        emit(\"scrollbarDragStart\", e);\n    }\n    function onDragMove(e) {\n        const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper;\n        const { el: el, dragEl: dragEl } = scrollbar;\n        if (!isTouched) return;\n        if (e.preventDefault && e.cancelable) e.preventDefault();\n        else e.returnValue = false;\n        setDragPosition(e);\n        wrapperEl.style.transitionDuration = \"0ms\";\n        el.style.transitionDuration = \"0ms\";\n        dragEl.style.transitionDuration = \"0ms\";\n        emit(\"scrollbarDragMove\", e);\n    }\n    function onDragEnd(e) {\n        const params = swiper.params.scrollbar;\n        const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper;\n        const { el: el } = scrollbar;\n        if (!isTouched) return;\n        isTouched = false;\n        if (swiper.params.cssMode) {\n            swiper.wrapperEl.style[\"scroll-snap-type\"] = \"\";\n            wrapperEl.style.transitionDuration = \"\";\n        }\n        if (params.hide) {\n            clearTimeout(dragTimeout);\n            dragTimeout = (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                el.style.opacity = 0;\n                el.style.transitionDuration = \"400ms\";\n            }, 1000);\n        }\n        emit(\"scrollbarDragEnd\", e);\n        if (params.snapOnRelease) swiper.slideToClosest();\n    }\n    function events(method) {\n        const { scrollbar: scrollbar, params: params } = swiper;\n        const el = scrollbar.el;\n        if (!el) return;\n        const target = el;\n        const activeListener = params.passiveListeners ? {\n            passive: false,\n            capture: false\n        } : false;\n        const passiveListener = params.passiveListeners ? {\n            passive: true,\n            capture: false\n        } : false;\n        if (!target) return;\n        const eventMethod = method === \"on\" ? \"addEventListener\" : \"removeEventListener\";\n        target[eventMethod](\"pointerdown\", onDragStart, activeListener);\n        document[eventMethod](\"pointermove\", onDragMove, activeListener);\n        document[eventMethod](\"pointerup\", onDragEnd, passiveListener);\n    }\n    function enableDraggable() {\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n        events(\"on\");\n    }\n    function disableDraggable() {\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n        events(\"off\");\n    }\n    function init() {\n        const { scrollbar: scrollbar, el: swiperEl } = swiper;\n        swiper.params.scrollbar = (0, $d6f86baea06bd282$export$db3b6bfb95261072)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n            el: \"swiper-scrollbar\"\n        });\n        const params = swiper.params.scrollbar;\n        if (!params.el) return;\n        let el;\n        if (typeof params.el === \"string\" && swiper.isElement) el = swiper.el.querySelector(params.el);\n        if (!el && typeof params.el === \"string\") {\n            el = document.querySelectorAll(params.el);\n            if (!el.length) return;\n        } else if (!el) el = params.el;\n        if (swiper.params.uniqueNavElements && typeof params.el === \"string\" && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) el = swiperEl.querySelector(params.el);\n        if (el.length > 0) el = el[0];\n        el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        let dragEl;\n        if (el) {\n            dragEl = el.querySelector((0, $452edee79264d178$export$db3b6bfb95261072)(swiper.params.scrollbar.dragClass));\n            if (!dragEl) {\n                dragEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", swiper.params.scrollbar.dragClass);\n                el.append(dragEl);\n            }\n        }\n        Object.assign(scrollbar, {\n            el: el,\n            dragEl: dragEl\n        });\n        if (params.draggable) enableDraggable();\n        if (el) el.classList[swiper.enabled ? \"remove\" : \"add\"](...(0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(swiper.params.scrollbar.lockClass));\n    }\n    function destroy() {\n        const params = swiper.params.scrollbar;\n        const el = swiper.scrollbar.el;\n        if (el) el.classList.remove(...(0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n        disableDraggable();\n    }\n    on(\"changeDirection\", ()=>{\n        if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n        const params = swiper.params.scrollbar;\n        let { el: el } = swiper.scrollbar;\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.classList.remove(params.horizontalClass, params.verticalClass);\n            subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        });\n    });\n    on(\"init\", ()=>{\n        if (swiper.params.scrollbar.enabled === false) // eslint-disable-next-line\n        disable();\n        else {\n            init();\n            updateSize();\n            setTranslate();\n        }\n    });\n    on(\"update resize observerUpdate lock unlock changeDirection\", ()=>{\n        updateSize();\n    });\n    on(\"setTranslate\", ()=>{\n        setTranslate();\n    });\n    on(\"setTransition\", (_s, duration)=>{\n        setTransition(duration);\n    });\n    on(\"enable disable\", ()=>{\n        const { el: el } = swiper.scrollbar;\n        if (el) el.classList[swiper.enabled ? \"remove\" : \"add\"](...(0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(swiper.params.scrollbar.lockClass));\n    });\n    on(\"destroy\", ()=>{\n        destroy();\n    });\n    const enable = ()=>{\n        swiper.el.classList.remove(...(0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass));\n        if (swiper.scrollbar.el) swiper.scrollbar.el.classList.remove(...(0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass));\n        init();\n        updateSize();\n        setTranslate();\n    };\n    const disable = ()=>{\n        swiper.el.classList.add(...(0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass));\n        if (swiper.scrollbar.el) swiper.scrollbar.el.classList.add(...(0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass));\n        destroy();\n    };\n    Object.assign(swiper.scrollbar, {\n        enable: enable,\n        disable: disable,\n        updateSize: updateSize,\n        setTranslate: setTranslate,\n        init: init,\n        destroy: destroy\n    });\n}\n\n\n\nfunction $9a5a5dc98a39a784$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        parallax: {\n            enabled: false\n        }\n    });\n    const elementsSelector = \"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]\";\n    const setTransform = (el, progress)=>{\n        const { rtl: rtl } = swiper;\n        const rtlFactor = rtl ? -1 : 1;\n        const p = el.getAttribute(\"data-swiper-parallax\") || \"0\";\n        let x = el.getAttribute(\"data-swiper-parallax-x\");\n        let y = el.getAttribute(\"data-swiper-parallax-y\");\n        const scale = el.getAttribute(\"data-swiper-parallax-scale\");\n        const opacity = el.getAttribute(\"data-swiper-parallax-opacity\");\n        const rotate = el.getAttribute(\"data-swiper-parallax-rotate\");\n        if (x || y) {\n            x = x || \"0\";\n            y = y || \"0\";\n        } else if (swiper.isHorizontal()) {\n            x = p;\n            y = \"0\";\n        } else {\n            y = p;\n            x = \"0\";\n        }\n        if (x.indexOf(\"%\") >= 0) x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n        else x = `${x * progress * rtlFactor}px`;\n        if (y.indexOf(\"%\") >= 0) y = `${parseInt(y, 10) * progress}%`;\n        else y = `${y * progress}px`;\n        if (typeof opacity !== \"undefined\" && opacity !== null) {\n            const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n            el.style.opacity = currentOpacity;\n        }\n        let transform = `translate3d(${x}, ${y}, 0px)`;\n        if (typeof scale !== \"undefined\" && scale !== null) {\n            const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n            transform += ` scale(${currentScale})`;\n        }\n        if (rotate && typeof rotate !== \"undefined\" && rotate !== null) {\n            const currentRotate = rotate * progress * -1;\n            transform += ` rotate(${currentRotate}deg)`;\n        }\n        el.style.transform = transform;\n    };\n    const setTranslate = ()=>{\n        const { el: el, slides: slides, progress: progress, snapGrid: snapGrid, isElement: isElement } = swiper;\n        const elements = (0, $3e0e2b092da8f124$export$f1e1789686576879)(el, elementsSelector);\n        if (swiper.isElement) elements.push(...(0, $3e0e2b092da8f124$export$f1e1789686576879)(swiper.hostEl, elementsSelector));\n        elements.forEach((subEl)=>{\n            setTransform(subEl, progress);\n        });\n        slides.forEach((slideEl, slideIndex)=>{\n            let slideProgress = slideEl.progress;\n            if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== \"auto\") slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n            slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n            slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach((subEl)=>{\n                setTransform(subEl, slideProgress);\n            });\n        });\n    };\n    const setTransition = function(duration) {\n        if (duration === void 0) duration = swiper.params.speed;\n        const { el: el, hostEl: hostEl } = swiper;\n        const elements = [\n            ...el.querySelectorAll(elementsSelector)\n        ];\n        if (swiper.isElement) elements.push(...hostEl.querySelectorAll(elementsSelector));\n        elements.forEach((parallaxEl)=>{\n            let parallaxDuration = parseInt(parallaxEl.getAttribute(\"data-swiper-parallax-duration\"), 10) || duration;\n            if (duration === 0) parallaxDuration = 0;\n            parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n        });\n    };\n    on(\"beforeInit\", ()=>{\n        if (!swiper.params.parallax.enabled) return;\n        swiper.params.watchSlidesProgress = true;\n        swiper.originalParams.watchSlidesProgress = true;\n    });\n    on(\"init\", ()=>{\n        if (!swiper.params.parallax.enabled) return;\n        setTranslate();\n    });\n    on(\"setTranslate\", ()=>{\n        if (!swiper.params.parallax.enabled) return;\n        setTranslate();\n    });\n    on(\"setTransition\", (_swiper, duration)=>{\n        if (!swiper.params.parallax.enabled) return;\n        setTransition(duration);\n    });\n}\n\n\n\n\nfunction $902ac29743f68e69$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    extendParams({\n        zoom: {\n            enabled: false,\n            limitToOriginalSize: false,\n            maxRatio: 3,\n            minRatio: 1,\n            toggle: true,\n            containerClass: \"swiper-zoom-container\",\n            zoomedSlideClass: \"swiper-slide-zoomed\"\n        }\n    });\n    swiper.zoom = {\n        enabled: false\n    };\n    let currentScale = 1;\n    let isScaling = false;\n    let fakeGestureTouched;\n    let fakeGestureMoved;\n    const evCache = [];\n    const gesture = {\n        originX: 0,\n        originY: 0,\n        slideEl: undefined,\n        slideWidth: undefined,\n        slideHeight: undefined,\n        imageEl: undefined,\n        imageWrapEl: undefined,\n        maxRatio: 3\n    };\n    const image = {\n        isTouched: undefined,\n        isMoved: undefined,\n        currentX: undefined,\n        currentY: undefined,\n        minX: undefined,\n        minY: undefined,\n        maxX: undefined,\n        maxY: undefined,\n        width: undefined,\n        height: undefined,\n        startX: undefined,\n        startY: undefined,\n        touchesStart: {},\n        touchesCurrent: {}\n    };\n    const velocity = {\n        x: undefined,\n        y: undefined,\n        prevPositionX: undefined,\n        prevPositionY: undefined,\n        prevTime: undefined\n    };\n    let scale = 1;\n    Object.defineProperty(swiper.zoom, \"scale\", {\n        get () {\n            return scale;\n        },\n        set (value) {\n            if (scale !== value) {\n                const imageEl = gesture.imageEl;\n                const slideEl = gesture.slideEl;\n                emit(\"zoomChange\", value, imageEl, slideEl);\n            }\n            scale = value;\n        }\n    });\n    function getDistanceBetweenTouches() {\n        if (evCache.length < 2) return 1;\n        const x1 = evCache[0].pageX;\n        const y1 = evCache[0].pageY;\n        const x2 = evCache[1].pageX;\n        const y2 = evCache[1].pageY;\n        const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n        return distance;\n    }\n    function getMaxRatio() {\n        const params = swiper.params.zoom;\n        const maxRatio = gesture.imageWrapEl.getAttribute(\"data-swiper-zoom\") || params.maxRatio;\n        if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n            const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n            return Math.min(imageMaxRatio, maxRatio);\n        }\n        return maxRatio;\n    }\n    function getScaleOrigin() {\n        if (evCache.length < 2) return {\n            x: null,\n            y: null\n        };\n        const box = gesture.imageEl.getBoundingClientRect();\n        return [\n            (evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale,\n            (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale\n        ];\n    }\n    function getSlideSelector() {\n        return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n    }\n    function eventWithinSlide(e) {\n        const slideSelector = getSlideSelector();\n        if (e.target.matches(slideSelector)) return true;\n        if (swiper.slides.filter((slideEl)=>slideEl.contains(e.target)).length > 0) return true;\n        return false;\n    }\n    function eventWithinZoomContainer(e) {\n        const selector = `.${swiper.params.zoom.containerClass}`;\n        if (e.target.matches(selector)) return true;\n        if ([\n            ...swiper.hostEl.querySelectorAll(selector)\n        ].filter((containerEl)=>containerEl.contains(e.target)).length > 0) return true;\n        return false;\n    }\n    // Events\n    function onGestureStart(e) {\n        if (e.pointerType === \"mouse\") evCache.splice(0, evCache.length);\n        if (!eventWithinSlide(e)) return;\n        const params = swiper.params.zoom;\n        fakeGestureTouched = false;\n        fakeGestureMoved = false;\n        evCache.push(e);\n        if (evCache.length < 2) return;\n        fakeGestureTouched = true;\n        gesture.scaleStart = getDistanceBetweenTouches();\n        if (!gesture.slideEl) {\n            gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n            if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n            let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n            if (imageEl) imageEl = imageEl.querySelectorAll(\"picture, img, svg, canvas, .swiper-zoom-target\")[0];\n            gesture.imageEl = imageEl;\n            if (imageEl) gesture.imageWrapEl = (0, $3e0e2b092da8f124$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0];\n            else gesture.imageWrapEl = undefined;\n            if (!gesture.imageWrapEl) {\n                gesture.imageEl = undefined;\n                return;\n            }\n            gesture.maxRatio = getMaxRatio();\n        }\n        if (gesture.imageEl) {\n            const [originX, originY] = getScaleOrigin();\n            gesture.originX = originX;\n            gesture.originY = originY;\n            gesture.imageEl.style.transitionDuration = \"0ms\";\n        }\n        isScaling = true;\n    }\n    function onGestureChange(e) {\n        if (!eventWithinSlide(e)) return;\n        const params = swiper.params.zoom;\n        const zoom = swiper.zoom;\n        const pointerIndex = evCache.findIndex((cachedEv)=>cachedEv.pointerId === e.pointerId);\n        if (pointerIndex >= 0) evCache[pointerIndex] = e;\n        if (evCache.length < 2) return;\n        fakeGestureMoved = true;\n        gesture.scaleMove = getDistanceBetweenTouches();\n        if (!gesture.imageEl) return;\n        zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n        if (zoom.scale > gesture.maxRatio) zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n        if (zoom.scale < params.minRatio) zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n        gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n    }\n    function onGestureEnd(e) {\n        if (!eventWithinSlide(e)) return;\n        if (e.pointerType === \"mouse\" && e.type === \"pointerout\") return;\n        const params = swiper.params.zoom;\n        const zoom = swiper.zoom;\n        const pointerIndex = evCache.findIndex((cachedEv)=>cachedEv.pointerId === e.pointerId);\n        if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n        if (!fakeGestureTouched || !fakeGestureMoved) return;\n        fakeGestureTouched = false;\n        fakeGestureMoved = false;\n        if (!gesture.imageEl) return;\n        zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n        gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n        gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n        currentScale = zoom.scale;\n        isScaling = false;\n        if (zoom.scale > 1 && gesture.slideEl) gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n        else if (zoom.scale <= 1 && gesture.slideEl) gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n        if (zoom.scale === 1) {\n            gesture.originX = 0;\n            gesture.originY = 0;\n            gesture.slideEl = undefined;\n        }\n    }\n    let allowTouchMoveTimeout;\n    function allowTouchMove() {\n        swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n    }\n    function preventTouchMove() {\n        clearTimeout(allowTouchMoveTimeout);\n        swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n        allowTouchMoveTimeout = setTimeout(()=>{\n            allowTouchMove();\n        });\n    }\n    function onTouchStart(e) {\n        const device = swiper.device;\n        if (!gesture.imageEl) return;\n        if (image.isTouched) return;\n        if (device.android && e.cancelable) e.preventDefault();\n        image.isTouched = true;\n        const event = evCache.length > 0 ? evCache[0] : e;\n        image.touchesStart.x = event.pageX;\n        image.touchesStart.y = event.pageY;\n    }\n    function onTouchMove(e) {\n        if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n        const zoom = swiper.zoom;\n        if (!gesture.imageEl) return;\n        if (!image.isTouched || !gesture.slideEl) return;\n        if (!image.isMoved) {\n            image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n            image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n            image.startX = (0, $3e0e2b092da8f124$export$35e795649ee09318)(gesture.imageWrapEl, \"x\") || 0;\n            image.startY = (0, $3e0e2b092da8f124$export$35e795649ee09318)(gesture.imageWrapEl, \"y\") || 0;\n            gesture.slideWidth = gesture.slideEl.offsetWidth;\n            gesture.slideHeight = gesture.slideEl.offsetHeight;\n            gesture.imageWrapEl.style.transitionDuration = \"0ms\";\n        }\n        // Define if we need image drag\n        const scaledWidth = image.width * zoom.scale;\n        const scaledHeight = image.height * zoom.scale;\n        image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n        image.maxX = -image.minX;\n        image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n        image.maxY = -image.minY;\n        image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n        image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n        const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n        if (touchesDiff > 5) swiper.allowClick = false;\n        if (!image.isMoved && !isScaling) {\n            if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n                image.isTouched = false;\n                allowTouchMove();\n                return;\n            }\n            if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n                image.isTouched = false;\n                allowTouchMove();\n                return;\n            }\n        }\n        if (e.cancelable) e.preventDefault();\n        e.stopPropagation();\n        preventTouchMove();\n        image.isMoved = true;\n        const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n        const { originX: originX, originY: originY } = gesture;\n        image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n        image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n        if (image.currentX < image.minX) image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n        if (image.currentX > image.maxX) image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n        if (image.currentY < image.minY) image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n        if (image.currentY > image.maxY) image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n        // Velocity\n        if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n        if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n        if (!velocity.prevTime) velocity.prevTime = Date.now();\n        velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n        velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n        if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n        if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n        velocity.prevPositionX = image.touchesCurrent.x;\n        velocity.prevPositionY = image.touchesCurrent.y;\n        velocity.prevTime = Date.now();\n        gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n    }\n    function onTouchEnd() {\n        const zoom = swiper.zoom;\n        if (!gesture.imageEl) return;\n        if (!image.isTouched || !image.isMoved) {\n            image.isTouched = false;\n            image.isMoved = false;\n            return;\n        }\n        image.isTouched = false;\n        image.isMoved = false;\n        let momentumDurationX = 300;\n        let momentumDurationY = 300;\n        const momentumDistanceX = velocity.x * momentumDurationX;\n        const newPositionX = image.currentX + momentumDistanceX;\n        const momentumDistanceY = velocity.y * momentumDurationY;\n        const newPositionY = image.currentY + momentumDistanceY;\n        // Fix duration\n        if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n        if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n        const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n        image.currentX = newPositionX;\n        image.currentY = newPositionY;\n        // Define if we need image drag\n        const scaledWidth = image.width * zoom.scale;\n        const scaledHeight = image.height * zoom.scale;\n        image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n        image.maxX = -image.minX;\n        image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n        image.maxY = -image.minY;\n        image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n        image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n        gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n        gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n    }\n    function onTransitionEnd() {\n        const zoom = swiper.zoom;\n        if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n            if (gesture.imageEl) gesture.imageEl.style.transform = \"translate3d(0,0,0) scale(1)\";\n            if (gesture.imageWrapEl) gesture.imageWrapEl.style.transform = \"translate3d(0,0,0)\";\n            gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n            zoom.scale = 1;\n            currentScale = 1;\n            gesture.slideEl = undefined;\n            gesture.imageEl = undefined;\n            gesture.imageWrapEl = undefined;\n            gesture.originX = 0;\n            gesture.originY = 0;\n        }\n    }\n    function zoomIn(e) {\n        const zoom = swiper.zoom;\n        const params = swiper.params.zoom;\n        if (!gesture.slideEl) {\n            if (e && e.target) gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n            if (!gesture.slideEl) {\n                if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) gesture.slideEl = (0, $3e0e2b092da8f124$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n                else gesture.slideEl = swiper.slides[swiper.activeIndex];\n            }\n            let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n            if (imageEl) imageEl = imageEl.querySelectorAll(\"picture, img, svg, canvas, .swiper-zoom-target\")[0];\n            gesture.imageEl = imageEl;\n            if (imageEl) gesture.imageWrapEl = (0, $3e0e2b092da8f124$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0];\n            else gesture.imageWrapEl = undefined;\n        }\n        if (!gesture.imageEl || !gesture.imageWrapEl) return;\n        if (swiper.params.cssMode) {\n            swiper.wrapperEl.style.overflow = \"hidden\";\n            swiper.wrapperEl.style.touchAction = \"none\";\n        }\n        gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n        let touchX;\n        let touchY;\n        let offsetX;\n        let offsetY;\n        let diffX;\n        let diffY;\n        let translateX;\n        let translateY;\n        let imageWidth;\n        let imageHeight;\n        let scaledWidth;\n        let scaledHeight;\n        let translateMinX;\n        let translateMinY;\n        let translateMaxX;\n        let translateMaxY;\n        let slideWidth;\n        let slideHeight;\n        if (typeof image.touchesStart.x === \"undefined\" && e) {\n            touchX = e.pageX;\n            touchY = e.pageY;\n        } else {\n            touchX = image.touchesStart.x;\n            touchY = image.touchesStart.y;\n        }\n        const forceZoomRatio = typeof e === \"number\" ? e : null;\n        if (currentScale === 1 && forceZoomRatio) {\n            touchX = undefined;\n            touchY = undefined;\n        }\n        const maxRatio = getMaxRatio();\n        zoom.scale = forceZoomRatio || maxRatio;\n        currentScale = forceZoomRatio || maxRatio;\n        if (e && !(currentScale === 1 && forceZoomRatio)) {\n            slideWidth = gesture.slideEl.offsetWidth;\n            slideHeight = gesture.slideEl.offsetHeight;\n            offsetX = (0, $3e0e2b092da8f124$export$8b22cf2602fb60ce)(gesture.slideEl).left + window.scrollX;\n            offsetY = (0, $3e0e2b092da8f124$export$8b22cf2602fb60ce)(gesture.slideEl).top + window.scrollY;\n            diffX = offsetX + slideWidth / 2 - touchX;\n            diffY = offsetY + slideHeight / 2 - touchY;\n            imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n            imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n            scaledWidth = imageWidth * zoom.scale;\n            scaledHeight = imageHeight * zoom.scale;\n            translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n            translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n            translateMaxX = -translateMinX;\n            translateMaxY = -translateMinY;\n            translateX = diffX * zoom.scale;\n            translateY = diffY * zoom.scale;\n            if (translateX < translateMinX) translateX = translateMinX;\n            if (translateX > translateMaxX) translateX = translateMaxX;\n            if (translateY < translateMinY) translateY = translateMinY;\n            if (translateY > translateMaxY) translateY = translateMaxY;\n        } else {\n            translateX = 0;\n            translateY = 0;\n        }\n        if (forceZoomRatio && zoom.scale === 1) {\n            gesture.originX = 0;\n            gesture.originY = 0;\n        }\n        gesture.imageWrapEl.style.transitionDuration = \"300ms\";\n        gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n        gesture.imageEl.style.transitionDuration = \"300ms\";\n        gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n    }\n    function zoomOut() {\n        const zoom = swiper.zoom;\n        const params = swiper.params.zoom;\n        if (!gesture.slideEl) {\n            if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) gesture.slideEl = (0, $3e0e2b092da8f124$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n            else gesture.slideEl = swiper.slides[swiper.activeIndex];\n            let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n            if (imageEl) imageEl = imageEl.querySelectorAll(\"picture, img, svg, canvas, .swiper-zoom-target\")[0];\n            gesture.imageEl = imageEl;\n            if (imageEl) gesture.imageWrapEl = (0, $3e0e2b092da8f124$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0];\n            else gesture.imageWrapEl = undefined;\n        }\n        if (!gesture.imageEl || !gesture.imageWrapEl) return;\n        if (swiper.params.cssMode) {\n            swiper.wrapperEl.style.overflow = \"\";\n            swiper.wrapperEl.style.touchAction = \"\";\n        }\n        zoom.scale = 1;\n        currentScale = 1;\n        gesture.imageWrapEl.style.transitionDuration = \"300ms\";\n        gesture.imageWrapEl.style.transform = \"translate3d(0,0,0)\";\n        gesture.imageEl.style.transitionDuration = \"300ms\";\n        gesture.imageEl.style.transform = \"translate3d(0,0,0) scale(1)\";\n        gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n        gesture.slideEl = undefined;\n        gesture.originX = 0;\n        gesture.originY = 0;\n    }\n    // Toggle Zoom\n    function zoomToggle(e) {\n        const zoom = swiper.zoom;\n        if (zoom.scale && zoom.scale !== 1) // Zoom Out\n        zoomOut();\n        else // Zoom In\n        zoomIn(e);\n    }\n    function getListeners() {\n        const passiveListener = swiper.params.passiveListeners ? {\n            passive: true,\n            capture: false\n        } : false;\n        const activeListenerWithCapture = swiper.params.passiveListeners ? {\n            passive: false,\n            capture: true\n        } : true;\n        return {\n            passiveListener: passiveListener,\n            activeListenerWithCapture: activeListenerWithCapture\n        };\n    }\n    // Attach/Detach Events\n    function enable() {\n        const zoom = swiper.zoom;\n        if (zoom.enabled) return;\n        zoom.enabled = true;\n        const { passiveListener: passiveListener, activeListenerWithCapture: activeListenerWithCapture } = getListeners();\n        // Scale image\n        swiper.wrapperEl.addEventListener(\"pointerdown\", onGestureStart, passiveListener);\n        swiper.wrapperEl.addEventListener(\"pointermove\", onGestureChange, activeListenerWithCapture);\n        [\n            \"pointerup\",\n            \"pointercancel\",\n            \"pointerout\"\n        ].forEach((eventName)=>{\n            swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n        });\n        // Move image\n        swiper.wrapperEl.addEventListener(\"pointermove\", onTouchMove, activeListenerWithCapture);\n    }\n    function disable() {\n        const zoom = swiper.zoom;\n        if (!zoom.enabled) return;\n        zoom.enabled = false;\n        const { passiveListener: passiveListener, activeListenerWithCapture: activeListenerWithCapture } = getListeners();\n        // Scale image\n        swiper.wrapperEl.removeEventListener(\"pointerdown\", onGestureStart, passiveListener);\n        swiper.wrapperEl.removeEventListener(\"pointermove\", onGestureChange, activeListenerWithCapture);\n        [\n            \"pointerup\",\n            \"pointercancel\",\n            \"pointerout\"\n        ].forEach((eventName)=>{\n            swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n        });\n        // Move image\n        swiper.wrapperEl.removeEventListener(\"pointermove\", onTouchMove, activeListenerWithCapture);\n    }\n    on(\"init\", ()=>{\n        if (swiper.params.zoom.enabled) enable();\n    });\n    on(\"destroy\", ()=>{\n        disable();\n    });\n    on(\"touchStart\", (_s, e)=>{\n        if (!swiper.zoom.enabled) return;\n        onTouchStart(e);\n    });\n    on(\"touchEnd\", (_s, e)=>{\n        if (!swiper.zoom.enabled) return;\n        onTouchEnd();\n    });\n    on(\"doubleTap\", (_s, e)=>{\n        if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) zoomToggle(e);\n    });\n    on(\"transitionEnd\", ()=>{\n        if (swiper.zoom.enabled && swiper.params.zoom.enabled) onTransitionEnd();\n    });\n    on(\"slideChange\", ()=>{\n        if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) onTransitionEnd();\n    });\n    Object.assign(swiper.zoom, {\n        enable: enable,\n        disable: disable,\n        in: zoomIn,\n        out: zoomOut,\n        toggle: zoomToggle\n    });\n}\n\n\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */ function $8ad27336c27f2357$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        controller: {\n            control: undefined,\n            inverse: false,\n            by: \"slide\" // or 'container'\n        }\n    });\n    swiper.controller = {\n        control: undefined\n    };\n    function LinearSpline(x, y) {\n        const binarySearch = function search() {\n            let maxIndex;\n            let minIndex;\n            let guess;\n            return (array, val)=>{\n                minIndex = -1;\n                maxIndex = array.length;\n                while(maxIndex - minIndex > 1){\n                    guess = maxIndex + minIndex >> 1;\n                    if (array[guess] <= val) minIndex = guess;\n                    else maxIndex = guess;\n                }\n                return maxIndex;\n            };\n        }();\n        this.x = x;\n        this.y = y;\n        this.lastIndex = x.length - 1;\n        // Given an x value (x2), return the expected y2 value:\n        // (x1,y1) is the known point before given value,\n        // (x3,y3) is the known point after given value.\n        let i1;\n        let i3;\n        this.interpolate = function interpolate(x2) {\n            if (!x2) return 0;\n            // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n            i3 = binarySearch(this.x, x2);\n            i1 = i3 - 1;\n            // We have our indexes i1 & i3, so we can calculate already:\n            // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n            return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n        };\n        return this;\n    }\n    function getInterpolateFunction(c) {\n        swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n    function setTranslate(_t, byController) {\n        const controlled = swiper.controller.control;\n        let multiplier;\n        let controlledTranslate;\n        const Swiper = swiper.constructor;\n        function setControlledTranslate(c) {\n            if (c.destroyed) return;\n            // this will create an Interpolate function based on the snapGrids\n            // x is the Grid of the scrolled scroller and y will be the controlled scroller\n            // it makes sense to create this only once and recall it for the interpolation\n            // the function does a lot of value caching for performance\n            const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n            if (swiper.params.controller.by === \"slide\") {\n                getInterpolateFunction(c);\n                // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n                // but it did not work out\n                controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n            }\n            if (!controlledTranslate || swiper.params.controller.by === \"container\") {\n                multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n                if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) multiplier = 1;\n                controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n            }\n            if (swiper.params.controller.inverse) controlledTranslate = c.maxTranslate() - controlledTranslate;\n            c.updateProgress(controlledTranslate);\n            c.setTranslate(controlledTranslate, swiper);\n            c.updateActiveIndex();\n            c.updateSlidesClasses();\n        }\n        if (Array.isArray(controlled)) {\n            for(let i = 0; i < controlled.length; i += 1)if (controlled[i] !== byController && controlled[i] instanceof Swiper) setControlledTranslate(controlled[i]);\n        } else if (controlled instanceof Swiper && byController !== controlled) setControlledTranslate(controlled);\n    }\n    function setTransition(duration, byController) {\n        const Swiper = swiper.constructor;\n        const controlled = swiper.controller.control;\n        let i;\n        function setControlledTransition(c) {\n            if (c.destroyed) return;\n            c.setTransition(duration, swiper);\n            if (duration !== 0) {\n                c.transitionStart();\n                if (c.params.autoHeight) (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                    c.updateAutoHeight();\n                });\n                (0, $3e0e2b092da8f124$export$342063e11d6c3cad)(c.wrapperEl, ()=>{\n                    if (!controlled) return;\n                    c.transitionEnd();\n                });\n            }\n        }\n        if (Array.isArray(controlled)) {\n            for(i = 0; i < controlled.length; i += 1)if (controlled[i] !== byController && controlled[i] instanceof Swiper) setControlledTransition(controlled[i]);\n        } else if (controlled instanceof Swiper && byController !== controlled) setControlledTransition(controlled);\n    }\n    function removeSpline() {\n        if (!swiper.controller.control) return;\n        if (swiper.controller.spline) {\n            swiper.controller.spline = undefined;\n            delete swiper.controller.spline;\n        }\n    }\n    on(\"beforeInit\", ()=>{\n        if (typeof window !== \"undefined\" && // eslint-disable-line\n        (typeof swiper.params.controller.control === \"string\" || swiper.params.controller.control instanceof HTMLElement)) {\n            const controlElements = typeof swiper.params.controller.control === \"string\" ? [\n                ...document.querySelectorAll(swiper.params.controller.control)\n            ] : [\n                swiper.params.controller.control\n            ];\n            controlElements.forEach((controlElement)=>{\n                if (!swiper.controller.control) swiper.controller.control = [];\n                if (controlElement && controlElement.swiper) swiper.controller.control.push(controlElement.swiper);\n                else if (controlElement) {\n                    const eventName = `${swiper.params.eventsPrefix}init`;\n                    const onControllerSwiper = (e)=>{\n                        swiper.controller.control.push(e.detail[0]);\n                        swiper.update();\n                        controlElement.removeEventListener(eventName, onControllerSwiper);\n                    };\n                    controlElement.addEventListener(eventName, onControllerSwiper);\n                }\n            });\n            return;\n        }\n        swiper.controller.control = swiper.params.controller.control;\n    });\n    on(\"update\", ()=>{\n        removeSpline();\n    });\n    on(\"resize\", ()=>{\n        removeSpline();\n    });\n    on(\"observerUpdate\", ()=>{\n        removeSpline();\n    });\n    on(\"setTranslate\", (_s, translate, byController)=>{\n        if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n        swiper.controller.setTranslate(translate, byController);\n    });\n    on(\"setTransition\", (_s, duration, byController)=>{\n        if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n        swiper.controller.setTransition(duration, byController);\n    });\n    Object.assign(swiper.controller, {\n        setTranslate: setTranslate,\n        setTransition: setTransition\n    });\n}\n\n\n\n\n\nfunction $f036f37c54b3aa6f$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        a11y: {\n            enabled: true,\n            notificationClass: \"swiper-notification\",\n            prevSlideMessage: \"Previous slide\",\n            nextSlideMessage: \"Next slide\",\n            firstSlideMessage: \"This is the first slide\",\n            lastSlideMessage: \"This is the last slide\",\n            paginationBulletMessage: \"Go to slide {{index}}\",\n            slideLabelMessage: \"{{index}} / {{slidesLength}}\",\n            containerMessage: null,\n            containerRoleDescriptionMessage: null,\n            itemRoleDescriptionMessage: null,\n            slideRole: \"group\",\n            id: null,\n            scrollOnFocus: true\n        }\n    });\n    swiper.a11y = {\n        clicked: false\n    };\n    let liveRegion = null;\n    let preventFocusHandler;\n    let focusTargetSlideEl;\n    let visibilityChangedTimestamp = new Date().getTime();\n    function notify(message) {\n        const notification = liveRegion;\n        if (notification.length === 0) return;\n        notification.innerHTML = \"\";\n        notification.innerHTML = message;\n    }\n    function getRandomNumber(size) {\n        if (size === void 0) size = 16;\n        const randomChar = ()=>Math.round(16 * Math.random()).toString(16);\n        return \"x\".repeat(size).replace(/x/g, randomChar);\n    }\n    function makeElFocusable(el) {\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"tabIndex\", \"0\");\n        });\n    }\n    function makeElNotFocusable(el) {\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"tabIndex\", \"-1\");\n        });\n    }\n    function addElRole(el, role) {\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"role\", role);\n        });\n    }\n    function addElRoleDescription(el, description) {\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-roledescription\", description);\n        });\n    }\n    function addElControls(el, controls) {\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-controls\", controls);\n        });\n    }\n    function addElLabel(el, label) {\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-label\", label);\n        });\n    }\n    function addElId(el, id) {\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"id\", id);\n        });\n    }\n    function addElLive(el, live) {\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-live\", live);\n        });\n    }\n    function disableEl(el) {\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-disabled\", true);\n        });\n    }\n    function enableEl(el) {\n        el = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-disabled\", false);\n        });\n    }\n    function onEnterOrSpaceKey(e) {\n        if (e.keyCode !== 13 && e.keyCode !== 32) return;\n        const params = swiper.params.a11y;\n        const targetEl = e.target;\n        if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n            if (!e.target.matches((0, $452edee79264d178$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass))) return;\n        }\n        if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n            const prevEls = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(swiper.navigation.prevEl);\n            const nextEls = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(swiper.navigation.nextEl);\n            if (nextEls.includes(targetEl)) {\n                if (!(swiper.isEnd && !swiper.params.loop)) swiper.slideNext();\n                if (swiper.isEnd) notify(params.lastSlideMessage);\n                else notify(params.nextSlideMessage);\n            }\n            if (prevEls.includes(targetEl)) {\n                if (!(swiper.isBeginning && !swiper.params.loop)) swiper.slidePrev();\n                if (swiper.isBeginning) notify(params.firstSlideMessage);\n                else notify(params.prevSlideMessage);\n            }\n        }\n        if (swiper.pagination && targetEl.matches((0, $452edee79264d178$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass))) targetEl.click();\n    }\n    function updateNavigation() {\n        if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n        const { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n        if (prevEl) {\n            if (swiper.isBeginning) {\n                disableEl(prevEl);\n                makeElNotFocusable(prevEl);\n            } else {\n                enableEl(prevEl);\n                makeElFocusable(prevEl);\n            }\n        }\n        if (nextEl) {\n            if (swiper.isEnd) {\n                disableEl(nextEl);\n                makeElNotFocusable(nextEl);\n            } else {\n                enableEl(nextEl);\n                makeElFocusable(nextEl);\n            }\n        }\n    }\n    function hasPagination() {\n        return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n    }\n    function hasClickablePagination() {\n        return hasPagination() && swiper.params.pagination.clickable;\n    }\n    function updatePagination() {\n        const params = swiper.params.a11y;\n        if (!hasPagination()) return;\n        swiper.pagination.bullets.forEach((bulletEl)=>{\n            if (swiper.params.pagination.clickable) {\n                makeElFocusable(bulletEl);\n                if (!swiper.params.pagination.renderBullet) {\n                    addElRole(bulletEl, \"button\");\n                    addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, (0, $3e0e2b092da8f124$export$dda1d9f60106f0e9)(bulletEl) + 1));\n                }\n            }\n            if (bulletEl.matches((0, $452edee79264d178$export$db3b6bfb95261072)(swiper.params.pagination.bulletActiveClass))) bulletEl.setAttribute(\"aria-current\", \"true\");\n            else bulletEl.removeAttribute(\"aria-current\");\n        });\n    }\n    const initNavEl = (el, wrapperId, message)=>{\n        makeElFocusable(el);\n        if (el.tagName !== \"BUTTON\") {\n            addElRole(el, \"button\");\n            el.addEventListener(\"keydown\", onEnterOrSpaceKey);\n        }\n        addElLabel(el, message);\n        addElControls(el, wrapperId);\n    };\n    const handlePointerDown = (e)=>{\n        if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) preventFocusHandler = true;\n        swiper.a11y.clicked = true;\n    };\n    const handlePointerUp = ()=>{\n        preventFocusHandler = false;\n        requestAnimationFrame(()=>{\n            requestAnimationFrame(()=>{\n                if (!swiper.destroyed) swiper.a11y.clicked = false;\n            });\n        });\n    };\n    const onVisibilityChange = (e)=>{\n        visibilityChangedTimestamp = new Date().getTime();\n    };\n    const handleFocus = (e)=>{\n        if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n        if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n        const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n        if (!slideEl || !swiper.slides.includes(slideEl)) return;\n        focusTargetSlideEl = slideEl;\n        const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n        const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n        if (isActive || isVisible) return;\n        if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n        if (swiper.isHorizontal()) swiper.el.scrollLeft = 0;\n        else swiper.el.scrollTop = 0;\n        requestAnimationFrame(()=>{\n            if (preventFocusHandler) return;\n            if (swiper.params.loop) swiper.slideToLoop(parseInt(slideEl.getAttribute(\"data-swiper-slide-index\")), 0);\n            else swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n            preventFocusHandler = false;\n        });\n    };\n    const initSlides = ()=>{\n        const params = swiper.params.a11y;\n        if (params.itemRoleDescriptionMessage) addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n        if (params.slideRole) addElRole(swiper.slides, params.slideRole);\n        const slidesLength = swiper.slides.length;\n        if (params.slideLabelMessage) swiper.slides.forEach((slideEl, index)=>{\n            const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute(\"data-swiper-slide-index\"), 10) : index;\n            const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n            addElLabel(slideEl, ariaLabelMessage);\n        });\n    };\n    const init = ()=>{\n        const params = swiper.params.a11y;\n        swiper.el.append(liveRegion);\n        // Container\n        const containerEl = swiper.el;\n        if (params.containerRoleDescriptionMessage) addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n        if (params.containerMessage) addElLabel(containerEl, params.containerMessage);\n        // Wrapper\n        const wrapperEl = swiper.wrapperEl;\n        const wrapperId = params.id || wrapperEl.getAttribute(\"id\") || `swiper-wrapper-${getRandomNumber(16)}`;\n        const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? \"off\" : \"polite\";\n        addElId(wrapperEl, wrapperId);\n        addElLive(wrapperEl, live);\n        // Slide\n        initSlides();\n        // Navigation\n        let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation ? swiper.navigation : {};\n        nextEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(nextEl);\n        prevEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(prevEl);\n        if (nextEl) nextEl.forEach((el)=>initNavEl(el, wrapperId, params.nextSlideMessage));\n        if (prevEl) prevEl.forEach((el)=>initNavEl(el, wrapperId, params.prevSlideMessage));\n        // Pagination\n        if (hasClickablePagination()) {\n            const paginationEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(swiper.pagination.el);\n            paginationEl.forEach((el)=>{\n                el.addEventListener(\"keydown\", onEnterOrSpaceKey);\n            });\n        }\n        // Tab focus\n        const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n        document.addEventListener(\"visibilitychange\", onVisibilityChange);\n        swiper.el.addEventListener(\"focus\", handleFocus, true);\n        swiper.el.addEventListener(\"focus\", handleFocus, true);\n        swiper.el.addEventListener(\"pointerdown\", handlePointerDown, true);\n        swiper.el.addEventListener(\"pointerup\", handlePointerUp, true);\n    };\n    function destroy() {\n        if (liveRegion) liveRegion.remove();\n        let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation ? swiper.navigation : {};\n        nextEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(nextEl);\n        prevEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(prevEl);\n        if (nextEl) nextEl.forEach((el)=>el.removeEventListener(\"keydown\", onEnterOrSpaceKey));\n        if (prevEl) prevEl.forEach((el)=>el.removeEventListener(\"keydown\", onEnterOrSpaceKey));\n        // Pagination\n        if (hasClickablePagination()) {\n            const paginationEl = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(swiper.pagination.el);\n            paginationEl.forEach((el)=>{\n                el.removeEventListener(\"keydown\", onEnterOrSpaceKey);\n            });\n        }\n        const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n        document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n        // Tab focus\n        if (swiper.el && typeof swiper.el !== \"string\") {\n            swiper.el.removeEventListener(\"focus\", handleFocus, true);\n            swiper.el.removeEventListener(\"pointerdown\", handlePointerDown, true);\n            swiper.el.removeEventListener(\"pointerup\", handlePointerUp, true);\n        }\n    }\n    on(\"beforeInit\", ()=>{\n        liveRegion = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"span\", swiper.params.a11y.notificationClass);\n        liveRegion.setAttribute(\"aria-live\", \"assertive\");\n        liveRegion.setAttribute(\"aria-atomic\", \"true\");\n    });\n    on(\"afterInit\", ()=>{\n        if (!swiper.params.a11y.enabled) return;\n        init();\n    });\n    on(\"slidesLengthChange snapGridLengthChange slidesGridLengthChange\", ()=>{\n        if (!swiper.params.a11y.enabled) return;\n        initSlides();\n    });\n    on(\"fromEdge toEdge afterInit lock unlock\", ()=>{\n        if (!swiper.params.a11y.enabled) return;\n        updateNavigation();\n    });\n    on(\"paginationUpdate\", ()=>{\n        if (!swiper.params.a11y.enabled) return;\n        updatePagination();\n    });\n    on(\"destroy\", ()=>{\n        if (!swiper.params.a11y.enabled) return;\n        destroy();\n    });\n}\n\n\n\nfunction $0ce99a47f98448f9$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        history: {\n            enabled: false,\n            root: \"\",\n            replaceState: false,\n            key: \"slides\",\n            keepQuery: false\n        }\n    });\n    let initialized = false;\n    let paths = {};\n    const slugify = (text)=>{\n        return text.toString().replace(/\\s+/g, \"-\").replace(/[^\\w-]+/g, \"\").replace(/--+/g, \"-\").replace(/^-+/, \"\").replace(/-+$/, \"\");\n    };\n    const getPathValues = (urlOverride)=>{\n        const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n        let location;\n        if (urlOverride) location = new URL(urlOverride);\n        else location = window.location;\n        const pathArray = location.pathname.slice(1).split(\"/\").filter((part)=>part !== \"\");\n        const total = pathArray.length;\n        const key = pathArray[total - 2];\n        const value = pathArray[total - 1];\n        return {\n            key: key,\n            value: value\n        };\n    };\n    const setHistory = (key, index)=>{\n        const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n        if (!initialized || !swiper.params.history.enabled) return;\n        let location;\n        if (swiper.params.url) location = new URL(swiper.params.url);\n        else location = window.location;\n        const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n        let value = slugify(slide.getAttribute(\"data-history\"));\n        if (swiper.params.history.root.length > 0) {\n            let root = swiper.params.history.root;\n            if (root[root.length - 1] === \"/\") root = root.slice(0, root.length - 1);\n            value = `${root}/${key ? `${key}/` : \"\"}${value}`;\n        } else if (!location.pathname.includes(key)) value = `${key ? `${key}/` : \"\"}${value}`;\n        if (swiper.params.history.keepQuery) value += location.search;\n        const currentState = window.history.state;\n        if (currentState && currentState.value === value) return;\n        if (swiper.params.history.replaceState) window.history.replaceState({\n            value: value\n        }, null, value);\n        else window.history.pushState({\n            value: value\n        }, null, value);\n    };\n    const scrollToSlide = (speed, value, runCallbacks)=>{\n        if (value) for(let i = 0, length = swiper.slides.length; i < length; i += 1){\n            const slide = swiper.slides[i];\n            const slideHistory = slugify(slide.getAttribute(\"data-history\"));\n            if (slideHistory === value) {\n                const index = swiper.getSlideIndex(slide);\n                swiper.slideTo(index, speed, runCallbacks);\n            }\n        }\n        else swiper.slideTo(0, speed, runCallbacks);\n    };\n    const setHistoryPopState = ()=>{\n        paths = getPathValues(swiper.params.url);\n        scrollToSlide(swiper.params.speed, paths.value, false);\n    };\n    const init = ()=>{\n        const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n        if (!swiper.params.history) return;\n        if (!window.history || !window.history.pushState) {\n            swiper.params.history.enabled = false;\n            swiper.params.hashNavigation.enabled = true;\n            return;\n        }\n        initialized = true;\n        paths = getPathValues(swiper.params.url);\n        if (!paths.key && !paths.value) {\n            if (!swiper.params.history.replaceState) window.addEventListener(\"popstate\", setHistoryPopState);\n            return;\n        }\n        scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n        if (!swiper.params.history.replaceState) window.addEventListener(\"popstate\", setHistoryPopState);\n    };\n    const destroy = ()=>{\n        const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n        if (!swiper.params.history.replaceState) window.removeEventListener(\"popstate\", setHistoryPopState);\n    };\n    on(\"init\", ()=>{\n        if (swiper.params.history.enabled) init();\n    });\n    on(\"destroy\", ()=>{\n        if (swiper.params.history.enabled) destroy();\n    });\n    on(\"transitionEnd _freeModeNoMomentumRelease\", ()=>{\n        if (initialized) setHistory(swiper.params.history.key, swiper.activeIndex);\n    });\n    on(\"slideChange\", ()=>{\n        if (initialized && swiper.params.cssMode) setHistory(swiper.params.history.key, swiper.activeIndex);\n    });\n}\n\n\n\n\nfunction $749dc992af967f35$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, emit: emit, on: on } = _ref;\n    let initialized = false;\n    const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    extendParams({\n        hashNavigation: {\n            enabled: false,\n            replaceState: false,\n            watchState: false,\n            getSlideIndex (_s, hash) {\n                if (swiper.virtual && swiper.params.virtual.enabled) {\n                    const slideWithHash = swiper.slides.filter((slideEl)=>slideEl.getAttribute(\"data-hash\") === hash)[0];\n                    if (!slideWithHash) return 0;\n                    const index = parseInt(slideWithHash.getAttribute(\"data-swiper-slide-index\"), 10);\n                    return index;\n                }\n                return swiper.getSlideIndex((0, $3e0e2b092da8f124$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n            }\n        }\n    });\n    const onHashChange = ()=>{\n        emit(\"hashChange\");\n        const newHash = document.location.hash.replace(\"#\", \"\");\n        const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n        const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute(\"data-hash\") : \"\";\n        if (newHash !== activeSlideHash) {\n            const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n            if (typeof newIndex === \"undefined\" || Number.isNaN(newIndex)) return;\n            swiper.slideTo(newIndex);\n        }\n    };\n    const setHash = ()=>{\n        if (!initialized || !swiper.params.hashNavigation.enabled) return;\n        const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n        const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute(\"data-hash\") || activeSlideEl.getAttribute(\"data-history\") : \"\";\n        if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n            window.history.replaceState(null, null, `#${activeSlideHash}` || \"\");\n            emit(\"hashSet\");\n        } else {\n            document.location.hash = activeSlideHash || \"\";\n            emit(\"hashSet\");\n        }\n    };\n    const init = ()=>{\n        if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n        initialized = true;\n        const hash = document.location.hash.replace(\"#\", \"\");\n        if (hash) {\n            const speed = 0;\n            const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n            swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n        }\n        if (swiper.params.hashNavigation.watchState) window.addEventListener(\"hashchange\", onHashChange);\n    };\n    const destroy = ()=>{\n        if (swiper.params.hashNavigation.watchState) window.removeEventListener(\"hashchange\", onHashChange);\n    };\n    on(\"init\", ()=>{\n        if (swiper.params.hashNavigation.enabled) init();\n    });\n    on(\"destroy\", ()=>{\n        if (swiper.params.hashNavigation.enabled) destroy();\n    });\n    on(\"transitionEnd _freeModeNoMomentumRelease\", ()=>{\n        if (initialized) setHash();\n    });\n    on(\"slideChange\", ()=>{\n        if (initialized && swiper.params.cssMode) setHash();\n    });\n}\n\n\n\n/* eslint no-underscore-dangle: \"off\" */ /* eslint no-use-before-define: \"off\" */ function $41ae6f5a5ccdab5c$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit, params: params } = _ref;\n    swiper.autoplay = {\n        running: false,\n        paused: false,\n        timeLeft: 0\n    };\n    extendParams({\n        autoplay: {\n            enabled: false,\n            delay: 3000,\n            waitForTransition: true,\n            disableOnInteraction: false,\n            stopOnLastSlide: false,\n            reverseDirection: false,\n            pauseOnMouseEnter: false\n        }\n    });\n    let timeout;\n    let raf;\n    let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n    let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n    let autoplayTimeLeft;\n    let autoplayStartTime = new Date().getTime();\n    let wasPaused;\n    let isTouched;\n    let pausedByTouch;\n    let touchStartTimeout;\n    let slideChanged;\n    let pausedByInteraction;\n    let pausedByPointerEnter;\n    function onTransitionEnd(e) {\n        if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n        if (e.target !== swiper.wrapperEl) return;\n        swiper.wrapperEl.removeEventListener(\"transitionend\", onTransitionEnd);\n        if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) return;\n        resume();\n    }\n    const calcTimeLeft = ()=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        if (swiper.autoplay.paused) wasPaused = true;\n        else if (wasPaused) {\n            autoplayDelayCurrent = autoplayTimeLeft;\n            wasPaused = false;\n        }\n        const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n        swiper.autoplay.timeLeft = timeLeft;\n        emit(\"autoplayTimeLeft\", timeLeft, timeLeft / autoplayDelayTotal);\n        raf = requestAnimationFrame(()=>{\n            calcTimeLeft();\n        });\n    };\n    const getSlideDelay = ()=>{\n        let activeSlideEl;\n        if (swiper.virtual && swiper.params.virtual.enabled) activeSlideEl = swiper.slides.filter((slideEl)=>slideEl.classList.contains(\"swiper-slide-active\"))[0];\n        else activeSlideEl = swiper.slides[swiper.activeIndex];\n        if (!activeSlideEl) return undefined;\n        const currentSlideDelay = parseInt(activeSlideEl.getAttribute(\"data-swiper-autoplay\"), 10);\n        return currentSlideDelay;\n    };\n    const run = (delayForce)=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        cancelAnimationFrame(raf);\n        calcTimeLeft();\n        let delay = typeof delayForce === \"undefined\" ? swiper.params.autoplay.delay : delayForce;\n        autoplayDelayTotal = swiper.params.autoplay.delay;\n        autoplayDelayCurrent = swiper.params.autoplay.delay;\n        const currentSlideDelay = getSlideDelay();\n        if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === \"undefined\") {\n            delay = currentSlideDelay;\n            autoplayDelayTotal = currentSlideDelay;\n            autoplayDelayCurrent = currentSlideDelay;\n        }\n        autoplayTimeLeft = delay;\n        const speed = swiper.params.speed;\n        const proceed = ()=>{\n            if (!swiper || swiper.destroyed) return;\n            if (swiper.params.autoplay.reverseDirection) {\n                if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n                    swiper.slidePrev(speed, true, true);\n                    emit(\"autoplay\");\n                } else if (!swiper.params.autoplay.stopOnLastSlide) {\n                    swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n                    emit(\"autoplay\");\n                }\n            } else {\n                if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n                    swiper.slideNext(speed, true, true);\n                    emit(\"autoplay\");\n                } else if (!swiper.params.autoplay.stopOnLastSlide) {\n                    swiper.slideTo(0, speed, true, true);\n                    emit(\"autoplay\");\n                }\n            }\n            if (swiper.params.cssMode) {\n                autoplayStartTime = new Date().getTime();\n                requestAnimationFrame(()=>{\n                    run();\n                });\n            }\n        };\n        if (delay > 0) {\n            clearTimeout(timeout);\n            timeout = setTimeout(()=>{\n                proceed();\n            }, delay);\n        } else requestAnimationFrame(()=>{\n            proceed();\n        });\n        // eslint-disable-next-line\n        return delay;\n    };\n    const start = ()=>{\n        autoplayStartTime = new Date().getTime();\n        swiper.autoplay.running = true;\n        run();\n        emit(\"autoplayStart\");\n    };\n    const stop = ()=>{\n        swiper.autoplay.running = false;\n        clearTimeout(timeout);\n        cancelAnimationFrame(raf);\n        emit(\"autoplayStop\");\n    };\n    const pause = (internal, reset)=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        clearTimeout(timeout);\n        if (!internal) pausedByInteraction = true;\n        const proceed = ()=>{\n            emit(\"autoplayPause\");\n            if (swiper.params.autoplay.waitForTransition) swiper.wrapperEl.addEventListener(\"transitionend\", onTransitionEnd);\n            else resume();\n        };\n        swiper.autoplay.paused = true;\n        if (reset) {\n            if (slideChanged) autoplayTimeLeft = swiper.params.autoplay.delay;\n            slideChanged = false;\n            proceed();\n            return;\n        }\n        const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n        autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n        if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n        if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n        proceed();\n    };\n    const resume = ()=>{\n        if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n        autoplayStartTime = new Date().getTime();\n        if (pausedByInteraction) {\n            pausedByInteraction = false;\n            run(autoplayTimeLeft);\n        } else run();\n        swiper.autoplay.paused = false;\n        emit(\"autoplayResume\");\n    };\n    const onVisibilityChange = ()=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n        if (document.visibilityState === \"hidden\") {\n            pausedByInteraction = true;\n            pause(true);\n        }\n        if (document.visibilityState === \"visible\") resume();\n    };\n    const onPointerEnter = (e)=>{\n        if (e.pointerType !== \"mouse\") return;\n        pausedByInteraction = true;\n        pausedByPointerEnter = true;\n        if (swiper.animating || swiper.autoplay.paused) return;\n        pause(true);\n    };\n    const onPointerLeave = (e)=>{\n        if (e.pointerType !== \"mouse\") return;\n        pausedByPointerEnter = false;\n        if (swiper.autoplay.paused) resume();\n    };\n    const attachMouseEvents = ()=>{\n        if (swiper.params.autoplay.pauseOnMouseEnter) {\n            swiper.el.addEventListener(\"pointerenter\", onPointerEnter);\n            swiper.el.addEventListener(\"pointerleave\", onPointerLeave);\n        }\n    };\n    const detachMouseEvents = ()=>{\n        if (swiper.el && typeof swiper.el !== \"string\") {\n            swiper.el.removeEventListener(\"pointerenter\", onPointerEnter);\n            swiper.el.removeEventListener(\"pointerleave\", onPointerLeave);\n        }\n    };\n    const attachDocumentEvents = ()=>{\n        const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n        document.addEventListener(\"visibilitychange\", onVisibilityChange);\n    };\n    const detachDocumentEvents = ()=>{\n        const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n        document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n    };\n    on(\"init\", ()=>{\n        if (swiper.params.autoplay.enabled) {\n            attachMouseEvents();\n            attachDocumentEvents();\n            start();\n        }\n    });\n    on(\"destroy\", ()=>{\n        detachMouseEvents();\n        detachDocumentEvents();\n        if (swiper.autoplay.running) stop();\n    });\n    on(\"_freeModeStaticRelease\", ()=>{\n        if (pausedByTouch || pausedByInteraction) resume();\n    });\n    on(\"_freeModeNoMomentumRelease\", ()=>{\n        if (!swiper.params.autoplay.disableOnInteraction) pause(true, true);\n        else stop();\n    });\n    on(\"beforeTransitionStart\", (_s, speed, internal)=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        if (internal || !swiper.params.autoplay.disableOnInteraction) pause(true, true);\n        else stop();\n    });\n    on(\"sliderFirstMove\", ()=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        if (swiper.params.autoplay.disableOnInteraction) {\n            stop();\n            return;\n        }\n        isTouched = true;\n        pausedByTouch = false;\n        pausedByInteraction = false;\n        touchStartTimeout = setTimeout(()=>{\n            pausedByInteraction = true;\n            pausedByTouch = true;\n            pause(true);\n        }, 200);\n    });\n    on(\"touchEnd\", ()=>{\n        if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n        clearTimeout(touchStartTimeout);\n        clearTimeout(timeout);\n        if (swiper.params.autoplay.disableOnInteraction) {\n            pausedByTouch = false;\n            isTouched = false;\n            return;\n        }\n        if (pausedByTouch && swiper.params.cssMode) resume();\n        pausedByTouch = false;\n        isTouched = false;\n    });\n    on(\"slideChange\", ()=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        slideChanged = true;\n    });\n    Object.assign(swiper.autoplay, {\n        start: start,\n        stop: stop,\n        pause: pause,\n        resume: resume\n    });\n}\n\n\n\n\nfunction $1664cd01e0f13904$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        thumbs: {\n            swiper: null,\n            multipleActiveThumbs: true,\n            autoScrollOffset: 0,\n            slideThumbActiveClass: \"swiper-slide-thumb-active\",\n            thumbsContainerClass: \"swiper-thumbs\"\n        }\n    });\n    let initialized = false;\n    let swiperCreated = false;\n    swiper.thumbs = {\n        swiper: null\n    };\n    function onThumbClick() {\n        const thumbsSwiper = swiper.thumbs.swiper;\n        if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n        const clickedIndex = thumbsSwiper.clickedIndex;\n        const clickedSlide = thumbsSwiper.clickedSlide;\n        if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n        if (typeof clickedIndex === \"undefined\" || clickedIndex === null) return;\n        let slideToIndex;\n        if (thumbsSwiper.params.loop) slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute(\"data-swiper-slide-index\"), 10);\n        else slideToIndex = clickedIndex;\n        if (swiper.params.loop) swiper.slideToLoop(slideToIndex);\n        else swiper.slideTo(slideToIndex);\n    }\n    function init() {\n        const { thumbs: thumbsParams } = swiper.params;\n        if (initialized) return false;\n        initialized = true;\n        const SwiperClass = swiper.constructor;\n        if (thumbsParams.swiper instanceof SwiperClass) {\n            swiper.thumbs.swiper = thumbsParams.swiper;\n            Object.assign(swiper.thumbs.swiper.originalParams, {\n                watchSlidesProgress: true,\n                slideToClickedSlide: false\n            });\n            Object.assign(swiper.thumbs.swiper.params, {\n                watchSlidesProgress: true,\n                slideToClickedSlide: false\n            });\n            swiper.thumbs.swiper.update();\n        } else if ((0, $3e0e2b092da8f124$export$882b5998b3b9117c)(thumbsParams.swiper)) {\n            const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n            Object.assign(thumbsSwiperParams, {\n                watchSlidesProgress: true,\n                slideToClickedSlide: false\n            });\n            swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n            swiperCreated = true;\n        }\n        swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n        swiper.thumbs.swiper.on(\"tap\", onThumbClick);\n        return true;\n    }\n    function update(initial) {\n        const thumbsSwiper = swiper.thumbs.swiper;\n        if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n        const slidesPerView = thumbsSwiper.params.slidesPerView === \"auto\" ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n        // Activate thumbs\n        let thumbsToActivate = 1;\n        const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n        if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) thumbsToActivate = swiper.params.slidesPerView;\n        if (!swiper.params.thumbs.multipleActiveThumbs) thumbsToActivate = 1;\n        thumbsToActivate = Math.floor(thumbsToActivate);\n        thumbsSwiper.slides.forEach((slideEl)=>slideEl.classList.remove(thumbActiveClass));\n        if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) for(let i = 0; i < thumbsToActivate; i += 1)(0, $3e0e2b092da8f124$export$f1e1789686576879)(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach((slideEl)=>{\n            slideEl.classList.add(thumbActiveClass);\n        });\n        else {\n            for(let i = 0; i < thumbsToActivate; i += 1)if (thumbsSwiper.slides[swiper.realIndex + i]) thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n        }\n        const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n        const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n        if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n            const currentThumbsIndex = thumbsSwiper.activeIndex;\n            let newThumbsIndex;\n            let direction;\n            if (thumbsSwiper.params.loop) {\n                const newThumbsSlide = thumbsSwiper.slides.filter((slideEl)=>slideEl.getAttribute(\"data-swiper-slide-index\") === `${swiper.realIndex}`)[0];\n                newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n                direction = swiper.activeIndex > swiper.previousIndex ? \"next\" : \"prev\";\n            } else {\n                newThumbsIndex = swiper.realIndex;\n                direction = newThumbsIndex > swiper.previousIndex ? \"next\" : \"prev\";\n            }\n            if (useOffset) newThumbsIndex += direction === \"next\" ? autoScrollOffset : -1 * autoScrollOffset;\n            if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n                if (thumbsSwiper.params.centeredSlides) {\n                    if (newThumbsIndex > currentThumbsIndex) newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n                    else newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n                } else newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup;\n                thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n            }\n        }\n    }\n    on(\"beforeInit\", ()=>{\n        const { thumbs: thumbs } = swiper.params;\n        if (!thumbs || !thumbs.swiper) return;\n        if (typeof thumbs.swiper === \"string\" || thumbs.swiper instanceof HTMLElement) {\n            const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n            const getThumbsElementAndInit = ()=>{\n                const thumbsElement = typeof thumbs.swiper === \"string\" ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n                if (thumbsElement && thumbsElement.swiper) {\n                    thumbs.swiper = thumbsElement.swiper;\n                    init();\n                    update(true);\n                } else if (thumbsElement) {\n                    const eventName = `${swiper.params.eventsPrefix}init`;\n                    const onThumbsSwiper = (e)=>{\n                        thumbs.swiper = e.detail[0];\n                        thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n                        init();\n                        update(true);\n                        thumbs.swiper.update();\n                        swiper.update();\n                    };\n                    thumbsElement.addEventListener(eventName, onThumbsSwiper);\n                }\n                return thumbsElement;\n            };\n            const watchForThumbsToAppear = ()=>{\n                if (swiper.destroyed) return;\n                const thumbsElement = getThumbsElementAndInit();\n                if (!thumbsElement) requestAnimationFrame(watchForThumbsToAppear);\n            };\n            requestAnimationFrame(watchForThumbsToAppear);\n        } else {\n            init();\n            update(true);\n        }\n    });\n    on(\"slideChange update resize observerUpdate\", ()=>{\n        update();\n    });\n    on(\"setTransition\", (_s, duration)=>{\n        const thumbsSwiper = swiper.thumbs.swiper;\n        if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n        thumbsSwiper.setTransition(duration);\n    });\n    on(\"beforeDestroy\", ()=>{\n        const thumbsSwiper = swiper.thumbs.swiper;\n        if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n        if (swiperCreated) thumbsSwiper.destroy();\n    });\n    Object.assign(swiper.thumbs, {\n        init: init,\n        update: update\n    });\n}\n\n\n\nfunction $661f7d385acf36a7$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, emit: emit, once: once } = _ref;\n    extendParams({\n        freeMode: {\n            enabled: false,\n            momentum: true,\n            momentumRatio: 1,\n            momentumBounce: true,\n            momentumBounceRatio: 1,\n            momentumVelocityRatio: 1,\n            sticky: false,\n            minimumVelocity: 0.02\n        }\n    });\n    function onTouchStart() {\n        if (swiper.params.cssMode) return;\n        const translate = swiper.getTranslate();\n        swiper.setTranslate(translate);\n        swiper.setTransition(0);\n        swiper.touchEventsData.velocities.length = 0;\n        swiper.freeMode.onTouchEnd({\n            currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n        });\n    }\n    function onTouchMove() {\n        if (swiper.params.cssMode) return;\n        const { touchEventsData: data, touches: touches } = swiper;\n        // Velocity\n        if (data.velocities.length === 0) data.velocities.push({\n            position: touches[swiper.isHorizontal() ? \"startX\" : \"startY\"],\n            time: data.touchStartTime\n        });\n        data.velocities.push({\n            position: touches[swiper.isHorizontal() ? \"currentX\" : \"currentY\"],\n            time: (0, $3e0e2b092da8f124$export$4368d992c4eafac0)()\n        });\n    }\n    function onTouchEnd(_ref2) {\n        let { currentPos: currentPos } = _ref2;\n        if (swiper.params.cssMode) return;\n        const { params: params, wrapperEl: wrapperEl, rtlTranslate: rtl, snapGrid: snapGrid, touchEventsData: data } = swiper;\n        // Time diff\n        const touchEndTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n        const timeDiff = touchEndTime - data.touchStartTime;\n        if (currentPos < -swiper.minTranslate()) {\n            swiper.slideTo(swiper.activeIndex);\n            return;\n        }\n        if (currentPos > -swiper.maxTranslate()) {\n            if (swiper.slides.length < snapGrid.length) swiper.slideTo(snapGrid.length - 1);\n            else swiper.slideTo(swiper.slides.length - 1);\n            return;\n        }\n        if (params.freeMode.momentum) {\n            if (data.velocities.length > 1) {\n                const lastMoveEvent = data.velocities.pop();\n                const velocityEvent = data.velocities.pop();\n                const distance = lastMoveEvent.position - velocityEvent.position;\n                const time = lastMoveEvent.time - velocityEvent.time;\n                swiper.velocity = distance / time;\n                swiper.velocity /= 2;\n                if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) swiper.velocity = 0;\n                // this implies that the user stopped moving a finger then released.\n                // There would be no events with distance zero, so the last event is stale.\n                if (time > 150 || (0, $3e0e2b092da8f124$export$4368d992c4eafac0)() - lastMoveEvent.time > 300) swiper.velocity = 0;\n            } else swiper.velocity = 0;\n            swiper.velocity *= params.freeMode.momentumVelocityRatio;\n            data.velocities.length = 0;\n            let momentumDuration = 1000 * params.freeMode.momentumRatio;\n            const momentumDistance = swiper.velocity * momentumDuration;\n            let newPosition = swiper.translate + momentumDistance;\n            if (rtl) newPosition = -newPosition;\n            let doBounce = false;\n            let afterBouncePosition;\n            const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n            let needsLoopFix;\n            if (newPosition < swiper.maxTranslate()) {\n                if (params.freeMode.momentumBounce) {\n                    if (newPosition + swiper.maxTranslate() < -bounceAmount) newPosition = swiper.maxTranslate() - bounceAmount;\n                    afterBouncePosition = swiper.maxTranslate();\n                    doBounce = true;\n                    data.allowMomentumBounce = true;\n                } else newPosition = swiper.maxTranslate();\n                if (params.loop && params.centeredSlides) needsLoopFix = true;\n            } else if (newPosition > swiper.minTranslate()) {\n                if (params.freeMode.momentumBounce) {\n                    if (newPosition - swiper.minTranslate() > bounceAmount) newPosition = swiper.minTranslate() + bounceAmount;\n                    afterBouncePosition = swiper.minTranslate();\n                    doBounce = true;\n                    data.allowMomentumBounce = true;\n                } else newPosition = swiper.minTranslate();\n                if (params.loop && params.centeredSlides) needsLoopFix = true;\n            } else if (params.freeMode.sticky) {\n                let nextSlide;\n                for(let j = 0; j < snapGrid.length; j += 1)if (snapGrid[j] > -newPosition) {\n                    nextSlide = j;\n                    break;\n                }\n                if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === \"next\") newPosition = snapGrid[nextSlide];\n                else newPosition = snapGrid[nextSlide - 1];\n                newPosition = -newPosition;\n            }\n            if (needsLoopFix) once(\"transitionEnd\", ()=>{\n                swiper.loopFix();\n            });\n            // Fix duration\n            if (swiper.velocity !== 0) {\n                if (rtl) momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n                else momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n                if (params.freeMode.sticky) {\n                    // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n                    // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n                    // It's easy to see this when simulating touch with mouse events. To fix this,\n                    // limit single-slide swipes to the default slide duration. This also has the\n                    // nice side effect of matching slide speed if the user stopped moving before\n                    // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n                    // For faster swipes, also apply limits (albeit higher ones).\n                    const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n                    const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n                    if (moveDistance < currentSlideSize) momentumDuration = params.speed;\n                    else if (moveDistance < 2 * currentSlideSize) momentumDuration = params.speed * 1.5;\n                    else momentumDuration = params.speed * 2.5;\n                }\n            } else if (params.freeMode.sticky) {\n                swiper.slideToClosest();\n                return;\n            }\n            if (params.freeMode.momentumBounce && doBounce) {\n                swiper.updateProgress(afterBouncePosition);\n                swiper.setTransition(momentumDuration);\n                swiper.setTranslate(newPosition);\n                swiper.transitionStart(true, swiper.swipeDirection);\n                swiper.animating = true;\n                (0, $3e0e2b092da8f124$export$342063e11d6c3cad)(wrapperEl, ()=>{\n                    if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n                    emit(\"momentumBounce\");\n                    swiper.setTransition(params.speed);\n                    setTimeout(()=>{\n                        swiper.setTranslate(afterBouncePosition);\n                        (0, $3e0e2b092da8f124$export$342063e11d6c3cad)(wrapperEl, ()=>{\n                            if (!swiper || swiper.destroyed) return;\n                            swiper.transitionEnd();\n                        });\n                    }, 0);\n                });\n            } else if (swiper.velocity) {\n                emit(\"_freeModeNoMomentumRelease\");\n                swiper.updateProgress(newPosition);\n                swiper.setTransition(momentumDuration);\n                swiper.setTranslate(newPosition);\n                swiper.transitionStart(true, swiper.swipeDirection);\n                if (!swiper.animating) {\n                    swiper.animating = true;\n                    (0, $3e0e2b092da8f124$export$342063e11d6c3cad)(wrapperEl, ()=>{\n                        if (!swiper || swiper.destroyed) return;\n                        swiper.transitionEnd();\n                    });\n                }\n            } else swiper.updateProgress(newPosition);\n            swiper.updateActiveIndex();\n            swiper.updateSlidesClasses();\n        } else if (params.freeMode.sticky) {\n            swiper.slideToClosest();\n            return;\n        } else if (params.freeMode) emit(\"_freeModeNoMomentumRelease\");\n        if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n            emit(\"_freeModeStaticRelease\");\n            swiper.updateProgress();\n            swiper.updateActiveIndex();\n            swiper.updateSlidesClasses();\n        }\n    }\n    Object.assign(swiper, {\n        freeMode: {\n            onTouchStart: onTouchStart,\n            onTouchMove: onTouchMove,\n            onTouchEnd: onTouchEnd\n        }\n    });\n}\n\n\nfunction $3767883c93014eb9$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        grid: {\n            rows: 1,\n            fill: \"column\"\n        }\n    });\n    let slidesNumberEvenToRows;\n    let slidesPerRow;\n    let numFullColumns;\n    let wasMultiRow;\n    const getSpaceBetween = ()=>{\n        let spaceBetween = swiper.params.spaceBetween;\n        if (typeof spaceBetween === \"string\" && spaceBetween.indexOf(\"%\") >= 0) spaceBetween = parseFloat(spaceBetween.replace(\"%\", \"\")) / 100 * swiper.size;\n        else if (typeof spaceBetween === \"string\") spaceBetween = parseFloat(spaceBetween);\n        return spaceBetween;\n    };\n    const initSlides = (slides)=>{\n        const { slidesPerView: slidesPerView } = swiper.params;\n        const { rows: rows, fill: fill } = swiper.params.grid;\n        const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n        numFullColumns = Math.floor(slidesLength / rows);\n        if (Math.floor(slidesLength / rows) === slidesLength / rows) slidesNumberEvenToRows = slidesLength;\n        else slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n        if (slidesPerView !== \"auto\" && fill === \"row\") slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n        slidesPerRow = slidesNumberEvenToRows / rows;\n    };\n    const unsetSlides = ()=>{\n        if (swiper.slides) swiper.slides.forEach((slide)=>{\n            if (slide.swiperSlideGridSet) {\n                slide.style.height = \"\";\n                slide.style[swiper.getDirectionLabel(\"margin-top\")] = \"\";\n            }\n        });\n    };\n    const updateSlide = (i, slide, slides)=>{\n        const { slidesPerGroup: slidesPerGroup } = swiper.params;\n        const spaceBetween = getSpaceBetween();\n        const { rows: rows, fill: fill } = swiper.params.grid;\n        const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n        // Set slides order\n        let newSlideOrderIndex;\n        let column;\n        let row;\n        if (fill === \"row\" && slidesPerGroup > 1) {\n            const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n            const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n            const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n            row = Math.floor(slideIndexInGroup / columnsInGroup);\n            column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n            newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n            slide.style.order = newSlideOrderIndex;\n        } else if (fill === \"column\") {\n            column = Math.floor(i / rows);\n            row = i - column * rows;\n            if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n                row += 1;\n                if (row >= rows) {\n                    row = 0;\n                    column += 1;\n                }\n            }\n        } else {\n            row = Math.floor(i / slidesPerRow);\n            column = i - row * slidesPerRow;\n        }\n        slide.row = row;\n        slide.column = column;\n        slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n        slide.style[swiper.getDirectionLabel(\"margin-top\")] = row !== 0 ? spaceBetween && `${spaceBetween}px` : \"\";\n        slide.swiperSlideGridSet = true;\n    };\n    const updateWrapperSize = (slideSize, snapGrid)=>{\n        const { centeredSlides: centeredSlides, roundLengths: roundLengths } = swiper.params;\n        const spaceBetween = getSpaceBetween();\n        const { rows: rows } = swiper.params.grid;\n        swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n        swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n        if (!swiper.params.cssMode) swiper.wrapperEl.style[swiper.getDirectionLabel(\"width\")] = `${swiper.virtualSize + spaceBetween}px`;\n        if (centeredSlides) {\n            const newSlidesGrid = [];\n            for(let i = 0; i < snapGrid.length; i += 1){\n                let slidesGridItem = snapGrid[i];\n                if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n                if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n            }\n            snapGrid.splice(0, snapGrid.length);\n            snapGrid.push(...newSlidesGrid);\n        }\n    };\n    const onInit = ()=>{\n        wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n    };\n    const onUpdate = ()=>{\n        const { params: params, el: el } = swiper;\n        const isMultiRow = params.grid && params.grid.rows > 1;\n        if (wasMultiRow && !isMultiRow) {\n            el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n            numFullColumns = 1;\n            swiper.emitContainerClasses();\n        } else if (!wasMultiRow && isMultiRow) {\n            el.classList.add(`${params.containerModifierClass}grid`);\n            if (params.grid.fill === \"column\") el.classList.add(`${params.containerModifierClass}grid-column`);\n            swiper.emitContainerClasses();\n        }\n        wasMultiRow = isMultiRow;\n    };\n    on(\"init\", onInit);\n    on(\"update\", onUpdate);\n    swiper.grid = {\n        initSlides: initSlides,\n        unsetSlides: unsetSlides,\n        updateSlide: updateSlide,\n        updateWrapperSize: updateWrapperSize\n    };\n}\n\n\nfunction $e8eb9c2e5c926b2c$var$appendSlide(slides) {\n    const swiper = this;\n    const { params: params, slidesEl: slidesEl } = swiper;\n    if (params.loop) swiper.loopDestroy();\n    const appendElement = (slideEl)=>{\n        if (typeof slideEl === \"string\") {\n            const tempDOM = document.createElement(\"div\");\n            tempDOM.innerHTML = slideEl;\n            slidesEl.append(tempDOM.children[0]);\n            tempDOM.innerHTML = \"\";\n        } else slidesEl.append(slideEl);\n    };\n    if (typeof slides === \"object\" && \"length\" in slides) {\n        for(let i = 0; i < slides.length; i += 1)if (slides[i]) appendElement(slides[i]);\n    } else appendElement(slides);\n    swiper.recalcSlides();\n    if (params.loop) swiper.loopCreate();\n    if (!params.observer || swiper.isElement) swiper.update();\n}\nfunction $e8eb9c2e5c926b2c$var$prependSlide(slides) {\n    const swiper = this;\n    const { params: params, activeIndex: activeIndex, slidesEl: slidesEl } = swiper;\n    if (params.loop) swiper.loopDestroy();\n    let newActiveIndex = activeIndex + 1;\n    const prependElement = (slideEl)=>{\n        if (typeof slideEl === \"string\") {\n            const tempDOM = document.createElement(\"div\");\n            tempDOM.innerHTML = slideEl;\n            slidesEl.prepend(tempDOM.children[0]);\n            tempDOM.innerHTML = \"\";\n        } else slidesEl.prepend(slideEl);\n    };\n    if (typeof slides === \"object\" && \"length\" in slides) {\n        for(let i = 0; i < slides.length; i += 1)if (slides[i]) prependElement(slides[i]);\n        newActiveIndex = activeIndex + slides.length;\n    } else prependElement(slides);\n    swiper.recalcSlides();\n    if (params.loop) swiper.loopCreate();\n    if (!params.observer || swiper.isElement) swiper.update();\n    swiper.slideTo(newActiveIndex, 0, false);\n}\nfunction $e8eb9c2e5c926b2c$var$addSlide(index, slides) {\n    const swiper = this;\n    const { params: params, activeIndex: activeIndex, slidesEl: slidesEl } = swiper;\n    let activeIndexBuffer = activeIndex;\n    if (params.loop) {\n        activeIndexBuffer -= swiper.loopedSlides;\n        swiper.loopDestroy();\n        swiper.recalcSlides();\n    }\n    const baseLength = swiper.slides.length;\n    if (index <= 0) {\n        swiper.prependSlide(slides);\n        return;\n    }\n    if (index >= baseLength) {\n        swiper.appendSlide(slides);\n        return;\n    }\n    let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n    const slidesBuffer = [];\n    for(let i = baseLength - 1; i >= index; i -= 1){\n        const currentSlide = swiper.slides[i];\n        currentSlide.remove();\n        slidesBuffer.unshift(currentSlide);\n    }\n    if (typeof slides === \"object\" && \"length\" in slides) {\n        for(let i = 0; i < slides.length; i += 1)if (slides[i]) slidesEl.append(slides[i]);\n        newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n    } else slidesEl.append(slides);\n    for(let i = 0; i < slidesBuffer.length; i += 1)slidesEl.append(slidesBuffer[i]);\n    swiper.recalcSlides();\n    if (params.loop) swiper.loopCreate();\n    if (!params.observer || swiper.isElement) swiper.update();\n    if (params.loop) swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n    else swiper.slideTo(newActiveIndex, 0, false);\n}\nfunction $e8eb9c2e5c926b2c$var$removeSlide(slidesIndexes) {\n    const swiper = this;\n    const { params: params, activeIndex: activeIndex } = swiper;\n    let activeIndexBuffer = activeIndex;\n    if (params.loop) {\n        activeIndexBuffer -= swiper.loopedSlides;\n        swiper.loopDestroy();\n    }\n    let newActiveIndex = activeIndexBuffer;\n    let indexToRemove;\n    if (typeof slidesIndexes === \"object\" && \"length\" in slidesIndexes) {\n        for(let i = 0; i < slidesIndexes.length; i += 1){\n            indexToRemove = slidesIndexes[i];\n            if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n            if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n        }\n        newActiveIndex = Math.max(newActiveIndex, 0);\n    } else {\n        indexToRemove = slidesIndexes;\n        if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n        if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n        newActiveIndex = Math.max(newActiveIndex, 0);\n    }\n    swiper.recalcSlides();\n    if (params.loop) swiper.loopCreate();\n    if (!params.observer || swiper.isElement) swiper.update();\n    if (params.loop) swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n    else swiper.slideTo(newActiveIndex, 0, false);\n}\nfunction $e8eb9c2e5c926b2c$var$removeAllSlides() {\n    const swiper = this;\n    const slidesIndexes = [];\n    for(let i = 0; i < swiper.slides.length; i += 1)slidesIndexes.push(i);\n    swiper.removeSlide(slidesIndexes);\n}\nfunction $e8eb9c2e5c926b2c$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper } = _ref;\n    Object.assign(swiper, {\n        appendSlide: $e8eb9c2e5c926b2c$var$appendSlide.bind(swiper),\n        prependSlide: $e8eb9c2e5c926b2c$var$prependSlide.bind(swiper),\n        addSlide: $e8eb9c2e5c926b2c$var$addSlide.bind(swiper),\n        removeSlide: $e8eb9c2e5c926b2c$var$removeSlide.bind(swiper),\n        removeAllSlides: $e8eb9c2e5c926b2c$var$removeAllSlides.bind(swiper)\n    });\n}\n\n\nfunction $ce39167a9c5549e3$export$f1e1789686576879(params) {\n    const { effect: effect, swiper: swiper, on: on, setTranslate: setTranslate, setTransition: setTransition, overwriteParams: overwriteParams, perspective: perspective, recreateShadows: recreateShadows, getEffectParams: getEffectParams } = params;\n    on(\"beforeInit\", ()=>{\n        if (swiper.params.effect !== effect) return;\n        swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n        if (perspective && perspective()) swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n        const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n        Object.assign(swiper.params, overwriteParamsResult);\n        Object.assign(swiper.originalParams, overwriteParamsResult);\n    });\n    on(\"setTranslate\", ()=>{\n        if (swiper.params.effect !== effect) return;\n        setTranslate();\n    });\n    on(\"setTransition\", (_s, duration)=>{\n        if (swiper.params.effect !== effect) return;\n        setTransition(duration);\n    });\n    on(\"transitionEnd\", ()=>{\n        if (swiper.params.effect !== effect) return;\n        if (recreateShadows) {\n            if (!getEffectParams || !getEffectParams().slideShadows) return;\n            // remove shadows\n            swiper.slides.forEach((slideEl)=>{\n                slideEl.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((shadowEl)=>shadowEl.remove());\n            });\n            // create new one\n            recreateShadows();\n        }\n    });\n    let requireUpdateOnVirtual;\n    on(\"virtualUpdate\", ()=>{\n        if (swiper.params.effect !== effect) return;\n        if (!swiper.slides.length) requireUpdateOnVirtual = true;\n        requestAnimationFrame(()=>{\n            if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n                setTranslate();\n                requireUpdateOnVirtual = false;\n            }\n        });\n    });\n}\n\n\n\nfunction $1edc75782959477e$export$f1e1789686576879(effectParams, slideEl) {\n    const transformEl = (0, $3e0e2b092da8f124$export$39b482c5e57630a8)(slideEl);\n    if (transformEl !== slideEl) {\n        transformEl.style.backfaceVisibility = \"hidden\";\n        transformEl.style[\"-webkit-backface-visibility\"] = \"hidden\";\n    }\n    return transformEl;\n}\n\n\n\nfunction $3ea27eb365069d23$export$f1e1789686576879(_ref) {\n    let { swiper: swiper, duration: duration, transformElements: transformElements, allSlides: allSlides } = _ref;\n    const { activeIndex: activeIndex } = swiper;\n    const getSlide = (el)=>{\n        if (!el.parentElement) {\n            // assume shadow root\n            const slide = swiper.slides.filter((slideEl)=>slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n            return slide;\n        }\n        return el.parentElement;\n    };\n    if (swiper.params.virtualTranslate && duration !== 0) {\n        let eventTriggered = false;\n        let transitionEndTarget;\n        if (allSlides) transitionEndTarget = transformElements;\n        else transitionEndTarget = transformElements.filter((transformEl)=>{\n            const el = transformEl.classList.contains(\"swiper-slide-transform\") ? getSlide(transformEl) : transformEl;\n            return swiper.getSlideIndex(el) === activeIndex;\n        });\n        transitionEndTarget.forEach((el)=>{\n            (0, $3e0e2b092da8f124$export$342063e11d6c3cad)(el, ()=>{\n                if (eventTriggered) return;\n                if (!swiper || swiper.destroyed) return;\n                eventTriggered = true;\n                swiper.animating = false;\n                const evt = new window.CustomEvent(\"transitionend\", {\n                    bubbles: true,\n                    cancelable: true\n                });\n                swiper.wrapperEl.dispatchEvent(evt);\n            });\n        });\n    }\n}\n\n\n\nfunction $ed89a1cd6005d986$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        fadeEffect: {\n            crossFade: false\n        }\n    });\n    const setTranslate = ()=>{\n        const { slides: slides } = swiper;\n        const params = swiper.params.fadeEffect;\n        for(let i = 0; i < slides.length; i += 1){\n            const slideEl = swiper.slides[i];\n            const offset = slideEl.swiperSlideOffset;\n            let tx = -offset;\n            if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n            let ty = 0;\n            if (!swiper.isHorizontal()) {\n                ty = tx;\n                tx = 0;\n            }\n            const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n            const targetEl = (0, $1edc75782959477e$export$f1e1789686576879)(params, slideEl);\n            targetEl.style.opacity = slideOpacity;\n            targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n        }\n    };\n    const setTransition = (duration)=>{\n        const transformElements = swiper.slides.map((slideEl)=>(0, $3e0e2b092da8f124$export$39b482c5e57630a8)(slideEl));\n        transformElements.forEach((el)=>{\n            el.style.transitionDuration = `${duration}ms`;\n        });\n        (0, $3ea27eb365069d23$export$f1e1789686576879)({\n            swiper: swiper,\n            duration: duration,\n            transformElements: transformElements,\n            allSlides: true\n        });\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"fade\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        overwriteParams: ()=>({\n                slidesPerView: 1,\n                slidesPerGroup: 1,\n                watchSlidesProgress: true,\n                spaceBetween: 0,\n                virtualTranslate: !swiper.params.cssMode\n            })\n    });\n}\n\n\n\n\nfunction $75984ef6f5fe27b6$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        cubeEffect: {\n            slideShadows: true,\n            shadow: true,\n            shadowOffset: 20,\n            shadowScale: 0.94\n        }\n    });\n    const createSlideShadows = (slideEl, progress, isHorizontal)=>{\n        let shadowBefore = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-left\") : slideEl.querySelector(\".swiper-slide-shadow-top\");\n        let shadowAfter = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-right\") : slideEl.querySelector(\".swiper-slide-shadow-bottom\");\n        if (!shadowBefore) {\n            shadowBefore = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? \"left\" : \"top\"}`.split(\" \"));\n            slideEl.append(shadowBefore);\n        }\n        if (!shadowAfter) {\n            shadowAfter = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? \"right\" : \"bottom\"}`.split(\" \"));\n            slideEl.append(shadowAfter);\n        }\n        if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n        if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n    };\n    const recreateShadows = ()=>{\n        // create new ones\n        const isHorizontal = swiper.isHorizontal();\n        swiper.slides.forEach((slideEl)=>{\n            const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n            createSlideShadows(slideEl, progress, isHorizontal);\n        });\n    };\n    const setTranslate = ()=>{\n        const { el: el, wrapperEl: wrapperEl, slides: slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize, browser: browser } = swiper;\n        const r = (0, $3e0e2b092da8f124$export$ae1af26003f05816)(swiper);\n        const params = swiper.params.cubeEffect;\n        const isHorizontal = swiper.isHorizontal();\n        const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n        let wrapperRotate = 0;\n        let cubeShadowEl;\n        if (params.shadow) {\n            if (isHorizontal) {\n                cubeShadowEl = swiper.wrapperEl.querySelector(\".swiper-cube-shadow\");\n                if (!cubeShadowEl) {\n                    cubeShadowEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", \"swiper-cube-shadow\");\n                    swiper.wrapperEl.append(cubeShadowEl);\n                }\n                cubeShadowEl.style.height = `${swiperWidth}px`;\n            } else {\n                cubeShadowEl = el.querySelector(\".swiper-cube-shadow\");\n                if (!cubeShadowEl) {\n                    cubeShadowEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", \"swiper-cube-shadow\");\n                    el.append(cubeShadowEl);\n                }\n            }\n        }\n        for(let i = 0; i < slides.length; i += 1){\n            const slideEl = slides[i];\n            let slideIndex = i;\n            if (isVirtual) slideIndex = parseInt(slideEl.getAttribute(\"data-swiper-slide-index\"), 10);\n            let slideAngle = slideIndex * 90;\n            let round = Math.floor(slideAngle / 360);\n            if (rtl) {\n                slideAngle = -slideAngle;\n                round = Math.floor(-slideAngle / 360);\n            }\n            const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n            let tx = 0;\n            let ty = 0;\n            let tz = 0;\n            if (slideIndex % 4 === 0) {\n                tx = -round * 4 * swiperSize;\n                tz = 0;\n            } else if ((slideIndex - 1) % 4 === 0) {\n                tx = 0;\n                tz = -round * 4 * swiperSize;\n            } else if ((slideIndex - 2) % 4 === 0) {\n                tx = swiperSize + round * 4 * swiperSize;\n                tz = swiperSize;\n            } else if ((slideIndex - 3) % 4 === 0) {\n                tx = -swiperSize;\n                tz = 3 * swiperSize + swiperSize * 4 * round;\n            }\n            if (rtl) tx = -tx;\n            if (!isHorizontal) {\n                ty = tx;\n                tx = 0;\n            }\n            const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n            if (progress <= 1 && progress > -1) {\n                wrapperRotate = slideIndex * 90 + progress * 90;\n                if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n            }\n            slideEl.style.transform = transform;\n            if (params.slideShadows) createSlideShadows(slideEl, progress, isHorizontal);\n        }\n        wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n        wrapperEl.style[\"-webkit-transform-origin\"] = `50% 50% -${swiperSize / 2}px`;\n        if (params.shadow) {\n            if (isHorizontal) cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n            else {\n                const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n                const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n                const scale1 = params.shadowScale;\n                const scale2 = params.shadowScale / multiplier;\n                const offset = params.shadowOffset;\n                cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n            }\n        }\n        const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n        wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n        wrapperEl.style.setProperty(\"--swiper-cube-translate-z\", `${zFactor}px`);\n    };\n    const setTransition = (duration)=>{\n        const { el: el, slides: slides } = swiper;\n        slides.forEach((slideEl)=>{\n            slideEl.style.transitionDuration = `${duration}ms`;\n            slideEl.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((subEl)=>{\n                subEl.style.transitionDuration = `${duration}ms`;\n            });\n        });\n        if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n            const shadowEl = el.querySelector(\".swiper-cube-shadow\");\n            if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n        }\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"cube\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        recreateShadows: recreateShadows,\n        getEffectParams: ()=>swiper.params.cubeEffect,\n        perspective: ()=>true,\n        overwriteParams: ()=>({\n                slidesPerView: 1,\n                slidesPerGroup: 1,\n                watchSlidesProgress: true,\n                resistanceRatio: 0,\n                spaceBetween: 0,\n                centeredSlides: false,\n                virtualTranslate: true\n            })\n    });\n}\n\n\n\nfunction $4dfb92d69cb8a433$export$db3b6bfb95261072(suffix, slideEl, side) {\n    const shadowClass = `swiper-slide-shadow${side ? `-${side}` : \"\"}${suffix ? ` swiper-slide-shadow-${suffix}` : \"\"}`;\n    const shadowContainer = (0, $3e0e2b092da8f124$export$39b482c5e57630a8)(slideEl);\n    let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(\" \").join(\".\")}`);\n    if (!shadowEl) {\n        shadowEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", shadowClass.split(\" \"));\n        shadowContainer.append(shadowEl);\n    }\n    return shadowEl;\n}\n\n\n\n\n\n\nfunction $7a3c30fafac582ff$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        flipEffect: {\n            slideShadows: true,\n            limitRotation: true\n        }\n    });\n    const createSlideShadows = (slideEl, progress)=>{\n        let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector(\".swiper-slide-shadow-left\") : slideEl.querySelector(\".swiper-slide-shadow-top\");\n        let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector(\".swiper-slide-shadow-right\") : slideEl.querySelector(\".swiper-slide-shadow-bottom\");\n        if (!shadowBefore) shadowBefore = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"flip\", slideEl, swiper.isHorizontal() ? \"left\" : \"top\");\n        if (!shadowAfter) shadowAfter = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"flip\", slideEl, swiper.isHorizontal() ? \"right\" : \"bottom\");\n        if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n        if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n    };\n    const recreateShadows = ()=>{\n        // Set shadows\n        swiper.params.flipEffect;\n        swiper.slides.forEach((slideEl)=>{\n            let progress = slideEl.progress;\n            if (swiper.params.flipEffect.limitRotation) progress = Math.max(Math.min(slideEl.progress, 1), -1);\n            createSlideShadows(slideEl, progress);\n        });\n    };\n    const setTranslate = ()=>{\n        const { slides: slides, rtlTranslate: rtl } = swiper;\n        const params = swiper.params.flipEffect;\n        const rotateFix = (0, $3e0e2b092da8f124$export$ae1af26003f05816)(swiper);\n        for(let i = 0; i < slides.length; i += 1){\n            const slideEl = slides[i];\n            let progress = slideEl.progress;\n            if (swiper.params.flipEffect.limitRotation) progress = Math.max(Math.min(slideEl.progress, 1), -1);\n            const offset = slideEl.swiperSlideOffset;\n            const rotate = -180 * progress;\n            let rotateY = rotate;\n            let rotateX = 0;\n            let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n            let ty = 0;\n            if (!swiper.isHorizontal()) {\n                ty = tx;\n                tx = 0;\n                rotateX = -rotateY;\n                rotateY = 0;\n            } else if (rtl) rotateY = -rotateY;\n            slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n            if (params.slideShadows) createSlideShadows(slideEl, progress);\n            const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n            const targetEl = (0, $1edc75782959477e$export$f1e1789686576879)(params, slideEl);\n            targetEl.style.transform = transform;\n        }\n    };\n    const setTransition = (duration)=>{\n        const transformElements = swiper.slides.map((slideEl)=>(0, $3e0e2b092da8f124$export$39b482c5e57630a8)(slideEl));\n        transformElements.forEach((el)=>{\n            el.style.transitionDuration = `${duration}ms`;\n            el.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((shadowEl)=>{\n                shadowEl.style.transitionDuration = `${duration}ms`;\n            });\n        });\n        (0, $3ea27eb365069d23$export$f1e1789686576879)({\n            swiper: swiper,\n            duration: duration,\n            transformElements: transformElements\n        });\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"flip\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        recreateShadows: recreateShadows,\n        getEffectParams: ()=>swiper.params.flipEffect,\n        perspective: ()=>true,\n        overwriteParams: ()=>({\n                slidesPerView: 1,\n                slidesPerGroup: 1,\n                watchSlidesProgress: true,\n                spaceBetween: 0,\n                virtualTranslate: !swiper.params.cssMode\n            })\n    });\n}\n\n\n\n\n\n\nfunction $8b7378894c192c44$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        coverflowEffect: {\n            rotate: 50,\n            stretch: 0,\n            depth: 100,\n            scale: 1,\n            modifier: 1,\n            slideShadows: true\n        }\n    });\n    const setTranslate = ()=>{\n        const { width: swiperWidth, height: swiperHeight, slides: slides, slidesSizesGrid: slidesSizesGrid } = swiper;\n        const params = swiper.params.coverflowEffect;\n        const isHorizontal = swiper.isHorizontal();\n        const transform = swiper.translate;\n        const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n        const rotate = isHorizontal ? params.rotate : -params.rotate;\n        const translate = params.depth;\n        const r = (0, $3e0e2b092da8f124$export$ae1af26003f05816)(swiper);\n        // Each slide offset from center\n        for(let i = 0, length = slides.length; i < length; i += 1){\n            const slideEl = slides[i];\n            const slideSize = slidesSizesGrid[i];\n            const slideOffset = slideEl.swiperSlideOffset;\n            const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n            const offsetMultiplier = typeof params.modifier === \"function\" ? params.modifier(centerOffset) : centerOffset * params.modifier;\n            let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n            let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n            // var rotateZ = 0\n            let translateZ = -translate * Math.abs(offsetMultiplier);\n            let stretch = params.stretch;\n            // Allow percentage to make a relative stretch for responsive sliders\n            if (typeof stretch === \"string\" && stretch.indexOf(\"%\") !== -1) stretch = parseFloat(params.stretch) / 100 * slideSize;\n            let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n            let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n            let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n            // Fix for ultra small values\n            if (Math.abs(translateX) < 0.001) translateX = 0;\n            if (Math.abs(translateY) < 0.001) translateY = 0;\n            if (Math.abs(translateZ) < 0.001) translateZ = 0;\n            if (Math.abs(rotateY) < 0.001) rotateY = 0;\n            if (Math.abs(rotateX) < 0.001) rotateX = 0;\n            if (Math.abs(scale) < 0.001) scale = 0;\n            const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n            const targetEl = (0, $1edc75782959477e$export$f1e1789686576879)(params, slideEl);\n            targetEl.style.transform = slideTransform;\n            slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n            if (params.slideShadows) {\n                // Set shadows\n                let shadowBeforeEl = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-left\") : slideEl.querySelector(\".swiper-slide-shadow-top\");\n                let shadowAfterEl = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-right\") : slideEl.querySelector(\".swiper-slide-shadow-bottom\");\n                if (!shadowBeforeEl) shadowBeforeEl = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"coverflow\", slideEl, isHorizontal ? \"left\" : \"top\");\n                if (!shadowAfterEl) shadowAfterEl = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"coverflow\", slideEl, isHorizontal ? \"right\" : \"bottom\");\n                if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n                if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n            }\n        }\n    };\n    const setTransition = (duration)=>{\n        const transformElements = swiper.slides.map((slideEl)=>(0, $3e0e2b092da8f124$export$39b482c5e57630a8)(slideEl));\n        transformElements.forEach((el)=>{\n            el.style.transitionDuration = `${duration}ms`;\n            el.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((shadowEl)=>{\n                shadowEl.style.transitionDuration = `${duration}ms`;\n            });\n        });\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"coverflow\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        perspective: ()=>true,\n        overwriteParams: ()=>({\n                watchSlidesProgress: true\n            })\n    });\n}\n\n\n\n\n\n\n\nfunction $9406c03f7fbaac7d$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        creativeEffect: {\n            limitProgress: 1,\n            shadowPerProgress: false,\n            progressMultiplier: 1,\n            perspective: true,\n            prev: {\n                translate: [\n                    0,\n                    0,\n                    0\n                ],\n                rotate: [\n                    0,\n                    0,\n                    0\n                ],\n                opacity: 1,\n                scale: 1\n            },\n            next: {\n                translate: [\n                    0,\n                    0,\n                    0\n                ],\n                rotate: [\n                    0,\n                    0,\n                    0\n                ],\n                opacity: 1,\n                scale: 1\n            }\n        }\n    });\n    const getTranslateValue = (value)=>{\n        if (typeof value === \"string\") return value;\n        return `${value}px`;\n    };\n    const setTranslate = ()=>{\n        const { slides: slides, wrapperEl: wrapperEl, slidesSizesGrid: slidesSizesGrid } = swiper;\n        const params = swiper.params.creativeEffect;\n        const { progressMultiplier: multiplier } = params;\n        const isCenteredSlides = swiper.params.centeredSlides;\n        const rotateFix = (0, $3e0e2b092da8f124$export$ae1af26003f05816)(swiper);\n        if (isCenteredSlides) {\n            const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n            wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n        }\n        for(let i = 0; i < slides.length; i += 1){\n            const slideEl = slides[i];\n            const slideProgress = slideEl.progress;\n            const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n            let originalProgress = progress;\n            if (!isCenteredSlides) originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n            const offset = slideEl.swiperSlideOffset;\n            const t = [\n                swiper.params.cssMode ? -offset - swiper.translate : -offset,\n                0,\n                0\n            ];\n            const r = [\n                0,\n                0,\n                0\n            ];\n            let custom = false;\n            if (!swiper.isHorizontal()) {\n                t[1] = t[0];\n                t[0] = 0;\n            }\n            let data = {\n                translate: [\n                    0,\n                    0,\n                    0\n                ],\n                rotate: [\n                    0,\n                    0,\n                    0\n                ],\n                scale: 1,\n                opacity: 1\n            };\n            if (progress < 0) {\n                data = params.next;\n                custom = true;\n            } else if (progress > 0) {\n                data = params.prev;\n                custom = true;\n            }\n            // set translate\n            t.forEach((value, index)=>{\n                t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n            });\n            // set rotates\n            r.forEach((value, index)=>{\n                let val = data.rotate[index] * Math.abs(progress * multiplier);\n                r[index] = val;\n            });\n            slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n            const translateString = t.join(\", \");\n            const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n            const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n            const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n            const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n            // Set shadows\n            if (custom && data.shadow || !custom) {\n                let shadowEl = slideEl.querySelector(\".swiper-slide-shadow\");\n                if (!shadowEl && data.shadow) shadowEl = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"creative\", slideEl);\n                if (shadowEl) {\n                    const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n                    shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n                }\n            }\n            const targetEl = (0, $1edc75782959477e$export$f1e1789686576879)(params, slideEl);\n            targetEl.style.transform = transform;\n            targetEl.style.opacity = opacityString;\n            if (data.origin) targetEl.style.transformOrigin = data.origin;\n        }\n    };\n    const setTransition = (duration)=>{\n        const transformElements = swiper.slides.map((slideEl)=>(0, $3e0e2b092da8f124$export$39b482c5e57630a8)(slideEl));\n        transformElements.forEach((el)=>{\n            el.style.transitionDuration = `${duration}ms`;\n            el.querySelectorAll(\".swiper-slide-shadow\").forEach((shadowEl)=>{\n                shadowEl.style.transitionDuration = `${duration}ms`;\n            });\n        });\n        (0, $3ea27eb365069d23$export$f1e1789686576879)({\n            swiper: swiper,\n            duration: duration,\n            transformElements: transformElements,\n            allSlides: true\n        });\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"creative\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        perspective: ()=>swiper.params.creativeEffect.perspective,\n        overwriteParams: ()=>({\n                watchSlidesProgress: true,\n                virtualTranslate: !swiper.params.cssMode\n            })\n    });\n}\n\n\n\n\n\n\n\nfunction $ccd0a7134d1e48e4$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        cardsEffect: {\n            slideShadows: true,\n            rotate: true,\n            perSlideRotate: 2,\n            perSlideOffset: 8\n        }\n    });\n    const setTranslate = ()=>{\n        const { slides: slides, activeIndex: activeIndex, rtlTranslate: rtl } = swiper;\n        const params = swiper.params.cardsEffect;\n        const { startTranslate: startTranslate, isTouched: isTouched } = swiper.touchEventsData;\n        const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n        for(let i = 0; i < slides.length; i += 1){\n            const slideEl = slides[i];\n            const slideProgress = slideEl.progress;\n            const progress = Math.min(Math.max(slideProgress, -4), 4);\n            let offset = slideEl.swiperSlideOffset;\n            if (swiper.params.centeredSlides && !swiper.params.cssMode) swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n            if (swiper.params.centeredSlides && swiper.params.cssMode) offset -= slides[0].swiperSlideOffset;\n            let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n            let tY = 0;\n            const tZ = -100 * Math.abs(progress);\n            let scale = 1;\n            let rotate = -params.perSlideRotate * progress;\n            let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n            const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n            const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n            const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n            if (isSwipeToNext || isSwipeToPrev) {\n                const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n                rotate += -28 * progress * subProgress;\n                scale += -0.5 * subProgress;\n                tXAdd += 96 * subProgress;\n                tY = `${-25 * subProgress * Math.abs(progress)}%`;\n            }\n            if (progress < 0) // next\n            tX = `calc(${tX}px ${rtl ? \"-\" : \"+\"} (${tXAdd * Math.abs(progress)}%))`;\n            else if (progress > 0) // prev\n            tX = `calc(${tX}px ${rtl ? \"-\" : \"+\"} (-${tXAdd * Math.abs(progress)}%))`;\n            else tX = `${tX}px`;\n            if (!swiper.isHorizontal()) {\n                const prevY = tY;\n                tY = tX;\n                tX = prevY;\n            }\n            const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n            /* eslint-disable */ const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n        scale(${scaleString})\n      `;\n            /* eslint-enable */ if (params.slideShadows) {\n                // Set shadows\n                let shadowEl = slideEl.querySelector(\".swiper-slide-shadow\");\n                if (!shadowEl) shadowEl = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"cards\", slideEl);\n                if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n            }\n            slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n            const targetEl = (0, $1edc75782959477e$export$f1e1789686576879)(params, slideEl);\n            targetEl.style.transform = transform;\n        }\n    };\n    const setTransition = (duration)=>{\n        const transformElements = swiper.slides.map((slideEl)=>(0, $3e0e2b092da8f124$export$39b482c5e57630a8)(slideEl));\n        transformElements.forEach((el)=>{\n            el.style.transitionDuration = `${duration}ms`;\n            el.querySelectorAll(\".swiper-slide-shadow\").forEach((shadowEl)=>{\n                shadowEl.style.transitionDuration = `${duration}ms`;\n            });\n        });\n        (0, $3ea27eb365069d23$export$f1e1789686576879)({\n            swiper: swiper,\n            duration: duration,\n            transformElements: transformElements\n        });\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"cards\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        perspective: ()=>true,\n        overwriteParams: ()=>({\n                watchSlidesProgress: true,\n                virtualTranslate: !swiper.params.cssMode\n            })\n    });\n}\n\n\n\n\n\n(0, $6946bfb4689eabba$export$25ce5a424b770e84).use([\n    (0, $343d866400a2e3c2$export$2e2bcd8739ae039)\n]);\ndocument.addEventListener(\"alpine:init\", ()=>{\n    Alpine.data(\"swiper\", ()=>({\n            swiper: null,\n            leave: false,\n            swiperData: [],\n            initialStep (step) {\n                this.renderSwiper(step - 1);\n            },\n            addData (data) {\n                this.swiperData.push({\n                    title: data.Swiper.PrimaryHeading.Text,\n                    description: data.Swiper.Description.Text,\n                    imagePath: \"/media/\" + data.Swiper.BackgroundImage.Paths[0],\n                    url: data.Swiper.Link.Text,\n                    number: (\"0\" + data.Swiper.Number.Value).slice(-2),\n                    colourHead: data.Swiper.Style.Text,\n                    colourDesc: data.Swiper.ToggleColour.Value\n                });\n                this.orderByNumber();\n            },\n            orderByNumber () {\n                this.swiperData.sort((a, b)=>a.number - b.number);\n            },\n            renderSwiper (step) {\n                const swiper = document.querySelector(\".swiper\");\n                const newSwiper = new (0, $6946bfb4689eabba$export$25ce5a424b770e84)(swiper, {\n                    effect: \"coverflow\",\n                    mousewheel: true,\n                    grabCursor: true,\n                    loop: true,\n                    slidesPerView: 1,\n                    spaceBetween: 10,\n                    initialSlide: step,\n                    breakpoints: {\n                        768: {\n                            slidesPerView: 5,\n                            initialSlide: step\n                        }\n                    },\n                    pagination: {\n                        el: \".swiper-pagination\",\n                        clickable: true\n                    }\n                });\n                newSwiper.mousewheel.enable();\n            }\n        }));\n});\n\n})();\n//# sourceMappingURL=swiper.js.map\n","import Swiper from \"swiper\";\nimport { Mousewheel } from \"swiper/modules\";\nimport 'swiper/swiper-bundle.min.css';\n\nSwiper.use([Mousewheel]);\n\ndocument.addEventListener('alpine:init', () => {\n    Alpine.data('swiper', () => ({\n        swiper: null,\n        leave: false,\n        swiperData: [],\n        initialStep(step){\n            this.renderSwiper(step-1);\n        },\n        addData(data){\n            this.swiperData.push({\n                title: data.Swiper.PrimaryHeading.Text,\n                description: data.Swiper.Description.Text,\n                imagePath: '/media/'+data.Swiper.BackgroundImage.Paths[0],\n                url: data.Swiper.Link.Text,\n                number: ('0' + data.Swiper.Number.Value).slice(-2),\n                colourHead: data.Swiper.Style.Text,\n                colourDesc: data.Swiper.ToggleColour.Value\n            });\n            this.orderByNumber();\n        },\n        orderByNumber(){\n            this.swiperData.sort((a, b) => a.number - b.number);\n        },\n        renderSwiper(step){\n            const swiper = document.querySelector('.swiper')\n            const newSwiper = new Swiper(swiper, {\n                effect: 'coverflow',\n                mousewheel: true,\n                grabCursor: true,\n                loop: true,\n                slidesPerView: 1,\n                spaceBetween: 10,\n                initialSlide: step,\n                breakpoints:{\n                    768:{\n                        slidesPerView: 5,\n                        initialSlide: step,\n                    }\n                },\n                pagination: {\n                    el: \".swiper-pagination\",\n                    clickable: true,\n                },\n                \n            })\n            newSwiper.mousewheel.enable();\n        },\n        \n    }))\n});\n","/**\n * Swiper 11.1.8\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: July 26, 2024\n */\n\nexport { S as Swiper, S as default } from './shared/swiper-core.mjs';\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n  };\n}\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n  let {\n    userAgent\n  } = _temp === void 0 ? {} : _temp;\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n\n  // Export object\n  return device;\n}\nfunction getDevice(overrides) {\n  if (overrides === void 0) {\n    overrides = {};\n  }\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n  return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n  const window = getWindow();\n  const device = getDevice();\n  let needPerspectiveFix = false;\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n  if (isSafari()) {\n    const ua = String(window.navigator.userAgent);\n    if (ua.includes('Version/')) {\n      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n      needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n    }\n  }\n  const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n  const isSafariBrowser = isSafari();\n  const need3dFix = isSafariBrowser || isWebView && device.ios;\n  return {\n    isSafari: needPerspectiveFix || isSafariBrowser,\n    needPerspectiveFix,\n    need3dFix,\n    isWebView\n  };\n}\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n  return browser;\n}\n\nfunction Resize(_ref) {\n  let {\n    swiper,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const {\n          width,\n          height\n        } = swiper;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(_ref2 => {\n          let {\n            contentBoxSize,\n            contentRect,\n            target\n          } = _ref2;\n          if (target && target !== swiper.el) return;\n          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n        });\n        if (newWidth !== width || newHeight !== height) {\n          resizeHandler();\n        }\n      });\n    });\n    observer.observe(swiper.el);\n  };\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}\n\nfunction Observer(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const observers = [];\n  const window = getWindow();\n  const attach = function (target, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (swiper.__preventObserver__) return;\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n  const init = () => {\n    if (!swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = elementParents(swiper.hostEl);\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    attach(swiper.hostEl, {\n      childList: swiper.params.observeSlideChildren\n    });\n\n    // Observe wrapper\n    attach(swiper.wrapperEl, {\n      attributes: false\n    });\n  };\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    function onceHandler() {\n      self.off(events, onceHandler);\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n    return self;\n  },\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n    return self;\n  },\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n  emit() {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n};\n\nfunction updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const el = swiper.el;\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = el.clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = el.clientHeight;\n  }\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n  height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}\n\nfunction updateSlides() {\n  const swiper = this;\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n  }\n  const params = swiper.params;\n  const {\n    wrapperEl,\n    slidesEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  slides.forEach(slideEl => {\n    if (rtl) {\n      slideEl.style.marginLeft = '';\n    } else {\n      slideEl.style.marginRight = '';\n    }\n    slideEl.style.marginBottom = '';\n    slideEl.style.marginTop = '';\n  });\n\n  // reset cssMode offsets\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n  }\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n  if (gridEnabled) {\n    swiper.grid.initSlides(slides);\n  } else if (swiper.grid) {\n    swiper.grid.unsetSlides();\n  }\n\n  // Calc slides\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    let slide;\n    if (slides[i]) slide = slides[i];\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slides);\n    }\n    if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[swiper.getDirectionLabel('width')] = ``;\n      }\n      const slideStyles = getComputedStyle(slide);\n      const currentTransform = slide.style.transform;\n      const currentWebKitTransform = slide.style.webkitTransform;\n      if (currentTransform) {\n        slide.style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide;\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n      if (currentTransform) {\n        slide.style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n      if (slides[i]) {\n        slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (params.setWrapperSize) {\n    wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid);\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (isVirtual && params.loop) {\n    const size = slidesSizesGrid[0] + spaceBetween;\n    if (params.slidesPerGroup > 1) {\n      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n      const groupSize = size * params.slidesPerGroup;\n      for (let i = 0; i < groups; i += 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n      }\n    }\n    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n      if (params.slidesPerGroup === 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n      }\n      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n      swiper.virtualSize += size;\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n  if (spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode || params.loop) return true;\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n      return true;\n    }).forEach(slideEl => {\n      slideEl.style[key] = `${spaceBetween}px`;\n    });\n  }\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map(snap => {\n      if (snap <= 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n    if (allSlidesSize + offsetSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  swiper.emit('slidesUpdated');\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      swiper.el.classList.remove(backFaceHiddenClass);\n    }\n  }\n}\n\nfunction updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides[swiper.getSlideIndexByData(index)];\n    }\n    return swiper.slides[index];\n  };\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      (swiper.visibleSlides || []).forEach(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n  // eslint-disable-next-line\n  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n  }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesProgress(translate) {\n  if (translate === void 0) {\n    translate = this && this.translate || 0;\n  }\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n  let spaceBetween = params.spaceBetween;\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n    }\n    toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n    toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n}\n\nfunction updateProgress(translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd,\n    progressLoop\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n    isBeginning = isBeginningRounded || progress <= 0;\n    isEnd = isEndRounded || progress >= 1;\n    if (isBeginningRounded) progress = 0;\n    if (isEndRounded) progress = 1;\n  }\n  if (params.loop) {\n    const firstSlideIndex = swiper.getSlideIndexByData(0);\n    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n    const translateAbs = Math.abs(translate);\n    if (translateAbs >= firstSlideTranslate) {\n      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n    } else {\n      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n    }\n    if (progressLoop > 1) progressLoop -= 1;\n  }\n  Object.assign(swiper, {\n    progress,\n    progressLoop,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n  swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    slidesEl,\n    activeIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  const getFilteredSlide = selector => {\n    return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n  };\n  let activeSlide;\n  let prevSlide;\n  let nextSlide;\n  if (isVirtual) {\n    if (params.loop) {\n      let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n    } else {\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n    }\n  } else {\n    if (gridEnabled) {\n      activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n      nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n      prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n    } else {\n      activeSlide = slides[activeIndex];\n    }\n  }\n  if (activeSlide) {\n    if (!gridEnabled) {\n      // Next Slide\n      nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !nextSlide) {\n        nextSlide = slides[0];\n      }\n\n      // Prev Slide\n      prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !prevSlide === 0) {\n        prevSlide = slides[slides.length - 1];\n      }\n    }\n  }\n  slides.forEach(slideEl => {\n    toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n    toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n    toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n  });\n  swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  const slideEl = imageEl.closest(slideSelector());\n  if (slideEl) {\n    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n    if (!lazyEl && swiper.isElement) {\n      if (slideEl.shadowRoot) {\n        lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n      } else {\n        // init later\n        requestAnimationFrame(() => {\n          if (slideEl.shadowRoot) {\n            lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n            if (lazyEl) lazyEl.remove();\n          }\n        });\n      }\n    }\n    if (lazyEl) lazyEl.remove();\n  }\n};\nconst unlazy = (swiper, index) => {\n  if (!swiper.slides[index]) return;\n  const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n  if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  let amount = swiper.params.lazyPreloadPrevNext;\n  const len = swiper.slides.length;\n  if (!len || !amount || amount < 0) return;\n  amount = Math.min(amount, len);\n  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n  const activeIndex = swiper.activeIndex;\n  if (swiper.params.grid && swiper.params.grid.rows > 1) {\n    const activeColumn = activeIndex;\n    const preloadColumns = [activeColumn - amount];\n    preloadColumns.push(...Array.from({\n      length: amount\n    }).map((_, i) => {\n      return activeColumn + slidesPerView + i;\n    }));\n    swiper.slides.forEach((slideEl, i) => {\n      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n    });\n    return;\n  }\n  const slideIndexLastInView = activeIndex + slidesPerView - 1;\n  if (swiper.params.rewind || swiper.params.loop) {\n    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n      const realIndex = (i % len + len) % len;\n      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n    }\n  } else {\n    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n        unlazy(swiper, i);\n      }\n    }\n  }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n  const {\n    slidesGrid,\n    params\n  } = swiper;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  let activeIndex;\n  for (let i = 0; i < slidesGrid.length; i += 1) {\n    if (typeof slidesGrid[i + 1] !== 'undefined') {\n      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n        activeIndex = i;\n      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n        activeIndex = i + 1;\n      }\n    } else if (translate >= slidesGrid[i]) {\n      activeIndex = i;\n    }\n  }\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n  }\n  return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  const getVirtualRealIndex = aIndex => {\n    let realIndex = aIndex - swiper.virtual.slidesBefore;\n    if (realIndex < 0) {\n      realIndex = swiper.virtual.slides.length + realIndex;\n    }\n    if (realIndex >= swiper.virtual.slides.length) {\n      realIndex -= swiper.virtual.slides.length;\n    }\n    return realIndex;\n  };\n  if (typeof activeIndex === 'undefined') {\n    activeIndex = getActiveIndexByTranslate(swiper);\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex && !swiper.params.loop) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n  if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n    swiper.realIndex = getVirtualRealIndex(activeIndex);\n    return;\n  }\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n  // Get real index\n  let realIndex;\n  if (swiper.virtual && params.virtual.enabled && params.loop) {\n    realIndex = getVirtualRealIndex(activeIndex);\n  } else if (gridEnabled) {\n    const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n    let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n    if (Number.isNaN(activeSlideIndex)) {\n      activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n    }\n    realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n  } else if (swiper.slides[activeIndex]) {\n    const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n    if (slideIndex) {\n      realIndex = parseInt(slideIndex, 10);\n    } else {\n      realIndex = activeIndex;\n    }\n  } else {\n    realIndex = activeIndex;\n  }\n  Object.assign(swiper, {\n    previousSnapIndex,\n    snapIndex,\n    previousRealIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  if (swiper.initialized) {\n    preload(swiper);\n  }\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    if (previousRealIndex !== realIndex) {\n      swiper.emit('realIndexChange');\n    }\n    swiper.emit('slideChange');\n  }\n}\n\nfunction updateClickedSlide(el, path) {\n  const swiper = this;\n  const params = swiper.params;\n  let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n  if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n    [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n      if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n        slide = pathEl;\n      }\n    });\n  }\n  let slideFound = false;\n  let slideIndex;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n\nvar update = {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n  if (axis === void 0) {\n    axis = this.isHorizontal() ? 'x' : 'y';\n  }\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    wrapperEl\n  } = swiper;\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n  let currentTranslate = getTranslate(wrapperEl, axis);\n  currentTranslate += swiper.cssOverflowAdjustment();\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    if (swiper.isHorizontal()) {\n      x -= swiper.cssOverflowAdjustment();\n    } else {\n      y -= swiper.cssOverflowAdjustment();\n    }\n    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n  }\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n  return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n  if (translate === void 0) {\n    translate = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (translateBounds === void 0) {\n    translateBounds = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          swiper.animating = false;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n  return true;\n}\n\nvar translate = {\n  getTranslate: getSwiperTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};\n\nfunction setTransition(duration, byController) {\n  const swiper = this;\n  if (!swiper.params.cssMode) {\n    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n  }\n  swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n  let {\n    swiper,\n    runCallbacks,\n    direction,\n    step\n  } = _ref;\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n  swiper.emit(`transition${step}`);\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n    swiper.emit(`slideChangeTransition${step}`);\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}\n\nvar transition = {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    index = parseInt(index, 10);\n  }\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n  if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  const translate = -snapGrid[snapIndex];\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) {\n        return false;\n      }\n    }\n  }\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  // Update progress\n  swiper.updateProgress(translate);\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n  // Update Index\n  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n    if (speed === 0) {\n      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n        swiper._cssModeVirtualInitialSet = true;\n        requestAnimationFrame(() => {\n          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._immediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  swiper.setTransition(speed);\n  swiper.setTranslate(translate);\n  swiper.updateActiveIndex(slideIndex);\n  swiper.updateSlidesClasses();\n  swiper.emit('beforeTransitionStart', speed, internal);\n  swiper.transitionStart(runCallbacks, direction);\n  if (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n  }\n  return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    const indexAsNumber = parseInt(index, 10);\n    index = indexAsNumber;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      // eslint-disable-next-line\n      newIndex = newIndex + swiper.virtual.slidesBefore;\n    } else {\n      let targetSlideIndex;\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n      } else {\n        targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n      }\n      const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n      const {\n        centeredSlides\n      } = swiper.params;\n      let slidesPerView = swiper.params.slidesPerView;\n      if (slidesPerView === 'auto') {\n        slidesPerView = swiper.slidesPerViewDynamic();\n      } else {\n        slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n        if (centeredSlides && slidesPerView % 2 === 0) {\n          slidesPerView = slidesPerView + 1;\n        }\n      }\n      let needLoopFix = cols - targetSlideIndex < slidesPerView;\n      if (centeredSlides) {\n        needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n      }\n      if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n        needLoopFix = false;\n      }\n      if (needLoopFix) {\n        const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n        swiper.loopFix({\n          direction,\n          slideTo: true,\n          activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n          slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n        });\n      }\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n      } else {\n        newIndex = swiper.getSlideIndexByData(newIndex);\n      }\n    }\n  }\n  requestAnimationFrame(() => {\n    swiper.slideTo(newIndex, speed, runCallbacks, internal);\n  });\n  return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    enabled,\n    params,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let perGroup = params.slidesPerGroup;\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'next'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n      requestAnimationFrame(() => {\n        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n      });\n      return true;\n    }\n  }\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'prev'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n  let prevIndex = 0;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n  if (params.rewind && swiper.isBeginning) {\n    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n    requestAnimationFrame(() => {\n      swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n    });\n    return true;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (threshold === void 0) {\n    threshold = 0.5;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n  const swiper = this;\n  if (swiper.destroyed) return;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n        swiper.loopFix();\n        slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n\nvar slide = {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  const initSlides = () => {\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    slides.forEach((el, index) => {\n      el.setAttribute('data-swiper-slide-index', index);\n    });\n  };\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n  const addBlankSlides = amountOfSlides => {\n    for (let i = 0; i < amountOfSlides; i += 1) {\n      const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n      swiper.slidesEl.append(slideEl);\n    }\n  };\n  if (shouldFillGroup) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else if (shouldFillGrid) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else {\n    initSlides();\n  }\n  swiper.loopFix({\n    slideRealIndex,\n    direction: params.centeredSlides ? undefined : 'next'\n  });\n}\n\nfunction loopFix(_temp) {\n  let {\n    slideRealIndex,\n    slideTo = true,\n    direction,\n    setTranslate,\n    activeSlideIndex,\n    byController,\n    byMousewheel\n  } = _temp === void 0 ? {} : _temp;\n  const swiper = this;\n  if (!swiper.params.loop) return;\n  swiper.emit('beforeLoopFix');\n  const {\n    slides,\n    allowSlidePrev,\n    allowSlideNext,\n    slidesEl,\n    params\n  } = swiper;\n  const {\n    centeredSlides\n  } = params;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  if (swiper.virtual && params.virtual.enabled) {\n    if (slideTo) {\n      if (!params.centeredSlides && swiper.snapIndex === 0) {\n        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n      }\n    }\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    swiper.emit('loopFix');\n    return;\n  }\n  let slidesPerView = params.slidesPerView;\n  if (slidesPerView === 'auto') {\n    slidesPerView = swiper.slidesPerViewDynamic();\n  } else {\n    slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n    if (centeredSlides && slidesPerView % 2 === 0) {\n      slidesPerView = slidesPerView + 1;\n    }\n  }\n  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n  let loopedSlides = slidesPerGroup;\n  if (loopedSlides % slidesPerGroup !== 0) {\n    loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n  }\n  loopedSlides += params.loopAdditionalSlides;\n  swiper.loopedSlides = loopedSlides;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  if (slides.length < slidesPerView + loopedSlides) {\n    showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n  } else if (gridEnabled && params.grid.fill === 'row') {\n    showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n  }\n  const prependSlidesIndexes = [];\n  const appendSlidesIndexes = [];\n  let activeIndex = swiper.activeIndex;\n  if (typeof activeSlideIndex === 'undefined') {\n    activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n  } else {\n    activeIndex = activeSlideIndex;\n  }\n  const isNext = direction === 'next' || !direction;\n  const isPrev = direction === 'prev' || !direction;\n  let slidesPrepended = 0;\n  let slidesAppended = 0;\n  const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n  const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n  // prepend last slides before start\n  if (activeColIndexWithShift < loopedSlides) {\n    slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n    for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        const colIndexToPrepend = cols - index - 1;\n        for (let i = slides.length - 1; i >= 0; i -= 1) {\n          if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n        }\n        // slides.forEach((slide, slideIndex) => {\n        //   if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n        // });\n      } else {\n        prependSlidesIndexes.push(cols - index - 1);\n      }\n    }\n  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n    slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n    for (let i = 0; i < slidesAppended; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        slides.forEach((slide, slideIndex) => {\n          if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n        });\n      } else {\n        appendSlidesIndexes.push(index);\n      }\n    }\n  }\n  swiper.__preventObserver__ = true;\n  requestAnimationFrame(() => {\n    swiper.__preventObserver__ = false;\n  });\n  if (isPrev) {\n    prependSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.prepend(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  if (isNext) {\n    appendSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.append(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  swiper.recalcSlides();\n  if (params.slidesPerView === 'auto') {\n    swiper.updateSlides();\n  } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n    swiper.slides.forEach((slide, slideIndex) => {\n      swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n    });\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (slideTo) {\n    if (prependSlidesIndexes.length > 0 && isPrev) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        if (setTranslate) {\n          const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n          swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n          swiper.touchEventsData.currentTranslate = swiper.translate;\n        }\n      }\n    } else if (appendSlidesIndexes.length > 0 && isNext) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n        swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n      }\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.controller && swiper.controller.control && !byController) {\n    const loopParams = {\n      slideRealIndex,\n      direction,\n      setTranslate,\n      activeSlideIndex,\n      byController: true\n    };\n    if (Array.isArray(swiper.controller.control)) {\n      swiper.controller.control.forEach(c => {\n        if (!c.destroyed && c.params.loop) c.loopFix({\n          ...loopParams,\n          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n        });\n      });\n    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n      swiper.controller.control.loopFix({\n        ...loopParams,\n        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n      });\n    }\n  }\n  swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  swiper.recalcSlides();\n  const newSlidesOrder = [];\n  swiper.slides.forEach(slideEl => {\n    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n    newSlidesOrder[index] = slideEl;\n  });\n  swiper.slides.forEach(slideEl => {\n    slideEl.removeAttribute('data-swiper-slide-index');\n  });\n  newSlidesOrder.forEach(slideEl => {\n    slidesEl.append(slideEl);\n  });\n  swiper.recalcSlides();\n  swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n  const swiper = this;\n  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nfunction unsetGrabCursor() {\n  const swiper = this;\n  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nvar grabCursor = {\n  setGrabCursor,\n  unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n  if (base === void 0) {\n    base = this;\n  }\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n    return found || __closestFrom(el.getRootNode().host);\n  }\n  return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n  const window = getWindow();\n  const {\n    params\n  } = swiper;\n  const edgeSwipeDetection = params.edgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold;\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n      return true;\n    }\n    return false;\n  }\n  return true;\n}\nfunction onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const data = swiper.touchEventsData;\n  if (e.type === 'pointerdown') {\n    if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n      return;\n    }\n    data.pointerId = e.pointerId;\n  } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n    data.touchId = e.targetTouches[0].identifier;\n  }\n  if (e.type === 'touchstart') {\n    // don't proceed touch event\n    preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n    return;\n  }\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n  let targetEl = e.target;\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n  }\n  if ('which' in e && e.which === 3) return;\n  if ('button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n\n  // change target el for shadow root component\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n  // eslint-disable-next-line\n  const eventPath = e.composedPath ? e.composedPath() : e.path;\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    targetEl = eventPath[0];\n  }\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n  // use closestElement for shadow root element to get the actual closest for nested shadow root element\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!targetEl.closest(params.swipeHandler)) return;\n  }\n  touches.currentX = e.pageX;\n  touches.currentY = e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  if (!preventEdgeSwipe(swiper, e, startX)) {\n    return;\n  }\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  let preventDefault = true;\n  if (targetEl.matches(data.focusableElements)) {\n    preventDefault = false;\n    if (targetEl.nodeName === 'SELECT') {\n      data.isTouched = false;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n    document.activeElement.blur();\n  }\n  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n    e.preventDefault();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n    swiper.freeMode.onTouchStart();\n  }\n  swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (e.type === 'pointermove') {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    const id = e.pointerId;\n    if (id !== data.pointerId) return;\n  }\n  let targetTouch;\n  if (e.type === 'touchmove') {\n    targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  } else {\n    targetTouch = e;\n  }\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  const pageX = targetTouch.pageX;\n  const pageY = targetTouch.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    if (!e.target.matches(data.focusableElements)) {\n      swiper.allowClick = false;\n    }\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n    return;\n  }\n  if (params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n      return;\n    }\n  }\n  if (document.activeElement) {\n    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  touches.previousX = touches.currentX;\n  touches.previousY = touches.currentY;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n  if (params.oneWayMovement) {\n    diff = Math.abs(diff) * (rtl ? 1 : -1);\n    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n  }\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) {\n    diff = -diff;\n    touchesDiff = -touchesDiff;\n  }\n  const prevTouchesDirection = swiper.touchesDirection;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n  const isLoop = swiper.params.loop && !params.cssMode;\n  const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n  if (!data.isMoved) {\n    if (isLoop && allowLoopFix) {\n      swiper.loopFix({\n        direction: swiper.swipeDirection\n      });\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      const evt = new window.CustomEvent('transitionend', {\n        bubbles: true,\n        cancelable: true,\n        detail: {\n          bySwiperTouchMove: true\n        }\n      });\n      swiper.wrapperEl.dispatchEvent(evt);\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  let loopFixed;\n  new Date().getTime();\n  if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n    Object.assign(touches, {\n      startX: pageX,\n      startY: pageY,\n      currentX: pageX,\n      currentY: pageY,\n      startTranslate: data.currentTranslate\n    });\n    data.loopSwapReset = true;\n    data.startTranslate = data.currentTranslate;\n    return;\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if (diff > 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\n      swiper.loopFix({\n        direction: 'prev',\n        setTranslate: true,\n        activeSlideIndex: 0\n      });\n    }\n    if (data.currentTranslate > swiper.minTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n      }\n    }\n  } else if (diff < 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\n      swiper.loopFix({\n        direction: 'next',\n        setTranslate: true,\n        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n      });\n    }\n    if (data.currentTranslate < swiper.maxTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n      }\n    }\n  }\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let targetTouch;\n  const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n  if (!isTouchEvent) {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    if (e.pointerId !== data.pointerId) return;\n    targetTouch = e;\n  } else {\n    targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  }\n  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n    const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n    if (!proceed) {\n      return;\n    }\n  }\n  data.pointerId = null;\n  data.touchId = null;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n  if (params.cssMode) {\n    return;\n  }\n  if (params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  }\n\n  // Find current slide\n  const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n  if (params.rewind) {\n    if (swiper.isBeginning) {\n      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    } else if (swiper.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  }\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        swiper.slideTo(stopIndex + increment);\n      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n        swiper.slideTo(rewindLastIndex);\n      } else {\n        swiper.slideTo(stopIndex);\n      }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\nfunction onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper;\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n  const isVirtualLoop = isVirtual && params.loop;\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    if (swiper.params.loop && !isVirtual) {\n      swiper.slideToLoop(swiper.realIndex, 0, false, true);\n    } else {\n      swiper.slideTo(swiper.activeIndex, 0, false, true);\n    }\n  }\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    clearTimeout(swiper.autoplay.resizeTimeout);\n    swiper.autoplay.resizeTimeout = setTimeout(() => {\n      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        swiper.autoplay.resume();\n      }\n    }, 500);\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n\nfunction onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\nfunction onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === 0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n  const swiper = this;\n  processLazyPreloader(swiper, e.target);\n  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n    return;\n  }\n  swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n  const swiper = this;\n  if (swiper.documentTouchHandlerProceeded) return;\n  swiper.documentTouchHandlerProceeded = true;\n  if (swiper.params.touchReleaseOnEdges) {\n    swiper.el.style.touchAction = 'auto';\n  }\n}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    el,\n    wrapperEl,\n    device\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method;\n  if (!el || typeof el === 'string') return;\n\n  // Touch Events\n  document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n    passive: false,\n    capture\n  });\n  el[domMethod]('touchstart', swiper.onTouchStart, {\n    passive: false\n  });\n  el[domMethod]('pointerdown', swiper.onTouchStart, {\n    passive: false\n  });\n  document[domMethod]('touchmove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('pointermove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('touchend', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerup', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointercancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('touchcancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerout', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerleave', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('contextmenu', swiper.onTouchEnd, {\n    passive: true\n  });\n\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n\n  // Images loader\n  el[domMethod]('load', swiper.onLoad, {\n    capture: true\n  });\n};\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n  swiper.onClick = onClick.bind(swiper);\n  swiper.onLoad = onLoad.bind(swiper);\n  events(swiper, 'on');\n}\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\nvar events$1 = {\n  attachEvents,\n  detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n  const swiper = this;\n  const {\n    realIndex,\n    initialized,\n    params,\n    el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasGrabCursor = swiper.params.grabCursor;\n  const isGrabCursor = breakpointParams.grabCursor;\n  const wasEnabled = params.enabled;\n  if (wasMultiRow && !isMultiRow) {\n    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    el.classList.add(`${params.containerModifierClass}grid`);\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      el.classList.add(`${params.containerModifierClass}grid-column`);\n    }\n    swiper.emitContainerClasses();\n  }\n  if (wasGrabCursor && !isGrabCursor) {\n    swiper.unsetGrabCursor();\n  } else if (!wasGrabCursor && isGrabCursor) {\n    swiper.setGrabCursor();\n  }\n\n  // Toggle navigation, pagination, scrollbar\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    if (typeof breakpointParams[prop] === 'undefined') return;\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n  const wasLoop = params.loop;\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  const hasLoop = swiper.params.loop;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n  if (initialized) {\n    if (needsReLoop) {\n      swiper.loopDestroy();\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (!wasLoop && hasLoop) {\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (wasLoop && !hasLoop) {\n      swiper.loopDestroy();\n    }\n  }\n  swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n  if (base === void 0) {\n    base = 'window';\n  }\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n\nvar breakpoints = {\n  setBreakpoint,\n  getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\nfunction addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    el,\n    device\n  } = swiper;\n  // prettier-ignore\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }, {\n    'watch-progress': params.watchSlidesProgress\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  el.classList.add(...classNames);\n  swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n  const swiper = this;\n  const {\n    el,\n    classNames\n  } = swiper;\n  if (!el || typeof el === 'string') return;\n  el.classList.remove(...classNames);\n  swiper.emitContainerClasses();\n}\n\nvar classes = {\n  addClasses,\n  removeClasses\n};\n\nfunction checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\nvar checkOverflow$1 = {\n  checkOverflow\n};\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  oneWayMovement: false,\n  swiperElementNodeName: 'SWIPER-CONTAINER',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  eventsPrefix: 'swiper',\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 5,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // loop\n  loop: false,\n  loopAddBlankSlides: true,\n  loopAdditionalSlides: 0,\n  loopPreventsSliding: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  maxBackfaceHiddenSlides: 10,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideFullyVisibleClass: 'swiper-slide-fully-visible',\n  slideNextClass: 'swiper-slide-next',\n  slidePrevClass: 'swiper-slide-prev',\n  wrapperClass: 'swiper-wrapper',\n  lazyPreloaderClass: 'swiper-lazy-preloader',\n  lazyPreloadPrevNext: 0,\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj) {\n    if (obj === void 0) {\n      obj = {};\n    }\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n    if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n      params[moduleParamName].auto = true;\n    }\n    if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n      params[moduleParamName].auto = true;\n    }\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events: events$1,\n  breakpoints,\n  checkOverflow: checkOverflow$1,\n  classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n  constructor() {\n    let el;\n    let params;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n    const document = getDocument();\n    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n      const swipers = [];\n      document.querySelectorAll(params.el).forEach(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      // eslint-disable-next-line no-constructor-return\n      return swipers;\n    }\n\n    // Swiper Instance\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        params,\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = extend({}, defaults, allModulesParams);\n\n    // Extend defaults with passed params\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params);\n\n    // add event listeners\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    }\n\n    // Extend Swiper\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: [],\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      cssOverflowAdjustment() {\n        // Returns 0 unless `translate` is > 2**23\n        // Should be subtracted from css values to prevent overflow\n        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n      },\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: 0,\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        startMoving: undefined,\n        pointerId: null,\n        touchId: null\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper');\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    // eslint-disable-next-line no-constructor-return\n    return swiper;\n  }\n  getDirectionLabel(property) {\n    if (this.isHorizontal()) {\n      return property;\n    }\n    // prettier-ignore\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n  getSlideIndex(slideEl) {\n    const {\n      slidesEl,\n      params\n    } = this;\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    const firstSlideIndex = elementIndex(slides[0]);\n    return elementIndex(slideEl) - firstSlideIndex;\n  }\n  getSlideIndexByData(index) {\n    return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n  }\n  recalcSlides() {\n    const swiper = this;\n    const {\n      slidesEl,\n      params\n    } = swiper;\n    swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  }\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n    swiper.emit('enable');\n  }\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n    swiper.emit('disable');\n  }\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    if (swiper.destroyed) return '';\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.forEach(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n  slidesPerViewDynamic(view, exact) {\n    if (view === void 0) {\n      view = 'current';\n    }\n    if (exact === void 0) {\n      exact = false;\n    }\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n    if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += Math.ceil(slides[i].swiperSlideSize);\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n    return spv;\n  }\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      }\n    });\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n      setTranslate();\n      if (params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n        translated = swiper.slideTo(slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n  changeDirection(newDirection, needUpdate) {\n    if (needUpdate === void 0) {\n      needUpdate = true;\n    }\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.forEach(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n    if (swiper.rtl) {\n      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n    swiper.update();\n  }\n  mount(element) {\n    const swiper = this;\n    if (swiper.mounted) return true;\n\n    // Find el\n    let el = element || swiper.params.el;\n    if (typeof el === 'string') {\n      el = document.querySelector(el);\n    }\n    if (!el) {\n      return false;\n    }\n    el.swiper = swiper;\n    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n      swiper.isElement = true;\n    }\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = el.shadowRoot.querySelector(getWrapperSelector());\n        // Children needs to return slot items\n        return res;\n      }\n      return elementChildren(el, getWrapperSelector())[0];\n    };\n    // Find Wrapper\n    let wrapperEl = getWrapper();\n    if (!wrapperEl && swiper.params.createElements) {\n      wrapperEl = createElement('div', swiper.params.wrapperClass);\n      el.append(wrapperEl);\n      elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n        wrapperEl.append(slideEl);\n      });\n    }\n    Object.assign(swiper, {\n      el,\n      wrapperEl,\n      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n      hostEl: swiper.isElement ? el.parentNode.host : el,\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n      wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n    });\n    return true;\n  }\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    }\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Attach events\n    swiper.attachEvents();\n    const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n    if (swiper.isElement) {\n      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n    }\n    lazyElements.forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      } else {\n        imageEl.addEventListener('load', e => {\n          processLazyPreloader(swiper, e.target);\n        });\n      }\n    });\n    preload(swiper);\n\n    // Init Flag\n    swiper.initialized = true;\n    preload(swiper);\n\n    // Emit\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n  destroy(deleteInstance, cleanStyles) {\n    if (deleteInstance === void 0) {\n      deleteInstance = true;\n    }\n    if (cleanStyles === void 0) {\n      cleanStyles = true;\n    }\n    const swiper = this;\n    const {\n      params,\n      el,\n      wrapperEl,\n      slides\n    } = swiper;\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      if (el && typeof el !== 'string') {\n        el.removeAttribute('style');\n      }\n      if (wrapperEl) {\n        wrapperEl.removeAttribute('style');\n      }\n      if (slides && slides.length) {\n        slides.forEach(slideEl => {\n          slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n          slideEl.removeAttribute('style');\n          slideEl.removeAttribute('data-swiper-slide-index');\n        });\n      }\n    }\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n    if (deleteInstance !== false) {\n      if (swiper.el && typeof swiper.el !== 'string') {\n        swiper.el.swiper = null;\n      }\n      deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n    return null;\n  }\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n  static get defaults() {\n    return defaults;\n  }\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n    Swiper.installModule(module);\n    return Swiper;\n  }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n  if (target === void 0) {\n    target = {};\n  }\n  if (src === void 0) {\n    src = {};\n  }\n  Object.keys(src).forEach(key => {\n    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n      extend(target[key], src[key]);\n    }\n  });\n}\nconst ssrDocument = {\n  body: {},\n  addEventListener() {},\n  removeEventListener() {},\n  activeElement: {\n    blur() {},\n    nodeName: ''\n  },\n  querySelector() {\n    return null;\n  },\n  querySelectorAll() {\n    return [];\n  },\n  getElementById() {\n    return null;\n  },\n  createEvent() {\n    return {\n      initEvent() {}\n    };\n  },\n  createElement() {\n    return {\n      children: [],\n      childNodes: [],\n      style: {},\n      setAttribute() {},\n      getElementsByTagName() {\n        return [];\n      }\n    };\n  },\n  createElementNS() {\n    return {};\n  },\n  importNode() {\n    return null;\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  }\n};\nfunction getDocument() {\n  const doc = typeof document !== 'undefined' ? document : {};\n  extend(doc, ssrDocument);\n  return doc;\n}\nconst ssrWindow = {\n  document: ssrDocument,\n  navigator: {\n    userAgent: ''\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  },\n  history: {\n    replaceState() {},\n    pushState() {},\n    go() {},\n    back() {}\n  },\n  CustomEvent: function CustomEvent() {\n    return this;\n  },\n  addEventListener() {},\n  removeEventListener() {},\n  getComputedStyle() {\n    return {\n      getPropertyValue() {\n        return '';\n      }\n    };\n  },\n  Image() {},\n  Date() {},\n  screen: {},\n  setTimeout() {},\n  clearTimeout() {},\n  matchMedia() {\n    return {};\n  },\n  requestAnimationFrame(callback) {\n    if (typeof setTimeout === 'undefined') {\n      callback();\n      return null;\n    }\n    return setTimeout(callback, 0);\n  },\n  cancelAnimationFrame(id) {\n    if (typeof setTimeout === 'undefined') {\n      return;\n    }\n    clearTimeout(id);\n  }\n};\nfunction getWindow() {\n  const win = typeof window !== 'undefined' ? window : {};\n  extend(win, ssrWindow);\n  return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n  return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no getter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nfunction nextTick(callback, delay) {\n  if (delay === void 0) {\n    delay = 0;\n  }\n  return setTimeout(callback, delay);\n}\nfunction now() {\n  return Date.now();\n}\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n  if (!style) {\n    style = el.style;\n  }\n  return style;\n}\nfunction getTranslate(el, axis) {\n  if (axis === void 0) {\n    axis = 'x';\n  }\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el);\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    }\n    // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  for (let i = 1; i < arguments.length; i += 1) {\n    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n  let {\n    swiper,\n    targetPosition,\n    side\n  } = _ref;\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n  const animate = () => {\n    time = new Date().getTime();\n    if (startTime === null) {\n      startTime = time;\n    }\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n  animate();\n}\nfunction getSlideTransformEl(slideEl) {\n  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n  if (selector === void 0) {\n    selector = '';\n  }\n  const children = [...element.children];\n  if (element instanceof HTMLSlotElement) {\n    children.push(...element.assignedElements());\n  }\n  if (!selector) {\n    return children;\n  }\n  return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOf(el, parent) {\n  const isChild = parent.contains(el);\n  if (!isChild && parent instanceof HTMLSlotElement) {\n    const children = [...parent.assignedElements()];\n    return children.includes(el);\n  }\n  return isChild;\n}\nfunction showWarning(text) {\n  try {\n    console.warn(text);\n    return;\n  } catch (err) {\n    // err\n  }\n}\nfunction createElement(tag, classes) {\n  if (classes === void 0) {\n    classes = [];\n  }\n  const el = document.createElement(tag);\n  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n  return el;\n}\nfunction elementOffset(el) {\n  const window = getWindow();\n  const document = getDocument();\n  const box = el.getBoundingClientRect();\n  const body = document.body;\n  const clientTop = el.clientTop || body.clientTop || 0;\n  const clientLeft = el.clientLeft || body.clientLeft || 0;\n  const scrollTop = el === window ? window.scrollY : el.scrollTop;\n  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n  return {\n    top: box.top + scrollTop - clientTop,\n    left: box.left + scrollLeft - clientLeft\n  };\n}\nfunction elementPrevAll(el, selector) {\n  const prevEls = [];\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if (prev.matches(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return prevEls;\n}\nfunction elementNextAll(el, selector) {\n  const nextEls = [];\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if (next.matches(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return nextEls;\n}\nfunction elementStyle(el, prop) {\n  const window = getWindow();\n  return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n  let child = el;\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\nfunction elementParents(el, selector) {\n  const parents = []; // eslint-disable-line\n  let parent = el.parentElement; // eslint-disable-line\n  while (parent) {\n    if (selector) {\n      if (parent.matches(selector)) parents.push(parent);\n    } else {\n      parents.push(parent);\n    }\n    parent = parent.parentElement;\n  }\n  return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n  function fireCallBack(e) {\n    if (e.target !== el) return;\n    callback.call(el, e);\n    el.removeEventListener('transitionend', fireCallBack);\n  }\n  if (callback) {\n    el.addEventListener('transitionend', fireCallBack);\n  }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n  const window = getWindow();\n  if (includeMargins) {\n    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n  }\n  return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n  return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n  return v => {\n    if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n      return v + 0.001;\n    }\n    return v;\n  };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","export {default as Virtual} from './virtual.mjs';\nexport {default as Keyboard} from './keyboard.mjs';\nexport {default as Mousewheel} from './mousewheel.mjs';\nexport {default as Navigation} from './navigation.mjs';\nexport {default as Pagination} from './pagination.mjs';\nexport {default as Scrollbar} from './scrollbar.mjs';\nexport {default as Parallax} from './parallax.mjs';\nexport {default as Zoom} from './zoom.mjs';\nexport {default as Controller} from './controller.mjs';\nexport {default as A11y} from './a11y.mjs';\nexport {default as History} from './history.mjs';\nexport {default as HashNavigation} from './hash-navigation.mjs';\nexport {default as Autoplay} from './autoplay.mjs';\nexport {default as Thumbs} from './thumbs.mjs';\nexport {default as FreeMode} from './free-mode.mjs';\nexport {default as Grid} from './grid.mjs';\nexport {default as Manipulation} from './manipulation.mjs';\nexport {default as EffectFade} from './effect-fade.mjs';\nexport {default as EffectCube} from './effect-cube.mjs';\nexport {default as EffectFlip} from './effect-flip.mjs';\nexport {default as EffectCoverflow} from './effect-coverflow.mjs';\nexport {default as EffectCreative} from './effect-creative.mjs';\nexport {default as EffectCards} from './effect-cards.mjs';","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n  let cssModeTimeout;\n  const document = getDocument();\n  swiper.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n  const tempDOM = document.createElement('div');\n  function renderSlide(slide, index) {\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    // eslint-disable-next-line\n    let slideEl;\n    if (params.renderSlide) {\n      slideEl = params.renderSlide.call(swiper, slide, index);\n      if (typeof slideEl === 'string') {\n        tempDOM.innerHTML = slideEl;\n        slideEl = tempDOM.children[0];\n      }\n    } else if (swiper.isElement) {\n      slideEl = createElement('swiper-slide');\n    } else {\n      slideEl = createElement('div', swiper.params.slideClass);\n    }\n    slideEl.setAttribute('data-swiper-slide-index', index);\n    if (!params.renderSlide) {\n      slideEl.innerHTML = slide;\n    }\n    if (params.cache) {\n      swiper.virtual.cache[index] = slideEl;\n    }\n    return slideEl;\n  }\n  function update(force, beforeInit) {\n    const {\n      slidesPerView,\n      slidesPerGroup,\n      centeredSlides,\n      loop: isLoop,\n      initialSlide\n    } = swiper.params;\n    if (beforeInit && !isLoop && initialSlide > 0) {\n      return;\n    }\n    const {\n      addSlidesBefore,\n      addSlidesAfter\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n    const activeIndex = swiper.activeIndex || 0;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n    }\n    let from = activeIndex - slidesBefore;\n    let to = activeIndex + slidesAfter;\n    if (!isLoop) {\n      from = Math.max(from, 0);\n      to = Math.min(to, slides.length - 1);\n    }\n    let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n    if (isLoop && activeIndex >= slidesBefore) {\n      from -= slidesBefore;\n      if (!centeredSlides) offset += swiper.slidesGrid[0];\n    } else if (isLoop && activeIndex < slidesBefore) {\n      from = -slidesBefore;\n      if (centeredSlides) offset += swiper.slidesGrid[0];\n    }\n    Object.assign(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n      slidesBefore,\n      slidesAfter\n    });\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      emit('virtualUpdate');\n    }\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.forEach(slideEl => {\n          slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n        });\n      }\n      swiper.updateProgress();\n      emit('virtualUpdate');\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()\n      });\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      } else {\n        emit('virtualUpdate');\n      }\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    const getSlideIndex = index => {\n      let slideIndex = index;\n      if (index < 0) {\n        slideIndex = slides.length + index;\n      } else if (slideIndex >= slides.length) {\n        // eslint-disable-next-line\n        slideIndex = slideIndex - slides.length;\n      }\n      return slideIndex;\n    };\n    if (force) {\n      swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n        slideEl.remove();\n      });\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          const slideIndex = getSlideIndex(i);\n          swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n            slideEl.remove();\n          });\n        }\n      }\n    }\n    const loopFrom = isLoop ? -slides.length : 0;\n    const loopTo = isLoop ? slides.length * 2 : slides.length;\n    for (let i = loopFrom; i < loopTo; i += 1) {\n      if (i >= from && i <= to) {\n        const slideIndex = getSlideIndex(i);\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(slideIndex);\n        } else {\n          if (i > previousTo) appendIndexes.push(slideIndex);\n          if (i < previousFrom) prependIndexes.push(slideIndex);\n        }\n      }\n    }\n    appendIndexes.forEach(index => {\n      swiper.slidesEl.append(renderSlide(slides[index], index));\n    });\n    if (isLoop) {\n      for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n        const index = prependIndexes[i];\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      }\n    } else {\n      prependIndexes.sort((a, b) => b - a);\n      prependIndexes.forEach(index => {\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      });\n    }\n    elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n      slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n    });\n    onRendered();\n  }\n  function appendSlide(slides) {\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    update(true);\n  }\n  function prependSlide(slides) {\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const cachedEl = cache[cachedIndex];\n        const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n        if (cachedElIndex) {\n          cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n          // shift cache indexes\n          Object.keys(swiper.virtual.cache).forEach(key => {\n            if (key > slidesIndexes) {\n              swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n              swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n              delete swiper.virtual.cache[key];\n            }\n          });\n        }\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n        // shift cache indexes\n        Object.keys(swiper.virtual.cache).forEach(key => {\n          if (key > slidesIndexes) {\n            swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n            swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n            delete swiper.virtual.cache[key];\n          }\n        });\n      }\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    let domSlidesAssigned;\n    if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n      const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n      if (slides && slides.length) {\n        swiper.virtual.slides = [...slides];\n        domSlidesAssigned = true;\n        slides.forEach((slideEl, slideIndex) => {\n          slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n          swiper.virtual.cache[slideIndex] = slideEl;\n          slideEl.remove();\n        });\n      }\n    }\n    if (!domSlidesAssigned) {\n      swiper.virtual.slides = swiper.params.virtual.slides;\n    }\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n    update(false, true);\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40;\n    // Directions locks\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n      const el = swiper.el;\n      const swiperWidth = el.clientWidth;\n      const swiperHeight = el.clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = elementOffset(el);\n      if (rtl) swiperOffset.left -= el.scrollLeft;\n      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n    emit('keyPress', kc);\n    return undefined;\n  }\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    document.addEventListener('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    document.removeEventListener('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null,\n      noMousewheelClass: 'swiper-no-mousewheel'\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = pY < 1 ? -1 : 1;\n    }\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY\n    };\n  }\n  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    }\n\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    lastScrollTime = new window.Date().getTime();\n    // Return false as a default\n    return false;\n  }\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  }\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n\n    // Ignore event if the target or its parents have the swiper-no-mousewheel class\n    if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n    const params = swiper.params.mousewheel;\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n    if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = normalize(e);\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n    if (delta === 0) return true;\n    if (params.invert) delta = -delta;\n\n    // Get the scroll positions\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n    // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      };\n\n      // Keep the most recent events\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n          swiper.updateSlidesClasses();\n        }\n        if (swiper.params.loop) {\n          swiper.loopFix({\n            direction: newEvent.direction < 0 ? 'next' : 'prev',\n            byMousewheel: true\n          });\n        }\n        if (swiper.params.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n          return true;\n        }\n      }\n    }\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n  function events(method) {\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    targetEl[method]('mouseenter', handleMouseEnter);\n    targetEl[method]('mouseleave', handleMouseLeave);\n    targetEl[method]('wheel', handle);\n  }\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n    if (swiper.mousewheel.enabled) return false;\n    events('addEventListener');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n    if (!swiper.mousewheel.enabled) return false;\n    events('removeEventListener');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    prevEl: null\n  };\n  function getEl(el) {\n    let res;\n    if (el && typeof el === 'string' && swiper.isElement) {\n      res = swiper.el.querySelector(el);\n      if (res) return res;\n    }\n    if (el) {\n      if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n        res = swiper.el.querySelector(el);\n      } else if (res && res.length === 1) {\n        res = res[0];\n      }\n    }\n    if (el && !res) return el;\n    // if (Array.isArray(res) && res.length === 1) res = res[0];\n    return res;\n  }\n  function toggleEl(el, disabled) {\n    const params = swiper.params.navigation;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (subEl) {\n        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n        if (swiper.params.watchOverflow && swiper.enabled) {\n          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n        }\n      }\n    });\n  }\n  function update() {\n    // Update Navigation Buttons\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (swiper.params.loop) {\n      toggleEl(prevEl, false);\n      toggleEl(nextEl, false);\n      return;\n    }\n    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    let nextEl = getEl(params.nextEl);\n    let prevEl = getEl(params.prevEl);\n    Object.assign(swiper.navigation, {\n      nextEl,\n      prevEl\n    });\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const initButton = (el, dir) => {\n      if (el) {\n        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      }\n      if (!swiper.enabled && el) {\n        el.classList.add(...params.lockClass.split(' '));\n      }\n    };\n    nextEl.forEach(el => initButton(el, 'next'));\n    prevEl.forEach(el => initButton(el, 'prev'));\n  }\n  function destroy() {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const destroyButton = (el, dir) => {\n      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n    };\n    nextEl.forEach(el => destroyButton(el, 'next'));\n    prevEl.forEach(el => destroyButton(el, 'prev'));\n  }\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (swiper.enabled) {\n      update();\n      return;\n    }\n    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n  });\n  on('click', (_s, e) => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const targetEl = e.target;\n    let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n    if (swiper.isElement && !targetIsButton) {\n      const path = e.path || e.composedPath && e.composedPath();\n      if (path) {\n        targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n      }\n    }\n    if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n      if (nextEl.length) {\n        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      } else if (prevEl.length) {\n        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      }\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    init();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    destroy();\n  };\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Navigation as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n        if (!element) {\n          element = createElement('div', checkProps[key]);\n          element.className = checkProps[key];\n          swiper.el.append(element);\n        }\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n  return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`,\n      paginationDisabledClass: `${pfx}-disabled`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n  }\n  function setSideBullets(bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    if (!bulletEl) return;\n    bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n    if (bulletEl) {\n      bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n      bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n      if (bulletEl) {\n        bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n      }\n    }\n  }\n  function onBulletClick(e) {\n    const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n    if (!bulletEl) {\n      return;\n    }\n    e.preventDefault();\n    const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n    if (swiper.params.loop) {\n      if (swiper.realIndex === index) return;\n      swiper.slideToLoop(index);\n    } else {\n      swiper.slideTo(index);\n    }\n  }\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    // Current/Total\n    let current;\n    let previousIndex;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      previousIndex = swiper.previousRealIndex || 0;\n      current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n      previousIndex = swiper.previousSnapIndex;\n    } else {\n      previousIndex = swiper.previousIndex || 0;\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n        el.forEach(subEl => {\n          subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n        });\n        if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n          dynamicBulletIndex += current - (previousIndex || 0);\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.forEach(bulletEl => {\n        const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n        bulletEl.classList.remove(...classesToRemove);\n      });\n      if (el.length > 1) {\n        bullets.forEach(bullet => {\n          const bulletIndex = elementIndex(bullet);\n          if (bulletIndex === current) {\n            bullet.classList.add(...params.bulletActiveClass.split(' '));\n          } else if (swiper.isElement) {\n            bullet.setAttribute('part', 'bullet');\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n            if (bulletIndex === firstIndex) {\n              setSideBullets(bullet, 'prev');\n            }\n            if (bulletIndex === lastIndex) {\n              setSideBullets(bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const bullet = bullets[current];\n        if (bullet) {\n          bullet.classList.add(...params.bulletActiveClass.split(' '));\n        }\n        if (swiper.isElement) {\n          bullets.forEach((bulletEl, bulletIndex) => {\n            bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n          });\n        }\n        if (params.dynamicBullets) {\n          const firstDisplayedBullet = bullets[firstIndex];\n          const lastDisplayedBullet = bullets[lastIndex];\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            if (bullets[i]) {\n              bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n          }\n          setSideBullets(firstDisplayedBullet, 'prev');\n          setSideBullets(lastDisplayedBullet, 'next');\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.forEach(bullet => {\n          bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n        });\n      }\n    }\n    el.forEach((subEl, subElIndex) => {\n      if (params.type === 'fraction') {\n        subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n          fractionEl.textContent = params.formatFractionCurrent(current + 1);\n        });\n        subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n          totalEl.textContent = params.formatFractionTotal(total);\n        });\n      }\n      if (params.type === 'progressbar') {\n        let progressbarDirection;\n        if (params.progressbarOpposite) {\n          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n        } else {\n          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n        }\n        const scale = (current + 1) / total;\n        let scaleX = 1;\n        let scaleY = 1;\n        if (progressbarDirection === 'horizontal') {\n          scaleX = scale;\n        } else {\n          scaleY = scale;\n        }\n        subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n          progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n          progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n        });\n      }\n      if (params.type === 'custom' && params.renderCustom) {\n        subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n        if (subElIndex === 0) emit('paginationRender', subEl);\n      } else {\n        if (subElIndex === 0) emit('paginationRender', subEl);\n        emit('paginationUpdate', subEl);\n      }\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n      }\n    });\n  }\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          // prettier-ignore\n          paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n    }\n    swiper.pagination.bullets = [];\n    el.forEach(subEl => {\n      if (params.type !== 'custom') {\n        subEl.innerHTML = paginationHTML || '';\n      }\n      if (params.type === 'bullets') {\n        swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n      }\n    });\n    if (params.type !== 'custom') {\n      emit('paginationRender', el[0]);\n    }\n  }\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = [...document.querySelectorAll(params.el)];\n    }\n    if (!el) {\n      el = params.el;\n    }\n    if (!el || el.length === 0) return;\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n      el = [...swiper.el.querySelectorAll(params.el)];\n      // check if it belongs to another nested Swiper\n      if (el.length > 1) {\n        el = el.filter(subEl => {\n          if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n          return true;\n        })[0];\n      }\n    }\n    if (Array.isArray(el) && el.length === 1) el = el[0];\n    Object.assign(swiper.pagination, {\n      el\n    });\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (params.type === 'bullets' && params.clickable) {\n        subEl.classList.add(...(params.clickableClass || '').split(' '));\n      }\n      subEl.classList.add(params.modifierClass + params.type);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n      if (params.type === 'bullets' && params.dynamicBullets) {\n        subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n        dynamicBulletIndex = 0;\n        if (params.dynamicMainBullets < 1) {\n          params.dynamicMainBullets = 1;\n        }\n      }\n      if (params.type === 'progressbar' && params.progressbarOpposite) {\n        subEl.classList.add(params.progressbarOppositeClass);\n      }\n      if (params.clickable) {\n        subEl.addEventListener('click', onBulletClick);\n      }\n      if (!swiper.enabled) {\n        subEl.classList.add(params.lockClass);\n      }\n    });\n  }\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => {\n        subEl.classList.remove(params.hiddenClass);\n        subEl.classList.remove(params.modifierClass + params.type);\n        subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        if (params.clickable) {\n          subEl.classList.remove(...(params.clickableClass || '').split(' '));\n          subEl.removeEventListener('click', onBulletClick);\n        }\n      });\n    }\n    if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n  }\n  on('changeDirection', () => {\n    if (!swiper.pagination || !swiper.pagination.el) return;\n    const params = swiper.params.pagination;\n    let {\n      el\n    } = swiper.pagination;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.classList.remove(params.horizontalClass, params.verticalClass);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    });\n  });\n  on('init', () => {\n    if (swiper.params.pagination.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      render();\n      update();\n    }\n  });\n  on('activeIndexChange', () => {\n    if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    update();\n  });\n  on('snapGridLengthChange', () => {\n    render();\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const el = makeElementsArray(swiper.pagination.el);\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n      el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n    }\n    init();\n    render();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n    }\n    destroy();\n  };\n  Object.assign(swiper.pagination, {\n    enable,\n    disable,\n    render,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Pagination as default };\n","function classesToSelector(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n  return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n      scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n      horizontalClass: `swiper-scrollbar-horizontal`,\n      verticalClass: `swiper-scrollbar-vertical`\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null\n  };\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n      dragEl.style.width = `${newSize}px`;\n    } else {\n      dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n      dragEl.style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(timeout);\n      el.style.opacity = 1;\n      timeout = setTimeout(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n  }\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n  }\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    dragEl.style.width = '';\n    dragEl.style.height = '';\n    trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.width = `${dragSize}px`;\n    } else {\n      dragEl.style.height = `${dragSize}px`;\n    }\n    if (divider >= 1) {\n      el.style.display = 'none';\n    } else {\n      el.style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      el.style.opacity = 0;\n    }\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n    }\n  }\n  function getPointerPosition(e) {\n    return swiper.isHorizontal() ? e.clientX : e.clientY;\n  }\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    wrapperEl.style.transitionDuration = '100ms';\n    dragEl.style.transitionDuration = '100ms';\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    el.style.transitionDuration = '0ms';\n    if (params.hide) {\n      el.style.opacity = 1;\n    }\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n    }\n    emit('scrollbarDragStart', e);\n  }\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    wrapperEl.style.transitionDuration = '0ms';\n    el.style.transitionDuration = '0ms';\n    dragEl.style.transitionDuration = '0ms';\n    emit('scrollbarDragMove', e);\n  }\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = '';\n      wrapperEl.style.transitionDuration = '';\n    }\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n    emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n  function events(method) {\n    const {\n      scrollbar,\n      params\n    } = swiper;\n    const el = scrollbar.el;\n    if (!el) return;\n    const target = el;\n    const activeListener = params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n    target[eventMethod]('pointerdown', onDragStart, activeListener);\n    document[eventMethod]('pointermove', onDragMove, activeListener);\n    document[eventMethod]('pointerup', onDragEnd, passiveListener);\n  }\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('on');\n  }\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('off');\n  }\n  function init() {\n    const {\n      scrollbar,\n      el: swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = document.querySelectorAll(params.el);\n      if (!el.length) return;\n    } else if (!el) {\n      el = params.el;\n    }\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n      el = swiperEl.querySelector(params.el);\n    }\n    if (el.length > 0) el = el[0];\n    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    let dragEl;\n    if (el) {\n      dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n      if (!dragEl) {\n        dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n        el.append(dragEl);\n      }\n    }\n    Object.assign(scrollbar, {\n      el,\n      dragEl\n    });\n    if (params.draggable) {\n      enableDraggable();\n    }\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n    }\n  }\n  function destroy() {\n    const params = swiper.params.scrollbar;\n    const el = swiper.scrollbar.el;\n    if (el) {\n      el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n    }\n    disableDraggable();\n  }\n  on('changeDirection', () => {\n    if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n    const params = swiper.params.scrollbar;\n    let {\n      el\n    } = swiper.scrollbar;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.classList.remove(params.horizontalClass, params.verticalClass);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    });\n  });\n  on('init', () => {\n    if (swiper.params.scrollbar.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      updateSize();\n      setTranslate();\n    }\n  });\n  on('update resize observerUpdate lock unlock changeDirection', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      el\n    } = swiper.scrollbar;\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    }\n    init();\n    updateSize();\n    setTranslate();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    }\n    destroy();\n  };\n  Object.assign(swiper.scrollbar, {\n    enable,\n    disable,\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n  const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const rtlFactor = rtl ? -1 : 1;\n    const p = el.getAttribute('data-swiper-parallax') || '0';\n    let x = el.getAttribute('data-swiper-parallax-x');\n    let y = el.getAttribute('data-swiper-parallax-y');\n    const scale = el.getAttribute('data-swiper-parallax-scale');\n    const opacity = el.getAttribute('data-swiper-parallax-opacity');\n    const rotate = el.getAttribute('data-swiper-parallax-rotate');\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      el.style.opacity = currentOpacity;\n    }\n    let transform = `translate3d(${x}, ${y}, 0px)`;\n    if (typeof scale !== 'undefined' && scale !== null) {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      transform += ` scale(${currentScale})`;\n    }\n    if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n      const currentRotate = rotate * progress * -1;\n      transform += ` rotate(${currentRotate}deg)`;\n    }\n    el.style.transform = transform;\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      slides,\n      progress,\n      snapGrid,\n      isElement\n    } = swiper;\n    const elements = elementChildren(el, elementsSelector);\n    if (swiper.isElement) {\n      elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n    }\n    elements.forEach(subEl => {\n      setTransform(subEl, progress);\n    });\n    slides.forEach((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n        setTransform(subEl, slideProgress);\n      });\n    });\n  };\n  const setTransition = function (duration) {\n    if (duration === void 0) {\n      duration = swiper.params.speed;\n    }\n    const {\n      el,\n      hostEl\n    } = swiper;\n    const elements = [...el.querySelectorAll(elementsSelector)];\n    if (swiper.isElement) {\n      elements.push(...hostEl.querySelectorAll(elementsSelector));\n    }\n    elements.forEach(parallaxEl => {\n      let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n      if (duration === 0) parallaxDuration = 0;\n      parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n    });\n  };\n  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      limitToOriginalSize: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed'\n    }\n  });\n  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const evCache = [];\n  const gesture = {\n    originX: 0,\n    originY: 0,\n    slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    imageEl: undefined,\n    imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const image = {\n    isTouched: undefined,\n    isMoved: undefined,\n    currentX: undefined,\n    currentY: undefined,\n    minX: undefined,\n    minY: undefined,\n    maxX: undefined,\n    maxY: undefined,\n    width: undefined,\n    height: undefined,\n    startX: undefined,\n    startY: undefined,\n    touchesStart: {},\n    touchesCurrent: {}\n  };\n  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.imageEl;\n        const slideEl = gesture.slideEl;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n      scale = value;\n    }\n  });\n  function getDistanceBetweenTouches() {\n    if (evCache.length < 2) return 1;\n    const x1 = evCache[0].pageX;\n    const y1 = evCache[0].pageY;\n    const x2 = evCache[1].pageX;\n    const y2 = evCache[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  }\n  function getMaxRatio() {\n    const params = swiper.params.zoom;\n    const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n      const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n      return Math.min(imageMaxRatio, maxRatio);\n    }\n    return maxRatio;\n  }\n  function getScaleOrigin() {\n    if (evCache.length < 2) return {\n      x: null,\n      y: null\n    };\n    const box = gesture.imageEl.getBoundingClientRect();\n    return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n  }\n  function getSlideSelector() {\n    return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  }\n  function eventWithinSlide(e) {\n    const slideSelector = getSlideSelector();\n    if (e.target.matches(slideSelector)) return true;\n    if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n  function eventWithinZoomContainer(e) {\n    const selector = `.${swiper.params.zoom.containerClass}`;\n    if (e.target.matches(selector)) return true;\n    if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n\n  // Events\n  function onGestureStart(e) {\n    if (e.pointerType === 'mouse') {\n      evCache.splice(0, evCache.length);\n    }\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    evCache.push(e);\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureTouched = true;\n    gesture.scaleStart = getDistanceBetweenTouches();\n    if (!gesture.slideEl) {\n      gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n      if (!gesture.imageWrapEl) {\n        gesture.imageEl = undefined;\n        return;\n      }\n      gesture.maxRatio = getMaxRatio();\n    }\n    if (gesture.imageEl) {\n      const [originX, originY] = getScaleOrigin();\n      gesture.originX = originX;\n      gesture.originY = originY;\n      gesture.imageEl.style.transitionDuration = '0ms';\n    }\n    isScaling = true;\n  }\n  function onGestureChange(e) {\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache[pointerIndex] = e;\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureMoved = true;\n    gesture.scaleMove = getDistanceBetweenTouches();\n    if (!gesture.imageEl) {\n      return;\n    }\n    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function onGestureEnd(e) {\n    if (!eventWithinSlide(e)) return;\n    if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n    if (!fakeGestureTouched || !fakeGestureMoved) {\n      return;\n    }\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    if (!gesture.imageEl) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale > 1 && gesture.slideEl) {\n      gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    } else if (zoom.scale <= 1 && gesture.slideEl) {\n      gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    }\n    if (zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n      gesture.slideEl = undefined;\n    }\n  }\n  let allowTouchMoveTimeout;\n  function allowTouchMove() {\n    swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n  }\n  function preventTouchMove() {\n    clearTimeout(allowTouchMoveTimeout);\n    swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n    allowTouchMoveTimeout = setTimeout(() => {\n      allowTouchMove();\n    });\n  }\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.imageEl) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    const event = evCache.length > 0 ? evCache[0] : e;\n    image.touchesStart.x = event.pageX;\n    image.touchesStart.y = event.pageY;\n  }\n  function onTouchMove(e) {\n    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n      return;\n    }\n    const zoom = swiper.zoom;\n    if (!gesture.imageEl) {\n      return;\n    }\n    if (!image.isTouched || !gesture.slideEl) {\n      return;\n    }\n    if (!image.isMoved) {\n      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n      image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n      image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n      gesture.slideWidth = gesture.slideEl.offsetWidth;\n      gesture.slideHeight = gesture.slideEl.offsetHeight;\n      gesture.imageWrapEl.style.transitionDuration = '0ms';\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n    if (touchesDiff > 5) {\n      swiper.allowClick = false;\n    }\n    if (!image.isMoved && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        allowTouchMove();\n        return;\n      }\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        allowTouchMove();\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n    preventTouchMove();\n    image.isMoved = true;\n    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n    const {\n      originX,\n      originY\n    } = gesture;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    if (!gesture.imageEl) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n    gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n      if (gesture.imageEl) {\n        gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n      }\n      if (gesture.imageWrapEl) {\n        gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n      }\n      gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.slideEl = undefined;\n      gesture.imageEl = undefined;\n      gesture.imageWrapEl = undefined;\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n  }\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (e && e.target) {\n        gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      }\n      if (!gesture.slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n        } else {\n          gesture.slideEl = swiper.slides[swiper.activeIndex];\n        }\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n    gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.pageX;\n      touchY = e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n    const forceZoomRatio = typeof e === 'number' ? e : null;\n    if (currentScale === 1 && forceZoomRatio) {\n      touchX = undefined;\n      touchY = undefined;\n    }\n    const maxRatio = getMaxRatio();\n    zoom.scale = forceZoomRatio || maxRatio;\n    currentScale = forceZoomRatio || maxRatio;\n    if (e && !(currentScale === 1 && forceZoomRatio)) {\n      slideWidth = gesture.slideEl.offsetWidth;\n      slideHeight = gesture.slideEl.offsetHeight;\n      offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n      offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n      imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    if (forceZoomRatio && zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n      } else {\n        gesture.slideEl = swiper.slides[swiper.activeIndex];\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n    zoom.scale = 1;\n    currentScale = 1;\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n    gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    gesture.slideEl = undefined;\n    gesture.originX = 0;\n    gesture.originY = 0;\n  }\n\n  // Toggle Zoom\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n  function getListeners() {\n    const passiveListener = swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = swiper.params.passiveListeners ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  // Attach/Detach Events\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd();\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n    }\n  });\n\n  swiper.controller = {\n    control: undefined\n  };\n  function LinearSpline(x, y) {\n    const binarySearch = function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }();\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n    };\n    return this;\n  }\n  function getInterpolateFunction(c) {\n    swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n  }\n  function setTranslate(_t, byController) {\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n    function setControlledTranslate(c) {\n      if (c.destroyed) return;\n\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n          multiplier = 1;\n        }\n        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n      }\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  }\n  function setTransition(duration, byController) {\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      if (c.destroyed) return;\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        elementTransitionEnd(c.wrapperEl, () => {\n          if (!controlled) return;\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  }\n  function removeSpline() {\n    if (!swiper.controller.control) return;\n    if (swiper.controller.spline) {\n      swiper.controller.spline = undefined;\n      delete swiper.controller.spline;\n    }\n  }\n  on('beforeInit', () => {\n    if (typeof window !== 'undefined' && (\n    // eslint-disable-line\n    typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n      const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n      controlElements.forEach(controlElement => {\n        if (!swiper.controller.control) swiper.controller.control = [];\n        if (controlElement && controlElement.swiper) {\n          swiper.controller.control.push(controlElement.swiper);\n        } else if (controlElement) {\n          const eventName = `${swiper.params.eventsPrefix}init`;\n          const onControllerSwiper = e => {\n            swiper.controller.control.push(e.detail[0]);\n            swiper.update();\n            controlElement.removeEventListener(eventName, onControllerSwiper);\n          };\n          controlElement.addEventListener(eventName, onControllerSwiper);\n        }\n      });\n      return;\n    }\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group',\n      id: null,\n      scrollOnFocus: true\n    }\n  });\n  swiper.a11y = {\n    clicked: false\n  };\n  let liveRegion = null;\n  let preventFocusHandler;\n  let focusTargetSlideEl;\n  let visibilityChangedTimestamp = new Date().getTime();\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.innerHTML = '';\n    notification.innerHTML = message;\n  }\n  function getRandomNumber(size) {\n    if (size === void 0) {\n      size = 16;\n    }\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  }\n  function makeElFocusable(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('tabIndex', '0');\n    });\n  }\n  function makeElNotFocusable(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('tabIndex', '-1');\n    });\n  }\n  function addElRole(el, role) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('role', role);\n    });\n  }\n  function addElRoleDescription(el, description) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-roledescription', description);\n    });\n  }\n  function addElControls(el, controls) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-controls', controls);\n    });\n  }\n  function addElLabel(el, label) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-label', label);\n    });\n  }\n  function addElId(el, id) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('id', id);\n    });\n  }\n  function addElLive(el, live) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-live', live);\n    });\n  }\n  function disableEl(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-disabled', true);\n    });\n  }\n  function enableEl(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-disabled', false);\n    });\n  }\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const targetEl = e.target;\n    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n      if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n    }\n    if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n      const prevEls = makeElementsArray(swiper.navigation.prevEl);\n      const nextEls = makeElementsArray(swiper.navigation.nextEl);\n      if (nextEls.includes(targetEl)) {\n        if (!(swiper.isEnd && !swiper.params.loop)) {\n          swiper.slideNext();\n        }\n        if (swiper.isEnd) {\n          notify(params.lastSlideMessage);\n        } else {\n          notify(params.nextSlideMessage);\n        }\n      }\n      if (prevEls.includes(targetEl)) {\n        if (!(swiper.isBeginning && !swiper.params.loop)) {\n          swiper.slidePrev();\n        }\n        if (swiper.isBeginning) {\n          notify(params.firstSlideMessage);\n        } else {\n          notify(params.prevSlideMessage);\n        }\n      }\n    }\n    if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n      targetEl.click();\n    }\n  }\n  function updateNavigation() {\n    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (prevEl) {\n      if (swiper.isBeginning) {\n        disableEl(prevEl);\n        makeElNotFocusable(prevEl);\n      } else {\n        enableEl(prevEl);\n        makeElFocusable(prevEl);\n      }\n    }\n    if (nextEl) {\n      if (swiper.isEnd) {\n        disableEl(nextEl);\n        makeElNotFocusable(nextEl);\n      } else {\n        enableEl(nextEl);\n        makeElFocusable(nextEl);\n      }\n    }\n  }\n  function hasPagination() {\n    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n  function hasClickablePagination() {\n    return hasPagination() && swiper.params.pagination.clickable;\n  }\n  function updatePagination() {\n    const params = swiper.params.a11y;\n    if (!hasPagination()) return;\n    swiper.pagination.bullets.forEach(bulletEl => {\n      if (swiper.params.pagination.clickable) {\n        makeElFocusable(bulletEl);\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole(bulletEl, 'button');\n          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n        }\n      }\n      if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n        bulletEl.setAttribute('aria-current', 'true');\n      } else {\n        bulletEl.removeAttribute('aria-current');\n      }\n    });\n  }\n  const initNavEl = (el, wrapperId, message) => {\n    makeElFocusable(el);\n    if (el.tagName !== 'BUTTON') {\n      addElRole(el, 'button');\n      el.addEventListener('keydown', onEnterOrSpaceKey);\n    }\n    addElLabel(el, message);\n    addElControls(el, wrapperId);\n  };\n  const handlePointerDown = e => {\n    if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n      preventFocusHandler = true;\n    }\n    swiper.a11y.clicked = true;\n  };\n  const handlePointerUp = () => {\n    preventFocusHandler = false;\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        if (!swiper.destroyed) {\n          swiper.a11y.clicked = false;\n        }\n      });\n    });\n  };\n  const onVisibilityChange = e => {\n    visibilityChangedTimestamp = new Date().getTime();\n  };\n  const handleFocus = e => {\n    if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n    if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n    const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n    if (!slideEl || !swiper.slides.includes(slideEl)) return;\n    focusTargetSlideEl = slideEl;\n    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n    if (isActive || isVisible) return;\n    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n    if (swiper.isHorizontal()) {\n      swiper.el.scrollLeft = 0;\n    } else {\n      swiper.el.scrollTop = 0;\n    }\n    requestAnimationFrame(() => {\n      if (preventFocusHandler) return;\n      if (swiper.params.loop) {\n        swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n      } else {\n        swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n      }\n      preventFocusHandler = false;\n    });\n  };\n  const initSlides = () => {\n    const params = swiper.params.a11y;\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n    }\n    if (params.slideRole) {\n      addElRole(swiper.slides, params.slideRole);\n    }\n    const slidesLength = swiper.slides.length;\n    if (params.slideLabelMessage) {\n      swiper.slides.forEach((slideEl, index) => {\n        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n        const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n        addElLabel(slideEl, ariaLabelMessage);\n      });\n    }\n  };\n  const init = () => {\n    const params = swiper.params.a11y;\n    swiper.el.append(liveRegion);\n\n    // Container\n    const containerEl = swiper.el;\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n    }\n    if (params.containerMessage) {\n      addElLabel(containerEl, params.containerMessage);\n    }\n\n    // Wrapper\n    const wrapperEl = swiper.wrapperEl;\n    const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n    addElId(wrapperEl, wrapperId);\n    addElLive(wrapperEl, live);\n\n    // Slide\n    initSlides();\n\n    // Navigation\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = makeElementsArray(swiper.pagination.el);\n      paginationEl.forEach(el => {\n        el.addEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n\n    // Tab focus\n    const document = getDocument();\n    document.addEventListener('visibilitychange', onVisibilityChange);\n    swiper.el.addEventListener('focus', handleFocus, true);\n    swiper.el.addEventListener('focus', handleFocus, true);\n    swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n    swiper.el.addEventListener('pointerup', handlePointerUp, true);\n  };\n  function destroy() {\n    if (liveRegion) liveRegion.remove();\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = makeElementsArray(swiper.pagination.el);\n      paginationEl.forEach(el => {\n        el.removeEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n    // Tab focus\n    if (swiper.el && typeof swiper.el !== 'string') {\n      swiper.el.removeEventListener('focus', handleFocus, true);\n      swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n      swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n    }\n  }\n  on('beforeInit', () => {\n    liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n    liveRegion.setAttribute('aria-live', 'assertive');\n    liveRegion.setAttribute('aria-atomic', 'true');\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n  });\n  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n    if (!swiper.params.a11y.enabled) return;\n    initSlides();\n  });\n  on('fromEdge toEdge afterInit lock unlock', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides',\n      keepQuery: false\n    }\n  });\n  let initialized = false;\n  let paths = {};\n  const slugify = text => {\n    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n  };\n  const getPathValues = urlOverride => {\n    const window = getWindow();\n    let location;\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return {\n      key,\n      value\n    };\n  };\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !swiper.params.history.enabled) return;\n    let location;\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n    const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n    let value = slugify(slide.getAttribute('data-history'));\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key ? `${key}/` : ''}${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key ? `${key}/` : ''}${value}`;\n    }\n    if (swiper.params.history.keepQuery) {\n      value += location.search;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides[i];\n        const slideHistory = slugify(slide.getAttribute('data-history'));\n        if (slideHistory === value) {\n          const index = swiper.getSlideIndex(slide);\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  };\n  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, paths.value, false);\n  };\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) {\n      if (!swiper.params.history.replaceState) {\n        window.addEventListener('popstate', setHistoryPopState);\n      }\n      return;\n    }\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n  const destroy = () => {\n    const window = getWindow();\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    on\n  } = _ref;\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n      getSlideIndex(_s, hash) {\n        if (swiper.virtual && swiper.params.virtual.enabled) {\n          const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n          if (!slideWithHash) return 0;\n          const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n          return index;\n        }\n        return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n      }\n    }\n  });\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n      if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n      swiper.slideTo(newIndex);\n    }\n  };\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n      emit('hashSet');\n    } else {\n      document.location.hash = activeSlideHash || '';\n      emit('hashSet');\n    }\n  };\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n      swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      window.addEventListener('hashchange', onHashChange);\n    }\n  };\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      window.removeEventListener('hashchange', onHashChange);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit,\n    params\n  } = _ref;\n  swiper.autoplay = {\n    running: false,\n    paused: false,\n    timeLeft: 0\n  };\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: false,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n  let timeout;\n  let raf;\n  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayTimeLeft;\n  let autoplayStartTime = new Date().getTime();\n  let wasPaused;\n  let isTouched;\n  let pausedByTouch;\n  let touchStartTimeout;\n  let slideChanged;\n  let pausedByInteraction;\n  let pausedByPointerEnter;\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n    if (e.target !== swiper.wrapperEl) return;\n    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n    if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n      return;\n    }\n    resume();\n  }\n  const calcTimeLeft = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) {\n      wasPaused = true;\n    } else if (wasPaused) {\n      autoplayDelayCurrent = autoplayTimeLeft;\n      wasPaused = false;\n    }\n    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n    swiper.autoplay.timeLeft = timeLeft;\n    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n    raf = requestAnimationFrame(() => {\n      calcTimeLeft();\n    });\n  };\n  const getSlideDelay = () => {\n    let activeSlideEl;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n    } else {\n      activeSlideEl = swiper.slides[swiper.activeIndex];\n    }\n    if (!activeSlideEl) return undefined;\n    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n    return currentSlideDelay;\n  };\n  const run = delayForce => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    cancelAnimationFrame(raf);\n    calcTimeLeft();\n    let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n    autoplayDelayTotal = swiper.params.autoplay.delay;\n    autoplayDelayCurrent = swiper.params.autoplay.delay;\n    const currentSlideDelay = getSlideDelay();\n    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n      delay = currentSlideDelay;\n      autoplayDelayTotal = currentSlideDelay;\n      autoplayDelayCurrent = currentSlideDelay;\n    }\n    autoplayTimeLeft = delay;\n    const speed = swiper.params.speed;\n    const proceed = () => {\n      if (!swiper || swiper.destroyed) return;\n      if (swiper.params.autoplay.reverseDirection) {\n        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n          swiper.slidePrev(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n          emit('autoplay');\n        }\n      } else {\n        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n          swiper.slideNext(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(0, speed, true, true);\n          emit('autoplay');\n        }\n      }\n      if (swiper.params.cssMode) {\n        autoplayStartTime = new Date().getTime();\n        requestAnimationFrame(() => {\n          run();\n        });\n      }\n    };\n    if (delay > 0) {\n      clearTimeout(timeout);\n      timeout = setTimeout(() => {\n        proceed();\n      }, delay);\n    } else {\n      requestAnimationFrame(() => {\n        proceed();\n      });\n    }\n\n    // eslint-disable-next-line\n    return delay;\n  };\n  const start = () => {\n    autoplayStartTime = new Date().getTime();\n    swiper.autoplay.running = true;\n    run();\n    emit('autoplayStart');\n  };\n  const stop = () => {\n    swiper.autoplay.running = false;\n    clearTimeout(timeout);\n    cancelAnimationFrame(raf);\n    emit('autoplayStop');\n  };\n  const pause = (internal, reset) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    clearTimeout(timeout);\n    if (!internal) {\n      pausedByInteraction = true;\n    }\n    const proceed = () => {\n      emit('autoplayPause');\n      if (swiper.params.autoplay.waitForTransition) {\n        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n      } else {\n        resume();\n      }\n    };\n    swiper.autoplay.paused = true;\n    if (reset) {\n      if (slideChanged) {\n        autoplayTimeLeft = swiper.params.autoplay.delay;\n      }\n      slideChanged = false;\n      proceed();\n      return;\n    }\n    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n    proceed();\n  };\n  const resume = () => {\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n    autoplayStartTime = new Date().getTime();\n    if (pausedByInteraction) {\n      pausedByInteraction = false;\n      run(autoplayTimeLeft);\n    } else {\n      run();\n    }\n    swiper.autoplay.paused = false;\n    emit('autoplayResume');\n  };\n  const onVisibilityChange = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    const document = getDocument();\n    if (document.visibilityState === 'hidden') {\n      pausedByInteraction = true;\n      pause(true);\n    }\n    if (document.visibilityState === 'visible') {\n      resume();\n    }\n  };\n  const onPointerEnter = e => {\n    if (e.pointerType !== 'mouse') return;\n    pausedByInteraction = true;\n    pausedByPointerEnter = true;\n    if (swiper.animating || swiper.autoplay.paused) return;\n    pause(true);\n  };\n  const onPointerLeave = e => {\n    if (e.pointerType !== 'mouse') return;\n    pausedByPointerEnter = false;\n    if (swiper.autoplay.paused) {\n      resume();\n    }\n  };\n  const attachMouseEvents = () => {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.el.addEventListener('pointerenter', onPointerEnter);\n      swiper.el.addEventListener('pointerleave', onPointerLeave);\n    }\n  };\n  const detachMouseEvents = () => {\n    if (swiper.el && typeof swiper.el !== 'string') {\n      swiper.el.removeEventListener('pointerenter', onPointerEnter);\n      swiper.el.removeEventListener('pointerleave', onPointerLeave);\n    }\n  };\n  const attachDocumentEvents = () => {\n    const document = getDocument();\n    document.addEventListener('visibilitychange', onVisibilityChange);\n  };\n  const detachDocumentEvents = () => {\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  };\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      attachMouseEvents();\n      attachDocumentEvents();\n      start();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n    detachDocumentEvents();\n    if (swiper.autoplay.running) {\n      stop();\n    }\n  });\n  on('_freeModeStaticRelease', () => {\n    if (pausedByTouch || pausedByInteraction) {\n      resume();\n    }\n  });\n  on('_freeModeNoMomentumRelease', () => {\n    if (!swiper.params.autoplay.disableOnInteraction) {\n      pause(true, true);\n    } else {\n      stop();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (internal || !swiper.params.autoplay.disableOnInteraction) {\n      pause(true, true);\n    } else {\n      stop();\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n      return;\n    }\n    isTouched = true;\n    pausedByTouch = false;\n    pausedByInteraction = false;\n    touchStartTimeout = setTimeout(() => {\n      pausedByInteraction = true;\n      pausedByTouch = true;\n      pause(true);\n    }, 200);\n  });\n  on('touchEnd', () => {\n    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n    clearTimeout(touchStartTimeout);\n    clearTimeout(timeout);\n    if (swiper.params.autoplay.disableOnInteraction) {\n      pausedByTouch = false;\n      isTouched = false;\n      return;\n    }\n    if (pausedByTouch && swiper.params.cssMode) resume();\n    pausedByTouch = false;\n    isTouched = false;\n  });\n  on('slideChange', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    slideChanged = true;\n  });\n  Object.assign(swiper.autoplay, {\n    start,\n    stop,\n    pause,\n    resume\n  });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-thumbs'\n    }\n  });\n  let initialized = false;\n  let swiperCreated = false;\n  swiper.thumbs = {\n    swiper: null\n  };\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      swiper.slideToLoop(slideToIndex);\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  }\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper.update();\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n    swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    return true;\n  }\n  function update(initial) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n    thumbsToActivate = Math.floor(thumbsToActivate);\n    thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n          slideEl.classList.add(thumbActiveClass);\n        });\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        if (thumbsSwiper.slides[swiper.realIndex + i]) {\n          thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n        }\n      }\n    }\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      const currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n        newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n  }\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n      const document = getDocument();\n      const getThumbsElementAndInit = () => {\n        const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n        if (thumbsElement && thumbsElement.swiper) {\n          thumbs.swiper = thumbsElement.swiper;\n          init();\n          update(true);\n        } else if (thumbsElement) {\n          const eventName = `${swiper.params.eventsPrefix}init`;\n          const onThumbsSwiper = e => {\n            thumbs.swiper = e.detail[0];\n            thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n            init();\n            update(true);\n            thumbs.swiper.update();\n            swiper.update();\n          };\n          thumbsElement.addEventListener(eventName, onThumbsSwiper);\n        }\n        return thumbsElement;\n      };\n      const watchForThumbsToAppear = () => {\n        if (swiper.destroyed) return;\n        const thumbsElement = getThumbsElementAndInit();\n        if (!thumbsElement) {\n          requestAnimationFrame(watchForThumbsToAppear);\n        }\n      };\n      requestAnimationFrame(watchForThumbsToAppear);\n    } else {\n      init();\n      update(true);\n    }\n  });\n  on('slideChange update resize observerUpdate', () => {\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    if (swiperCreated) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    once\n  } = _ref;\n  extendParams({\n    freeMode: {\n      enabled: false,\n      momentum: true,\n      momentumRatio: 1,\n      momentumBounce: true,\n      momentumBounceRatio: 1,\n      momentumVelocityRatio: 1,\n      sticky: false,\n      minimumVelocity: 0.02\n    }\n  });\n  function onTouchStart() {\n    if (swiper.params.cssMode) return;\n    const translate = swiper.getTranslate();\n    swiper.setTranslate(translate);\n    swiper.setTransition(0);\n    swiper.touchEventsData.velocities.length = 0;\n    swiper.freeMode.onTouchEnd({\n      currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n    });\n  }\n  function onTouchMove() {\n    if (swiper.params.cssMode) return;\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper;\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n  function onTouchEnd(_ref2) {\n    let {\n      currentPos\n    } = _ref2;\n    if (swiper.params.cssMode) return;\n    const {\n      params,\n      wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper;\n    // Time diff\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n    if (params.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeMode.sticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeMode.sticky) {\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n      if (params.freeMode.momentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        elementTransitionEnd(wrapperEl, () => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            elementTransitionEnd(wrapperEl, () => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          elementTransitionEnd(wrapperEl, () => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      emit('_freeModeStaticRelease');\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchStart,\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n  let wasMultiRow;\n  const getSpaceBetween = () => {\n    let spaceBetween = swiper.params.spaceBetween;\n    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n    } else if (typeof spaceBetween === 'string') {\n      spaceBetween = parseFloat(spaceBetween);\n    }\n    return spaceBetween;\n  };\n  const initSlides = slides => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n    numFullColumns = Math.floor(slidesLength / rows);\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n    slidesPerRow = slidesNumberEvenToRows / rows;\n  };\n  const unsetSlides = () => {\n    if (swiper.slides) {\n      swiper.slides.forEach(slide => {\n        if (slide.swiperSlideGridSet) {\n          slide.style.height = '';\n          slide.style[swiper.getDirectionLabel('margin-top')] = '';\n        }\n      });\n    }\n  };\n  const updateSlide = (i, slide, slides) => {\n    const {\n      slidesPerGroup\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n    // Set slides order\n    let newSlideOrderIndex;\n    let column;\n    let row;\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.style.order = newSlideOrderIndex;\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n        if (row >= rows) {\n          row = 0;\n          column += 1;\n        }\n      }\n    } else {\n      row = Math.floor(i / slidesPerRow);\n      column = i - row * slidesPerRow;\n    }\n    slide.row = row;\n    slide.column = column;\n    slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n    slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n    slide.swiperSlideGridSet = true;\n  };\n  const updateWrapperSize = (slideSize, snapGrid) => {\n    const {\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    if (!swiper.params.cssMode) {\n      swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n    }\n    if (centeredSlides) {\n      const newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid.splice(0, snapGrid.length);\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n  const onInit = () => {\n    wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n  };\n  const onUpdate = () => {\n    const {\n      params,\n      el\n    } = swiper;\n    const isMultiRow = params.grid && params.grid.rows > 1;\n    if (wasMultiRow && !isMultiRow) {\n      el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n      numFullColumns = 1;\n      swiper.emitContainerClasses();\n    } else if (!wasMultiRow && isMultiRow) {\n      el.classList.add(`${params.containerModifierClass}grid`);\n      if (params.grid.fill === 'column') {\n        el.classList.add(`${params.containerModifierClass}grid-column`);\n      }\n      swiper.emitContainerClasses();\n    }\n    wasMultiRow = isMultiRow;\n  };\n  on('init', onInit);\n  on('update', onUpdate);\n  swiper.grid = {\n    initSlides,\n    unsetSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}\n\nexport { Grid as default };\n","function appendSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  const appendElement = slideEl => {\n    if (typeof slideEl === 'string') {\n      const tempDOM = document.createElement('div');\n      tempDOM.innerHTML = slideEl;\n      slidesEl.append(tempDOM.children[0]);\n      tempDOM.innerHTML = '';\n    } else {\n      slidesEl.append(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) appendElement(slides[i]);\n    }\n  } else {\n    appendElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n}\n\nfunction prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  const prependElement = slideEl => {\n    if (typeof slideEl === 'string') {\n      const tempDOM = document.createElement('div');\n      tempDOM.innerHTML = slideEl;\n      slidesEl.prepend(tempDOM.children[0]);\n      tempDOM.innerHTML = '';\n    } else {\n      slidesEl.prepend(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) prependElement(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    prependElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.recalcSlides();\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides[i];\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) slidesEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    slidesEl.append(slides);\n  }\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    slidesEl.append(slidesBuffer[i]);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeSlide(slidesIndexes) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeAllSlides() {\n  const swiper = this;\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n  let {\n    swiper\n  } = _ref;\n  Object.assign(swiper, {\n    appendSlide: appendSlide.bind(swiper),\n    prependSlide: prependSlide.bind(swiper),\n    addSlide: addSlide.bind(swiper),\n    removeSlide: removeSlide.bind(swiper),\n    removeAllSlides: removeAllSlides.bind(swiper)\n  });\n}\n\nexport { Manipulation as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    fadeEffect: {\n      crossFade: false\n    }\n  });\n  const setTranslate = () => {\n    const {\n      slides\n    } = swiper;\n    const params = swiper.params.fadeEffect;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = swiper.slides[i];\n      const offset = slideEl.swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.opacity = slideOpacity;\n      targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements,\n      allSlides: true\n    });\n  };\n  effectInit({\n    effect: 'fade',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectFade as default };\n","function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective,\n    recreateShadows,\n    getEffectParams\n  } = params;\n  on('beforeInit', () => {\n    if (swiper.params.effect !== effect) return;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n    if (perspective && perspective()) {\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n    }\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n    Object.assign(swiper.params, overwriteParamsResult);\n    Object.assign(swiper.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate', () => {\n    if (swiper.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (swiper.params.effect !== effect) return;\n    setTransition(duration);\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.effect !== effect) return;\n    if (recreateShadows) {\n      if (!getEffectParams || !getEffectParams().slideShadows) return;\n      // remove shadows\n      swiper.slides.forEach(slideEl => {\n        slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n      });\n      // create new one\n      recreateShadows();\n    }\n  });\n  let requireUpdateOnVirtual;\n  on('virtualUpdate', () => {\n    if (swiper.params.effect !== effect) return;\n    if (!swiper.slides.length) {\n      requireUpdateOnVirtual = true;\n    }\n    requestAnimationFrame(() => {\n      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n        setTranslate();\n        requireUpdateOnVirtual = false;\n      }\n    });\n  });\n}\n\nexport { effectInit as e };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n  const transformEl = getSlideTransformEl(slideEl);\n  if (transformEl !== slideEl) {\n    transformEl.style.backfaceVisibility = 'hidden';\n    transformEl.style['-webkit-backface-visibility'] = 'hidden';\n  }\n  return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n  let {\n    swiper,\n    duration,\n    transformElements,\n    allSlides\n  } = _ref;\n  const {\n    activeIndex\n  } = swiper;\n  const getSlide = el => {\n    if (!el.parentElement) {\n      // assume shadow root\n      const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n      return slide;\n    }\n    return el.parentElement;\n  };\n  if (swiper.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let transitionEndTarget;\n    if (allSlides) {\n      transitionEndTarget = transformElements;\n    } else {\n      transitionEndTarget = transformElements.filter(transformEl => {\n        const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n        return swiper.getSlideIndex(el) === activeIndex;\n      });\n    }\n    transitionEndTarget.forEach(el => {\n      elementTransitionEnd(el, () => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const evt = new window.CustomEvent('transitionend', {\n          bubbles: true,\n          cancelable: true\n        });\n        swiper.wrapperEl.dispatchEvent(evt);\n      });\n    });\n  }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n  const createSlideShadows = (slideEl, progress, isHorizontal) => {\n    let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n    let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n    if (!shadowBefore) {\n      shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n      slideEl.append(shadowBefore);\n    }\n    if (!shadowAfter) {\n      shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n      slideEl.append(shadowAfter);\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // create new ones\n    const isHorizontal = swiper.isHorizontal();\n    swiper.slides.forEach(slideEl => {\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      createSlideShadows(slideEl, progress, isHorizontal);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\n    } = swiper;\n    const r = getRotateFix(swiper);\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          swiper.wrapperEl.append(cubeShadowEl);\n        }\n        cubeShadowEl.style.height = `${swiperWidth}px`;\n      } else {\n        cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          el.append(cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n      const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n      slideEl.style.transform = transform;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress, isHorizontal);\n      }\n    }\n    wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n    wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n      }\n    }\n    const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n    wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n    wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n  };\n  const setTransition = duration => {\n    const {\n      el,\n      slides\n    } = swiper;\n    slides.forEach(slideEl => {\n      slideEl.style.transitionDuration = `${duration}ms`;\n      slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n        subEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      const shadowEl = el.querySelector('.swiper-cube-shadow');\n      if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n    }\n  };\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.cubeEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true\n    }\n  });\n  const createSlideShadows = (slideEl, progress) => {\n    let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n    let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n    if (!shadowBefore) {\n      shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n    }\n    if (!shadowAfter) {\n      shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // Set shadows\n    swiper.params.flipEffect;\n    swiper.slides.forEach(slideEl => {\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      createSlideShadows(slideEl, progress);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n    const rotateFix = getRotateFix(swiper);\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress);\n      }\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.flipEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectFlip as default };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n  const shadowContainer = getSlideTransformEl(slideEl);\n  let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n  if (!shadowEl) {\n    shadowEl = createElement('div', shadowClass.split(' '));\n    shadowContainer.append(shadowEl);\n  }\n  return shadowEl;\n}\n\nexport { createShadow as c };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true\n    }\n  });\n  const setTranslate = () => {\n    const {\n      width: swiperWidth,\n      height: swiperHeight,\n      slides,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    const r = getRotateFix(swiper);\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const slideEl = slides[i];\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = slideEl.swiperSlideOffset;\n      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = slideTransform;\n      slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n        let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n        if (!shadowBeforeEl) {\n          shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n        }\n        if (!shadowAfterEl) {\n          shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n        }\n        if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n  };\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    creativeEffect: {\n      limitProgress: 1,\n      shadowPerProgress: false,\n      progressMultiplier: 1,\n      perspective: true,\n      prev: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      },\n      next: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      }\n    }\n  });\n  const getTranslateValue = value => {\n    if (typeof value === 'string') return value;\n    return `${value}px`;\n  };\n  const setTranslate = () => {\n    const {\n      slides,\n      wrapperEl,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.creativeEffect;\n    const {\n      progressMultiplier: multiplier\n    } = params;\n    const isCenteredSlides = swiper.params.centeredSlides;\n    const rotateFix = getRotateFix(swiper);\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      }\n      // set translate\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      });\n      // set rotates\n      r.forEach((value, index) => {\n        let val = data.rotate[index] * Math.abs(progress * multiplier);\n        r[index] = val;\n      });\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n      // Set shadows\n      if (custom && data.shadow || !custom) {\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl && data.shadow) {\n          shadowEl = createShadow('creative', slideEl);\n        }\n        if (shadowEl) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n      targetEl.style.opacity = opacityString;\n      if (data.origin) {\n        targetEl.style.transformOrigin = data.origin;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements,\n      allSlides: true\n    });\n  };\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      rotate: true,\n      perSlideRotate: 2,\n      perSlideOffset: 8\n    }\n  });\n  const setTranslate = () => {\n    const {\n      slides,\n      activeIndex,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = slideEl.swiperSlideOffset;\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n      }\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -params.perSlideRotate * progress;\n      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${-25 * subProgress * Math.abs(progress)}%`;\n      }\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n      /* eslint-disable */\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n        scale(${scaleString})\n      `;\n      /* eslint-enable */\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl) {\n          shadowEl = createShadow('cards', slideEl);\n        }\n        if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCards as default };\n"],"names":["$6946bfb4689eabba$var$support","$6946bfb4689eabba$var$deviceCached","$6946bfb4689eabba$var$browser","$768c2f4c151a0363$var$isObject","obj","constructor","Object","$768c2f4c151a0363$var$extend","target","src","keys","forEach","key","length","$768c2f4c151a0363$var$ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","$768c2f4c151a0363$export$39b482c5e57630a8","doc","document","$768c2f4c151a0363$var$ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","$768c2f4c151a0363$export$407448d2b89b1813","win","window","$3e0e2b092da8f124$export$7ccc53e8f1e7dfc5","delay","$3e0e2b092da8f124$export$4368d992c4eafac0","now","$3e0e2b092da8f124$export$882b5998b3b9117c","o","prototype","toString","call","slice","$3e0e2b092da8f124$export$efccba1c4a2ef57b","to","arguments","undefined","noExtend","i","nextSource","HTMLElement","node","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","$3e0e2b092da8f124$export$2408f22a0fab9ae5","el","varName","varValue","setProperty","$3e0e2b092da8f124$export$625550452a3fa3ec","_ref","time","swiper","targetPosition","side","window1","startPosition","translate","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","currentPosition","easeProgress","Math","cos","progress","max","min","PI","scrollTo","overflow","$3e0e2b092da8f124$export$f1e1789686576879","element","selector","HTMLSlotElement","push","assignedElements","matches","$3e0e2b092da8f124$export$3b14a55fb2447963","text","console","warn","err","$3e0e2b092da8f124$export$db3b6bfb95261072","tag","classes","classList","add","Array","isArray","trim","split","c","$3e0e2b092da8f124$export$ffb5f4729a158638","prop","$3e0e2b092da8f124$export$dda1d9f60106f0e9","child","previousSibling","$3e0e2b092da8f124$export$2d1720544b23b823","size","includeMargins","parseFloat","offsetWidth","$6946bfb4689eabba$var$getSupport","$6946bfb4689eabba$var$calcSupport","document1","smoothScroll","documentElement","touch","DocumentTouch","$6946bfb4689eabba$var$getDevice","overrides","$6946bfb4689eabba$var$calcDevice","_temp","support","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","macos","iPadScreens","os","$6946bfb4689eabba$var$toggleSlideClasses$1","slideEl","condition","className","contains","remove","$6946bfb4689eabba$var$toggleSlideClasses","$6946bfb4689eabba$var$processLazyPreloader","imageEl","destroyed","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","$6946bfb4689eabba$var$unlazy","index","slides","removeAttribute","$6946bfb4689eabba$var$preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","preloadColumns","activeColumn","from","map","_","includes","column","slideIndexLastInView","rewind","loop","realIndex","$6946bfb4689eabba$var$transitionEmit","runCallbacks","direction","step","previousIndex","emit","$6946bfb4689eabba$var$preventEdgeSwipe","event","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","$6946bfb4689eabba$var$onTouchStart","e","originalEvent","data","touchEventsData","type","pointerId","targetTouches","touchId","identifier","pageX","touches","enabled","simulateTouch","pointerType","animating","preventInteractionOnTransition","cssMode","loopFix","targetEl","touchEventsTarget","parent","isChild","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","noSwipingSelector","isTargetShadow","noSwiping","$6946bfb4689eabba$var$closestElement","base","__closestFrom","assignedSlot","found","getRootNode","allowClick","swipeHandler","currentX","currentY","pageY","startY","assign","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchStart","$6946bfb4689eabba$var$onTouchMove","targetTouch","loopFixed","rtlTranslate","rtl","changedTouches","t","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","previousX","previousY","diffX","diffY","sqrt","touchAngle","isHorizontal","atan2","abs","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","diff","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","allowSlideNext","allowSlidePrev","startTranslate","getTranslate","setTransition","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","currentTranslate","loopSwapReset","disableParentSwiper","resistanceRatio","centeredSlides","slidesSizesGrid","setTranslate","activeSlideIndex","resistance","followFinger","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","onTouchMove","updateProgress","$6946bfb4689eabba$var$onTouchEnd","currentPos","browser","isSafari","isWebView","slidesGrid","touchEndTime","timeDiff","pathTree","updateClickedSlide","lastClickTime","onTouchEnd","swipeToLast","stopIndex","groupSize","slidesPerGroupSkip","slidesPerGroup","increment","rewindFirstIndex","rewindLastIndex","isBeginning","virtual","isEnd","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","$6946bfb4689eabba$var$onResize","breakpoints","setBreakpoint","snapGrid","isVirtual","updateSlides","isVirtualLoop","slideToLoop","autoplay","running","paused","resizeTimeout","resume","watchOverflow","checkOverflow","$6946bfb4689eabba$var$onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","$6946bfb4689eabba$var$onScroll","previousTranslate","scrollLeft","scrollTop","translatesDiff","$6946bfb4689eabba$var$onLoad","autoHeight","update","$6946bfb4689eabba$var$onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","$6946bfb4689eabba$var$events","method","capture","domMethod","onDocumentTouchStart","passive","onClick","onScroll","updateOnWindowResize","onLoad","$6946bfb4689eabba$var$isGridEnabled","$6946bfb4689eabba$export$4368d992c4eafac0","init","swiperElementNodeName","initialSlide","resizeObserver","createElements","eventsPrefix","url","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","uniqueNavElements","slideToClickedSlide","loopAddBlankSlides","loopAdditionalSlides","loopPreventsSliding","passiveListeners","maxBackfaceHiddenSlides","containerModifierClass","slideBlankClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","$6946bfb4689eabba$var$prototypes","eventsEmitter","on","events","handler","priority","self","eventsListeners","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","splice","eventHandler","context","_len2","_key2","unshift","eventsArray","clientWidth","clientHeight","parseInt","Number","isNaN","slideSize","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","wrongRTL","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","replace","virtualSize","marginLeft","marginRight","marginBottom","marginTop","gridEnabled","initSlides","unsetSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","transform","currentWebKitTransform","webkitTransform","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","originalProgress","multiplier","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","activeSlide","prevSlide","nextSlide","getFilteredSlide","nextEls","nextElementSibling","next","prevEls","previousElementSibling","prev","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","$6946bfb4689eabba$var$getActiveIndexByTranslate","skip","firstSlideInColumn","getAttribute","initialized","pathEl","slideFound","clickedSlide","clickedIndex","axis","matrix","curTransform","transformMatrix","curStyle","$3e0e2b092da8f124$var$getComputedStyle","currentStyle","WebKitCSSMatrix","a","join","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","x","y","translateTo","translateBounds","internal","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transition","transitionDuration","transitionDelay","transitionStart","transitionEnd","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_cssModeVirtualInitialSet","onSlideToWrapperTransitionEnd","newIndex","targetSlideIndex","cols","needLoopFix","slideRealIndex","slideNext","perGroup","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","nextSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","append","recalcSlides","byMousewheel","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","activeColIndex","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","newSlideTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","breakpointOnlyParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","value","substr","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","$6946bfb4689eabba$var$prepareClasses","entries","prefix","resultClasses","item","removeClasses","$6946bfb4689eabba$var$extendedDefaults","$6946bfb4689eabba$export$25ce5a424b770e84","swipers","newParams","$6946bfb4689eabba$var$calcBrowser","needPerspectiveFix","toLowerCase","String","major","minor","num","test","isSafariBrowser","need3dFix","modules","__modules__","allModulesParams","mod","extendParams","moduleParamName","moduleParams","auto","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","extendDefaults","newDefaults","extendedDefaults","defaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","createObserver","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parentElement","disconnect","timeout","lastEventBeforeSnap","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","handle","event1","sX","sY","pX","pY","targetElContainsTarget","rtlFactor","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","returnValue","Alpine","leave","swiperData","initialStep","renderSwiper","addData","title","Swiper","PrimaryHeading","Text","description","Description","imagePath","BackgroundImage","Paths","Link","number","Value","colourHead","Style","colourDesc","ToggleColour","orderByNumber","newSwiper","pagination","clickable"],"version":3,"file":"swiper.js.map"}