PageSourceSearch

https://www.purina.com.au/on/demandware.static/Sites-Purina_AU-Site/-/en_AU/v1790877709467/js/search.js

js purina.com.au collected 2026-10-02 05:25:30 UTC 481,796 bytes, 12,542 lines download raw bytes

1/******/ (function() { // webpackBootstrap
2/******/ 	"use strict";
3/******/ 	var __webpack_modules__ = ({
4
5/***/ "./cartridges/app_purina/cartridge/client/default/js/search/search.js":
6/*!****************************************************************************!*\
7  !*** ./cartridges/app_purina/cartridge/client/default/js/search/search.js ***!
8  \****************************************************************************/
9/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
10
11
12
13var productTile = __webpack_require__(/*! purina_core/productList/productTile */ "./cartridges/app_purina_core/cartridge/client/default/js/productList/productTile.js");
14
15// Store teaser HTML for restoration when navigating back to page 1
16var teaserStore = {};
17
18/**
19 * Update DOM elements with Ajax results
20 *
21 * @param {Object} $results - jQuery DOM element
22 * @param {string} selector - DOM element to look up in the $results
23 * @return {undefined}
24 */
25function updateDom($results, selector) {
26    var $updates = $results.find(selector);
27    $(selector).empty().html($updates.html());
28}
29
30/**
31 * Keep refinement panes expanded/collapsed after Ajax refresh
32 *
33 * @param {Object} $results - jQuery DOM element
34 * @return {undefined}
35 */
36function handleRefinements($results) {
37    $(".refinement.active").each(function () {
38        $(this).removeClass("active");
39        var activeDiv = $results.find("." + $(this)[0].className.replace(/ /g, "."));
40        activeDiv.addClass("active");
41        activeDiv.find("button.title").attr("aria-expanded", "true");
42    });
43
44    updateDom($results, ".refinements");
45
46    $("div.refinements li").each(function() {
47        if ($(this).find("button i").hasClass("fa-check-square")) {
48            var refinementDiv = $(this).closest("div.refinement");
49            refinementDiv.addClass("active");
50            refinementDiv.find("button.title").attr("aria-expanded", "true");
51        }
52    });
53}
54
55/**
56 * Parse Ajax results and updated select DOM elements
57 *
58 * @param {string} response - Ajax response HTML code
59 * @return {undefined}
60 */
61function parseResults(response) {
62    var $results = $(response);
63    var specialHandlers = {
64        ".refinements": handleRefinements
65    };
66
67    // Update DOM elements that do not require special handling
68    [
69        ".grid-header",
70        ".header-bar",
71        ".header.page-title",
72        ".product-grid",
73        ".show-more",
74        ".filter-bar",
75        ".results-count"
76    ].forEach(function (selector) {
77        updateDom($results, selector);
78    });
79
80    Object.keys(specialHandlers).forEach(function (selector) {
81        specialHandlers[selector]($results);
82    });
83}
84
85/**
86 * This function retrieves another page of content to display in the content search grid
87 * @param {JQuery} $element - the jquery element that has the click event attached
88 * @param {JQuery} $target - the jquery element that will receive the response
89 * @return {undefined}
90 */
91function getContent($element, $target) {
92    var showMoreUrl = $element.data("url");
93    $.ajax({
94        url: showMoreUrl,
95        method: "GET",
96        success: function (response) {
97            $target.append(response);
98            // initialize product tile custom js functionality
99            productTile.init();
100        },
101        error: function () {
102        }
103    });
104}
105
106/**
107 * Update sort option URLs from Ajax response
108 *
109 * @param {string} response - Ajax response HTML code
110 * @return {undefined}
111 */
112function updateSortOptions(response) {
113    var $tempDom = $("<div>").append($(response));
114    var sortOptions = $tempDom.find(".grid-footer").data("sort-options").options;
115    sortOptions.forEach(function (option) {
116        $("option." + option.id).val(option.url);
117    });
118}
119
120/**
121 * Capture teaser tile HTML on initial page load
122 * Stores each teaser by its position for later restoration
123 *
124 * @return {undefined}
125 */
126function captureTeasers() {
127    $('.teaser-tile').each(function() {
128        var $teaser = $(this);
129        var position = $teaser.data('teaser-position');
130        
131        if (position) {
132            // Store the entire outer HTML of the teaser region
133            teaserStore[position] = {
134                html: $teaser[0].outerHTML
135            };
136        }
137    });
138}
139
140/**
141 * Restore teaser tiles from stored HTML
142 * Called when navigating back to page 1 via AJAX
143 *
144 * @return {undefined}
145 */
146function restoreTeasers() {
147    $('.teaser-placeholder').each(function() {
148        var $placeholder = $(this);
149        var position = $placeholder.data('teaser-position');
150        
151        if (teaserStore[position]) {
152            // Replace placeholder with the stored teaser HTML
153            $placeholder.replaceWith(teaserStore[position].html);
154        }
155    });
156}
157
158/**
159 * Check if teasers should be shown based on URL parameters
160 * Teasers only show on first page with no sorting or refinements
161 *
162 * @param {string} url - The URL to check
163 * @return {boolean} - True if teasers should be shown
164 */
165function isFirstPage(url) {
166    if (!url) return false;
167    
168    var urlParams = new URLSearchParams(url.split('?')[1] || '');
169    
170    // Check if it's the first page
171    var startParam = urlParams.get('start');
172    var isFirst = !startParam || startParam === '0' || startParam === 0;
173    
174    if (!isFirst) return false;
175    
176    // Check for custom sorting (srule parameter present means sorting is applied)
177    var hasCustomSorting = urlParams.has('srule');
178    
179    // Check for refinements
180    var hasRefinements = urlParams.has('pmin') || 
181                         urlParams.has('pmax') || 
182                         urlParams.has('prefn1') ||
183                         urlParams.has('preferences');
184    
185    // Teasers should only show on first page with no sorting or refinements
186    return isFirst && !hasCustomSorting && !hasRefinements;
187}
188
189/**
190* Sets a session cookie with a specified name, value, and expiration time.
191*
192* @param {string} name - The name of the cookie.
193* @param {string} value - The value to be stored in the cookie.
194* @param {number} hours - The number of hours until the cookie expires.
195*/
196function setRefinementSessionCookie(name, value, hours) {
197    const date = new Date();
198    date.setTime(date.getTime() + (hours * 60 * 60 * 1000));
199    const expires = "expires=" + date.toUTCString();
200    document.cookie = name + "=" + value + ";" + expires + ";path=/";
201}
202
203/**
204* Retrieves the value of a specified cookie from the document's cookies.
205* 
206* @param {string} name - The name of the cookie to retrieve.
207* @returns {string|null} The value of the cookie if found, otherwise null.
208*/
209function getRefinementSessionCookie(name) {
210    const nameEQ = name + "=";
211    const ca = document.cookie.split(";");
212    for (let i = 0; i < ca.length; i++) {
213        let c = ca[i];
214        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
215        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
216    }
217    return null;
218}
219
220/**
221* Applies search filters based on a cookie value and updates the search results via an AJAX request.
222*
223* @param {Object} context - The context in which the filter is applied, typically a DOM element.
224* @param {string} filterCookieValue - The value of the filter to be applied, retrieved from a cookie.
225*/
226function applyFiltersBasedOnCookie(context, filterCookieValue) {
227    $.spinner().start();
228    $(context).trigger("search:filter");
229    setRefinementSessionCookie("filterCookie", filterCookieValue, 2);
230
231    var sampleUrl = $(".refinement").find(".card-body").find("button").attr("data-href");
232    if (sampleUrl) {
233        var preUrlPart = sampleUrl.split("Search-ShowAjax?")[0];
234    }
235    var dataUrl = preUrlPart + "Search-ShowAjax?" + filterCookieValue;
236    $.ajax({
237        url: dataUrl,
238        data: {
239            page: $(".grid-footer").data("page-number"),
240            selectedUrl: dataUrl
241        },
242        method: "GET",
243        success: function (response) {
244            parseResults(response);
245            // initialize product tile custom js functionality
246            productTile.init();
247            $.spinner().stop();
248            $('.search-results-container').css('visibility', 'visible');
249        },
250        error: function () {
251            $.spinner().stop();
252            $('.search-results-container').css('visibility', 'visible');
253        }
254    });
255}
256
257/**
258* Applies selection based on the value of an article tab cookie and a page query value.
259* If the query value from the cookie matches the page query value, it will show or hide
260* the search results container based on the cookie's "value" parameter.
261*
262* @param {string} articleTabCookieValue - The value of the article tab cookie, expected to be a query string.
263* @param {string} pageQueryValue - The current page's query value to compare against the cookie's query value.
264*/
265function applySelectionBasedOnArticleCookie(articleTabCookieValue, pageQueryValue) {
266    const paramsArticleTabCookie = new URLSearchParams(articleTabCookieValue);
267    const articleCookieQueryValue = paramsArticleTabCookie.get("q");
268
269    if (pageQueryValue == articleCookieQueryValue) {
270        const articleCookieShow = paramsArticleTabCookie.get("value");
271        if (articleCookieShow == "show") {
272            $(".content-search").click();
273            $('.search-results-container').css('visibility', 'visible');
274        } else {
275            $('.search-results-container').css('visibility', 'visible');
276        }
277    } else {
278        $('.search-results-container').css('visibility', 'visible');
279    }
280
281}
282
283module.exports = {
284    filter: function () {
285        // Display refinements bar when Menu icon clicked
286        $(".search-results-container").on("click", "button.filter-results", function () {
287            $(".refinement-bar, .modal-background").show();
288            $(".refinement-bar").siblings().attr("aria-hidden", true);
289            $(".refinement-bar").closest(".row").siblings().attr("aria-hidden", true);
290            $(".refinement-bar").closest(".tab-pane.active").siblings().attr("aria-hidden", true);
291            $(".refinement-bar").closest(".search-results-container.search-results").siblings().attr("aria-hidden", true);
292            $(".refinement-bar .close").focus();
293        });
294    },
295
296    closeRefinements: function () {
297        // Refinements close button
298        $(".search-results-container").on("click", ".refinement-bar button.close, .modal-background", function () {
299            $(".refinement-bar, .modal-background").hide();
300            $(".refinement-bar").siblings().attr("aria-hidden", false);
301            $(".refinement-bar").closest(".row").siblings().attr("aria-hidden", false);
302            $(".refinement-bar").closest(".tab-pane.active").siblings().attr("aria-hidden", false);
303            $(".refinement-bar").closest(".search-results-container.search-results").siblings().attr("aria-hidden", false);
304            $(".btn.filter-results").focus();
305        });
306    },
307
308    resize: function () {
309        // Close refinement bar and hide modal background if user resizes browser
310        $(window).resize(function () {
311            $(".refinement-bar, .modal-background").hide();
312            $(".refinement-bar").siblings().attr("aria-hidden", false);
313            $(".refinement-bar").closest(".row").siblings().attr("aria-hidden", false);
314            $(".refinement-bar").closest(".tab-pane.active").siblings().attr("aria-hidden", false);
315            $(".refinement-bar").closest(".search-results-container.search-results").siblings().attr("aria-hidden", false);
316        });
317    },
318
319    sort: function () {
320        // Handle sort order menu selection
321        $(".search-results-container").on("change", "[name=sort-order]", function (e) {
322            e.preventDefault();
323
324            $.spinner().start();
325            $(this).trigger("search:sort", this.value);
326            $.ajax({
327                url: this.value,
328                data: { selectedUrl: this.value },
329                method: "GET",
330                success: function (response) {
331                    $(".product-grid").empty().html(response);
332                    // initialize product tile custom js functionality
333                    productTile.init();
334                    $.spinner().stop();
335                },
336                error: function () {
337                    $.spinner().stop();
338                }
339            });
340        });
341    },
342
343    showMore: function () {
344        // Show more products
345        $(".search-results-container").on("click", ".show-more button", function (e) {
346            e.stopPropagation();
347            var showMoreUrl = $(this).data("url");
348            e.preventDefault();
349
350            $.spinner().start();
351            $(this).trigger("search:showMore", e);
352            $.ajax({
353                url: showMoreUrl,
354                data: { selectedUrl: showMoreUrl },
355                method: "GET",
356                success: function (response) {
357                    $(".grid-footer").replaceWith(response);
358                    updateSortOptions(response);
359                    // initialize product tile custom js functionality
360                    productTile.init();
361                    $.spinner().stop();
362                },
363                error: function () {
364                    $.spinner().stop();
365                }
366            });
367        });
368    },
369
370    applyFilter: function () {
371        // Handle refinement value selection and reset click
372        $(".search-results-container").on(
373            "click",
374            ".refinements li button, .refinement-bar button.reset, .filter-value button, .swatch-filter button",
375            function (e) {
376                e.preventDefault();
377                e.stopPropagation();
378
379                $.spinner().start();
380                $(this).trigger("search:filter", e);
381                var attributeId = "#" + $(this).find("span").last().attr("id");
382                if ($(this).data("href")) {
383                    var filterData = $(this).data("href").split("Search-ShowAjax?")[1];
384                    setRefinementSessionCookie("filterCookie", filterData, 2);
385                }
386                $.ajax({
387                    url: $(this).data("href"),
388                    data: {
389                        page: $(".grid-footer").data("page-number"),
390                        selectedUrl: $(this).data("href")
391                    },
392                    method: "GET",
393                    success: function (response) {
394                        parseResults(response);
395                        // initialize product tile custom js functionality
396                        productTile.init();
397                        $.spinner().stop();
398                        $(attributeId).parent("button").focus();
399                    },
400                    error: function () {
401                        $.spinner().stop();
402                        $(attributeId).parent("button").focus();
403                    }
404                });
405            });
406    },
407
408    showContentTab: function () {
409        // Display content results from the search
410        $(".search-results-container").on("click", ".content-search", function () {
411            if ($("#content-search-results").html() === "") {
412                getContent($(this), $("#content-search-results"));
413            }
414
415            const element = document.querySelector(".page");
416            const queryString = element.getAttribute("data-querystring");
417            const paramsQueryString = new URLSearchParams(queryString);
418            const pageQuery = paramsQueryString.get("q");
419            
420            setRefinementSessionCookie("articleTab", "q=" + pageQuery +"&value=show", 2);
421        });
422
423        // Display the next page of content results from the search
424        $(".search-results-container").on("click", ".show-more-content button", function () {
425            getContent($(this), $("#content-search-results"));
426            $(".show-more-content").remove();
427        });
428    },
429
430    showProductPagination: function () {
431        $(document).on("click", ".js-pagination-button", function (e) {
432            e.preventDefault();
433            var $target = $(e.currentTarget);
434            var url = $target.data("url");
435
436            // do nothing if the url is not found
437            if (!url) {
438                return;
439            }
440
441            $.spinner().start();
442            $(this).trigger("search:showMore", e);
443            $.ajax({
444                url: url,
445                method: "GET",
446                success: function (response) {
447                    $(".product-grid").empty().html(response);
448                    updateSortOptions(response);
449                    
450                    // Restore teasers if navigating back to page 1
451                    if (isFirstPage(url)) {
452                        setTimeout(function() {
453                            restoreTeasers();
454                        }, 50);
455                    }
456                    
457                    // initialize product tile custom js functionality
458                    //productTile.init();
459                    $.spinner().stop();
460                },
461                error: function () {
462                    $.spinner().stop();
463                }
464            });
465        });
466    },
467
468    /**
469    * Applies filter settings from the session cookie to the current search results page.
470    * If the filter settings in the session cookie match the current page's category ID (cgid),
471    * it triggers a search filter event, updates the session cookie, and makes an AJAX request
472    * to fetch and display the filtered search results.
473    *
474    * @function
475    * @returns {void}
476    */
477    applyFilterFromSession: function () {
478        const element = document.querySelector(".page");
479        const queryString = element.getAttribute("data-querystring");
480        const paramsQueryString = new URLSearchParams(queryString);
481        const pageCgid = paramsQueryString.get("cgid");
482        const pageQueryValue = paramsQueryString.get("q");
483        var filterCookieValue = getRefinementSessionCookie("filterCookie");
484        var articleTabCookieValue = getRefinementSessionCookie("articleTab");
485
486        if (pageCgid != null) {
487            // category page
488            if (filterCookieValue != null) {
489                const paramsFilterCookie = new URLSearchParams(filterCookieValue);
490                const filterCookieCgid = paramsFilterCookie.get("cgid");
491
492                if (pageCgid == filterCookieCgid) {
493                    applyFiltersBasedOnCookie(this, filterCookieValue);
494                } else {
495                    $('.search-results-container').css('visibility', 'visible');
496                }
497            } else {
498                $('.search-results-container').css('visibility', 'visible');
499            }
500
501        } else if (pageQueryValue != null) {
502            // query page
503
504            var productSearchElement = document.querySelector(".product-search");
505            var isActive = productSearchElement && productSearchElement.classList.contains("active");
506
507            // Check if there is no element with the class 'refinement-bar'
508            var refinementBarElement = document.querySelector(".refinement-bar");
509            var isRefinementBarAbsent = !refinementBarElement;
510
511            // If both conditions are met - products not present, switch to article tab
512            if (isActive && isRefinementBarAbsent) {
513                $(".content-search").click();
514                $('.search-results-container').css('visibility', 'visible');
515            } else {
516                // products present on query page
517
518                if (articleTabCookieValue == null && filterCookieValue == null) {
519
520                    $('.search-results-container').css('visibility', 'visible');
521
522                } else if (articleTabCookieValue != null && filterCookieValue == null) {
523
524                    applySelectionBasedOnArticleCookie(articleTabCookieValue, pageQueryValue);
525
526                } else if (filterCookieValue != null && articleTabCookieValue == null) {
527
528                    const paramsFilterCookie = new URLSearchParams(filterCookieValue);
529                    const filterCookieQueryValue = paramsFilterCookie.get("q");
530                    if (pageQueryValue == filterCookieQueryValue) {
531                        applyFiltersBasedOnCookie(this, filterCookieValue);
532                    } else {
533                        $('.search-results-container').css('visibility', 'visible');
534                    }
535
536                } else {
537                    // both cookie values are present
538                    const paramsArticleTabCookie = new URLSearchParams(articleTabCookieValue);
539                    const articleCookieQueryValue = paramsArticleTabCookie.get("q");
540                
541                    if (pageQueryValue == articleCookieQueryValue) {
542                        const articleCookieShow = paramsArticleTabCookie.get("value");
543                        if (articleCookieShow == "show") {
544                            $(".content-search").click();
545                            $('.search-results-container').css('visibility', 'visible');
546                        } else {
547                            // filter query logic
548                            const paramsFilterCookie = new URLSearchParams(filterCookieValue);
549                            const filterCookieQueryValue = paramsFilterCookie.get("q");
550                            if (pageQueryValue == filterCookieQueryValue) {
551                                applyFiltersBasedOnCookie(this, filterCookieValue);
552                            } else {
553                                $('.search-results-container').css('visibility', 'visible');
554                            }
555                        }
556                    } else {
557                        // filter query logic
558                        const paramsFilterCookie = new URLSearchParams(filterCookieValue);
559                        const filterCookieQueryValue = paramsFilterCookie.get("q");
560                        if (pageQueryValue == filterCookieQueryValue) {
561                            applyFiltersBasedOnCookie(this, filterCookieValue);
562                        } else {
563                            $('.search-results-container').css('visibility', 'visible');
564                        }
565                    }
566
567                }
568            }
569        } else {
570            $('.search-results-container').css('visibility', 'visible');
571        }
572    },
573
574    showProductTab: function () {
575        $(".search-results-container").on("click", ".product-search", function () {
576            const element = document.querySelector(".page");
577            const queryString = element.getAttribute("data-querystring");
578            const paramsQueryString = new URLSearchParams(queryString);
579            const pageQuery = paramsQueryString.get("q");
580            var filterCookieValue = getRefinementSessionCookie("filterCookie");
581            setRefinementSessionCookie("articleTab", "q=" + pageQuery +"&value=hide", 2);
582
583            const paramsFilterCookie = new URLSearchParams(filterCookieValue);
584            const filterCookieQueryValue = paramsFilterCookie.get("q");
585
586            if (pageQuery == filterCookieQueryValue) {
587                applyFiltersBasedOnCookie(this, filterCookieValue);
588            } else {
589                $('.search-results-container').css('visibility', 'visible');
590            }
591
592
593        });
594    },
595
596    captureTeasers: captureTeasers
597};
598
599
600/***/ }),
601
602/***/ "./cartridges/app_purina_core/cartridge/client/default/js/components/focus.js":
603/*!************************************************************************************!*\
604  !*** ./cartridges/app_purina_core/cartridge/client/default/js/components/focus.js ***!
605  \************************************************************************************/
606/***/ (function(module) {
607
608
609
610module.exports = {
611    setTabNextFocus: function (focusParams) {
612        var KEYCODE_TAB = 9;
613        var isTabPressed = (focusParams.event.key === "Tab" || focusParams.event.keyCode === KEYCODE_TAB);
614
615        if (!isTabPressed) {
616            return;
617        }
618
619        var firstFocusableEl = $(focusParams.containerSelector + " " + focusParams.firstElementSelector);
620        var lastFocusableEl = $(focusParams.containerSelector + " " + focusParams.lastElementSelector);
621
622        if ($(focusParams.containerSelector + " " + focusParams.lastElementSelector).is(":disabled")) {
623            lastFocusableEl = $(focusParams.containerSelector + " " + focusParams.nextToLastElementSelector);
624            if ($(".product-quickview.product-set").length > 0) {
625                var linkElements = $(focusParams.containerSelector + " a#fa-link.share-icons");
626                lastFocusableEl = linkElements[linkElements.length - 1];
627            }
628        }
629
630        if (focusParams.event.shiftKey) /* shift + tab */ {
631            if ($(":focus").is(firstFocusableEl)) {
632                lastFocusableEl.focus();
633                focusParams.event.preventDefault();
634            }
635        } else /* tab */ {
636            if ($(":focus").is(lastFocusableEl)) {
637                firstFocusableEl.focus();
638                focusParams.event.preventDefault();
639            }
640        }
641    }
642};
643
644
645/***/ }),
646
647/***/ "./cartridges/app_purina_core/cartridge/client/default/js/product/base.js":
648/*!********************************************************************************!*\
649  !*** ./cartridges/app_purina_core/cartridge/client/default/js/product/base.js ***!
650  \********************************************************************************/
651/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
652
653
654var focusHelper = __webpack_require__(/*! ../components/focus */ "./cartridges/app_purina_core/cartridge/client/default/js/components/focus.js");
655const Swiper = (__webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.esm.js")["default"]);
656
657/**
658 * Retrieves the relevant pid value
659 * @param {jquery} $el - DOM container for a given add to cart button
660 * @return {string} - value to be used when adding product to cart
661 */
662function getPidValue($el) {
663    var pid;
664
665    if ($("#quickViewModal").hasClass("show") && !$(".product-set").length) {
666        pid = $($el).closest(".modal-content").find(".product-quickview").data("pid");
667    } else if ($(".product-set-detail").length || $(".product-set").length) {
668        pid = $($el).closest(".product-detail").find(".product-id").text();
669    } else {
670        pid = $(".product-detail:not(\".bundle-item\")").data("pid");
671    }
672
673    return pid;
674}
675
676/**
677 * Retrieve contextual quantity selector
678 * @param {jquery} $el - DOM container for the relevant quantity
679 * @return {jquery} - quantity selector DOM container
680 */
681function getQuantitySelector($el) {
682    var quantitySelected;
683    if ($el && $(".set-items").length) {
684        quantitySelected = $($el).closest(".product-detail").find(".quantity-select");
685    } else if ($el && $(".product-bundle").length) {
686        var quantitySelectedModal = $($el).closest(".modal-footer").find(".quantity-select");
687        var quantitySelectedPDP = $($el).closest(".bundle-footer").find(".quantity-select");
688        if (quantitySelectedModal.val() === undefined) {
689            quantitySelected = quantitySelectedPDP;
690        } else {
691            quantitySelected = quantitySelectedModal;
692        }
693    } else {
694        quantitySelected = $(".quantity-select");
695    }
696    return quantitySelected;
697}
698
699/**
700 * Retrieves the value associated with the Quantity pull-down menu
701 * @param {jquery} $el - DOM container for the relevant quantity
702 * @return {string} - value found in the quantity input
703 */
704function getQuantitySelected($el) {
705    return getQuantitySelector($el).val();
706}
707
708/**
709 * Process the attribute values for an attribute that has image swatches
710 *
711 * @param {Object} attr - Attribute
712 * @param {string} attr.id - Attribute ID
713 * @param {Object[]} attr.values - Array of attribute value objects
714 * @param {string} attr.values.value - Attribute coded value
715 * @param {string} attr.values.url - URL to de/select an attribute value of the product
716 * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be
717 *     selected.  If there is no variant that corresponds to a specific combination of attribute
718 *     values, an attribute may be disabled in the Product Detail Page
719 * @param {jQuery} $productContainer - DOM container for a given product
720 * @param {Object} msgs - object containing resource messages
721 */
722function processSwatchValues(attr, $productContainer, msgs) {
723    attr.values.forEach(function (attrValue) {
724        var $attrValue = $productContainer.find("[data-attr=\"" + attr.id + "\"] [data-attr-value=\"" +
725            attrValue.value + "\"]");
726        var $swatchButton = $attrValue.parent();
727
728        if (attrValue.selected) {
729            $attrValue.addClass("selected");
730            $attrValue.siblings(".selected-assistive-text").text(msgs.assistiveSelectedText);
731        } else {
732            $attrValue.removeClass("selected");
733            $attrValue.siblings(".selected-assistive-text").empty();
734        }
735
736        if (attrValue.url) {
737            $swatchButton.attr("data-url", attrValue.url);
738        } else {
739            $swatchButton.removeAttr("data-url");
740        }
741
742        // Disable if not selectable
743        $attrValue.removeClass("selectable unselectable");
744
745        $attrValue.addClass(attrValue.selectable ? "selectable" : "unselectable");
746    });
747}
748
749/**
750 * Process attribute values associated with an attribute that does not have image swatches
751 *
752 * @param {Object} attr - Attribute
753 * @param {string} attr.id - Attribute ID
754 * @param {Object[]} attr.values - Array of attribute value objects
755 * @param {string} attr.values.value - Attribute coded value
756 * @param {string}
756 attr.values.url - URL to de/select an attribute value of the product
757 * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be
758 *     selected.  If there is no variant that corresponds to a specific combination of attribute
759 *     values, an attribute may be disabled in the Product Detail Page
760 * @param {jQuery} $productContainer - DOM container for a given product
761 */
762function processNonSwatchValues(attr, $productContainer) {
763    var $attr = "[data-attr=\"" + attr.id + "\"]";
764    var $defaultOption = $productContainer.find($attr + " .select-" + attr.id + " option:first");
765    $defaultOption.attr("value", attr.resetUrl);
766
767    attr.values.forEach(function (attrValue) {
768        var $attrValue = $productContainer
769            .find($attr + " [data-attr-value=\"" + attrValue.value + "\"]");
770        $attrValue.attr("value", attrValue.url)
771            .removeAttr("disabled");
772
773        if (!attrValue.selectable) {
774            $attrValue.attr("disabled", true);
775        }
776    });
777}
778
779/**
780 * Routes the handling of attribute processing depending on whether the attribute has image
781 *     swatches or not
782 *
783 * @param {Object} attrs - Attribute
784 * @param {string} attr.id - Attribute ID
785 * @param {jQuery} $productContainer - DOM element for a given product
786 * @param {Object} msgs - object containing resource messages
787 */
788function updateAttrs(attrs, $productContainer, msgs) {
789    // Currently, the only attribute type that has image swatches is Color.
790    // add "size" attribute as well, as it is rendered as buttons in the PDP
791    // TODO: make this configurable in the Business Manager ?
792    var attrsWithSwatches = ["color", "size"];
793
794    attrs.forEach(function (attr) {
795        if (attrsWithSwatches.indexOf(attr.id) > -1) {
796            processSwatchValues(attr, $productContainer, msgs);
797        } else {
798            processNonSwatchValues(attr, $productContainer);
799        }
800    });
801}
802
803/**
804 * Updates the availability status in the Product Detail Page
805 *
806 * @param {Object} response - Ajax response object after an
807 *                            attribute value has been [de]selected
808 * @param {jQuery} $productContainer - DOM element for a given product
809 */
810function updateAvailability(response, $productContainer) {
811    var availabilityValue = "";
812    var availabilityMessages = response.product.availability.messages;
813    if (!response.product.readyToOrder) {
814        availabilityValue = "<li><div>" + response.resources.info_selectforstock + "</div></li>";
815    } else {
816        availabilityMessages.forEach(function (message) {
817            availabilityValue += "<li><div>" + message + "</div></li>";
818        });
819    }
820
821    $($productContainer).trigger("product:updateAvailability", {
822        product: response.product,
823        $productContainer: $productContainer,
824        message: availabilityValue,
825        resources: response.resources
826    });
827}
828
829/**
830 * Generates html for product attributes section
831 *
832 * @param {array} attributes - list of attributes
833 * @return {string} - Compiled HTML
834 */
835function getAttributesHtml(attributes) {
836    if (!attributes) {
837        return "";
838    }
839
840    var html = "";
841
842    attributes.forEach(function (attributeGroup) {
843        if (attributeGroup.ID === "mainAttributes") {
844            attributeGroup.attributes.forEach(function (attribute) {
845                html += "<div class=\"attribute-values\">" + attribute.label + ": "
846                    + attribute.value + "</div>";
847            });
848        }
849    });
850
851    return html;
852}
853
854/**
855 * @typedef UpdatedOptionValue
856 * @type Object
857 * @property {string} id - Option value ID for look up
858 * @property {string} url - Updated option value selection URL
859 */
860
861/**
862 * @typedef OptionSelectionResponse
863 * @type Object
864 * @property {string} priceHtml - Updated price HTML code
865 * @property {Object} options - Updated Options
866 * @property {string} options.id - Option ID
867 * @property {UpdatedOptionValue[]} options.values - Option values
868 */
869
870/**
871 * Updates DOM using post-option selection Ajax response
872 *
873 * @param {OptionSelectionResponse} optionsHtml - Ajax response optionsHtml from selecting a product option
874 * @param {jQuery}
874 $productContainer - DOM element for current product
875 */
876function updateOptions(optionsHtml, $productContainer) {
877    // Update options
878    $productContainer.find(".product-options").empty().html(optionsHtml);
879}
880
881/**
882 * Dynamically creates Bootstrap carousel from response containing images
883 * @param {Object} product - Product object
884 * @param {jQuery} $productContainer - DOM element for a given product
885 */
886function createCustomCarousel(product, $productContainer) {
887    var isProductOrderable = product.orderable;
888    var imgs = product.images.large;
889    var carousel = $productContainer.find(".product-details-slider");
890    var swiperCarousel = $productContainer.find(".swiper-container");
891    $(carousel).carousel("dispose");
892    // destroy swiper thumbnails
893    $(swiperCarousel).get(0).swiper.destroy();
894
895    var carouselId = $(carousel).attr("id");
896    $(carousel).empty().append("<div class='carousel-inner'></div>");
897    $(swiperCarousel).empty().append("<div class='swiper-wrapper'></div>");
898    for (var i = 0; i < imgs.length; i++) {
899        // set images for main carousel
900        const carouselItem = `
901            <div class="carousel-item ${isProductOrderable ? "" : "out-of-stock"}">
902                <img src="${imgs[i].url}"
903                    class="d-block img-fluid"
904                    alt="${imgs[i].alt} image number ${parseInt(imgs[i].index, 10)}"
905                    title="${imgs[i].title}"
906                    itemprop="image"
907                />
908                <div class="overlay out-of-stock">
909                    <span class="out-of-stock-label">Out of stock</span>
910                </div>
911            </div>
912        `;
913        $(carouselItem).appendTo($(carousel).find(".carousel-inner"));
914
915        // set images for swiper carousel ( thumbnails )
916        const swiperSlide = `
917            <div class="swiper-slide thumb-items" data-target="#${carouselId}
917" data-slide-to="${i}">
918                <img src="${imgs[i].url}"
919                    class="img-fluid thumb-items-img"
920                    alt="${imgs[i].alt} image number ${parseInt(imgs[i].index, 10)}"
921                    title="${imgs[i].title}"
922                    itemprop="image"
923                />
924            </div>
925        `;
926        $(swiperSlide).appendTo($(swiperCarousel).find(".swiper-wrapper"));
927    }
928    $($(carousel).find(".carousel-item")).first().addClass("active");
929    $($(swiperCarousel).find(".swiper-slide")).first().addClass("active");
930
931    // initialize main carousel
932    $(carousel).carousel({
933        interval: false
934    });
935
936    // initialize swiper carousel
937    new Swiper(swiperCarousel.get(0), {
938        direction: "horizontal",
939        slidesPerView: 5,
940        freeMode: true,
941        loop: false
942    });
943}
944
945/**
946 * Parses JSON from Ajax call made whenever an attribute value is [de]selected
947 * @param {Object} response - response from Ajax call
948 * @param {Object} response.product - Product object
949 * @param {string} response.product.id - Product ID
950 * @param {Object[]} response.product.variationAttributes - Product attributes
951 * @param {Object[]} response.product.images - Product images
952 * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required
953 *     attributes have been selected.  Used partially to
954 *     determine whether the Add to Cart button can be enabled
955 * @param {jQuery} $productContainer - DOM element for a given product.
956 */
957function handleVariantResponse(response, $productContainer) {
958    var isChoiceOfBonusProducts =
959        $productContainer.parents(".choose-bonus-product-dialog").length > 0;
960    var isVaraint;
961    if (response.product.variationAttributes) {
962        updateAttrs(response.product.variationAttributes, $productContainer, response.resources);
963        isVaraint = response.product.productType === "variant";
964        if (isChoiceOfBonusProducts && isVaraint) {
965            $productContainer.parent(".bonus-product-item")
966                .data("pid", response.product.id);
967
968            $productContainer.parent(".bonus-product-item")
969                .data("ready-to-order", response.product.readyToOrder);
970        }
971    }
972
973    // Update primary images
974    createCustomCarousel(response.product, $productContainer);
975
976    // Update pricing
977    if (!isChoiceOfBonusProducts) {
978        var $priceSelector = $(".prices .price", $productContainer).length
979            ? $(".prices .price", $productContainer)
980            : $(".prices .price");
981        $priceSelector.replaceWith(response.product.price.html);
982    }
983
984    // Update promotions
985    $productContainer.find(".promotions").empty().html(response.product.promotionsHtml);
986
987    updateAvailability(response, $productContainer);
988
989    if (isChoiceOfBonusProducts) {
990        var $selectButton = $productContainer.find(".select-bonus-product");
991        $selectButton.trigger("bonusproduct:updateSelectButton", {
992            product: response.product, $productContainer: $productContainer
993        });
994    } else {
995        // Enable "Add to Cart" button if all required attributes have been selected
996        $("button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global").trigger("product:updateAddToCart", {
997            product: response.product, $productContainer: $productContainer
998        }).trigger("product:statusUpdate", response.product);
999    }
1000
1001    // Update attributes
1002    $productContainer.find(".main-attributes").empty()
1003        .html(getAttributesHtml(response.product.attributes));
1004}
1005
1006/**
1007 * @typespec UpdatedQuantity
1008 * @type Object
1009 * @property {boolean} selected - Whether the quantity has been selected
1010 * @property {string} value - The number of products to purchase
1011 * @property {string} url - Compiled URL that specifies variation attributes, product ID, options,
1012 *     etc.
1013 */
1014
1015/**
1016 * Updates the quantity DOM elements post Ajax call
1017 * @param {object} product - Product object containing quantity information
1018 * @param {jQuery} $productContainer - DOM container for a given product
1019 */
1020function updateQuantities(product, $productContainer) {
1021    if ($productContainer.parent(".bonus-product-item").length <= 0) {
1022        var optionsHtml = product.quantities.map(function (quantity) {
1023            var selected = quantity.selected ? " selected " : "";
1024            return "<option value=\"" + quantity.value + "\"  data-url=\"" + quantity.url + "\"" +
1025                selected + ">" + quantity.value + "</option>";
1026        }).join("");
1027
1028        getQuantitySelector($productContainer)
1029            .empty()
1030            .html(optionsHtml)
1031            .attr("disabled", (!product.available || !product.readyToOrder))
1032        ;
1033    }
1034}
1035
1036function updateProductData(product, $productContainer) {
1037    var $productName = $productContainer.find(".product-name");
1038    $productName.text(product.productName);
1039}
1040
1041/**
1042 * updates the product view when a product attribute is selected or deselected or when
1043 *         changing quantity
1044 * @param {string} selectedValueUrl - the Url for the selected variation value
1045 * @param {jQuery} $productContainer - DOM element for current product
1046 */
1047function attributeSelect(selectedValueUrl, $productContainer) {
1048    if (selectedValueUrl) {
1049        $("body").trigger("product:beforeAttributeSelect",
1050            { url: selectedValueUrl, container: $productContainer });
1051
1052        $.ajax({
1053            url: selectedValueUrl,
1054            method: "GET",
1055            success: function (data) {
1056                handleVariantResponse(data, $productContainer);
1057                updateOptions(data.product.optionsHtml, $productContainer);
1058                updateQuantities(data.product, $productContainer);
1059                updateProductData(data.product, $productContainer);
1060                $("body").trigger("product:afterAttributeSelect",
1061                    { data: data, container: $productContainer });
1062                $.spinner().stop();
1063            },
1064            error: function () {
1065                $.spinner().stop();
1066            }
1067        });
1068    }
1069}
1070
1071/**
1072 * Retrieves url to use when adding a product to the cart
1073 *
1074 * @return {string} - The provided URL to use when adding a product to the cart
1075 */
1076function getAddToCartUrl() {
1077    return $(".add-to-cart-url").val();
1078}
1079
1080/**
1081 * Parses the html for a modal window
1082 * @param {string} html - representing the body and footer of the modal window
1083 *
1084 * @return {Object} - Object with properties body and footer.
1085 */
1086function parseHtml(html) {
1087    var $html = $("<div>").append($.parseHTML(html));
1088
1089    var body = $html.find(".choice-of-bonus-product");
1090    var footer = $html.find(".modal-footer").children();
1091
1092    return { body: body, footer: footer };
1093}
1094
1095/**
1096 * Retrieves url to use when adding a product to the cart
1097 *
1098 * @param {Object} data - data object used to fill in dynamic portions of the html
1099 */
1100function chooseBonusProducts(data) {
1101    $(".modal-body").spinner().start();
1102
1103    if ($("#chooseBonusProductModal").length !== 0) {
1104        $("#chooseBonusProductModal").remove();
1105    }
1106    var bonusUrl;
1107    if (data.bonusChoiceRuleBased) {
1108        bonusUrl = data.showProductsUrlRuleBased;
1109    } else {
1110        bonusUrl = data.showProductsUrlListBased;
1111    }
1112
1113    var htmlString = "<!-- Modal -->"
1114        + "<div class=\"modal fade\" id=\"chooseBonusProductModal\" tabindex=\"-1\" role=\"dialog\">"
1115        + "<span class=\"enter-message sr-only\" ></span>"
1116        + "<div class=\"modal-dialog choose-bonus-product-dialog\" "
1117        + "data-total-qty=\"" + data.maxBonusItems + "\""
1118        + "data-UUID=\"" + data.uuid + "\""
1119        + "data-pliUUID=\"" + data.pliUUID + "\""
1120        + "data-addToCartUrl=\"" + data.addToCartUrl + "\""
1121        + "data-pageStart=\"0\""
1122        + "data-pageSize=\"" + data.pageSize + "\""
1123        + "data-moreURL=\"" + data.showProductsUrlRuleBased + "\""
1124        + "data-bonusChoiceRuleBased=\"" + data.bonusChoiceRuleBased + "\">"
1125        + "<!-- Modal content-->"
1126        + "<div class=\"modal-content\">"
1127        + "<div class=\"modal-header\">"
1128        + "    <span class=\"\">" + data.labels.selectprods + "</span>"
1129        + "    <button type=\"button\" class=\"close pull-right\" data-dismiss=\"modal\">"
1130        + "        <span aria-hidden=\"true\">&times;</span>"
1131        + "        <span class=\"sr-only\"> </span>"
1132        + "    </button>"
1133        + "</div>"
1134        + "<div class=\"modal-body\"></div>"
1135        + "<div class=\"modal-footer\"></div>"
1136        + "</div>"
1137        + "</div>"
1138        + "</div>";
1139    $("body").append(htmlString);
1140    $(".modal-body").spinner().start();
1141
1142    $.ajax({
1143        url: bonusUrl,
1144        method: "GET",
1145        dataType: "json",
1146        success: function (response) {
1147            var parsedHtml = parseHtml(response.renderedTemplate);
1148            $("#chooseBonusProductModal .modal-body").empty();
1149            $("#chooseBonusProductModal .enter-message").text(response.enterDialogMessage);
1150            $("#chooseBonusProductModal .modal-header .close .sr-only").text(response.closeButtonText);
1151            $("#chooseBonusProductModal .modal-body").html(parsedHtml.body);
1152            $("#chooseBonusProductModal .modal-footer").html(parsedHtml.footer);
1153            $("#chooseBonusProductModal").modal("show");
1154            $.spinner().stop();
1155        },
1156        error: function () {
1157            $.spinner().stop();
1158        }
1159    });
1160}
1161
1162/**
1163 * Updates the Mini-Cart quantity value after the customer has pressed the "Add to Cart" button
1164 * @param {string} response - ajax response from clicking the add to cart button
1165 */
1166function handlePostCartAdd(response) {
1167    $(".minicart").trigger("count:update", response);
1168    var messageType = response.error ? "alert-danger" : "alert-success";
1169    // show add to cart toast
1170    if (response.newBonusDiscountLineItem
1171        && Object.keys(response.newBonusDiscountLineItem).length !== 0) {
1172        chooseBonusProducts(response.newBonusDiscountLineItem);
1173    } else {
1174        if ($(".add-to-cart-messages").length === 0) {
1175            $("body").append(
1176                "<div class=\"add-to-cart-messages\"></div>"
1177            );
1178        }
1179
1180        $(".add-to-cart-messages").append(
1181            "<div class=\"alert " + messageType + " add-to-basket-alert text-center\" role=\"alert\">"
1182            + response.message
1183            + "</div>"
1184        );
1185
1186        setTimeout(function () {
1187            $(".add-to-basket-alert").remove();
1188        }, 5000);
1189    }
1190}
1191
1192/**
1193 * Retrieves the bundle product item ID's for the Controller to replace bundle master product
1194 * items with their selected variants
1195 *
1196 * @return {string[]} - List of selected bundle product item ID's
1197 */
1198function getChildProducts() {
1199    var childProducts = [];
1200    $(".bundle-item").each(function () {
1201        childProducts.push({
1202            pid: $(this).find(".product-id").text(),
1203            quantity: parseInt($(this).find("label.quantity").data("quantity"), 10)
1204        });
1205    });
1206
1207    return childProducts.length ? JSON.stringify(childProducts) : [];
1208}
1209
1210/**
1211 * Retrieve product options
1212 *
1213 * @param {jQuery} $productContainer - DOM element for current product
1214 * @return {string} - Product options and their selected values
1215 */
1216function getOptions($productContainer) {
1217    var options = $productContainer
1218        .find(".product-option")
1219        .map(function () {
1220            var $elOption = $(this).find(".options-select");
1221            var urlValue = $elOption.val();
1222            var selectedValueId = $elOption.find("option[value=\"" + urlValue + "\"]")
1223                .data("value-id");
1224            return {
1225                optionId: $(this).data("option-id"),
1226                selectedValueId: selectedValueId
1227            };
1228        }).toArray();
1229
1230    return JSON.stringify(options);
1231}
1232
1233/**
1234 * Makes a call to the server to report the event of adding an item to the cart
1235 *
1236 * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false
1237 */
1238function miniCartReportingUrl(url) {
1239    if (url) {
1240        $.ajax({
1241            url: url,
1242            method: "GET",
1243            success: function () {
1244                // reporting urls hit on the server
1245            },
1246            error: function () {
1247                // no reporting urls hit on the server
1248            }
1249        });
1250    }
1251}
1252
1253module.exports = {
1254    attributeSelect: attributeSelect,
1255    methods: {
1256        editBonusProducts: function (data) {
1257            chooseBonusProducts(data);
1258        }
1259    },
1260
1261    focusChooseBonusProductModal: function () {
1262        $("body").on("shown.bs.modal", "#chooseBonusProductModal", function () {
1263            $("#chooseBonusProductModal").siblings().attr("aria-hidden", "true");
1264            $("#chooseBonusProductModal .close").focus();
1265        });
1266    },
1267
1268    onClosingChooseBonusProductModal: function () {
1269        $("body").on("hidden.bs.modal", "#chooseBonusProductModal", function () {
1270            $("#chooseBonusProductModal").siblings().attr("aria-hidden", "false");
1271        });
1272    },
1273
1274    trapChooseBonusProductModalFocus: function () {
1275        $("body").on("keydown", "#chooseBonusProductModal", function (e) {
1276            var focusParams = {
1277                event: e,
1278                containerSelector: "#chooseBonusProductModal",
1279                firstElementSelector: ".close",
1280                lastElementSelector: ".add-bonus-products"
1281            };
1282            focusHelper.setTabNextFocus(focusParams);
1283        });
1284    },
1285
1286    colorAttribute: function () {
1287        $(document).on("click", "[data-attr=\"color\"] button", function (e) {
1288            e.preventDefault();
1289
1290            if ($(this).attr("disabled")) {
1291                return;
1292            }
1293            var $productContainer = $(this).closest(".set-item");
1294            if (!$productContainer.length) {
1295                $productContainer = $(this).closest(".product-detail");
1296            }
1297
1298            attributeSelect($(this).attr("data-url"), $productContainer);
1299        });
1300    },
1301
1302    selectAttribute: function () {
1303        $(document).on("change", "select[class*=\"select-\"], .options-select", function (e) {
1304            e.preventDefault();
1305
1306            var $productContainer = $(this).closest(".set-item");
1307            if (!$productContainer.length) {
1308                $productContainer = $(this).closest(".product-detail");
1309            }
1310            attributeSelect(e.currentTarget.value, $productContainer);
1311        });
1312    },
1313
1314    availability: function () {
1315        $(document).on("change", ".quantity-select", function (e) {
1316            e.preventDefault();
1317
1318            var $productContainer = $(this).closest(".product-detail");
1319            if (!$productContainer.length) {
1320                $productContainer = $(this).closest(".modal-content").find(".product-quickview");
1321            }
1322
1323            if ($(".bundle-items", $productContainer).length === 0) {
1324                attributeSelect($(e.currentTarget).find("option:selected").data("url"),
1325                    $productContainer);
1326            }
1327        });
1328    },
1329
1330    addToCart: function () {
1331        $(document).on("click", "button.add-to-cart, button.add-to-cart-global", function () {
1332            var addToCartUrl;
1333            var pid;
1334            var pidsObj;
1335            var setPids;
1336
1337            $("body").trigger("product:beforeAddToCart", this);
1338
1339            if ($(".set-items").length && $(this).hasClass("add-to-cart-global")) {
1340                setPids = [];
1341
1342                $(".product-detail").each(function () {
1343                    if (!$(this).hasClass("product-set-detail")) {
1344                        setPids.push({
1345                            pid: $(this).find(".product-id").text(),
1346                            qty: $(this).find(".quantity-select").val(),
1347                            options: getOptions($(this))
1348                        });
1349                    }
1350                });
1351                pidsObj = JSON.stringify(setPids);
1352            }
1353
1354            pid = getPidValue($(this));
1355
1356            var $productContainer = $(this).closest(".product-detail");
1357            if (!$productContainer.length) {
1358                $productContainer = $(this).closest(".quick-view-dialog").find(".product-detail");
1359            }
1360
1361            addToCartUrl = getAddToCartUrl();
1362
1363            var form = {
1364                pid: pid,
1365                pidsObj: pidsObj,
1366                childProducts: getChildProducts(),
1367                quantity: getQuantitySelected($(this))
1368            };
1369
1370            if (!$(".bundle-item").length) {
1371                form.options = getOptions($productContainer);
1372            }
1373
1374            $(this).trigger("updateAddToCartFormData", form);
1375            if (addToCartUrl) {
1376                $.ajax({
1377                    url: addToCartUrl,
1378                    method: "POST",
1379                    data: form,
1380                    success: function (data) {
1381                        handlePostCartAdd(data);
1382                        $("body").trigger("product:afterAddToCart", data);
1383                        $.spinner().stop();
1384                        miniCartReportingUrl(data.reportingURL);
1385                    },
1386                    error: function () {
1387                        $.spinner().stop();
1388                    }
1389                });
1390            }
1391        });
1392    },
1393    selectBonusProduct: function () {
1394        $(document).on("click", ".select-bonus-product", function () {
1395            var $choiceOfBonusProduct = $(this).parents(".choice-of-bonus-product");
1396            var pid = $(this).data("pid");
1397            var maxPids = $(".choose-bonus-product-dialog").data("total-qty");
1398            var submittedQty = parseInt($choiceOfBonusProduct.find(".bonus-quantity-select").val(), 10);
1399            var totalQty = 0;
1400            $.each($("#chooseBonusProductModal .selected-bonus-products .selected-pid"), function () {
1401                totalQty += $(this).data("qty");
1402            });
1403            totalQty += submittedQty;
1404            var optionID = $choiceOfBonusProduct.find(".product-option").data("option-id");
1405            var valueId = $choiceOfBonusProduct.find(".options-select option:selected").data("valueId");
1406            if (totalQty <= maxPids) {
1407                var selectedBonusProductHtml = ""
1408                + "<div class=\"selected-pid row\" "
1409                + "data-pid=\"" + pid + "\""
1410                + "data-qty=\"" + submittedQty + "\""
1411                + "data-optionID=\"" + (optionID || "") + "\""
1412                + "data-option-selected-value=\"" + (valueId || "") + "\""
1413                + ">"
1414                + "<div class=\"col-sm-11 col-9 bonus-product-name\" >"
1415                + $choiceOfBonusProduct.find(".product-name").html()
1416                + "</div>"
1417                + "<div class=\"col-1\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></div>"
1418                + "</div>"
1419                ;
1420                $("#chooseBonusProductModal .selected-bonus-products").append(selectedBonusProductHtml);
1421                $(".pre-cart-products").html(totalQty);
1422                $(".selected-bonus-products .bonus-summary").removeClass("alert-danger");
1423            } else {
1424                $(".selected-bonus-products .bonus-summary").addClass("alert-danger");
1425            }
1426        });
1427    },
1428    removeBonusProduct: function () {
1429        $(document).on("click", ".selected-pid", function () {
1430            $(this).remove();
1431            var $selected = $("#chooseBonusProductModal .selected-bonus-products .selected-pid");
1432            var count = 0;
1433            if ($selected.length) {
1434                $selected.each(function () {
1435                    count += parseInt($(this).data("qty"), 10);
1436                });
1437            }
1438
1439            $(".pre-cart-products").html(count);
1440            $(".selected-bonus-products .bonus-summary").removeClass("alert-danger");
1441        });
1442    },
1443    enableBonusProductSelection: function () {
1444        $("body").on("bonusproduct:updateSelectButton", function (e, response) {
1445            $("button.select-bonus-product", response.$productContainer).attr("disabled",
1446                (!response.product.readyToOrder || !response.product.available));
1447            var pid = response.product.id;
1448            $("button.select-bonus-product", response.$productContainer).data("pid", pid);
1449        });
1450    },
1451    showMoreBonusProducts: function () {
1452        $(document).on("click", ".show-more-bonus-products", function () {
1453            var url = $(this).data("url");
1454            $(".modal-content").spinner().start();
1455            $.ajax({
1456                url: url,
1457                method: "GET",
1458                success: function (html) {
1459                    var parsedHtml = parseHtml(html);
1460                    $(".modal-body").append(parsedHtml.body);
1461                    $(".show-more-bonus-products:first").remove();
1462                    $(".modal-content").spinner().stop();
1463                },
1464                error: function () {
1465                    $(".modal-content").spinner().stop();
1466                }
1467            });
1468        });
1469    },
1470    addBonusProductsToCart: function () {
1471        $(document).on("click", ".add-bonus-products", function () {
1472            var $readyToOrderBonusProducts = $(".choose-bonus-product-dialog .selected-pid");
1473            var queryString = "?pids=";
1474            var url = $(".choose-bonus-product-dialog").data("addtocarturl");
1475            var pidsObject = {
1476                bonusProducts: []
1477            };
1478
1479            $.each($readyToOrderBonusProducts, function () {
1480                var qtyOption =
1481                    parseInt($(this)
1482                        .data("qty"), 10);
1483
1484                var option = null;
1485                if (qtyOption > 0) {
1486                    if ($(this).data("optionid") && $(this).data("option-selected-value")) {
1487                        option = {};
1488                        option.optionId = $(this).data("optionid");
1489                        option.productId = $(this).data("pid");
1490                        option.selectedValueId = $(this).data("option-selected-value");
1491                    }
1492                    pidsObject.bonusProducts.push({
1493                        pid: $(this).data("pid"),
1494                        qty: qtyOption,
1495                        options: [option]
1496                    });
1497                    pidsObject.totalQty = parseInt($(".pre-cart-products").html(), 10);
1498                }
1499            });
1500            queryString += JSON.stringify(pidsObject);
1501            queryString = queryString + "&uuid=" + $(".choose-bonus-product-dialog").data("uuid");
1502            queryString = queryString + "&pliuuid=" + $(".choose-bonus-product-dialog").data("pliuuid");
1503            $.spinner().start();
1504            $.ajax({
1505                url: url + queryString,
1506                method: "POST",
1507                success: function (data) {
1508                    $.spinner().stop();
1509                    if (data.error) {
1510                        $("#chooseBonusProductModal").modal("hide");
1511                        if ($(".add-to-cart-messages").length === 0) {
1512                            $("body").append("<div class=\"add-to-cart-messages\"></div>");
1513                        }
1514                        $(".add-to-cart-messages").append(
1515                            "<div class=\"alert alert-danger add-to-basket-alert text-center\""
1516                            + " role=\"alert\">"
1517                            + data.errorMessage + "</div>"
1518                        );
1519                        setTimeout(function () {
1520                            $(".add-to-basket-alert").remove();
1521                        }, 3000);
1522                    } else {
1523                        $(".configure-bonus-product-attributes").html(data);
1524                        $(".bonus-products-step2").removeClass("hidden-xl-down");
1525                        $("#chooseBonusProductModal").modal("hide");
1526
1527                        if ($(".add-to-cart-messages").length === 0) {
1528                            $("body").append("<div class=\"add-to-cart-messages\"></div>");
1529                        }
1530                        $(".minicart-quantity").html(data.totalQty);
1531                        $(".add-to-cart-messages").append(
1532                            "<div class=\"alert alert-success add-to-basket-alert text-center\""
1533                            + " role=\"alert\">"
1534                            + data.msgSuccess + "</div>"
1535                        );
1536                        setTimeout(function () {
1537                            $(".add-to-basket-alert").remove();
1538                            if ($(".cart-page").length) {
1539                                location.reload();
1540                            }
1541                        }, 1500);
1542                    }
1543                },
1544                error: function () {
1545                    $.spinner().stop();
1546                }
1547            });
1548        });
1549    },
1550
1551    getPidValue: getPidValue,
1552    getQuantitySelected: getQuantitySelected,
1553    miniCartReportingUrl: miniCartReportingUrl
1554};
1555
1556
1557/***/ }),
1558
1559/***/ "./cartridges/app_purina_core/cartridge/client/default/js/product/quickView.js":
1560/*!*************************************************************************************!*\
1561  !*** ./cartridges/app_purina_core/cartridge/client/default/js/product/quickView.js ***!
1562  \*************************************************************************************/
1563/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1564
1565
1566
1567var base = __webpack_require__(/*! ./base */ "./cartridges/app_purina_core/cartridge/client/default/js/product/base.js");
1568var focusHelper = __webpack_require__(/*! ../components/focus */ "./cartridges/app_purina_core/cartridge/client/default/js/components/focus.js");
1569
1570/**
1571 * Generates the modal window on the first call.
1572 *
1573 */
1574function getModalHtmlElement() {
1575    if ($("#quickViewModal").length !== 0) {
1576        $("#quickViewModal").remove();
1577    }
1578    var htmlString = "<!-- Modal -->"
1579        + "<div class=\"modal fade\" id=\"quickViewModal\" role=\"dialog\">"
1580        + "<span class=\"enter-message sr-only\" ></span>"
1581        + "<div class=\"modal-dialog quick-view-dialog\">"
1582        + "<!-- Modal content-->"
1583        + "<div class=\"modal-content\">"
1584        + "<div class=\"modal-header\">"
1585        + "    <a class=\"full-pdp-link\" href=\"\"></a>"
1586        + "    <button type=\"button\" class=\"close pull-right\" data-dismiss=\"modal\">"
1587        + "        <span aria-hidden=\"true\">&times;</span>"
1588        + "        <span class=\"sr-only\"> </span>"
1589        + "    </button>"
1590        + "</div>"
1591        + "<div class=\"modal-body\"></div>"
1592        + "<div class=\"modal-footer\"></div>"
1593        + "</div>"
1594        + "</div>"
1595        + "</div>";
1596    $("body").append(htmlString);
1597}
1598
1599/**
1600 * @typedef {Object} QuickViewHtml
1601 * @property {string} body - Main Quick View body
1602 * @property {string} footer - Quick View footer content
1603 */
1604
1605/**
1606 * Parse HTML code in Ajax response
1607 *
1608 * @param {string} html - Rendered HTML from quickview template
1609 * @return {QuickViewHtml} - QuickView content components
1610 */
1611function parseHtml(html) {
1612    var $html = $("<div>").append($.parseHTML(html));
1613
1614    var body = $html.find(".product-quickview");
1615    var footer = $html.find(".modal-footer").children();
1616
1617    return { body: body, footer: footer };
1618}
1619
1620/**
1621 * replaces the content in the modal window on for the selected product variation.
1622 * @param {string} selectedValueUrl - url to be used to retrieve a new product model
1623 */
1624function fillModalElement(selectedValueUrl) {
1625    // SMART ORDER REFILL -  FIX BASE BUG - BEGIN
1626    var modalBody = $("#quickViewModal").find(".modal-body");
1627    var modalFooter = $("#quickViewModal").find(".modal-footer");
1628    modalBody.spinner().start();
1629    $.ajax({
1630        url: selectedValueUrl,
1631        method: "GET",
1632        dataType: "json",
1633        success: function (data) {
1634            var parsedHtml = parseHtml(data.renderedTemplate);
1635
1636            modalBody.empty();
1637            modalBody.html(parsedHtml.body);
1638            modalFooter.html(parsedHtml.footer);
1639            // SMART ORDER REFILL -  FIX BASE BUG - END
1640            $(".full-pdp-link").text(data.quickViewFullDetailMsg);
1641            $("#quickViewModal .full-pdp-link").attr("href", data.productUrl);
1642            $("#quickViewModal .size-chart").attr("href", data.productUrl);
1643            $("#quickViewModal .modal-header .close .sr-only").text(data.closeButtonText);
1644            $("#quickViewModal .enter-message").text(data.enterDialogMessage);
1645            $("#quickViewModal").modal("show");
1646            $("body").trigger("quickview:ready");
1647
1648            $.spinner().stop();
1649        },
1650        error: function () {
1651            $.spinner().stop();
1652        }
1653    });
1654}
1655
1656module.exports = {
1657    showQuickview: function () {
1658        $("body").on("click", ".quickview", function (e) {
1659            e.preventDefault();
1660            var selectedValueUrl = $(this).closest("a.quickview").attr("href");
1661            $(e.target).trigger("quickview:show");
1662            getModalHtmlElement();
1663            fillModalElement(selectedValueUrl);
1664        });
1665    },
1666    focusQuickview: function () {
1667        $("body").on("shown.bs.modal", "#quickViewModal", function () {
1668            $("#quickViewModal .close").focus();
1669        });
1670    },
1671    trapQuickviewFocus: function () {
1672        $("body").on("keydown", "#quickViewModal", function (e) {
1673            var focusParams = {
1674                event: e,
1675                containerSelector: "#quickViewModal",
1676                firstElementSelector: ".full-pdp-link",
1677                lastElementSelector: ".add-to-cart-global",
1678                nextToLastElementSelector: ".modal-footer .quantity-select"
1679            };
1680            focusHelper.setTabNextFocus(focusParams);
1681        });
1682    },
1683    availability: base.availability,
1684    addToCart: base.addToCart,
1685    showSpinner: function () {
1686        $("body").on("product:beforeAddToCart", function (e, data) {
1687            $(data).closest(".modal-content").spinner().start();
1688        });
1689    },
1690    hideDialog: function () {
1691        $("body").on("product:afterAddToCart", function () {
1692            $("#quickViewModal").modal("hide");
1693        });
1694    },
1695    beforeUpdateAttribute: function () {
1696        $("body").on("product:beforeAttributeSelect", function () {
1697            $(".modal.show .modal-content").spinner().start();
1698        });
1699    },
1700    updateAttribute: function () {
1701        $("body").on("product:afterAttributeSelect", function (e, response) {
1702            if ($(".modal.show .product-quickview>.bundle-items").length) {
1703                $(".modal.show").find(response.container).data("pid", response.data.product.id);
1704                $(".modal.show").find(response.container)
1705                    .find(".product-id").text(response.data.product.id);
1706            } else if ($(".set-items").length) {
1707                response.container.find(".product-id").text(response.data.product.id);
1708            } else {
1709                $(".modal.show .product-quickview").data("pid", response.data.product.id);
1710                $(".modal.show .full-pdp-link")
1711                    .attr("href", response.data.product.selectedProductUrl);
1712            }
1713        });
1714    },
1715    updateAddToCart: function () {
1716        $("body").on("product:updateAddToCart", function (e, response) {
1717            // update local add to cart (for sets)
1718            $("button.add-to-cart", response.$productContainer).attr(
1719                "disabled",
1720                (!response.product.readyToOrder || !response.product.available)
1721            );
1722
1723            // update global add to cart (single products, bundles)
1724            var dialog = $(response.$productContainer)
1725                .closest(".quick-view-dialog");
1726
1727            $(".add-to-cart-global", dialog).attr(
1728                "disabled",
1729                !$(".global-availability", dialog).data("ready-to-order")
1730                || !$(".global-availability", dialog).data("available")
1731            );
1732        });
1733    },
1734    updateAvailability: function () {
1735        $("body").on("product:updateAvailability", function (e, response) {
1736            // bundle individual products
1737            $(".product-availability", response.$productContainer)
1738                .data("ready-to-order", response.product.readyToOrder)
1739                .data("available", response.product.available)
1740                .find(".availability-msg")
1741                .empty()
1742                .html(response.message);
1743
1744            var dialog = $(response.$productContainer)
1745                .closest(".quick-view-dialog");
1746
1747            if ($(".product-availability", dialog).length) {
1748                // bundle all products
1749                var allAvailable = $(".product-availability", dialog).toArray()
1750                    .every(function (item) { return $(item).data("available"); });
1751
1752                var allReady = $(".product-availability", dialog).toArray()
1753                    .every(function (item) { return $(item).data("ready-to-order"); });
1754
1755                $(".global-availability", dialog)
1756                    .data("ready-to-order", allReady)
1757                    .data("available", allAvailable);
1758
1759                $(".global-availability .availability-msg", dialog).empty()
1760                    .html(allReady ? response.message : response.resources.info_selectforstock);
1761            } else {
1762                // single product
1763                $(".global-availability", dialog)
1764                    .data("ready-to-order", response.product.readyToOrder)
1765                    .data("available", response.product.available)
1766                    .find(".availability-msg")
1767                    .empty()
1768                    .html(response.message);
1769            }
1770        });
1771    }
1772};
1773
1774
1775/***/ }),
1776
1777/***/ "./cartridges/app_purina_core/cartridge/client/default/js/productList/ProductTileClass.js":
1778/*!************************************************************************************************!*\
1779  !*** ./cartridges/app_purina_core/cartridge/client/default/js/productList/ProductTileClass.js ***!
1780  \************************************************************************************************/
1781/***/ (function(module) {
1782
1783
1784
1785/* globals $ */
1786
1787function ProductTileClass(element) {
1788    // prepare dom
1789    this.element = element;
1790    // add initialized class for passed element
1791    this.element.classList.add("product-tile-initialized");
1792
1793    this.sizeButtons = this.element.querySelectorAll(".select-size") || [];
1794    this.productImage = this.element.querySelector(".image-container");
1795    this.productTitle = this.element.querySelector(".pdp-link a.link");
1796    this.productPrice = this.element.querySelector(".price");
1797
1798    // prepare events
1799    /**
1800    * Gets the selected size from the product variation attributes
1801    * @param {Object} data - product data
1802    * @returns {Object} - the selected size object
1803    */
1804    this.getSelectedSize = function (data) {
1805        return (data?.product?.variationAttributes || [])
1806            .find(attribute => attribute.attributeId === "size")
1807            ?.values.find(value => value.selected) || {};
1808    };
1809    /**
1810    * Updates the product image with the selected size and url
1811    * @param {Object} selectedSize - the selected size object
1812    * @param {string} url - the url to the product page
1813    */
1814    this.updateProductImage = function (selectedSize, url, data) {
1815        let linkElement = this.productImage?.querySelector("a");
1816        let imageElement = linkElement?.querySelector("img");
1817        let imageData = selectedSize?.images?.medium?.[0] || null;
1818
1819        if (imageElement && imageData) {
1820            imageElement.title = imageData.title || imageElement.title || "";
1821            imageElement.src = imageData.url || imageElement.src || "";
1822            imageElement.alt = imageData.alt || imageElement.alt || "";
1823        }
1824
1825        if (linkElement) {
1826            linkElement.href = url || linkElement.href || "";
1827        }
1828        
1829        // Checks if any of the values in the variationAttributes array are selectable
1830        function isEmpty(value) {
1831            return value === null || value === undefined || value === "" || (Array.isArray(value) && value.length === 0) || (typeof value === "object" && Object.keys(value).length === 0);
1832        }
1833        var productData = !isEmpty(data) && "product" in data && !isEmpty(data.product) ? data.product : null;
1834        var variationAttribute = !isEmpty(productData) && "variationAttributes" in productData && !isEmpty(productData.variationAttributes[0]) ? productData.variationAttributes[0] : null;
1835        var variationAttributeValues = !isEmpty(variationAttribute) && "values" in variationAttribute && !isEmpty(variationAttribute.values) ? variationAttribute.values : null;
1836        var isProductInStock = productData && variationAttribute && variationAttributeValues && variationAttributeValues.some(variant => variant && variant.selectable);
1837
1838        // update the image container class
1839        if (!isProductInStock) {
1840            this.productImage.classList.toggle("out-of-stock", !selectedSize.selectable);
1841        }
1842    };
1843    /**
1844    * Updates the product title with the given data
1845    * @param {Object} data - the data object containing the product name
1846    * @param {string} url - the url of the product page
1847    */
1848    this.updateProductTitle = function (data, url) {
1849        if (this.productTitle) {
1850            this.productTitle.href = url || this.productTitle.href;
1851            this.productTitle.textContent = data?.product?.productName || this.productTitle.textContent;
1852        }
1853    };
1854    /**
1855    * Updates the product price on the page
1856    * @param {Object} data - the data object containing the product price info
1857    */
1858    this.updateProductPrice = function (data) {
1859        let updatePriceHtml = data?.product?.price?.html;
1860        if (updatePriceHtml) {
1861            let updatedPriceElement = document.createElement("div");
1862            updatedPriceElement.innerHTML = updatePriceHtml;
1863            let priceElement = updatedPriceElement.querySelector(".price");
1864
1865            this.productPrice.innerHTML = priceElement.innerHTML;
1866        }
1867    };
1868    /**
1869    * Adds a class to the size buttons based on the selected size
1870    * @param {Object} selectedSize - the selected size
1871    */
1872    this.addSelectedClass = function (selectedSize) {
1873        this.sizeButtons.forEach(sizeButton => {
1874            const isSelected = selectedSize && selectedSize.value === sizeButton.dataset.attrValue;
1875            sizeButton.classList.toggle("selected", isSelected);
1876        });
1877    };
1878    /**
1879    * Handles the successful response from the getVariation request
1880    * @param {Object} data - the response data from the getVariation request
1881    */
1882    this.onGetVariationSuccess = function (url, data) {
1883        let selectedSize = this.getSelectedSize(data);
1884        this.updateProductImage(selectedSize, url, data);
1885        this.updateProductTitle(data, url);
1886        this.updateProductPrice(data);
1887        this.addSelectedClass(selectedSize);
1888    };
1889    /**
1890    * Retrieves the variation data from the given URL
1891    * @param {string} url - The URL to retrieve the variation data from
1892    * @param {string} pdpUrl - The URL to the product page
1893    */
1894    this.getVariationData = function (url, pdpUrl) {
1895        if (url) {
1896            $.ajax({
1897                url: url,
1898                method: "GET",
1899                success: this.onGetVariationSuccess.bind(this, pdpUrl)
1900            });
1901        }
1902    };
1903
1904    // bind events to each size button
1905    this.sizeButtons.forEach(function (sizebutton) {
1906        let that = this;
1907        sizebutton.addEventListener("click", function (e) {
1908            e.preventDefault();
1909
1910            // do not deselect the selected size
1911            if (sizebutton.classList.contains("selected")) {
1912                return;
1913            }
1914
1915            // get the variation data
1916            // and update the product image, title and price
1917            // and add the "selected" class to the selected size button
1918            that.getVariationData(sizebutton.getAttribute("value"), sizebutton.dataset.pdpUrl);
1919        });
1920    }, this);
1921}
1922
1923module.exports = ProductTileClass
vendor: 24 bytes, lines 1923-1928
1923;
1924
1925
1926/***/ }),
1927
1928/***/ "./
1928cartridges/app_purina_core/cartridge/client/default/js/productList/productTile.js":
1929/*!*******************************************************************************************!*\
1930  !*** ./cartridges/app_purina_core/cartridge/client/default/js/productList/productTile.js ***!
1931  \*******************************************************************************************/
1932/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1933
1934
1935
1936/* globals $ */
1937var ProductTileClass = __webpack_require__(/*! ./ProductTileClass */ "./cartridges/app_purina_core/cartridge/client/default/js/productList/ProductTileClass.js");
1938var cache = {};
1939
1940/**
1941* Initializes the DOM elements
1942*/
1943function initializeDom() {
1944    cache.$document = $(document);
1945    cache.$productTiles = cache.$document.find(".product-tile, .product-tile-pd");
1946}
1947
1948/**
1949* Initializes the events for the product tiles
1950*/
1951function initializeEvents() {
1952    cache.$productTiles
1953        .not(".product-tile-initialized")
1954        .toArray()
1955        .forEach(function (productTile) {
1956            new ProductTileClass(productTile);
1957        });
1958}
1959
1960module.exports = {
1961    init: function () {
1962        setTimeout(function () {
1963            initializeDom();
1964            initializeEvents();
1965        }, 1000);
1966
1967    }
1968};
1969
1970
1971/***/ }),
1972
1973/***/ "./cartridges/app_purina_core/cartridge/client/default/js/util.js":
1974/*!************************************************************************!*\
1975  !*** ./cartridges/app_purina_core/cartridge/client/default/js/util.js ***!
1976  \************************************************************************/
1977/***/ (function(module) {
1978
1979
1980
1981module.exports = function (include) {
1982    if (typeof include === "function") {
1983        include();
1984    } else if (typeof include === "object") {
1985        Object.keys(include).forEach(function (key) {
1986            if (typeof include[key] === "function") {
1987                include[key]();
1988            }
1989        });
1990    }
1991};
1992
1993
1994/***/ }),
1995
vendor: 4,009 bytes, lines 1996-2161
1996/***/ "./node_modules/ssr-window/ssr-window.esm.js":
1997/*!***************************************************!*\
1998  !*** ./node_modules/ssr-window/ssr-window.esm.js ***!
1999  \***************************************************/
2000/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2001
2002__webpack_require__.r(__webpack_exports__);
2003/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2004/* harmony export */   "extend": function() { return /* binding */ extend; },
2005/* harmony export */   "getDocument": function() { return /* binding */ getDocument; },
2006/* harmony export */   "getWindow": function() { return /* binding */ getWindow; },
2007/* harmony export */   "ssrDocument": function() { return /* binding */ ssrDocument; },
2008/* harmony export */   "ssrWindow": function() { return /* binding */ ssrWindow; }
2009/* harmony export */ });
2010/**
2011 * SSR Window 4.0.2
2012 * Better handling for window object in SSR environment
2013 * https://github.com/nolimits4web/ssr-window
2014 *
2015 * Copyright 2021, Vladimir Kharlampidi
2016 *
2017 * Licensed under MIT
2018 *
2019 * Released on: December 13, 2021
2020 */
2021/* eslint-disable no-param-reassign */
2022function isObject(obj) {
2023    return (obj !== null &&
2024        typeof obj === 'object' &&
2025        'constructor' in obj &&
2026        obj.constructor === Object);
2027}
2028function extend(target = {}, src = {}) {
2029    Object.keys(src).forEach((key) => {
2030        if (typeof target[key] === 'undefined')
2031            target[key] = src[key];
2032        else if (isObject(src[key]) &&
2033            isObject(target[key]) &&
2034            Object.keys(src[key]).length > 0) {
2035            extend(target[key], src[key]);
2036        }
2037    });
2038}
2039
2040const ssrDocument = {
2041    body: {},
2042    addEventListener() { },
2043    removeEventListener() { },
2044    activeElement: {
2045        blur() { },
2046        nodeName: '',
2047    },
2048    querySelector() {
2049        return null;
2050    },
2051    querySelectorAll() {
2052        return [];
2053    },
2054    getElementById() {
2055        return null;
2056    },
2057    createEvent() {
2058        return {
2059            initEvent() { },
2060        };
2061    },
2062    createElement() {
2063        return {
2064            children: [],
2065            childNodes: [],
2066            style: {},
2067            setAttribute() { },
2068            getElementsByTagName() {
2069                return [];
2070            },
2071        };
2072    },
2073    createElementNS() {
2074        return {};
2075    },
2076    importNode() {
2077        return null;
2078    },
2079    location: {
2080        hash: '',
2081        host: '',
2082        hostname: '',
2083        href: '',
2084        origin: '',
2085        pathname: '',
2086        protocol: '',
2087        search: '',
2088    },
2089};
2090function getDocument() {
2091    const doc = typeof document !== 'undefined' ? document : {};
2092    extend(doc, ssrDocument);
2093    return doc;
2094}
2095
2096const ssrWindow = {
2097    document: ssrDocument,
2098    navigator: {
2099        userAgent: '',
2100    },
2101    location: {
2102        hash: '',
2103        host: '',
2104        hostname: '',
2105        href: '',
2106        origin: '',
2107        pathname: '',
2108        protocol: '',
2109        search: '',
2110    },
2111    history: {
2112        replaceState() { },
2113        pushState() { },
2114        go() { },
2115        back() { },
2116    },
2117    CustomEvent: function CustomEvent() {
2118        return this;
2119    },
2120    addEventListener() { },
2121    removeEventListener() { },
2122    getComputedStyle() {
2123        return {
2124            getPropertyValue() {
2125                return '';
2126            },
2127        };
2128    },
2129    Image() { },
2130    Date() { },
2131    screen: {},
2132    setTimeout() { },
2133    clearTimeout() { },
2134    matchMedia() {
2135        return {};
2136    },
2137    requestAnimationFrame(callback) {
2138        if (typeof setTimeout === 'undefined') {
2139            callback();
2140            return null;
2141        }
2142        return setTimeout(callback, 0);
2143    },
2144    cancelAnimationFrame(id) {
2145        if (typeof setTimeout === 'undefined') {
2146            return;
2147        }
2148        clearTimeout(id);
2149    },
2150};
2151function getWindow() {
2152    const win = typeof window !== 'undefined' ? window : {};
2153    extend(win, ssrWindow);
2154    return win;
2155}
2156
2157
2158
2159
2160/***/ }),
2161
vendor: 1,854 bytes, lines 2162-2211
2162/***/ "./node_modules/swiper/core/breakpoints/getBreakpoint.js":
2163/*!***************************************************************!*\
2164  !*** ./node_modules/swiper/core/breakpoints/getBreakpoint.js ***!
2165  \***************************************************************/
2166/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2167
2168__webpack_require__.r(__webpack_exports__);
2169/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2170/* harmony export */   "default": function() { return /* binding */ getBreakpoint; }
2171/* harmony export */ });
2172/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
2173
2174function getBreakpoint(breakpoints, base = 'window', containerEl) {
2175  if (!breakpoints || base === 'container' && !containerEl) return undefined;
2176  let breakpoint = false;
2177  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
2178  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
2179  const points = Object.keys(breakpoints).map(point => {
2180    if (typeof point === 'string' && point.indexOf('@') === 0) {
2181      const minRatio = parseFloat(point.substr(1));
2182      const value = currentHeight * minRatio;
2183      return {
2184        value,
2185        point
2186      };
2187    }
2188    return {
2189      value: point,
2190      point
2191    };
2192  });
2193  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
2194  for (let i = 0; i < points.length; i += 1) {
2195    const {
2196      point,
2197      value
2198    } = points[i];
2199    if (base === 'window') {
2200      if (window.matchMedia(`(min-width: ${value}px)`).matches) {
2201        breakpoint = point;
2202      }
2203    } else if (value <= containerEl.clientWidth) {
2204      breakpoint = point;
2205    }
2206  }
2207  return breakpoint || 'max';
2208}
2209
2210/***/ }),
2211
vendor: 975 bytes, lines 2212-2229
2212/***/ "./node_modules/swiper/core/breakpoints/index.js":
2213/*!*******************************************************!*\
2214  !*** ./node_modules/swiper/core/breakpoints/index.js ***!
2215  \*******************************************************/
2216/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2217
2218__webpack_require__.r(__webpack_exports__);
2219/* harmony import */ var _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setBreakpoint.js */ "./node_modules/swiper/core/breakpoints/setBreakpoint.js");
2220/* harmony import */ var _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBreakpoint.js */ "./node_modules/swiper/core/breakpoints/getBreakpoint.js");
2221
2222
2223/* harmony default export */ __webpack_exports__["default"] = ({
2224  setBreakpoint: _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__["default"],
2225  getBreakpoint: _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__["default"]
2226});
2227
2228/***/ }),
2229
vendor: 3,666 bytes, lines 2230-2314
2230/***/ "./node_modules/swiper/core/breakpoints/setBreakpoint.js":
2231/*!***************************************************************!*\
2232  !*** ./node_modules/swiper/core/breakpoints/setBreakpoint.js ***!
2233  \***************************************************************/
2234/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2235
2236__webpack_require__.r(__webpack_exports__);
2237/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2238/* harmony export */   "default": function() { return /* binding */ setBreakpoint; }
2239/* harmony export */ });
2240/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
2241
2242const isGridEnabled = (swiper, params) => {
2243  return swiper.grid && params.grid && params.grid.rows > 1;
2244};
2245function setBreakpoint() {
2246  const swiper = this;
2247  const {
2248    realIndex,
2249    initialized,
2250    params,
2251    el
2252  } = swiper;
2253  const breakpoints = params.breakpoints;
2254  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;
2255
2256  // Get breakpoint for window width and update parameters
2257  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
2258  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
2259  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
2260  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
2261  const wasMultiRow = isGridEnabled(swiper, params);
2262  const isMultiRow = isGridEnabled(swiper, breakpointParams);
2263  const wasEnabled = params.enabled;
2264  if (wasMultiRow && !isMultiRow) {
2265    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);
2266    swiper.emitContainerClasses();
2267  } else if (!wasMultiRow && isMultiRow) {
2268    el.classList.add(`${params.containerModifierClass}grid`);
2269    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {
2270      el.classList.add(`${params.containerModifierClass}grid-column`);
2271    }
2272    swiper.emitContainerClasses();
2273  }
2274
2275  // Toggle navigation, pagination, scrollbar
2276  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {
2277    const wasModuleEnabled = params[prop] && params[prop].enabled;
2278    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
2279    if (wasModuleEnabled && !isModuleEnabled) {
2280      swiper[prop].disable();
2281    }
2282    if (!wasModuleEnabled && isModuleEnabled) {
2283      swiper[prop].enable();
2284    }
2285  });
2286  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
2287  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
2288  if (directionChanged && initialized) {
2289    swiper.changeDirection();
2290  }
2291  (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(swiper.params, breakpointParams);
2292  const isEnabled = swiper.params.enabled;
2293  Object.assign(swiper, {
2294    allowTouchMove: swiper.params.allowTouchMove,
2295    allowSlideNext: swiper.params.allowSlideNext,
2296    allowSlidePrev: swiper.params.allowSlidePrev
2297  });
2298  if (wasEnabled && !isEnabled) {
2299    swiper.disable();
2300  } else if (!wasEnabled && isEnabled) {
2301    swiper.enable();
2302  }
2303  swiper.currentBreakpoint = breakpoint;
2304  swiper.emit('_beforeBreakpoint', breakpointParams);
2305  if (needsReLoop && initialized) {
2306    swiper.loopDestroy();
2307    swiper.loopCreate(realIndex);
2308    swiper.updateSlides();
2309  }
2310  swiper.emit('breakpoint', breakpointParams);
2311}
2312
2313/***/ }),
2314
vendor: 1,344 bytes, lines 2315-2356
2315/***/ "./node_modules/swiper/core/check-overflow/index.js":
2316/*!**********************************************************!*\
2317  !*** ./node_modules/swiper/core/check-overflow/index.js ***!
2318  \**********************************************************/
2319/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2320
2321__webpack_require__.r(__webpack_exports__);
2322function checkOverflow() {
2323  const swiper = this;
2324  const {
2325    isLocked: wasLocked,
2326    params
2327  } = swiper;
2328  const {
2329    slidesOffsetBefore
2330  } = params;
2331  if (slidesOffsetBefore) {
2332    const lastSlideIndex = swiper.slides.length - 1;
2333    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
2334    swiper.isLocked = swiper.size > lastSlideRightEdge;
2335  } else {
2336    swiper.isLocked = swiper.snapGrid.length === 1;
2337  }
2338  if (params.allowSlideNext === true) {
2339    swiper.allowSlideNext = !swiper.isLocked;
2340  }
2341  if (params.allowSlidePrev === true) {
2342    swiper.allowSlidePrev = !swiper.isLocked;
2343  }
2344  if (wasLocked && wasLocked !== swiper.isLocked) {
2345    swiper.isEnd = false;
2346  }
2347  if (wasLocked !== swiper.isLocked) {
2348    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
2349  }
2350}
2351/* harmony default export */ __webpack_exports__["default"] = ({
2352  checkOverflow
2353});
2354
2355/***/ }),
2356
vendor: 1,841 bytes, lines 2357-2419
2357/***/ "./node_modules/swiper/core/classes/addClasses.js":
2358/*!********************************************************!*\
2359  !*** ./node_modules/swiper/core/classes/addClasses.js ***!
2360  \********************************************************/
2361/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2362
2363__webpack_require__.r(__webpack_exports__);
2364/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2365/* harmony export */   "default": function() { return /* binding */ addClasses; }
2366/* harmony export */ });
2367function prepareClasses(entries, prefix) {
2368  const resultClasses = [];
2369  entries.forEach(item => {
2370    if (typeof item === 'object') {
2371      Object.keys(item).forEach(classNames => {
2372        if (item[classNames]) {
2373          resultClasses.push(prefix + classNames);
2374        }
2375      });
2376    } else if (typeof item === 'string') {
2377      resultClasses.push(prefix + item);
2378    }
2379  });
2380  return resultClasses;
2381}
2382function addClasses() {
2383  const swiper = this;
2384  const {
2385    classNames,
2386    params,
2387    rtl,
2388    el,
2389    device
2390  } = swiper;
2391  // prettier-ignore
2392  const suffixes = prepareClasses(['initialized', params.direction, {
2393    'free-mode': swiper.params.freeMode && params.freeMode.enabled
2394  }, {
2395    'autoheight': params.autoHeight
2396  }, {
2397    'rtl': rtl
2398  }, {
2399    'grid': params.grid && params.grid.rows > 1
2400  }, {
2401    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'
2402  }, {
2403    'android': device.android
2404  }, {
2405    'ios': device.ios
2406  }, {
2407    'css-mode': params.cssMode
2408  }, {
2409    'centered': params.cssMode && params.centeredSlides
2410  }, {
2411    'watch-progress': params.watchSlidesProgress
2412  }], params.containerModifierClass);
2413  classNames.push(...suffixes);
2414  el.classList.add(...classNames);
2415  swiper.emitContainerClasses();
2416}
2417
2418/***/ }),
2419
vendor: 936 bytes, lines 2420-2437
2420/***/ "./node_modules/swiper/core/classes/index.js":
2421/*!***************************************************!*\
2422  !*** ./node_modules/swiper/core/classes/index.js ***!
2423  \***************************************************/
2424/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2425
2426__webpack_require__.r(__webpack_exports__);
2427/* harmony import */ var _addClasses_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./addClasses.js */ "./node_modules/swiper/core/classes/addClasses.js");
2428/* harmony import */ var _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeClasses.js */ "./node_modules/swiper/core/classes/removeClasses.js");
2429
2430
2431/* harmony default export */ __webpack_exports__["default"] = ({
2432  addClasses: _addClasses_js__WEBPACK_IMPORTED_MODULE_0__["default"],
2433  removeClasses: _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__["default"]
2434});
2435
2436/***/ }),
2437
vendor: 755 bytes, lines 2438-2459
2438/***/ "./node_modules/swiper/core/classes/removeClasses.js":
2439/*!***********************************************************!*\
2440  !*** ./node_modules/swiper/core/classes/removeClasses.js ***!
2441  \***********************************************************/
2442/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2443
2444__webpack_require__.r(__webpack_exports__);
2445/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2446/* harmony export */   "default": function() { return /* binding */ removeClasses; }
2447/* harmony export */ });
2448function removeClasses() {
2449  const swiper = this;
2450  const {
2451    el,
2452    classNames
2453  } = swiper;
2454  el.classList.remove(...classNames);
2455  swiper.emitContainerClasses();
2456}
2457
2458/***/ }),
2459
vendor: 23,627 bytes, lines 2460-3088
2460/***/ "./node_modules/swiper/core/core.js":
2461/*!******************************************!*\
2462  !*** ./node_modules/swiper/core/core.js ***!
2463  \******************************************/
2464/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2465
2466__webpack_require__.r(__webpack_exports__);
2467/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
2468/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
2469/* harmony import */ var _shared_get_support_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/get-support.js */ "./node_modules/swiper/shared/get-support.js");
2470/* harmony import */ var _shared_get_device_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/get-device.js */ "./node_modules/swiper/shared/get-device.js");
2471/* harmony import */ var _shared_get_browser_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/get-browser.js */ "./node_modules/swiper/shared/get-browser.js");
2472/* harmony import */ var _modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/resize/resize.js */ "./node_modules/swiper/core/modules/resize/resize.js");
2473/* harmony import */ var _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/observer/observer.js */ "./node_modules/swiper/core/modules/observer/observer.js");
2474/* harmony import */ var _events_emitter_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./events-emitter.js */ "./node_modules/swiper/core/events-emitter.js");
2475/* harmony import */ var _update_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./update/index.js */ "./node_modules/swiper/core/update/index.js");
2476/* harmony import */ var _translate_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./translate/index.js */ "./node_modules/swiper/core/translate/index.js");
2477/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./transition/index.js */ "./node_modules/swiper/core/transition/index.js");
2478/* harmony import */ var _slide_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./slide/index.js */ "./node_modules/swiper/core/slide/index.js");
2479/* harmony import */ var _loop_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./loop/index.js */ "./node_modules/swiper/core/loop/index.js");
2480/* harmony import */ var _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./grab-cursor/index.js */ "./node_modules/swiper/core/grab-cursor/index.js");
2481/* harmony import */ var _events_index_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./events/index.js */ "./node_modules/swiper/core/events/index.js");
2482/* harmony import */ var _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./breakpoints/index.js */ "./node_modules/swiper/core/breakpoints/index.js");
2483/* harmony import */ var _classes_index_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./classes/index.js */ "./node_modules/swiper/core/classes/index.js");
2484/* harmony import */ var _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./check-overflow/index.js */ "./node_modules/swiper/core/check-overflow/index.js");
2485/* harmony import */ var _defaults_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./defaults.js */ "./node_modules/swiper/core/defaults.js");
2486/* harmony import */ var _moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./moduleExtendParams.js */ "./node_modules/swiper/core/moduleExtendParams.js");
2487/* harmony import */ var _shared_process_lazy_preloader_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../shared/process-lazy-preloader.js */ "./node_modules/swiper/shared/process-lazy-preloader.js");
2488/* eslint no-param-reassign: "off" */
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510const prototypes = {
2511  eventsEmitter: _events_emitter_js__WEBPACK_IMPORTED_MODULE_7__["default"],
2512  update: _update_index_js__WEBPACK_IMPORTED_MODULE_8__["default"],
2513  translate: _translate_index_js__WEBPACK_IMPORTED_MODULE_9__["default"],
2514  transition: _transition_index_js__WEBPACK_IMPORTED_MODULE_10__["default"],
2515  slide: _slide_index_js__WEBPACK_IMPORTED_MODULE_11__["default"],
2516  loop: _loop_index_js__WEBPACK_IMPORTED_MODULE_12__["default"],
2517  grabCursor: _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_13__["default"],
2518  events: _events_index_js__WEBPACK_IMPORTED_MODULE_14__["default"],
2519  breakpoints: _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_15__["default"],
2520  checkOverflow: _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_17__["default"],
2521  classes: _classes_index_js__WEBPACK_IMPORTED_MODULE_16__["default"]
2522};
2523const extendedDefaults = {};
2524class Swiper {
2525  constructor(...args) {
2526    let el;
2527    let params;
2528    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
2529      params = args[0];
2530    } else {
2531      [el, params] = args;
2532    }
2533    if (!params) params = {};
2534    params = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.extend)({}, params);
2535    if (el && !params.el) params.el = el;
2536    const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
2537    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {
2538      const swipers = [];
2539      document.querySelectorAll(params.el).forEach(containerEl => {
2540        const newParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.extend)({}, params, {
2541          el: containerEl
2542        });
2543        swipers.push(new Swiper(newParams));
2544      });
2545      // eslint-disable-next-line no-constructor-return
2546      return swipers;
2547    }
2548
2549    // Swiper Instance
2550    const swiper = this;
2551    swiper.__swiper__ = true;
2552    swiper.support = (0,_shared_get_support_js__WEBPACK_IMPORTED_MODULE_2__.getSupport)();
2553    swiper.device = (0,_shared_get_device_js__WEBPACK_IMPORTED_MODULE_3__.getDevice)({
2554      userAgent: params.userAgent
2555    });
2556    swiper.browser = (0,_shared_get_browser_js__WEBPACK_IMPORTED_MODULE_4__.getBrowser)();
2557    swiper.eventsListeners = {};
2558    swiper.eventsAnyListeners = [];
2559    swiper.modules = [...swiper.__modules__];
2560    if (params.modules && Array.isArray(params.modules)) {
2561      swiper.modules.push(...params.modules);
2562    }
2563    const allModulesParams = {};
2564    swiper.modules.forEach(mod => {
2565      mod({
2566        params,
2567        swiper,
2568        extendParams: (0,_moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_19__["default"])(params, allModulesParams),
2569        on: swiper.on.bind(swiper),
2570        once: swiper.once.bind(swiper),
2571        off: swiper.off.bind(swiper),
2572        emit: swiper.emit.bind(swiper)
2573      });
2574    });
2575
2576    // Extend defaults with modules params
2577    const swiperParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.extend)({}, _defaults_js__WEBPACK_IMPORTED_MODULE_18__["default"], allModulesParams);
2578
2579    // Extend defaults with passed params
2580    swiper.params = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.extend)({}, swiperParams, extendedDefaults, params);
2581    swiper.originalParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.extend)({}, swiper.params);
2582    swiper.passedParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.extend)({}, params);
2583
2584    // add event listeners
2585    if (swiper.params && swiper.params.on) {
2586      Object.keys(swiper.params.on).forEach(eventName => {
2587        swiper.on(eventName, swiper.params.on[eventName]);
2588      });
2589    }
2590    if (swiper.params && swiper.params.onAny) {
2591      swiper.onAny(swiper.params.onAny);
2592    }
2593
2594    // Extend Swiper
2595    Object.assign(swiper, {
2596      enabled: swiper.params.enabled,
2597      el,
2598      // Classes
2599      classNames: [],
2600      // Slides
2601      slides: [],
2602      slidesGrid: [],
2603      snapGrid: [],
2604      slidesSizesGrid: [],
2605      // isDirection
2606      isHorizontal() {
2607        return swiper.params.direction === 'horizontal';
2608      },
2609      isVertical() {
2610        return swiper.params.direction === 'vertical';
2611      },
2612      // Indexes
2613      activeIndex: 0,
2614      realIndex: 0,
2615      //
2616      isBeginning: true,
2617      isEnd: false,
2618      // Props
2619      translate: 0,
2620      previousTranslate: 0,
2621      progress: 0,
2622      velocity: 0,
2623      animating: false,
2624      cssOverflowAdjustment() {
2625        // Returns 0 unless `translate` is > 2**23
2626        // Should be subtracted from css values to prevent overflow
2627        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;
2628      },
2629      // Locks
2630      allowSlideNext: swiper.params.allowSlideNext,
2631      allowSlidePrev: swiper.params.allowSlidePrev,
2632      // Touch Events
2633      touchEventsData: {
2634        isTouched: undefined,
2635        isMoved: undefined,
2636        allowTouchCallbacks: undefined,
2637        touchStartTime: undefined,
2638        isScrolling: undefined,
2639        currentTranslate: undefined,
2640        startTranslate: undefined,
2641        allowThresholdMove: undefined,
2642        // Form elements to match
2643        focusableElements: swiper.params.focusableElements,
2644        // Last click time
2645        lastClickTime: 0,
2646        clickTimeout: undefined,
2647        // Velocities
2648        velocities: [],
2649        allowMomentumBounce: undefined,
2650        startMoving: undefined,
2651        evCache: []
2652      },
2653      // Clicks
2654      allowClick: true,
2655      // Touches
2656      allowTouchMove: swiper.params.allowTouchMove,
2657      touches: {
2658        startX: 0,
2659        startY: 0,
2660        currentX: 0,
2661        currentY: 0,
2662        diff: 0
2663      },
2664      // Images
2665      imagesToLoad: [],
2666      imagesLoaded: 0
2667    });
2668    swiper.emit('_swiper');
2669
2670    // Init
2671    if (swiper.params.init) {
2672      swiper.init();
2673    }
2674
2675    // Return app instance
2676    // eslint-disable-next-line no-constructor-return
2677    return swiper;
2678  }
2679  getSlideIndex(slideEl) {
2680    const {
2681      slidesEl,
2682      params
2683    } = this;
2684    const slides = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementChildren)(slidesEl, `.${params.slideClass}, swiper-slide`);
2685    const firstSlideIndex = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementIndex)(slides[0]);
2686    return (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementIndex)(slideEl) - firstSlideIndex;
2687  }
2688  getSlideIndexByData(index) {
2689    return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);
2690  }
2691  recalcSlides() {
2692    const swiper = this;
2693    const {
2694      slidesEl,
2695      params
2696    } = swiper;
2697    swiper.slides = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementChildren)(slidesEl, `.${params.slideClass}, swiper-slide`);
2698  }
2699  enable() {
2700    const swiper = this;
2701    if (swiper.enabled) return;
2702    swiper.enabled = true;
2703    if (swiper.params.grabCursor) {
2704      swiper.setGrabCursor();
2705    }
2706    swiper.emit('enable');
2707  }
2708  disable() {
2709    const swiper = this;
2710    if (!swiper.enabled) return;
2711    swiper.enabled = false;
2712    if (swiper.params.grabCursor) {
2713      swiper.unsetGrabCursor();
2714    }
2715    swiper.emit('disable');
2716  }
2717  setProgress(progress, speed) {
2718    const swiper = this;
2719    progress = Math.min(Math.max(progress, 0), 1);
2720    const min = swiper.minTranslate();
2721    const max = swiper.maxTranslate();
2722    const current = (max - min) * progress + min;
2723    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
2724    swiper.updateActiveIndex();
2725    swiper.updateSlidesClasses();
2726  }
2727  emitContainerClasses() {
2728    const swiper = this;
2729    if (!swiper.params._emitClasses || !swiper.el) return;
2730    const cls = swiper.el.className.split(' ').filter(className => {
2731      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
2732    });
2733    swiper.emit('_containerClasses', cls.join(' '));
2734  }
2735  getSlideClasses(slideEl) {
2736    const swiper = this;
2737    if (swiper.destroyed) return '';
2738    return slideEl.className.split(' ').filter(className => {
2739      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
2740    }).join(' ');
2741  }
2742  emitSlidesClasses() {
2743    const swiper = this;
2744    if (!swiper.params._emitClasses || !swiper.el) return;
2745    const updates = [];
2746    swiper.slides.forEach(slideEl => {
2747      const classNames = swiper.getSlideClasses(slideEl);
2748      updates.push({
2749        slideEl,
2750        classNames
2751      });
2752      swiper.emit('_slideClass', slideEl, classNames);
2753    });
2754    swiper.emit('_slideClasses', updates);
2755  }
2756  slidesPerViewDynamic(view = 'current', exact = false) {
2757    const swiper = this;
2758    const {
2759      params,
2760      slides,
2761      slidesGrid,
2762      slidesSizesGrid,
2763      size: swiperSize,
2764      activeIndex
2765    } = swiper;
2766    let spv = 1;
2767    if (params.centeredSlides) {
2768      let slideSize = slides[activeIndex].swiperSlideSize;
2769      let breakLoop;
2770      for (let i = activeIndex + 1; i < slides.length; i += 1) {
2771        if (slides[i] && !breakLoop) {
2772          slideSize += slides[i].swiperSlideSize;
2773          spv += 1;
2774          if (slideSize > swiperSize) breakLoop = true;
2775        }
2776      }
2777      for (let i = activeIndex - 1; i >= 0; i -= 1) {
2778        if (slides[i] && !breakLoop) {
2779          slideSize += slides[i].swiperSlideSize;
2780          spv += 1;
2781          if (slideSize > swiperSize) breakLoop = true;
2782        }
2783      }
2784    } else {
2785      // eslint-disable-next-line
2786      if (view === 'current') {
2787        for (let i = activeIndex + 1; i < slides.length; i += 1) {
2788          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
2789          if (slideInView) {
2790            spv += 1;
2791          }
2792        }
2793      } else {
2794        // previous
2795        for (let i = activeIndex - 1; i >= 0; i -= 1) {
2796          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
2797          if (slideInView) {
2798            spv += 1;
2799          }
2800        }
2801      }
2802    }
2803    return spv;
2804  }
2805  update() {
2806    const swiper = this;
2807    if (!swiper || swiper.destroyed) return;
2808    const {
2809      snapGrid,
2810      params
2811    } = swiper;
2812    // Breakpoints
2813    if (params.breakpoints) {
2814      swiper.setBreakpoint();
2815    }
2816    [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => {
2817      if (imageEl.complete) {
2818        (0,_shared_process_lazy_preloader_js__WEBPACK_IMPORTED_MODULE_20__.processLazyPreloader)(swiper, imageEl);
2819      }
2820    });
2821    swiper.updateSize();
2822    swiper.updateSlides();
2823    swiper.updateProgress();
2824    swiper.updateSlidesClasses();
2825    function setTranslate() {
2826      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
2827      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
2828      swiper.setTranslate(newTranslate);
2829      swiper.updateActiveIndex();
2830      swiper.updateSlidesClasses();
2831    }
2832    let translated;
2833    if (swiper.params.freeMode && swiper.params.freeMode.enabled) {
2834      setTranslate();
2835      if (swiper.params.autoHeight) {
2836        swiper.updateAutoHeight();
2837      }
2838    } else {
2839      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
2840        const slides = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides : swiper.slides;
2841        translated = swiper.slideTo(slides.length - 1, 0, false, true);
2842      } else {
2843        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
2844      }
2845      if (!translated) {
2846        setTranslate();
2847      }
2848    }
2849    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
2850      swiper.checkOverflow();
2851    }
2852    swiper.emit('update');
2853  }
2854  changeDirection(newDirection, needUpdate = true) {
2855    const swiper = this;
2856    const currentDirection = swiper.params.direction;
2857    if (!newDirection) {
2858      // eslint-disable-next-line
2859      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
2860    }
2861    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
2862      return swiper;
2863    }
2864    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);
2865    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);
2866    swiper.emitContainerClasses();
2867    swiper.params.direction = newDirection;
2868    swiper.slides.forEach(slideEl => {
2869      if (newDirection === 'vertical') {
2870        slideEl.style.width = '';
2871      } else {
2872        slideEl.style.height = '';
2873      }
2874    });
2875    swiper.emit('changeDirection');
2876    if (needUpdate) swiper.update();
2877    return swiper;
2878  }
2879  changeLanguageDirection(direction) {
2880    const swiper = this;
2881    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;
2882    swiper.rtl = direction === 'rtl';
2883    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
2884    if (swiper.rtl) {
2885      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);
2886      swiper.el.dir = 'rtl';
2887    } else {
2888      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);
2889      swiper.el.dir = 'ltr';
2890    }
2891    swiper.update();
2892  }
2893  mount(element) {
2894    const swiper = this;
2895    if (swiper.mounted) return true;
2896
2897    // Find el
2898    let el = element || swiper.params.el;
2899    if (typeof el === 'string') {
2900      el = document.querySelector(el);
2901    }
2902    if (!el) {
2903      return false;
2904    }
2905    el.swiper = swiper;
2906    if (el.shadowEl) {
2907      swiper.isElement = true;
2908    }
2909    const getWrapperSelector = () => {
2910      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;
2911    };
2912    const getWrapper = () => {
2913      if (el && el.shadowRoot && el.shadowRoot.querySelector) {
2914        const res = el.shadowRoot.querySelector(getWrapperSelector());
2915        // Children needs to return slot items
2916        return res;
2917      }
2918      return (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementChildren)(el, getWrapperSelector())[0];
2919    };
2920    // Find Wrapper
2921    let wrapperEl = getWrapper();
2922    if (!wrapperEl && swiper.params.createElements) {
2923      wrapperEl = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.createElement)('div', swiper.params.wrapperClass);
2924      el.append(wrapperEl);
2925      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementChildren)(el, `.${swiper.params.slideClass}`).forEach(slideEl => {
2926        wrapperEl.append(slideEl);
2927      });
2928    }
2929    Object.assign(swiper, {
2930      el,
2931      wrapperEl,
2932      slidesEl: swiper.isElement ? el : wrapperEl,
2933      mounted: true,
2934      // RTL
2935      rtl: el.dir.toLowerCase() === 'rtl' || (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementStyle)(el, 'direction') === 'rtl',
2936      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementStyle)(el, 'direction') === 'rtl'),
2937      wrongRTL: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementStyle)(wrapperEl, 'display') === '-webkit-box'
2938    });
2939    return true;
2940  }
2941  init(el) {
2942    const swiper = this;
2943    if (swiper.initialized) return swiper;
2944    const mounted = swiper.mount(el);
2945    if (mounted === false) return swiper;
2946    swiper.emit('beforeInit');
2947
2948    // Set breakpoint
2949    if (swiper.params.breakpoints) {
2950      swiper.setBreakpoint();
2951    }
2952
2953    // Add Classes
2954    swiper.addClasses();
2955
2956    // Update size
2957    swiper.updateSize();
2958
2959    // Update slides
2960    swiper.updateSlides();
2961    if (swiper.params.watchOverflow) {
2962      swiper.checkOverflow();
2963    }
2964
2965    // Set Grab Cursor
2966    if (swiper.params.grabCursor && swiper.enabled) {
2967      swiper.setGrabCursor();
2968    }
2969
2970    // Slide To Initial Slide
2971    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
2972      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);
2973    } else {
2974      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
2975    }
2976
2977    // Create loop
2978    if (swiper.params.loop) {
2979      swiper.loopCreate();
2980    }
2981
2982    // Attach events
2983    swiper.attachEvents();
2984    [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => {
2985      if (imageEl.complete) {
2986        (0,_shared_process_lazy_preloader_js__WEBPACK_IMPORTED_MODULE_20__.processLazyPreloader)(swiper, imageEl);
2987      } else {
2988        imageEl.addEventListener('load', e => {
2989          (0,_shared_process_lazy_preloader_js__WEBPACK_IMPORTED_MODULE_20__.processLazyPreloader)(swiper, e.target);
2990        });
2991      }
2992    });
2993    (0,_shared_process_lazy_preloader_js__WEBPACK_IMPORTED_MODULE_20__.preload)(swiper);
2994
2995    // Init Flag
2996    swiper.initialized = true;
2997    (0,_shared_process_lazy_preloader_js__WEBPACK_IMPORTED_MODULE_20__.preload)(swiper);
2998
2999    // Emit
3000    swiper.emit('init');
3001    swiper.emit('afterInit');
3002    return swiper;
3003  }
3004  destroy(deleteInstance = true, cleanStyles = true) {
3005    const swiper = this;
3006    const {
3007      params,
3008      el,
3009      wrapperEl,
3010      slides
3011    } = swiper;
3012    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
3013      return null;
3014    }
3015    swiper.emit('beforeDestroy');
3016
3017    // Init Flag
3018    swiper.initialized = false;
3019
3020    // Detach events
3021    swiper.detachEvents();
3022
3023    // Destroy loop
3024    if (params.loop) {
3025      swiper.loopDestroy();
3026    }
3027
3028    // Cleanup styles
3029    if (cleanStyles) {
3030      swiper.removeClasses();
3031      el.removeAttribute('style');
3032      wrapperEl.removeAttribute('style');
3033      if (slides && slides.length) {
3034        slides.forEach(slideEl => {
3035          slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);
3036          slideEl.removeAttribute('style');
3037          slideEl.removeAttribute('data-swiper-slide-index');
3038        });
3039      }
3040    }
3041    swiper.emit('destroy');
3042
3043    // Detach emitter events
3044    Object.keys(swiper.eventsListeners).forEach(eventName => {
3045      swiper.off(eventName);
3046    });
3047    if (deleteInstance !== false) {
3048      swiper.el.swiper = null;
3049      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.deleteProps)(swiper);
3050    }
3051    swiper.destroyed = true;
3052    return null;
3053  }
3054  static extendDefaults(newDefaults) {
3055    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.extend)(extendedDefaults, newDefaults);
3056  }
3057  static get extendedDefaults() {
3058    return extendedDefaults;
3059  }
3060  static get defaults() {
3061    return _defaults_js__WEBPACK_IMPORTED_MODULE_18__["default"];
3062  }
3063  static installModule(mod) {
3064    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];
3065    const modules = Swiper.prototype.__modules__;
3066    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {
3067      modules.push(mod);
3068    }
3069  }
3070  static use(module) {
3071    if (Array.isArray(module)) {
3072      module.forEach(m => Swiper.installModule(m));
3073      return Swiper;
3074    }
3075    Swiper.installModule(module);
3076    return Swiper;
3077  }
3078}
3079Object.keys(prototypes).forEach(prototypeGroup => {
3080  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {
3081    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
3082  });
3083});
3084Swiper.use([_modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_5__["default"], _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_6__["default"]]);
3085/* harmony default export */ __webpack_exports__["default"] = (Swiper);
3086
3087/***/ }),
3088
vendor: 3,257 bytes, lines 3089-3215
3089/***/ "./node_modules/swiper/core/defaults.js":
3090/*!**********************************************!*\
3091  !*** ./node_modules/swiper/core/defaults.js ***!
3092  \**********************************************/
3093/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3094
3095__webpack_require__.r(__webpack_exports__);
3096/* harmony default export */ __webpack_exports__["default"] = ({
3097  init: true,
3098  direction: 'horizontal',
3099  oneWayMovement: false,
3100  touchEventsTarget: 'wrapper',
3101  initialSlide: 0,
3102  speed: 300,
3103  cssMode: false,
3104  updateOnWindowResize: true,
3105  resizeObserver: true,
3106  nested: false,
3107  createElements: false,
3108  enabled: true,
3109  focusableElements: 'input, select, option, textarea, button, video, label',
3110  // Overrides
3111  width: null,
3112  height: null,
3113  //
3114  preventInteractionOnTransition: false,
3115  // ssr
3116  userAgent: null,
3117  url: null,
3118  // To support iOS's swipe-to-go-back gesture (when being used in-app).
3119  edgeSwipeDetection: false,
3120  edgeSwipeThreshold: 20,
3121  // Autoheight
3122  autoHeight: false,
3123  // Set wrapper width
3124  setWrapperSize: false,
3125  // Virtual Translate
3126  virtualTranslate: false,
3127  // Effects
3128  effect: 'slide',
3129  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
3130
3131  // Breakpoints
3132  breakpoints: undefined,
3133  breakpointsBase: 'window',
3134  // Slides grid
3135  spaceBetween: 0,
3136  slidesPerView: 1,
3137  slidesPerGroup: 1,
3138  slidesPerGroupSkip: 0,
3139  slidesPerGroupAuto: false,
3140  centeredSlides: false,
3141  centeredSlidesBounds: false,
3142  slidesOffsetBefore: 0,
3143  // in px
3144  slidesOffsetAfter: 0,
3145  // in px
3146  normalizeSlideIndex: true,
3147  centerInsufficientSlides: false,
3148  // Disable swiper and hide navigation when container not overflow
3149  watchOverflow: true,
3150  // Round length
3151  roundLengths: false,
3152  // Touches
3153  touchRatio: 1,
3154  touchAngle: 45,
3155  simulateTouch: true,
3156  shortSwipes: true,
3157  longSwipes: true,
3158  longSwipesRatio: 0.5,
3159  longSwipesMs: 300,
3160  followFinger: true,
3161  allowTouchMove: true,
3162  threshold: 5,
3163  touchMoveStopPropagation: false,
3164  touchStartPreventDefault: true,
3165  touchStartForcePreventDefault: false,
3166  touchReleaseOnEdges: false,
3167  // Unique Navigation Elements
3168  uniqueNavElements: true,
3169  // Resistance
3170  resistance: true,
3171  resistanceRatio: 0.85,
3172  // Progress
3173  watchSlidesProgress: false,
3174  // Cursor
3175  grabCursor: false,
3176  // Clicks
3177  preventClicks: true,
3178  preventClicksPropagation: true,
3179  slideToClickedSlide: false,
3180  // loop
3181  loop: false,
3182  loopedSlides: null,
3183  loopPreventsSliding: true,
3184  // rewind
3185  rewind: false,
3186  // Swiping/no swiping
3187  allowSlidePrev: true,
3188  allowSlideNext: true,
3189  swipeHandler: null,
3190  // '.swipe-handler',
3191  noSwiping: true,
3192  noSwipingClass: 'swiper-no-swiping',
3193  noSwipingSelector: null,
3194  // Passive Listeners
3195  passiveListeners: true,
3196  maxBackfaceHiddenSlides: 10,
3197  // NS
3198  containerModifierClass: 'swiper-',
3199  // NEW
3200  slideClass: 'swiper-slide',
3201  slideActiveClass: 'swiper-slide-active',
3202  slideVisibleClass: 'swiper-slide-visible',
3203  slideNextClass: 'swiper-slide-next',
3204  slidePrevClass: 'swiper-slide-prev',
3205  wrapperClass: 'swiper-wrapper',
3206  lazyPreloaderClass: 'swiper-lazy-preloader',
3207  lazyPreloadPrevNext: 0,
3208  // Callbacks
3209  runCallbacksOnInit: true,
3210  // Internals
3211  _emitClasses: false
3212});
3213
3214/***/ }),
3215
vendor: 3,708 bytes, lines 3216-3323
3216/***/ "./node_modules/swiper/core/events-emitter.js":
3217/*!****************************************************!*\
3218  !*** ./node_modules/swiper/core/events-emitter.js ***!
3219  \****************************************************/
3220/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3221
3222__webpack_require__.r(__webpack_exports__);
3223/* eslint-disable no-underscore-dangle */
3224
3225/* harmony default export */ __webpack_exports__["default"] = ({
3226  on(events, handler, priority) {
3227    const self = this;
3228    if (!self.eventsListeners || self.destroyed) return self;
3229    if (typeof handler !== 'function') return self;
3230    const method = priority ? 'unshift' : 'push';
3231    events.split(' ').forEach(event => {
3232      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
3233      self.eventsListeners[event][method](handler);
3234    });
3235    return self;
3236  },
3237  once(events, handler, priority) {
3238    const self = this;
3239    if (!self.eventsListeners || self.destroyed) return self;
3240    if (typeof handler !== 'function') return self;
3241    function onceHandler(...args) {
3242      self.off(events, onceHandler);
3243      if (onceHandler.__emitterProxy) {
3244        delete onceHandler.__emitterProxy;
3245      }
3246      handler.apply(self, args);
3247    }
3248    onceHandler.__emitterProxy = handler;
3249    return self.on(events, onceHandler, priority);
3250  },
3251  onAny(handler, priority) {
3252    const self = this;
3253    if (!self.eventsListeners || self.destroyed) return self;
3254    if (typeof handler !== 'function') return self;
3255    const method = priority ? 'unshift' : 'push';
3256    if (self.eventsAnyListeners.indexOf(handler) < 0) {
3257      self.eventsAnyListeners[method](handler);
3258    }
3259    return self;
3260  },
3261  offAny(handler) {
3262    const self = this;
3263    if (!self.eventsListeners || self.destroyed) return self;
3264    if (!self.eventsAnyListeners) return self;
3265    const index = self.eventsAnyListeners.indexOf(handler);
3266    if (index >= 0) {
3267      self.eventsAnyListeners.splice(index, 1);
3268    }
3269    return self;
3270  },
3271  off(events, handler) {
3272    const self = this;
3273    if (!self.eventsListeners || self.destroyed) return self;
3274    if (!self.eventsListeners) return self;
3275    events.split(' ').forEach(event => {
3276      if (typeof handler === 'undefined') {
3277        self.eventsListeners[event] = [];
3278      } else if (self.eventsListeners[event]) {
3279        self.eventsListeners[event].forEach((eventHandler, index) => {
3280          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
3281            self.eventsListeners[event].splice(index, 1);
3282          }
3283        });
3284      }
3285    });
3286    return self;
3287  },
3288  emit(...args) {
3289    const self = this;
3290    if (!self.eventsListeners || self.destroyed) return self;
3291    if (!self.eventsListeners) return self;
3292    let events;
3293    let data;
3294    let context;
3295    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
3296      events = args[0];
3297      data = args.slice(1, args.length);
3298      context = self;
3299    } else {
3300      events = args[0].events;
3301      data = args[0].data;
3302      context = args[0].context || self;
3303    }
3304    data.unshift(context);
3305    const eventsArray = Array.isArray(events) ? events : events.split(' ');
3306    eventsArray.forEach(event => {
3307      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
3308        self.eventsAnyListeners.forEach(eventHandler => {
3309          eventHandler.apply(context, [event, ...data]);
3310        });
3311      }
3312      if (self.eventsListeners && self.eventsListeners[event]) {
3313        self.eventsListeners[event].forEach(eventHandler => {
3314          eventHandler.apply(context, data);
3315        });
3316      }
3317    });
3318    return self;
3319  }
3320});
3321
3322/***/ }),
3323
vendor: 4,328 bytes, lines 3324-3432
3324/***/ "./node_modules/swiper/core/events/index.js":
3325/*!**************************************************!*\
3326  !*** ./node_modules/swiper/core/events/index.js ***!
3327  \**************************************************/
3328/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3329
3330__webpack_require__.r(__webpack_exports__);
3331/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
3332/* harmony import */ var _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onTouchStart.js */ "./node_modules/swiper/core/events/onTouchStart.js");
3333/* harmony import */ var _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./onTouchMove.js */ "./node_modules/swiper/core/events/onTouchMove.js");
3334/* harmony import */ var _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onTouchEnd.js */ "./node_modules/swiper/core/events/onTouchEnd.js");
3335/* harmony import */ var _onResize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./onResize.js */ "./node_modules/swiper/core/events/onResize.js");
3336/* harmony import */ var _onClick_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onClick.js */ "./node_modules/swiper/core/events/onClick.js");
3337/* harmony import */ var _onScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./onScroll.js */ "./node_modules/swiper/core/events/onScroll.js");
3338/* harmony import */ var _onLoad_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./onLoad.js */ "./node_modules/swiper/core/events/onLoad.js");
3339
3340
3341
3342
3343
3344
3345
3346
3347let dummyEventAttached = false;
3348function dummyEventListener() {}
3349const events = (swiper, method) => {
3350  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
3351  const {
3352    params,
3353    el,
3354    wrapperEl,
3355    device
3356  } = swiper;
3357  const capture = !!params.nested;
3358  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
3359  const swiperMethod = method;
3360
3361  // Touch Events
3362  el[domMethod]('pointerdown', swiper.onTouchStart, {
3363    passive: false
3364  });
3365  document[domMethod]('pointermove', swiper.onTouchMove, {
3366    passive: false,
3367    capture
3368  });
3369  document[domMethod]('pointerup', swiper.onTouchEnd, {
3370    passive: true
3371  });
3372  document[domMethod]('pointercancel', swiper.onTouchEnd, {
3373    passive: true
3374  });
3375  document[domMethod]('pointerout', swiper.onTouchEnd, {
3376    passive: true
3377  });
3378  document[domMethod]('pointerleave', swiper.onTouchEnd, {
3379    passive: true
3380  });
3381
3382  // Prevent Links Clicks
3383  if (params.preventClicks || params.preventClicksPropagation) {
3384    el[domMethod]('click', swiper.onClick, true);
3385  }
3386  if (params.cssMode) {
3387    wrapperEl[domMethod]('scroll', swiper.onScroll);
3388  }
3389
3390  // Resize handler
3391  if (params.updateOnWindowResize) {
3392    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true);
3393  } else {
3394    swiper[swiperMethod]('observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true);
3395  }
3396
3397  // Images loader
3398  el[domMethod]('load', swiper.onLoad, {
3399    capture: true
3400  });
3401};
3402function attachEvents() {
3403  const swiper = this;
3404  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
3405  const {
3406    params
3407  } = swiper;
3408  swiper.onTouchStart = _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper);
3409  swiper.onTouchMove = _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper);
3410  swiper.onTouchEnd = _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper);
3411  if (params.cssMode) {
3412    swiper.onScroll = _onScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"].bind(swiper);
3413  }
3414  swiper.onClick = _onClick_js__WEBPACK_IMPORTED_MODULE_5__["default"].bind(swiper);
3415  swiper.onLoad = _onLoad_js__WEBPACK_IMPORTED_MODULE_7__["default"].bind(swiper);
3416  if (!dummyEventAttached) {
3417    document.addEventListener('touchstart', dummyEventListener);
3418    dummyEventAttached = true;
3419  }
3420  events(swiper, 'on');
3421}
3422function detachEvents() {
3423  const swiper = this;
3424  events(swiper, 'off');
3425}
3426/* harmony default export */ __webpack_exports__["default"] = ({
3427  attachEvents,
3428  detachEvents
3429});
3430
3431/***/ }),
3432
vendor: 857 bytes, lines 3433-3456
3433/***/ "./node_modules/swiper/core/events/onClick.js":
3434/*!****************************************************!*\
3435  !*** ./node_modules/swiper/core/events/onClick.js ***!
3436  \****************************************************/
3437/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3438
3439__webpack_require__.r(__webpack_exports__);
3440/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3441/* harmony export */   "default": function() { return /* binding */ onClick; }
3442/* harmony export */ });
3443function onClick(e) {
3444  const swiper = this;
3445  if (!swiper.enabled) return;
3446  if (!swiper.allowClick) {
3447    if (swiper.params.preventClicks) e.preventDefault();
3448    if (swiper.params.preventClicksPropagation && swiper.animating) {
3449      e.stopPropagation();
3450      e.stopImmediatePropagation();
3451    }
3452  }
3453}
3454
3455/***/ }),
3456
vendor: 1,054 bytes, lines 3457-3479
3457/***/ "./node_modules/swiper/core/events/onLoad.js":
3458/*!***************************************************!*\
3459  !*** ./node_modules/swiper/core/events/onLoad.js ***!
3460  \***************************************************/
3461/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3462
3463__webpack_require__.r(__webpack_exports__);
3464/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3465/* harmony export */   "default": function() { return /* binding */ onLoad; }
3466/* harmony export */ });
3467/* harmony import */ var _shared_process_lazy_preloader_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/process-lazy-preloader.js */ "./node_modules/swiper/shared/process-lazy-preloader.js");
3468
3469function onLoad(e) {
3470  const swiper = this;
3471  (0,_shared_process_lazy_preloader_js__WEBPACK_IMPORTED_MODULE_0__.processLazyPreloader)(swiper, e.target);
3472  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {
3473    return;
3474  }
3475  swiper.update();
3476}
3477
3478/***/ }),
3479
vendor: 2,111 bytes, lines 3480-3544
3480/***/ "./node_modules/swiper/core/events/onResize.js":
3481/*!*****************************************************!*\
3482  !*** ./node_modules/swiper/core/events/onResize.js ***!
3483  \*****************************************************/
3484/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3485
3486__webpack_require__.r(__webpack_exports__);
3487/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3488/* harmony export */   "default": function() { return /* binding */ onResize; }
3489/* harmony export */ });
3490function onResize() {
3491  const swiper = this;
3492  const {
3493    params,
3494    el
3495  } = swiper;
3496  if (el && el.offsetWidth === 0) return;
3497
3498  // Breakpoints
3499  if (params.breakpoints) {
3500    swiper.setBreakpoint();
3501  }
3502
3503  // Save locks
3504  const {
3505    allowSlideNext,
3506    allowSlidePrev,
3507    snapGrid
3508  } = swiper;
3509  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
3510
3511  // Disable locks on resize
3512  swiper.allowSlideNext = true;
3513  swiper.allowSlidePrev = true;
3514  swiper.updateSize();
3515  swiper.updateSlides();
3516  swiper.updateSlidesClasses();
3517  const isVirtualLoop = isVirtual && params.loop;
3518  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {
3519    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
3520  } else {
3521    if (swiper.params.loop && !isVirtual) {
3522      swiper.slideToLoop(swiper.realIndex, 0, false, true);
3523    } else {
3524      swiper.slideTo(swiper.activeIndex, 0, false, true);
3525    }
3526  }
3527  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
3528    clearTimeout(swiper.autoplay.resizeTimeout);
3529    swiper.autoplay.resizeTimeout = setTimeout(() => {
3530      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
3531        swiper.autoplay.resume();
3532      }
3533    }, 500);
3534  }
3535  // Return locks after resize
3536  swiper.allowSlidePrev = allowSlidePrev;
3537  swiper.allowSlideNext = allowSlideNext;
3538  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
3539    swiper.checkOverflow();
3540  }
3541}
3542
3543/***/ }),
3544
vendor: 1,441 bytes, lines 3545-3587
3545/***/ "./node_modules/swiper/core/events/onScroll.js":
3546/*!*****************************************************!*\
3547  !*** ./node_modules/swiper/core/events/onScroll.js ***!
3548  \*****************************************************/
3549/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3550
3551__webpack_require__.r(__webpack_exports__);
3552/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3553/* harmony export */   "default": function() { return /* binding */ onScroll; }
3554/* harmony export */ });
3555function onScroll() {
3556  const swiper = this;
3557  const {
3558    wrapperEl,
3559    rtlTranslate,
3560    enabled
3561  } = swiper;
3562  if (!enabled) return;
3563  swiper.previousTranslate = swiper.translate;
3564  if (swiper.isHorizontal()) {
3565    swiper.translate = -wrapperEl.scrollLeft;
3566  } else {
3567    swiper.translate = -wrapperEl.scrollTop;
3568  }
3569  // eslint-disable-next-line
3570  if (swiper.translate === 0) swiper.translate = 0;
3571  swiper.updateActiveIndex();
3572  swiper.updateSlidesClasses();
3573  let newProgress;
3574  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
3575  if (translatesDiff === 0) {
3576    newProgress = 0;
3577  } else {
3578    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
3579  }
3580  if (newProgress !== swiper.progress) {
3581    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
3582  }
3583  swiper.emit('setTranslate', swiper.translate, false);
3584}
3585
3586/***/ }),
3587
vendor: 5,978 bytes, lines 3588-3751
3588/***/ "./node_modules/swiper/core/events/onTouchEnd.js":
3589/*!*******************************************************!*\
3590  !*** ./node_modules/swiper/core/events/onTouchEnd.js ***!
3591  \*******************************************************/
3592/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3593
3594__webpack_require__.r(__webpack_exports__);
3595/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3596/* harmony export */   "default": function() { return /* binding */ onTouchEnd; }
3597/* harmony export */ });
3598/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
3599
3600function onTouchEnd(event) {
3601  const swiper = this;
3602  const data = swiper.touchEventsData;
3603  const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);
3604  if (pointerIndex >= 0) {
3605    data.evCache.splice(pointerIndex, 1);
3606  }
3607  if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) {
3608    const proceed = event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);
3609    if (!proceed) {
3610      return;
3611    }
3612  }
3613  const {
3614    params,
3615    touches,
3616    rtlTranslate: rtl,
3617    slidesGrid,
3618    enabled
3619  } = swiper;
3620  if (!enabled) return;
3621  if (!params.simulateTouch && event.pointerType === 'mouse') return;
3622  let e = event;
3623  if (e.originalEvent) e = e.originalEvent;
3624  if (data.allowTouchCallbacks) {
3625    swiper.emit('touchEnd', e);
3626  }
3627  data.allowTouchCallbacks = false;
3628  if (!data.isTouched) {
3629    if (data.isMoved && params.grabCursor) {
3630      swiper.setGrabCursor(false);
3631    }
3632    data.isMoved = false;
3633    data.startMoving = false;
3634    return;
3635  }
3636  // Return Grab Cursor
3637  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3638    swiper.setGrabCursor(false);
3639  }
3640
3641  // Time diff
3642  const touchEndTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
3643  const timeDiff = touchEndTime - data.touchStartTime;
3644
3645  // Tap, doubleTap, Click
3646  if (swiper.allowClick) {
3647    const pathTree = e.path || e.composedPath && e.composedPath();
3648    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);
3649    swiper.emit('tap click', e);
3650    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
3651      swiper.emit('doubleTap doubleClick', e);
3652    }
3653  }
3654  data.lastClickTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
3655  (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.nextTick)(() => {
3656    if (!swiper.destroyed) swiper.allowClick = true;
3657  });
3658  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
3659    data.isTouched = false;
3660    data.isMoved = false;
3661    data.startMoving = false;
3662    return;
3663  }
3664  data.isTouched = false;
3665  data.isMoved = false;
3666  data.startMoving = false;
3667  let currentPos;
3668  if (params.followFinger) {
3669    currentPos = rtl ? swiper.translate : -swiper.translate;
3670  } else {
3671    currentPos = -data.currentTranslate;
3672  }
3673  if (params.cssMode) {
3674    return;
3675  }
3676  if (swiper.params.freeMode && params.freeMode.enabled) {
3677    swiper.freeMode.onTouchEnd({
3678      currentPos
3679    });
3680    return;
3681  }
3682
3683  // Find current slide
3684  let stopIndex = 0;
3685  let groupSize = swiper.slidesSizesGrid[0];
3686  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
3687    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
3688    if (typeof slidesGrid[i + increment] !== 'undefined') {
3689      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
3690        stopIndex = i;
3691        groupSize = slidesGrid[i + increment] - slidesGrid[i];
3692      }
3693    } else if (currentPos >= slidesGrid[i]) {
3694      stopIndex = i;
3695      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
3696    }
3697  }
3698  let rewindFirstIndex = null;
3699  let rewindLastIndex = null;
3700  if (params.rewind) {
3701    if (swiper.isBeginning) {
3702      rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
3703    } else if (swiper.isEnd) {
3704      rewindFirstIndex = 0;
3705    }
3706  }
3707  // Find current slide size
3708  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
3709  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
3710  if (timeDiff > params.longSwipesMs) {
3711    // Long touches
3712    if (!params.longSwipes) {
3713      swiper.slideTo(swiper.activeIndex);
3714      return;
3715    }
3716    if (swiper.swipeDirection === 'next') {
3717      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);
3718    }
3719    if (swiper.swipeDirection === 'prev') {
3720      if (ratio > 1 - params.longSwipesRatio) {
3721        swiper.slideTo(stopIndex + increment);
3722      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
3723        swiper.slideTo(rewindLastIndex);
3724      } else {
3725        swiper.slideTo(stopIndex);
3726      }
3727    }
3728  } else {
3729    // Short swipes
3730    if (!params.shortSwipes) {
3731      swiper.slideTo(swiper.activeIndex);
3732      return;
3733    }
3734    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
3735    if (!isNavButtonTarget) {
3736      if (swiper.swipeDirection === 'next') {
3737        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
3738      }
3739      if (swiper.swipeDirection === 'prev') {
3740        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
3741      }
3742    } else if (e.target === swiper.navigation.nextEl) {
3743      swiper.slideTo(stopIndex + increment);
3744    } else {
3745      swiper.slideTo(stopIndex);
3746    }
3747  }
3748}
3749
3750/***/ }),
3751
vendor: 9,334 bytes, lines 3752-4007
3752/***/ "./node_modules/swiper/core/events/onTouchMove.js":
3753/*!********************************************************!*\
3754  !*** ./node_modules/swiper/core/events/onTouchMove.js ***!
3755  \********************************************************/
3756/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3757
3758__webpack_require__.r(__webpack_exports__);
3759/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3760/* harmony export */   "default": function() { return /* binding */ onTouchMove; }
3761/* harmony export */ });
3762/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
3763/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
3764
3765
3766function onTouchMove(event) {
3767  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
3768  const swiper = this;
3769  const data = swiper.touchEventsData;
3770  const {
3771    params,
3772    touches,
3773    rtlTranslate: rtl,
3774    enabled
3775  } = swiper;
3776  if (!enabled) return;
3777  if (!params.simulateTouch && event.pointerType === 'mouse') return;
3778  let e = event;
3779  if (e.originalEvent) e = e.originalEvent;
3780  if (!data.isTouched) {
3781    if (data.startMoving && data.isScrolling) {
3782      swiper.emit('touchMoveOpposite', e);
3783    }
3784    return;
3785  }
3786  const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
3787  if (pointerIndex >= 0) data.evCache[pointerIndex] = e;
3788  const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;
3789  const pageX = targetTouch.pageX;
3790  const pageY = targetTouch.pageY;
3791  if (e.preventedByNestedSwiper) {
3792    touches.startX = pageX;
3793    touches.startY = pageY;
3794    return;
3795  }
3796  if (!swiper.allowTouchMove) {
3797    if (!e.target.matches(data.focusableElements)) {
3798      swiper.allowClick = false;
3799    }
3800    if (data.isTouched) {
3801      Object.assign(touches, {
3802        startX: pageX,
3803        startY: pageY,
3804        prevX: swiper.touches.currentX,
3805        prevY: swiper.touches.currentY,
3806        currentX: pageX,
3807        currentY: pageY
3808      });
3809      data.touchStartTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.now)();
3810    }
3811    return;
3812  }
3813  if (params.touchReleaseOnEdges && !params.loop) {
3814    if (swiper.isVertical()) {
3815      // Vertical
3816      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
3817        data.isTouched = false;
3818        data.isMoved = false;
3819        return;
3820      }
3821    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
3822      return;
3823    }
3824  }
3825  if (document.activeElement) {
3826    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {
3827      data.isMoved = true;
3828      swiper.allowClick = false;
3829      return;
3830    }
3831  }
3832  if (data.allowTouchCallbacks) {
3833    swiper.emit('touchMove', e);
3834  }
3835  if (e.targetTouches && e.targetTouches.length > 1) return;
3836  touches.currentX = pageX;
3837  touches.currentY = pageY;
3838  const diffX = touches.currentX - touches.startX;
3839  const diffY = touches.currentY - touches.startY;
3840  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
3841  if (typeof data.isScrolling === 'undefined') {
3842    let touchAngle;
3843    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
3844      data.isScrolling = false;
3845    } else {
3846      // eslint-disable-next-line
3847      if (diffX * diffX + diffY * diffY >= 25) {
3848        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
3849        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
3850      }
3851    }
3852  }
3853  if (data.isScrolling) {
3854    swiper.emit('touchMoveOpposite', e);
3855  }
3856  if (typeof data.startMoving === 'undefined') {
3857    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
3858      data.startMoving = true;
3859    }
3860  }
3861  if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {
3862    data.isTouched = false;
3863    return;
3864  }
3865  if (!data.startMoving) {
3866    return;
3867  }
3868  swiper.allowClick = false;
3869  if (!params.cssMode && e.cancelable) {
3870    e.preventDefault();
3871  }
3872  if (params.touchMoveStopPropagation && !params.nested) {
3873    e.stopPropagation();
3874  }
3875  let diff = swiper.isHorizontal() ? diffX : diffY;
3876  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;
3877  if (params.oneWayMovement) {
3878    diff = Math.abs(diff) * (rtl ? 1 : -1);
3879    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);
3880  }
3881  touches.diff = diff;
3882  diff *= params.touchRatio;
3883  if (rtl) {
3884    diff = -diff;
3885    touchesDiff = -touchesDiff;
3886  }
3887  const prevTouchesDirection = swiper.touchesDirection;
3888  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
3889  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';
3890  const isLoop = swiper.params.loop && !params.cssMode;
3891  if (!data.isMoved) {
3892    if (isLoop) {
3893      swiper.loopFix({
3894        direction: swiper.swipeDirection
3895      });
3896    }
3897    data.startTranslate = swiper.getTranslate();
3898    swiper.setTransition(0);
3899    if (swiper.animating) {
3900      const evt = new window.CustomEvent('transitionend', {
3901        bubbles: true,
3902        cancelable: true
3903      });
3904      swiper.wrapperEl.dispatchEvent(evt);
3905    }
3906    data.allowMomentumBounce = false;
3907    // Grab Cursor
3908    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3909      swiper.setGrabCursor(true);
3910    }
3911    swiper.emit('sliderFirstMove', e);
3912  }
3913  let loopFixed;
3914  if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {
3915    // need another loop fix
3916    swiper.loopFix({
3917      direction: swiper.swipeDirection,
3918      setTranslate: true
3919    });
3920    loopFixed = true;
3921  }
3922  swiper.emit('sliderMove', e);
3923  data.isMoved = true;
3924  data.currentTranslate = diff + data.startTranslate;
3925  let disableParentSwiper = true;
3926  let resistanceRatio = params.resistanceRatio;
3927  if (params.touchReleaseOnEdges) {
3928    resistanceRatio = 0;
3929  }
3930  if (diff > 0) {
3931    if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {
3932      swiper.loopFix({
3933        direction: 'prev',
3934        setTranslate: true,
3935        activeSlideIndex: 0
3936      });
3937    }
3938    if (data.currentTranslate > swiper.minTranslate()) {
3939      disableParentSwiper = false;
3940      if (params.resistance) {
3941        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
3942      }
3943    }
3944  } else if (diff < 0) {
3945    if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {
3946      swiper.loopFix({
3947        direction: 'next',
3948        setTranslate: true,
3949        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))
3950      });
3951    }
3952    if (data.currentTranslate < swiper.maxTranslate()) {
3953      disableParentSwiper = false;
3954      if (params.resistance) {
3955        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
3956      }
3957    }
3958  }
3959  if (disableParentSwiper) {
3960    e.preventedByNestedSwiper = true;
3961  }
3962
3963  // Directions locks
3964  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
3965    data.currentTranslate = data.startTranslate;
3966  }
3967  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
3968    data.currentTranslate = data.startTranslate;
3969  }
3970  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
3971    data.currentTranslate = data.startTranslate;
3972  }
3973
3974  // Threshold
3975  if (params.threshold > 0) {
3976    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
3977      if (!data.allowThresholdMove) {
3978        data.allowThresholdMove = true;
3979        touches.startX = touches.currentX;
3980        touches.startY = touches.currentY;
3981        data.currentTranslate = data.startTranslate;
3982        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
3983        return;
3984      }
3985    } else {
3986      data.currentTranslate = data.startTranslate;
3987      return;
3988    }
3989  }
3990  if (!params.followFinger || params.cssMode) return;
3991
3992  // Update active index in free mode
3993  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
3994    swiper.updateActiveIndex();
3995    swiper.updateSlidesClasses();
3996  }
3997  if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {
3998    swiper.freeMode.onTouchMove();
3999  }
4000  // Update progress
4001  swiper.updateProgress(data.currentTranslate);
4002  // Update translate
4003  swiper.setTranslate(data.currentTranslate);
4004}
4005
4006/***/ }),
4007
vendor: 5,209 bytes, lines 4008-4134
4008/***/ "./node_modules/swiper/core/events/onTouchStart.js":
4009/*!*********************************************************!*\
4010  !*** ./node_modules/swiper/core/events/onTouchStart.js ***!
4011  \*********************************************************/
4012/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4013
4014__webpack_require__.r(__webpack_exports__);
4015/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4016/* harmony export */   "default": function() { return /* binding */ onTouchStart; }
4017/* harmony export */ });
4018/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
4019/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
4020
4021
4022
4023// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
4024function closestElement(selector, base = this) {
4025  function __closestFrom(el) {
4026    if (!el || el === (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)() || el === (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)()) return null;
4027    if (el.assignedSlot) el = el.assignedSlot;
4028    const found = el.closest(selector);
4029    if (!found && !el.getRootNode) {
4030      return null;
4031    }
4032    return found || __closestFrom(el.getRootNode().host);
4033  }
4034  return __closestFrom(base);
4035}
4036function onTouchStart(event) {
4037  const swiper = this;
4038  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
4039  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4040  const data = swiper.touchEventsData;
4041  data.evCache.push(event);
4042  const {
4043    params,
4044    touches,
4045    enabled
4046  } = swiper;
4047  if (!enabled) return;
4048  if (!params.simulateTouch && event.pointerType === 'mouse') return;
4049  if (swiper.animating && params.preventInteractionOnTransition) {
4050    return;
4051  }
4052  if (!swiper.animating && params.cssMode && params.loop) {
4053    swiper.loopFix();
4054  }
4055  let e = event;
4056  if (e.originalEvent) e = e.originalEvent;
4057  let targetEl = e.target;
4058  if (params.touchEventsTarget === 'wrapper') {
4059    if (!swiper.wrapperEl.contains(targetEl)) return;
4060  }
4061  if ('which' in e && e.which === 3) return;
4062  if ('button' in e && e.button > 0) return;
4063  if (data.isTouched && data.isMoved) return;
4064
4065  // change target el for shadow root component
4066  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';
4067  // eslint-disable-next-line
4068  const eventPath = event.composedPath ? event.composedPath() : event.path;
4069  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
4070    targetEl = eventPath[0];
4071  }
4072  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
4073  const isTargetShadow = !!(e.target && e.target.shadowRoot);
4074
4075  // use closestElement for shadow root element to get the actual closest for nested shadow root element
4076  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {
4077    swiper.allowClick = true;
4078    return;
4079  }
4080  if (params.swipeHandler) {
4081    if (!targetEl.closest(params.swipeHandler)) return;
4082  }
4083  touches.currentX = e.pageX;
4084  touches.currentY = e.pageY;
4085  const startX = touches.currentX;
4086  const startY = touches.currentY;
4087
4088  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
4089
4090  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
4091  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
4092  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
4093    if (edgeSwipeDetection === 'prevent') {
4094      event.preventDefault();
4095    } else {
4096      return;
4097    }
4098  }
4099  Object.assign(data, {
4100    isTouched: true,
4101    isMoved: false,
4102    allowTouchCallbacks: true,
4103    isScrolling: undefined,
4104    startMoving: undefined
4105  });
4106  touches.startX = startX;
4107  touches.startY = startY;
4108  data.touchStartTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.now)();
4109  swiper.allowClick = true;
4110  swiper.updateSize();
4111  swiper.swipeDirection = undefined;
4112  if (params.threshold > 0) data.allowThresholdMove = false;
4113  let preventDefault = true;
4114  if (targetEl.matches(data.focusableElements)) {
4115    preventDefault = false;
4116    if (targetEl.nodeName === 'SELECT') {
4117      data.isTouched = false;
4118    }
4119  }
4120  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {
4121    document.activeElement.blur();
4122  }
4123  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
4124  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {
4125    e.preventDefault();
4126  }
4127  if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
4128    swiper.freeMode.onTouchStart();
4129  }
4130  swiper.emit('touchStart', e);
4131}
4132
4133/***/ }),
4134
vendor: 985 bytes, lines 4135-4152
4135/***/ "./node_modules/swiper/core/grab-cursor/index.js":
4136/*!*******************************************************!*\
4137  !*** ./node_modules/swiper/core/grab-cursor/index.js ***!
4138  \*******************************************************/
4139/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4140
4141__webpack_require__.r(__webpack_exports__);
4142/* harmony import */ var _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js");
4143/* harmony import */ var _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./unsetGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js");
4144
4145
4146/* harmony default export */ __webpack_exports__["default"] = ({
4147  setGrabCursor: _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__["default"],
4148  unsetGrabCursor: _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__["default"]
4149});
4150
4151/***/ }),
4152
vendor: 1,132 bytes, lines 4153-4180
4153/***/ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js":
4154/*!***************************************************************!*\
4155  !*** ./node_modules/swiper/core/grab-cursor/setGrabCursor.js ***!
4156  \***************************************************************/
4157/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4158
4159__webpack_require__.r(__webpack_exports__);
4160/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4161/* harmony export */   "default": function() { return /* binding */ setGrabCursor; }
4162/* harmony export */ });
4163function setGrabCursor(moving) {
4164  const swiper = this;
4165  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
4166  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;
4167  if (swiper.isElement) {
4168    swiper.__preventObserver__ = true;
4169  }
4170  el.style.cursor = 'move';
4171  el.style.cursor = moving ? 'grabbing' : 'grab';
4172  if (swiper.isElement) {
4173    requestAnimationFrame(() => {
4174      swiper.__preventObserver__ = false;
4175    });
4176  }
4177}
4178
4179/***/ }),
4180
vendor: 1,043 bytes, lines 4181-4208
4181/***/ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js":
4182/*!*****************************************************************!*\
4183  !*** ./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js ***!
4184  \*****************************************************************/
4185/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4186
4187__webpack_require__.r(__webpack_exports__);
4188/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4189/* harmony export */   "default": function() { return /* binding */ unsetGrabCursor; }
4190/* harmony export */ });
4191function unsetGrabCursor() {
4192  const swiper = this;
4193  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
4194    return;
4195  }
4196  if (swiper.isElement) {
4197    swiper.__preventObserver__ = true;
4198  }
4199  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';
4200  if (swiper.isElement) {
4201    requestAnimationFrame(() => {
4202      swiper.__preventObserver__ = false;
4203    });
4204  }
4205}
4206
4207/***/ }),
4208
vendor: 1,128 bytes, lines 4209-4229
4209/***/ "./node_modules/swiper/core/loop/index.js":
4210/*!************************************************!*\
4211  !*** ./node_modules/swiper/core/loop/index.js ***!
4212  \************************************************/
4213/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4214
4215__webpack_require__.r(__webpack_exports__);
4216/* harmony import */ var _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loopCreate.js */ "./node_modules/swiper/core/loop/loopCreate.js");
4217/* harmony import */ var _loopFix_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loopFix.js */ "./node_modules/swiper/core/loop/loopFix.js");
4218/* harmony import */ var _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loopDestroy.js */ "./node_modules/swiper/core/loop/loopDestroy.js");
4219
4220
4221
4222/* harmony default export */ __webpack_exports__["default"] = ({
4223  loopCreate: _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__["default"],
4224  loopFix: _loopFix_js__WEBPACK_IMPORTED_MODULE_1__["default"],
4225  loopDestroy: _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__["default"]
4226});
4227
4228/***/ }),
4229
vendor: 1,245 bytes, lines 4230-4260
4230/***/ "./node_modules/swiper/core/loop/loopCreate.js":
4231/*!*****************************************************!*\
4232  !*** ./node_modules/swiper/core/loop/loopCreate.js ***!
4233  \*****************************************************/
4234/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4235
4236__webpack_require__.r(__webpack_exports__);
4237/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4238/* harmony export */   "default": function() { return /* binding */ loopCreate; }
4239/* harmony export */ });
4240/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
4241
4242function loopCreate(slideRealIndex) {
4243  const swiper = this;
4244  const {
4245    params,
4246    slidesEl
4247  } = swiper;
4248  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
4249  const slides = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementChildren)(slidesEl, `.${params.slideClass}, swiper-slide`);
4250  slides.forEach((el, index) => {
4251    el.setAttribute('data-swiper-slide-index', index);
4252  });
4253  swiper.loopFix({
4254    slideRealIndex,
4255    direction: params.centeredSlides ? undefined : 'next'
4256  });
4257}
4258
4259/***/ }),
4260
vendor: 1,260 bytes, lines 4261-4295
4261/***/ "./node_modules/swiper/core/loop/loopDestroy.js":
4262/*!******************************************************!*\
4263  !*** ./node_modules/swiper/core/loop/loopDestroy.js ***!
4264  \******************************************************/
4265/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4266
4267__webpack_require__.r(__webpack_exports__);
4268/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4269/* harmony export */   "default": function() { return /* binding */ loopDestroy; }
4270/* harmony export */ });
4271function loopDestroy() {
4272  const swiper = this;
4273  const {
4274    params,
4275    slidesEl
4276  } = swiper;
4277  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
4278  swiper.recalcSlides();
4279  const newSlidesOrder = [];
4280  swiper.slides.forEach(slideEl => {
4281    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;
4282    newSlidesOrder[index] = slideEl;
4283  });
4284  swiper.slides.forEach(slideEl => {
4285    slideEl.removeAttribute('data-swiper-slide-index');
4286  });
4287  newSlidesOrder.forEach(slideEl => {
4288    slidesEl.append(slideEl);
4289  });
4290  swiper.recalcSlides();
4291  swiper.slideTo(swiper.realIndex, 0);
4292}
4293
4294/***/ }),
4295
vendor: 6,034 bytes, lines 4296-4455
4296/***/ "./node_modules/swiper/core/loop/loopFix.js":
4297/*!**************************************************!*\
4298  !*** ./node_modules/swiper/core/loop/loopFix.js ***!
4299  \**************************************************/
4300/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4301
4302__webpack_require__.r(__webpack_exports__);
4303/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4304/* harmony export */   "default": function() { return /* binding */ loopFix; }
4305/* harmony export */ });
4306function loopFix({
4307  slideRealIndex,
4308  slideTo = true,
4309  direction,
4310  setTranslate,
4311  activeSlideIndex,
4312  byController,
4313  byMousewheel
4314} = {}) {
4315  const swiper = this;
4316  if (!swiper.params.loop) return;
4317  swiper.emit('beforeLoopFix');
4318  const {
4319    slides,
4320    allowSlidePrev,
4321    allowSlideNext,
4322    slidesEl,
4323    params
4324  } = swiper;
4325  swiper.allowSlidePrev = true;
4326  swiper.allowSlideNext = true;
4327  if (swiper.virtual && params.virtual.enabled) {
4328    if (slideTo) {
4329      if (!params.centeredSlides && swiper.snapIndex === 0) {
4330        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);
4331      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {
4332        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);
4333      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {
4334        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);
4335      }
4336    }
4337    swiper.allowSlidePrev = allowSlidePrev;
4338    swiper.allowSlideNext = allowSlideNext;
4339    swiper.emit('loopFix');
4340    return;
4341  }
4342  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));
4343  let loopedSlides = params.loopedSlides || slidesPerView;
4344  if (loopedSlides % params.slidesPerGroup !== 0) {
4345    loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;
4346  }
4347  swiper.loopedSlides = loopedSlides;
4348  const prependSlidesIndexes = [];
4349  const appendSlidesIndexes = [];
4350  let activeIndex = swiper.activeIndex;
4351  if (typeof activeSlideIndex === 'undefined') {
4352    activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);
4353  } else {
4354    activeIndex = activeSlideIndex;
4355  }
4356  const isNext = direction === 'next' || !direction;
4357  const isPrev = direction === 'prev' || !direction;
4358  let slidesPrepended = 0;
4359  let slidesAppended = 0;
4360  // prepend last slides before start
4361  if (activeSlideIndex < loopedSlides) {
4362    slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);
4363    for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {
4364      const index = i - Math.floor(i / slides.length) * slides.length;
4365      prependSlidesIndexes.push(slides.length - index - 1);
4366    }
4367  } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {
4368    slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);
4369    for (let i = 0; i < slidesAppended; i += 1) {
4370      const index = i - Math.floor(i / slides.length) * slides.length;
4371      appendSlidesIndexes.push(index);
4372    }
4373  }
4374  if (isPrev) {
4375    prependSlidesIndexes.forEach(index => {
4376      swiper.slides[index].swiperLoopMoveDOM = true;
4377      slidesEl.prepend(swiper.slides[index]);
4378      swiper.slides[index].swiperLoopMoveDOM = false;
4379    });
4380  }
4381  if (isNext) {
4382    appendSlidesIndexes.forEach(index => {
4383      swiper.slides[index].swiperLoopMoveDOM = true;
4384      slidesEl.append(swiper.slides[index]);
4385      swiper.slides[index].swiperLoopMoveDOM = false;
4386    });
4387  }
4388  swiper.recalcSlides();
4389  if (params.slidesPerView === 'auto') {
4390    swiper.updateSlides();
4391  }
4392  if (params.watchSlidesProgress) {
4393    swiper.updateSlidesOffset();
4394  }
4395  if (slideTo) {
4396    if (prependSlidesIndexes.length > 0 && isPrev) {
4397      if (typeof slideRealIndex === 'undefined') {
4398        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
4399        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];
4400        const diff = newSlideTranslate - currentSlideTranslate;
4401        if (byMousewheel) {
4402          swiper.setTranslate(swiper.translate - diff);
4403        } else {
4404          swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);
4405          if (setTranslate) {
4406            swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;
4407          }
4408        }
4409      } else {
4410        if (setTranslate) {
4411          swiper.slideToLoop(slideRealIndex, 0, false, true);
4412        }
4413      }
4414    } else if (appendSlidesIndexes.length > 0 && isNext) {
4415      if (typeof slideRealIndex === 'undefined') {
4416        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
4417        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];
4418        const diff = newSlideTranslate - currentSlideTranslate;
4419        if (byMousewheel) {
4420          swiper.setTranslate(swiper.translate - diff);
4421        } else {
4422          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);
4423          if (setTranslate) {
4424            swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;
4425          }
4426        }
4427      } else {
4428        swiper.slideToLoop(slideRealIndex, 0, false, true);
4429      }
4430    }
4431  }
4432  swiper.allowSlidePrev = allowSlidePrev;
4433  swiper.allowSlideNext = allowSlideNext;
4434  if (swiper.controller && swiper.controller.control && !byController) {
4435    const loopParams = {
4436      slideRealIndex,
4437      slideTo: false,
4438      direction,
4439      setTranslate,
4440      activeSlideIndex,
4441      byController: true
4442    };
4443    if (Array.isArray(swiper.controller.control)) {
4444      swiper.controller.control.forEach(c => {
4445        if (!c.destroyed && c.params.loop) c.loopFix(loopParams);
4446      });
4447    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {
4448      swiper.controller.control.loopFix(loopParams);
4449    }
4450  }
4451  swiper.emit('loopFix');
4452}
4453
4454/***/ }),
4455
vendor: 1,921 bytes, lines 4456-4501
4456/***/ "./node_modules/swiper/core/moduleExtendParams.js":
4457/*!********************************************************!*\
4458  !*** ./node_modules/swiper/core/moduleExtendParams.js ***!
4459  \********************************************************/
4460/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4461
4462__webpack_require__.r(__webpack_exports__);
4463/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4464/* harmony export */   "default": function() { return /* binding */ moduleExtendParams; }
4465/* harmony export */ });
4466/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
4467
4468function moduleExtendParams(params, allModulesParams) {
4469  return function extendParams(obj = {}) {
4470    const moduleParamName = Object.keys(obj)[0];
4471    const moduleParams = obj[moduleParamName];
4472    if (typeof moduleParams !== 'object' || moduleParams === null) {
4473      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
4474      return;
4475    }
4476    if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {
4477      params[moduleParamName] = {
4478        auto: true
4479      };
4480    }
4481    if (!(moduleParamName in params && 'enabled' in moduleParams)) {
4482      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
4483      return;
4484    }
4485    if (params[moduleParamName] === true) {
4486      params[moduleParamName] = {
4487        enabled: true
4488      };
4489    }
4490    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
4491      params[moduleParamName].enabled = true;
4492    }
4493    if (!params[moduleParamName]) params[moduleParamName] = {
4494      enabled: false
4495    };
4496    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
4497  };
4498}
4499
4500/***/ }),
4501
vendor: 3,037 bytes, lines 4502-4585
4502/***/ "./node_modules/swiper/core/modules/observer/observer.js":
4503/*!***************************************************************!*\
4504  !*** ./node_modules/swiper/core/modules/observer/observer.js ***!
4505  \***************************************************************/
4506/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4507
4508__webpack_require__.r(__webpack_exports__);
4509/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4510/* harmony export */   "default": function() { return /* binding */ Observer; }
4511/* harmony export */ });
4512/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
4513/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
4514
4515
4516function Observer({
4517  swiper,
4518  extendParams,
4519  on,
4520  emit
4521}) {
4522  const observers = [];
4523  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4524  const attach = (target, options = {}) => {
4525    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
4526    const observer = new ObserverFunc(mutations => {
4527      // The observerUpdate event should only be triggered
4528      // once despite the number of mutations.  Additional
4529      // triggers are redundant and are very costly
4530      if (swiper.__preventObserver__) return;
4531      if (mutations.length === 1) {
4532        emit('observerUpdate', mutations[0]);
4533        return;
4534      }
4535      const observerUpdate = function observerUpdate() {
4536        emit('observerUpdate', mutations[0]);
4537      };
4538      if (window.requestAnimationFrame) {
4539        window.requestAnimationFrame(observerUpdate);
4540      } else {
4541        window.setTimeout(observerUpdate, 0);
4542      }
4543    });
4544    observer.observe(target, {
4545      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
4546      childList: typeof options.childList === 'undefined' ? true : options.childList,
4547      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
4548    });
4549    observers.push(observer);
4550  };
4551  const init = () => {
4552    if (!swiper.params.observer) return;
4553    if (swiper.params.observeParents) {
4554      const containerParents = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementParents)(swiper.el);
4555      for (let i = 0; i < containerParents.length; i += 1) {
4556        attach(containerParents[i]);
4557      }
4558    }
4559    // Observe container
4560    attach(swiper.el, {
4561      childList: swiper.params.observeSlideChildren
4562    });
4563
4564    // Observe wrapper
4565    attach(swiper.wrapperEl, {
4566      attributes: false
4567    });
4568  };
4569  const destroy = () => {
4570    observers.forEach(observer => {
4571      observer.disconnect();
4572    });
4573    observers.splice(0, observers.length);
4574  };
4575  extendParams({
4576    observer: false,
4577    observeParents: false,
4578    observeSlideChildren: false
4579  });
4580  on('init', init);
4581  on('destroy', destroy);
4582}
4583
4584/***/ }),
4585
vendor: 2,800 bytes, lines 4586-4666
4586/***/ "./node_modules/swiper/core/modules/resize/resize.js":
4587/*!***********************************************************!*\
4588  !*** ./node_modules/swiper/core/modules/resize/resize.js ***!
4589  \***********************************************************/
4590/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4591
4592__webpack_require__.r(__webpack_exports__);
4593/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4594/* harmony export */   "default": function() { return /* binding */ Resize; }
4595/* harmony export */ });
4596/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
4597
4598function Resize({
4599  swiper,
4600  on,
4601  emit
4602}) {
4603  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
4604  let observer = null;
4605  let animationFrame = null;
4606  const resizeHandler = () => {
4607    if (!swiper || swiper.destroyed || !swiper.initialized) return;
4608    emit('beforeResize');
4609    emit('resize');
4610  };
4611  const createObserver = () => {
4612    if (!swiper || swiper.destroyed || !swiper.initialized) return;
4613    observer = new ResizeObserver(entries => {
4614      animationFrame = window.requestAnimationFrame(() => {
4615        const {
4616          width,
4617          height
4618        } = swiper;
4619        let newWidth = width;
4620        let newHeight = height;
4621        entries.forEach(({
4622          contentBoxSize,
4623          contentRect,
4624          target
4625        }) => {
4626          if (target && target !== swiper.el) return;
4627          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
4628          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
4629        });
4630        if (newWidth !== width || newHeight !== height) {
4631          resizeHandler();
4632        }
4633      });
4634    });
4635    observer.observe(swiper.el);
4636  };
4637  const removeObserver = () => {
4638    if (animationFrame) {
4639      window.cancelAnimationFrame(animationFrame);
4640    }
4641    if (observer && observer.unobserve && swiper.el) {
4642      observer.unobserve(swiper.el);
4643      observer = null;
4644    }
4645  };
4646  const orientationChangeHandler = () => {
4647    if (!swiper || swiper.destroyed || !swiper.initialized) return;
4648    emit('orientationchange');
4649  };
4650  on('init', () => {
4651    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {
4652      createObserver();
4653      return;
4654    }
4655    window.addEventListener('resize', resizeHandler);
4656    window.addEventListener('orientationchange', orientationChangeHandler);
4657  });
4658  on('destroy', () => {
4659    removeObserver();
4660    window.removeEventListener('resize', resizeHandler);
4661    window.removeEventListener('orientationchange', orientationChangeHandler);
4662  });
4663}
4664
4665/***/ }),
4666
vendor: 2,134 bytes, lines 4667-4699
4667/***/ "./node_modules/swiper/core/slide/index.js":
4668/*!*************************************************!*\
4669  !*** ./node_modules/swiper/core/slide/index.js ***!
4670  \*************************************************/
4671/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4672
4673__webpack_require__.r(__webpack_exports__);
4674/* harmony import */ var _slideTo_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./slideTo.js */ "./node_modules/swiper/core/slide/slideTo.js");
4675/* harmony import */ var _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slideToLoop.js */ "./node_modules/swiper/core/slide/slideToLoop.js");
4676/* harmony import */ var _slideNext_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./slideNext.js */ "./node_modules/swiper/core/slide/slideNext.js");
4677/* harmony import */ var _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slidePrev.js */ "./node_modules/swiper/core/slide/slidePrev.js");
4678/* harmony import */ var _slideReset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./slideReset.js */ "./node_modules/swiper/core/slide/slideReset.js");
4679/* harmony import */ var _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./slideToClosest.js */ "./node_modules/swiper/core/slide/slideToClosest.js");
4680/* harmony import */ var _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./slideToClickedSlide.js */ "./node_modules/swiper/core/slide/slideToClickedSlide.js");
4681
4682
4683
4684
4685
4686
4687
4688/* harmony default export */ __webpack_exports__["default"] = ({
4689  slideTo: _slideTo_js__WEBPACK_IMPORTED_MODULE_0__["default"],
4690  slideToLoop: _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__["default"],
4691  slideNext: _slideNext_js__WEBPACK_IMPORTED_MODULE_2__["default"],
4692  slidePrev: _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__["default"],
4693  slideReset: _slideReset_js__WEBPACK_IMPORTED_MODULE_4__["default"],
4694  slideToClosest: _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__["default"],
4695  slideToClickedSlide: _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__["default"]
4696});
4697
4698/***/ }),
4699
vendor: 1,587 bytes, lines 4700-4740
4700/***/ "./node_modules/swiper/core/slide/slideNext.js":
4701/*!*****************************************************!*\
4702  !*** ./node_modules/swiper/core/slide/slideNext.js ***!
4703  \*****************************************************/
4704/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4705
4706__webpack_require__.r(__webpack_exports__);
4707/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4708/* harmony export */   "default": function() { return /* binding */ slideNext; }
4709/* harmony export */ });
4710/* eslint no-unused-vars: "off" */
4711function slideNext(speed = this.params.speed, runCallbacks = true, internal) {
4712  const swiper = this;
4713  const {
4714    enabled,
4715    params,
4716    animating
4717  } = swiper;
4718  if (!enabled) return swiper;
4719  let perGroup = params.slidesPerGroup;
4720  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
4721    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);
4722  }
4723  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
4724  const isVirtual = swiper.virtual && params.virtual.enabled;
4725  if (params.loop) {
4726    if (animating && !isVirtual && params.loopPreventsSliding) return false;
4727    swiper.loopFix({
4728      direction: 'next'
4729    });
4730    // eslint-disable-next-line
4731    swiper._clientLeft = swiper.wrapperEl.clientLeft;
4732  }
4733  if (params.rewind && swiper.isEnd) {
4734    return swiper.slideTo(0, speed, runCallbacks, internal);
4735  }
4736  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
4737}
4738
4739/***/ }),
4740
vendor: 2,656 bytes, lines 4741-4809
4741/***/ "./node_modules/swiper/core/slide/slidePrev.js":
4742/*!*****************************************************!*\
4743  !*** ./node_modules/swiper/core/slide/slidePrev.js ***!
4744  \*****************************************************/
4745/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4746
4747__webpack_require__.r(__webpack_exports__);
4748/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4749/* harmony export */   "default": function() { return /* binding */ slidePrev; }
4750/* harmony export */ });
4751/* eslint no-unused-vars: "off" */
4752function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {
4753  const swiper = this;
4754  const {
4755    params,
4756    snapGrid,
4757    slidesGrid,
4758    rtlTranslate,
4759    enabled,
4760    animating
4761  } = swiper;
4762  if (!enabled) return swiper;
4763  const isVirtual = swiper.virtual && params.virtual.enabled;
4764  if (params.loop) {
4765    if (animating && !isVirtual && params.loopPreventsSliding) return false;
4766    swiper.loopFix({
4767      direction: 'prev'
4768    });
4769    // eslint-disable-next-line
4770    swiper._clientLeft = swiper.wrapperEl.clientLeft;
4771  }
4772  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
4773  function normalize(val) {
4774    if (val < 0) return -Math.floor(Math.abs(val));
4775    return Math.floor(val);
4776  }
4777  const normalizedTranslate = normalize(translate);
4778  const normalizedSnapGrid = snapGrid.map(val => normalize(val));
4779  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
4780  if (typeof prevSnap === 'undefined' && params.cssMode) {
4781    let prevSnapIndex;
4782    snapGrid.forEach((snap, snapIndex) => {
4783      if (normalizedTranslate >= snap) {
4784        // prevSnap = snap;
4785        prevSnapIndex = snapIndex;
4786      }
4787    });
4788    if (typeof prevSnapIndex !== 'undefined') {
4789      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
4790    }
4791  }
4792  let prevIndex = 0;
4793  if (typeof prevSnap !== 'undefined') {
4794    prevIndex = slidesGrid.indexOf(prevSnap);
4795    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
4796    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
4797      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
4798      prevIndex = Math.max(prevIndex, 0);
4799    }
4800  }
4801  if (params.rewind && swiper.isBeginning) {
4802    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
4803    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
4804  }
4805  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
4806}
4807
4808/***/ }),
4809
vendor: 778 bytes, lines 4810-4827
4810/***/ "./node_modules/swiper/core/slide/slideReset.js":
4811/*!******************************************************!*\
4812  !*** ./node_modules/swiper/core/slide/slideReset.js ***!
4813  \******************************************************/
4814/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4815
4816__webpack_require__.r(__webpack_exports__);
4817/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4818/* harmony export */   "default": function() { return /* binding */ slideReset; }
4819/* harmony export */ });
4820/* eslint no-unused-vars: "off" */
4821function slideReset(speed = this.params.speed, runCallbacks = true, internal) {
4822  const swiper = this;
4823  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
4824}
4825
4826/***/ }),
4827
vendor: 5,741 bytes, lines 4828-4983
4828/***/ "./node_modules/swiper/core/slide/slideTo.js":
4829/*!***************************************************!*\
4830  !*** ./node_modules/swiper/core/slide/slideTo.js ***!
4831  \***************************************************/
4832/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4833
4834__webpack_require__.r(__webpack_exports__);
4835/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4836/* harmony export */   "default": function() { return /* binding */ slideTo; }
4837/* harmony export */ });
4838/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
4839
4840function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {
4841  if (typeof index === 'string') {
4842    index = parseInt(index, 10);
4843  }
4844  const swiper = this;
4845  let slideIndex = index;
4846  if (slideIndex < 0) slideIndex = 0;
4847  const {
4848    params,
4849    snapGrid,
4850    slidesGrid,
4851    previousIndex,
4852    activeIndex,
4853    rtlTranslate: rtl,
4854    wrapperEl,
4855    enabled
4856  } = swiper;
4857  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {
4858    return false;
4859  }
4860  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
4861  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
4862  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
4863  const translate = -snapGrid[snapIndex];
4864  // Normalize slideIndex
4865  if (params.normalizeSlideIndex) {
4866    for (let i = 0; i < slidesGrid.length; i += 1) {
4867      const normalizedTranslate = -Math.floor(translate * 100);
4868      const normalizedGrid = Math.floor(slidesGrid[i] * 100);
4869      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
4870      if (typeof slidesGrid[i + 1] !== 'undefined') {
4871        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
4872          slideIndex = i;
4873        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
4874          slideIndex = i + 1;
4875        }
4876      } else if (normalizedTranslate >= normalizedGrid) {
4877        slideIndex = i;
4878      }
4879    }
4880  }
4881  // Directions locks
4882  if (swiper.initialized && slideIndex !== activeIndex) {
4883    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
4884      return false;
4885    }
4886    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
4887      if ((activeIndex || 0) !== slideIndex) {
4888        return false;
4889      }
4890    }
4891  }
4892  if (slideIndex !== (previousIndex || 0) && runCallbacks) {
4893    swiper.emit('beforeSlideChangeStart');
4894  }
4895
4896  // Update progress
4897  swiper.updateProgress(translate);
4898  let direction;
4899  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';
4900
4901  // Update Index
4902  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
4903    swiper.updateActiveIndex(slideIndex);
4904    // Update Height
4905    if (params.autoHeight) {
4906      swiper.updateAutoHeight();
4907    }
4908    swiper.updateSlidesClasses();
4909    if (params.effect !== 'slide') {
4910      swiper.setTranslate(translate);
4911    }
4912    if (direction !== 'reset') {
4913      swiper.transitionStart(runCallbacks, direction);
4914      swiper.transitionEnd(runCallbacks, direction);
4915    }
4916    return false;
4917  }
4918  if (params.cssMode) {
4919    const isH = swiper.isHorizontal();
4920    const t = rtl ? translate : -translate;
4921    if (speed === 0) {
4922      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
4923      if (isVirtual) {
4924        swiper.wrapperEl.style.scrollSnapType = 'none';
4925        swiper._immediateVirtual = true;
4926      }
4927      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {
4928        swiper._cssModeVirtualInitialSet = true;
4929        requestAnimationFrame(() => {
4930          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
4931        });
4932      } else {
4933        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
4934      }
4935      if (isVirtual) {
4936        requestAnimationFrame(() => {
4937          swiper.wrapperEl.style.scrollSnapType = '';
4938          swiper._immediateVirtual = false;
4939        });
4940      }
4941    } else {
4942      if (!swiper.support.smoothScroll) {
4943        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.animateCSSModeScroll)({
4944          swiper,
4945          targetPosition: t,
4946          side: isH ? 'left' : 'top'
4947        });
4948        return true;
4949      }
4950      wrapperEl.scrollTo({
4951        [isH ? 'left' : 'top']: t,
4952        behavior: 'smooth'
4953      });
4954    }
4955    return true;
4956  }
4957  swiper.setTransition(speed);
4958  swiper.setTranslate(translate);
4959  swiper.updateActiveIndex(slideIndex);
4960  swiper.updateSlidesClasses();
4961  swiper.emit('beforeTransitionStart', speed, internal);
4962  swiper.transitionStart(runCallbacks, direction);
4963  if (speed === 0) {
4964    swiper.transitionEnd(runCallbacks, direction);
4965  } else if (!swiper.animating) {
4966    swiper.animating = true;
4967    if (!swiper.onSlideToWrapperTransitionEnd) {
4968      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
4969        if (!swiper || swiper.destroyed) return;
4970        if (e.target !== this) return;
4971        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
4972        swiper.onSlideToWrapperTransitionEnd = null;
4973        delete swiper.onSlideToWrapperTransitionEnd;
4974        swiper.transitionEnd(runCallbacks, direction);
4975      };
4976    }
4977    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
4978  }
4979  return true;
4980}
4981
4982/***/ }),
4983
vendor: 2,364 bytes, lines 4984-5034
4984/***/ "./node_modules/swiper/core/slide/slideToClickedSlide.js":
4985/*!***************************************************************!*\
4986  !*** ./node_modules/swiper/core/slide/slideToClickedSlide.js ***!
4987  \***************************************************************/
4988/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4989
4990__webpack_require__.r(__webpack_exports__);
4991/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4992/* harmony export */   "default": function() { return /* binding */ slideToClickedSlide; }
4993/* harmony export */ });
4994/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
4995
4996function slideToClickedSlide() {
4997  const swiper = this;
4998  const {
4999    params,
5000    slidesEl
5001  } = swiper;
5002  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
5003  let slideToIndex = swiper.clickedIndex;
5004  let realIndex;
5005  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;
5006  if (params.loop) {
5007    if (swiper.animating) return;
5008    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
5009    if (params.centeredSlides) {
5010      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
5011        swiper.loopFix();
5012        slideToIndex = swiper.getSlideIndex((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementChildren)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
5013        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.nextTick)(() => {
5014          swiper.slideTo(slideToIndex);
5015        });
5016      } else {
5017        swiper.slideTo(slideToIndex);
5018      }
5019    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
5020      swiper.loopFix();
5021      slideToIndex = swiper.getSlideIndex((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementChildren)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
5022      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.nextTick)(() => {
5023        swiper.slideTo(slideToIndex);
5024      });
5025    } else {
5026      swiper.slideTo(slideToIndex);
5027    }
5028  } else {
5029    swiper.slideTo(slideToIndex);
5030  }
5031}
5032
5033/***/ }),
5034
vendor: 1,957 bytes, lines 5035-5075
5035/***/ "./node_modules/swiper/core/slide/slideToClosest.js":
5036/*!**********************************************************!*\
5037  !*** ./node_modules/swiper/core/slide/slideToClosest.js ***!
5038  \**********************************************************/
5039/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5040
5041__webpack_require__.r(__webpack_exports__);
5042/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5043/* harmony export */   "default": function() { return /* binding */ slideToClosest; }
5044/* harmony export */ });
5045/* eslint no-unused-vars: "off" */
5046function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {
5047  const swiper = this;
5048  let index = swiper.activeIndex;
5049  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
5050  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
5051  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
5052  if (translate >= swiper.snapGrid[snapIndex]) {
5053    // The current translate is on or after the current snap index, so the choice
5054    // is between the current index and the one after it.
5055    const currentSnap = swiper.snapGrid[snapIndex];
5056    const nextSnap = swiper.snapGrid[snapIndex + 1];
5057    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
5058      index += swiper.params.slidesPerGroup;
5059    }
5060  } else {
5061    // The current translate is before the current snap index, so the choice
5062    // is between the current index and the one before it.
5063    const prevSnap = swiper.snapGrid[snapIndex - 1];
5064    const currentSnap = swiper.snapGrid[snapIndex];
5065    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {
5066      index -= swiper.params.slidesPerGroup;
5067    }
5068  }
5069  index = Math.max(index, 0);
5070  index = Math.min(index, swiper.slidesGrid.length - 1);
5071  return swiper.slideTo(index, speed, runCallbacks, internal);
5072}
5073
5074/***/ }),
5075
vendor: 1,143 bytes, lines 5076-5105
5076/***/ "./node_modules/swiper/core/slide/slideToLoop.js":
5077/*!*******************************************************!*\
5078  !*** ./node_modules/swiper/core/slide/slideToLoop.js ***!
5079  \*******************************************************/
5080/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5081
5082__webpack_require__.r(__webpack_exports__);
5083/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5084/* harmony export */   "default": function() { return /* binding */ slideToLoop; }
5085/* harmony export */ });
5086function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {
5087  if (typeof index === 'string') {
5088    const indexAsNumber = parseInt(index, 10);
5089    index = indexAsNumber;
5090  }
5091  const swiper = this;
5092  let newIndex = index;
5093  if (swiper.params.loop) {
5094    if (swiper.virtual && swiper.params.virtual.enabled) {
5095      // eslint-disable-next-line
5096      newIndex = newIndex + swiper.virtual.slidesBefore;
5097    } else {
5098      newIndex = swiper.getSlideIndexByData(newIndex);
5099    }
5100  }
5101  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
5102}
5103
5104/***/ }),
5105
vendor: 1,235 bytes, lines 5106-5126
5106/***/ "./node_modules/swiper/core/transition/index.js":
5107/*!******************************************************!*\
5108  !*** ./node_modules/swiper/core/transition/index.js ***!
5109  \******************************************************/
5110/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5111
5112__webpack_require__.r(__webpack_exports__);
5113/* harmony import */ var _setTransition_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setTransition.js */ "./node_modules/swiper/core/transition/setTransition.js");
5114/* harmony import */ var _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transitionStart.js */ "./node_modules/swiper/core/transition/transitionStart.js");
5115/* harmony import */ var _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transitionEnd.js */ "./node_modules/swiper/core/transition/transitionEnd.js");
5116
5117
5118
5119/* harmony default export */ __webpack_exports__["default"] = ({
5120  setTransition: _setTransition_js__WEBPACK_IMPORTED_MODULE_0__["default"],
5121  transitionStart: _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__["default"],
5122  transitionEnd: _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__["default"]
5123});
5124
5125/***/ }),
5126
vendor: 828 bytes, lines 5127-5146
5127/***/ "./node_modules/swiper/core/transition/setTransition.js":
5128/*!**************************************************************!*\
5129  !*** ./node_modules/swiper/core/transition/setTransition.js ***!
5130  \**************************************************************/
5131/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5132
5133__webpack_require__.r(__webpack_exports__);
5134/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5135/* harmony export */   "default": function() { return /* binding */ setTransition; }
5136/* harmony export */ });
5137function setTransition(duration, byController) {
5138  const swiper = this;
5139  if (!swiper.params.cssMode) {
5140    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;
5141  }
5142  swiper.emit('setTransition', duration, byController);
5143}
5144
5145/***/ }),
5146
vendor: 1,286 bytes, lines 5147-5187
5147/***/ "./node_modules/swiper/core/transition/transitionEmit.js":
5148/*!***************************************************************!*\
5149  !*** ./node_modules/swiper/core/transition/transitionEmit.js ***!
5150  \***************************************************************/
5151/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5152
5153__webpack_require__.r(__webpack_exports__);
5154/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5155/* harmony export */   "default": function() { return /* binding */ transitionEmit; }
5156/* harmony export */ });
5157function transitionEmit({
5158  swiper,
5159  runCallbacks,
5160  direction,
5161  step
5162}) {
5163  const {
5164    activeIndex,
5165    previousIndex
5166  } = swiper;
5167  let dir = direction;
5168  if (!dir) {
5169    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
5170  }
5171  swiper.emit(`transition${step}`);
5172  if (runCallbacks && activeIndex !== previousIndex) {
5173    if (dir === 'reset') {
5174      swiper.emit(`slideResetTransition${step}`);
5175      return;
5176    }
5177    swiper.emit(`slideChangeTransition${step}`);
5178    if (dir === 'next') {
5179      swiper.emit(`slideNextTransition${step}`);
5180    } else {
5181      swiper.emit(`slidePrevTransition${step}`);
5182    }
5183  }
5184}
5185
5186/***/ }),
5187
vendor: 1,116 bytes, lines 5188-5217
5188/***/ "./node_modules/swiper/core/transition/transitionEnd.js":
5189/*!**************************************************************!*\
5190  !*** ./node_modules/swiper/core/transition/transitionEnd.js ***!
5191  \**************************************************************/
5192/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5193
5194__webpack_require__.r(__webpack_exports__);
5195/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5196/* harmony export */   "default": function() { return /* binding */ transitionEnd; }
5197/* harmony export */ });
5198/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js");
5199
5200function transitionEnd(runCallbacks = true, direction) {
5201  const swiper = this;
5202  const {
5203    params
5204  } = swiper;
5205  swiper.animating = false;
5206  if (params.cssMode) return;
5207  swiper.setTransition(0);
5208  (0,_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
5209    swiper,
5210    runCallbacks,
5211    direction,
5212    step: 'End'
5213  });
5214}
5215
5216/***/ }),
5217
vendor: 1,137 bytes, lines 5218-5248
5218/***/ "./node_modules/swiper/core/transition/transitionStart.js":
5219/*!****************************************************************!*\
5220  !*** ./node_modules/swiper/core/transition/transitionStart.js ***!
5221  \****************************************************************/
5222/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5223
5224__webpack_require__.r(__webpack_exports__);
5225/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5226/* harmony export */   "default": function() { return /* binding */ transitionStart; }
5227/* harmony export */ });
5228/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js");
5229
5230function transitionStart(runCallbacks = true, direction) {
5231  const swiper = this;
5232  const {
5233    params
5234  } = swiper;
5235  if (params.cssMode) return;
5236  if (params.autoHeight) {
5237    swiper.updateAutoHeight();
5238  }
5239  (0,_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
5240    swiper,
5241    runCallbacks,
5242    direction,
5243    step: 'Start'
5244  });
5245}
5246
5247/***/ }),
5248
vendor: 1,311 bytes, lines 5249-5282
5249/***/ "./node_modules/swiper/core/translate/getTranslate.js":
5250/*!************************************************************!*\
5251  !*** ./node_modules/swiper/core/translate/getTranslate.js ***!
5252  \************************************************************/
5253/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5254
5255__webpack_require__.r(__webpack_exports__);
5256/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5257/* harmony export */   "default": function() { return /* binding */ getSwiperTranslate; }
5258/* harmony export */ });
5259/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
5260
5261function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {
5262  const swiper = this;
5263  const {
5264    params,
5265    rtlTranslate: rtl,
5266    translate,
5267    wrapperEl
5268  } = swiper;
5269  if (params.virtualTranslate) {
5270    return rtl ? -translate : translate;
5271  }
5272  if (params.cssMode) {
5273    return translate;
5274  }
5275  let currentTranslate = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTranslate)(wrapperEl, axis);
5276  currentTranslate += swiper.cssOverflowAdjustment();
5277  if (rtl) currentTranslate = -currentTranslate;
5278  return currentTranslate || 0;
5279}
5280
5281/***/ }),
5282
vendor: 1,698 bytes, lines 5283-5309
5283/***/ "./node_modules/swiper/core/translate/index.js":
5284/*!*****************************************************!*\
5285  !*** ./node_modules/swiper/core/translate/index.js ***!
5286  \*****************************************************/
5287/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5288
5289__webpack_require__.r(__webpack_exports__);
5290/* harmony import */ var _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getTranslate.js */ "./node_modules/swiper/core/translate/getTranslate.js");
5291/* harmony import */ var _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setTranslate.js */ "./node_modules/swiper/core/translate/setTranslate.js");
5292/* harmony import */ var _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./minTranslate.js */ "./node_modules/swiper/core/translate/minTranslate.js");
5293/* harmony import */ var _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./maxTranslate.js */ "./node_modules/swiper/core/translate/maxTranslate.js");
5294/* harmony import */ var _translateTo_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./translateTo.js */ "./node_modules/swiper/core/translate/translateTo.js");
5295
5296
5297
5298
5299
5300/* harmony default export */ __webpack_exports__["default"] = ({
5301  getTranslate: _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__["default"],
5302  setTranslate: _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__["default"],
5303  minTranslate: _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__["default"],
5304  maxTranslate: _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__["default"],
5305  translateTo: _translateTo_js__WEBPACK_IMPORTED_MODULE_4__["default"]
5306});
5307
5308/***/ }),
5309
vendor: 667 bytes, lines 5310-5325
5310/***/ "./node_modules/swiper/core/translate/maxTranslate.js":
5311/*!************************************************************!*\
5312  !*** ./node_modules/swiper/core/translate/maxTranslate.js ***!
5313  \************************************************************/
5314/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5315
5316__webpack_require__.r(__webpack_exports__);
5317/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5318/* harmony export */   "default": function() { return /* binding */ maxTranslate; }
5319/* harmony export */ });
5320function maxTranslate() {
5321  return -this.snapGrid[this.snapGrid.length - 1];
5322}
5323
5324/***/ }),
5325
vendor: 644 bytes, lines 5326-5341
5326/***/ "./node_modules/swiper/core/translate/minTranslate.js":
5327/*!************************************************************!*\
5328  !*** ./node_modules/swiper/core/translate/minTranslate.js ***!
5329  \************************************************************/
5330/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5331
5332__webpack_require__.r(__webpack_exports__);
5333/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5334/* harmony export */   "default": function() { return /* binding */ minTranslate; }
5335/* harmony export */ });
5336function minTranslate() {
5337  return -this.snapGrid[0];
5338}
5339
5340/***/ }),
5341
vendor: 1,860 bytes, lines 5342-5400
5342/***/ "./node_modules/swiper/core/translate/setTranslate.js":
5343/*!************************************************************!*\
5344  !*** ./node_modules/swiper/core/translate/setTranslate.js ***!
5345  \************************************************************/
5346/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5347
5348__webpack_require__.r(__webpack_exports__);
5349/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5350/* harmony export */   "default": function() { return /* binding */ setTranslate; }
5351/* harmony export */ });
5352function setTranslate(translate, byController) {
5353  const swiper = this;
5354  const {
5355    rtlTranslate: rtl,
5356    params,
5357    wrapperEl,
5358    progress
5359  } = swiper;
5360  let x = 0;
5361  let y = 0;
5362  const z = 0;
5363  if (swiper.isHorizontal()) {
5364    x = rtl ? -translate : translate;
5365  } else {
5366    y = translate;
5367  }
5368  if (params.roundLengths) {
5369    x = Math.floor(x);
5370    y = Math.floor(y);
5371  }
5372  swiper.previousTranslate = swiper.translate;
5373  swiper.translate = swiper.isHorizontal() ? x : y;
5374  if (params.cssMode) {
5375    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
5376  } else if (!params.virtualTranslate) {
5377    if (swiper.isHorizontal()) {
5378      x -= swiper.cssOverflowAdjustment();
5379    } else {
5380      y -= swiper.cssOverflowAdjustment();
5381    }
5382    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;
5383  }
5384
5385  // Check if we need to update progress
5386  let newProgress;
5387  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
5388  if (translatesDiff === 0) {
5389    newProgress = 0;
5390  } else {
5391    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
5392  }
5393  if (newProgress !== progress) {
5394    swiper.updateProgress(translate);
5395  }
5396  swiper.emit('setTranslate', swiper.translate, byController);
5397}
5398
5399/***/ }),
5400
vendor: 3,128 bytes, lines 5401-5484
5401/***/ "./node_modules/swiper/core/translate/translateTo.js":
5402/*!***********************************************************!*\
5403  !*** ./node_modules/swiper/core/translate/translateTo.js ***!
5404  \***********************************************************/
5405/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5406
5407__webpack_require__.r(__webpack_exports__);
5408/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5409/* harmony export */   "default": function() { return /* binding */ translateTo; }
5410/* harmony export */ });
5411/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
5412
5413function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
5414  const swiper = this;
5415  const {
5416    params,
5417    wrapperEl
5418  } = swiper;
5419  if (swiper.animating && params.preventInteractionOnTransition) {
5420    return false;
5421  }
5422  const minTranslate = swiper.minTranslate();
5423  const maxTranslate = swiper.maxTranslate();
5424  let newTranslate;
5425  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;
5426
5427  // Update progress
5428  swiper.updateProgress(newTranslate);
5429  if (params.cssMode) {
5430    const isH = swiper.isHorizontal();
5431    if (speed === 0) {
5432      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
5433    } else {
5434      if (!swiper.support.smoothScroll) {
5435        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.animateCSSModeScroll)({
5436          swiper,
5437          targetPosition: -newTranslate,
5438          side: isH ? 'left' : 'top'
5439        });
5440        return true;
5441      }
5442      wrapperEl.scrollTo({
5443        [isH ? 'left' : 'top']: -newTranslate,
5444        behavior: 'smooth'
5445      });
5446    }
5447    return true;
5448  }
5449  if (speed === 0) {
5450    swiper.setTransition(0);
5451    swiper.setTranslate(newTranslate);
5452    if (runCallbacks) {
5453      swiper.emit('beforeTransitionStart', speed, internal);
5454      swiper.emit('transitionEnd');
5455    }
5456  } else {
5457    swiper.setTransition(speed);
5458    swiper.setTranslate(newTranslate);
5459    if (runCallbacks) {
5460      swiper.emit('beforeTransitionStart', speed, internal);
5461      swiper.emit('transitionStart');
5462    }
5463    if (!swiper.animating) {
5464      swiper.animating = true;
5465      if (!swiper.onTranslateToWrapperTransitionEnd) {
5466        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
5467          if (!swiper || swiper.destroyed) return;
5468          if (e.target !== this) return;
5469          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
5470          swiper.onTranslateToWrapperTransitionEnd = null;
5471          delete swiper.onTranslateToWrapperTransitionEnd;
5472          if (runCallbacks) {
5473            swiper.emit('transitionEnd');
5474          }
5475        };
5476      }
5477      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
5478    }
5479  }
5480  return true;
5481}
5482
5483/***/ }),
5484
vendor: 2,844 bytes, lines 5485-5523
5485/***/ "./node_modules/swiper/core/update/index.js":
5486/*!**************************************************!*\
5487  !*** ./node_modules/swiper/core/update/index.js ***!
5488  \**************************************************/
5489/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5490
5491__webpack_require__.r(__webpack_exports__);
5492/* harmony import */ var _updateSize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./updateSize.js */ "./node_modules/swiper/core/update/updateSize.js");
5493/* harmony import */ var _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateSlides.js */ "./node_modules/swiper/core/update/updateSlides.js");
5494/* harmony import */ var _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateAutoHeight.js */ "./node_modules/swiper/core/update/updateAutoHeight.js");
5495/* harmony import */ var _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateSlidesOffset.js */ "./node_modules/swiper/core/update/updateSlidesOffset.js");
5496/* harmony import */ var _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./updateSlidesProgress.js */ "./node_modules/swiper/core/update/updateSlidesProgress.js");
5497/* harmony import */ var _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./updateProgress.js */ "./node_modules/swiper/core/update/updateProgress.js");
5498/* harmony import */ var _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./updateSlidesClasses.js */ "./node_modules/swiper/core/update/updateSlidesClasses.js");
5499/* harmony import */ var _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./updateActiveIndex.js */ "./node_modules/swiper/core/update/updateActiveIndex.js");
5500/* harmony import */ var _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./updateClickedSlide.js */ "./node_modules/swiper/core/update/updateClickedSlide.js");
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510/* harmony default export */ __webpack_exports__["default"] = ({
5511  updateSize: _updateSize_js__WEBPACK_IMPORTED_MODULE_0__["default"],
5512  updateSlides: _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__["default"],
5513  updateAutoHeight: _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__["default"],
5514  updateSlidesOffset: _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__["default"],
5515  updateSlidesProgress: _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__["default"],
5516  updateProgress: _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__["default"],
5517  updateSlidesClasses: _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__["default"],
5518  updateActiveIndex: _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__["default"],
5519  updateClickedSlide: _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__["default"]
5520});
5521
5522/***/ }),
5523
vendor: 4,024 bytes, lines 5524-5634
5524/***/ "./node_modules/swiper/core/update/updateActiveIndex.js":
5525/*!**************************************************************!*\
5526  !*** ./node_modules/swiper/core/update/updateActiveIndex.js ***!
5527  \**************************************************************/
5528/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5529
5530__webpack_require__.r(__webpack_exports__);
5531/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5532/* harmony export */   "default": function() { return /* binding */ updateActiveIndex; },
5533/* harmony export */   "getActiveIndexByTranslate": function() { return /* binding */ getActiveIndexByTranslate; }
5534/* harmony export */ });
5535/* harmony import */ var _shared_process_lazy_preloader_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/process-lazy-preloader.js */ "./node_modules/swiper/shared/process-lazy-preloader.js");
5536
5537function getActiveIndexByTranslate(swiper) {
5538  const {
5539    slidesGrid,
5540    params
5541  } = swiper;
5542  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
5543  let activeIndex;
5544  for (let i = 0; i < slidesGrid.length; i += 1) {
5545    if (typeof slidesGrid[i + 1] !== 'undefined') {
5546      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
5547        activeIndex = i;
5548      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
5549        activeIndex = i + 1;
5550      }
5551    } else if (translate >= slidesGrid[i]) {
5552      activeIndex = i;
5553    }
5554  }
5555  // Normalize slideIndex
5556  if (params.normalizeSlideIndex) {
5557    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
5558  }
5559  return activeIndex;
5560}
5561function updateActiveIndex(newActiveIndex) {
5562  const swiper = this;
5563  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
5564  const {
5565    snapGrid,
5566    params,
5567    activeIndex: previousIndex,
5568    realIndex: previousRealIndex,
5569    snapIndex: previousSnapIndex
5570  } = swiper;
5571  let activeIndex = newActiveIndex;
5572  let snapIndex;
5573  const getVirtualRealIndex = aIndex => {
5574    let realIndex = aIndex - swiper.virtual.slidesBefore;
5575    if (realIndex < 0) {
5576      realIndex = swiper.virtual.slides.length + realIndex;
5577    }
5578    if (realIndex >= swiper.virtual.slides.length) {
5579      realIndex -= swiper.virtual.slides.length;
5580    }
5581    return realIndex;
5582  };
5583  if (typeof activeIndex === 'undefined') {
5584    activeIndex = getActiveIndexByTranslate(swiper);
5585  }
5586  if (snapGrid.indexOf(translate) >= 0) {
5587    snapIndex = snapGrid.indexOf(translate);
5588  } else {
5589    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
5590    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
5591  }
5592  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
5593  if (activeIndex === previousIndex) {
5594    if (snapIndex !== previousSnapIndex) {
5595      swiper.snapIndex = snapIndex;
5596      swiper.emit('snapIndexChange');
5597    }
5598    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
5599      swiper.realIndex = getVirtualRealIndex(activeIndex);
5600    }
5601    return;
5602  }
5603  // Get real index
5604  let realIndex;
5605  if (swiper.virtual && params.virtual.enabled && params.loop) {
5606    realIndex = getVirtualRealIndex(activeIndex);
5607  } else if (swiper.slides[activeIndex]) {
5608    realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);
5609  } else {
5610    realIndex = activeIndex;
5611  }
5612  Object.assign(swiper, {
5613    previousSnapIndex,
5614    snapIndex,
5615    previousRealIndex,
5616    realIndex,
5617    previousIndex,
5618    activeIndex
5619  });
5620  if (swiper.initialized) {
5621    (0,_shared_process_lazy_preloader_js__WEBPACK_IMPORTED_MODULE_0__.preload)(swiper);
5622  }
5623  swiper.emit('activeIndexChange');
5624  swiper.emit('snapIndexChange');
5625  if (previousRealIndex !== realIndex) {
5626    swiper.emit('realIndexChange');
5627  }
5628  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
5629    swiper.emit('slideChange');
5630  }
5631}
5632
5633/***/ }),
5634
vendor: 2,061 bytes, lines 5635-5692
5635/***/ "./node_modules/swiper/core/update/updateAutoHeight.js":
5636/*!*************************************************************!*\
5637  !*** ./node_modules/swiper/core/update/updateAutoHeight.js ***!
5638  \*************************************************************/
5639/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5640
5641__webpack_require__.r(__webpack_exports__);
5642/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5643/* harmony export */   "default": function() { return /* binding */ updateAutoHeight; }
5644/* harmony export */ });
5645function updateAutoHeight(speed) {
5646  const swiper = this;
5647  const activeSlides = [];
5648  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
5649  let newHeight = 0;
5650  let i;
5651  if (typeof speed === 'number') {
5652    swiper.setTransition(speed);
5653  } else if (speed === true) {
5654    swiper.setTransition(swiper.params.speed);
5655  }
5656  const getSlideByIndex = index => {
5657    if (isVirtual) {
5658      return swiper.slides[swiper.getSlideIndexByData(index)];
5659    }
5660    return swiper.slides[index];
5661  };
5662  // Find slides currently in view
5663  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
5664    if (swiper.params.centeredSlides) {
5665      (swiper.visibleSlides || []).forEach(slide => {
5666        activeSlides.push(slide);
5667      });
5668    } else {
5669      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
5670        const index = swiper.activeIndex + i;
5671        if (index > swiper.slides.length && !isVirtual) break;
5672        activeSlides.push(getSlideByIndex(index));
5673      }
5674    }
5675  } else {
5676    activeSlides.push(getSlideByIndex(swiper.activeIndex));
5677  }
5678
5679  // Find new height from highest slide in view
5680  for (i = 0; i < activeSlides.length; i += 1) {
5681    if (typeof activeSlides[i] !== 'undefined') {
5682      const height = activeSlides[i].offsetHeight;
5683      newHeight = height > newHeight ? height : newHeight;
5684    }
5685  }
5686
5687  // Update Height
5688  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;
5689}
5690
5691/***/ }),
5692
vendor: 1,528 bytes, lines 5693-5736
5693/***/ "./node_modules/swiper/core/update/updateClickedSlide.js":
5694/*!***************************************************************!*\
5695  !*** ./node_modules/swiper/core/update/updateClickedSlide.js ***!
5696  \***************************************************************/
5697/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5698
5699__webpack_require__.r(__webpack_exports__);
5700/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5701/* harmony export */   "default": function() { return /* binding */ updateClickedSlide; }
5702/* harmony export */ });
5703function updateClickedSlide(e) {
5704  const swiper = this;
5705  const params = swiper.params;
5706  const slide = e.closest(`.${params.slideClass}, swiper-slide`);
5707  let slideFound = false;
5708  let slideIndex;
5709  if (slide) {
5710    for (let i = 0; i < swiper.slides.length; i += 1) {
5711      if (swiper.slides[i] === slide) {
5712        slideFound = true;
5713        slideIndex = i;
5714        break;
5715      }
5716    }
5717  }
5718  if (slide && slideFound) {
5719    swiper.clickedSlide = slide;
5720    if (swiper.virtual && swiper.params.virtual.enabled) {
5721      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);
5722    } else {
5723      swiper.clickedIndex = slideIndex;
5724    }
5725  } else {
5726    swiper.clickedSlide = undefined;
5727    swiper.clickedIndex = undefined;
5728    return;
5729  }
5730  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
5731    swiper.slideToClickedSlide();
5732  }
5733}
5734
5735/***/ }),
5736
vendor: 2,791 bytes, lines 5737-5811
5737/***/ "./node_modules/swiper/core/update/updateProgress.js":
5738/*!***********************************************************!*\
5739  !*** ./node_modules/swiper/core/update/updateProgress.js ***!
5740  \***********************************************************/
5741/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5742
5743__webpack_require__.r(__webpack_exports__);
5744/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5745/* harmony export */   "default": function() { return /* binding */ updateProgress; }
5746/* harmony export */ });
5747function updateProgress(translate) {
5748  const swiper = this;
5749  if (typeof translate === 'undefined') {
5750    const multiplier = swiper.rtlTranslate ? -1 : 1;
5751    // eslint-disable-next-line
5752    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
5753  }
5754  const params = swiper.params;
5755  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
5756  let {
5757    progress,
5758    isBeginning,
5759    isEnd,
5760    progressLoop
5761  } = swiper;
5762  const wasBeginning = isBeginning;
5763  const wasEnd = isEnd;
5764  if (translatesDiff === 0) {
5765    progress = 0;
5766    isBeginning = true;
5767    isEnd = true;
5768  } else {
5769    progress = (translate - swiper.minTranslate()) / translatesDiff;
5770    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;
5771    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;
5772    isBeginning = isBeginningRounded || progress <= 0;
5773    isEnd = isEndRounded || progress >= 1;
5774    if (isBeginningRounded) progress = 0;
5775    if (isEndRounded) progress = 1;
5776  }
5777  if (params.loop) {
5778    const firstSlideIndex = swiper.getSlideIndexByData(0);
5779    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);
5780    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];
5781    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];
5782    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];
5783    const translateAbs = Math.abs(translate);
5784    if (translateAbs >= firstSlideTranslate) {
5785      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;
5786    } else {
5787      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;
5788    }
5789    if (progressLoop > 1) progressLoop -= 1;
5790  }
5791  Object.assign(swiper, {
5792    progress,
5793    progressLoop,
5794    isBeginning,
5795    isEnd
5796  });
5797  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
5798  if (isBeginning && !wasBeginning) {
5799    swiper.emit('reachBeginning toEdge');
5800  }
5801  if (isEnd && !wasEnd) {
5802    swiper.emit('reachEnd toEdge');
5803  }
5804  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
5805    swiper.emit('fromEdge');
5806  }
5807  swiper.emit('progress', progress);
5808}
5809
5810/***/ }),
5811
vendor: 1,918 bytes, lines 5812-5856
5812/***/ "./node_modules/swiper/core/update/updateSize.js":
5813/*!*******************************************************!*\
5814  !*** ./node_modules/swiper/core/update/updateSize.js ***!
5815  \*******************************************************/
5816/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5817
5818__webpack_require__.r(__webpack_exports__);
5819/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5820/* harmony export */   "default": function() { return /* binding */ updateSize; }
5821/* harmony export */ });
5822/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
5823
5824function updateSize() {
5825  const swiper = this;
5826  let width;
5827  let height;
5828  const el = swiper.el;
5829  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
5830    width = swiper.params.width;
5831  } else {
5832    width = el.clientWidth;
5833  }
5834  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
5835    height = swiper.params.height;
5836  } else {
5837    height = el.clientHeight;
5838  }
5839  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
5840    return;
5841  }
5842
5843  // Subtract paddings
5844  width = width - parseInt((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementStyle)(el, 'padding-left') || 0, 10) - parseInt((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementStyle)(el, 'padding-right') || 0, 10);
5845  height = height - parseInt((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementStyle)(el, 'padding-top') || 0, 10) - parseInt((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementStyle)(el, 'padding-bottom') || 0, 10);
5846  if (Number.isNaN(width)) width = 0;
5847  if (Number.isNaN(height)) height = 0;
5848  Object.assign(swiper, {
5849    width,
5850    height,
5851    size: swiper.isHorizontal() ? width : height
5852  });
5853}
5854
5855/***/ }),
5856
vendor: 12,407 bytes, lines 5857-6157
5857/***/ "./node_modules/swiper/core/update/updateSlides.js":
5858/*!*********************************************************!*\
5859  !*** ./node_modules/swiper/core/update/updateSlides.js ***!
5860  \*********************************************************/
5861/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5862
5863__webpack_require__.r(__webpack_exports__);
5864/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5865/* harmony export */   "default": function() { return /* binding */ updateSlides; }
5866/* harmony export */ });
5867/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
5868
5869function updateSlides() {
5870  const swiper = this;
5871  function getDirectionLabel(property) {
5872    if (swiper.isHorizontal()) {
5873      return property;
5874    }
5875    // prettier-ignore
5876    return {
5877      'width': 'height',
5878      'margin-top': 'margin-left',
5879      'margin-bottom ': 'margin-right',
5880      'margin-left': 'margin-top',
5881      'margin-right': 'margin-bottom',
5882      'padding-left': 'padding-top',
5883      'padding-right': 'padding-bottom',
5884      'marginRight': 'marginBottom'
5885    }[property];
5886  }
5887  function getDirectionPropertyValue(node, label) {
5888    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);
5889  }
5890  const params = swiper.params;
5891  const {
5892    wrapperEl,
5893    slidesEl,
5894    size: swiperSize,
5895    rtlTranslate: rtl,
5896    wrongRTL
5897  } = swiper;
5898  const isVirtual = swiper.virtual && params.virtual.enabled;
5899  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
5900  const slides = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementChildren)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);
5901  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
5902  let snapGrid = [];
5903  const slidesGrid = [];
5904  const slidesSizesGrid = [];
5905  let offsetBefore = params.slidesOffsetBefore;
5906  if (typeof offsetBefore === 'function') {
5907    offsetBefore = params.slidesOffsetBefore.call(swiper);
5908  }
5909  let offsetAfter = params.slidesOffsetAfter;
5910  if (typeof offsetAfter === 'function') {
5911    offsetAfter = params.slidesOffsetAfter.call(swiper);
5912  }
5913  const previousSnapGridLength = swiper.snapGrid.length;
5914  const previousSlidesGridLength = swiper.slidesGrid.length;
5915  let spaceBetween = params.spaceBetween;
5916  let slidePosition = -offsetBefore;
5917  let prevSlideSize = 0;
5918  let index = 0;
5919  if (typeof swiperSize === 'undefined') {
5920    return;
5921  }
5922  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
5923    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
5924  } else if (typeof spaceBetween === 'string') {
5925    spaceBetween = parseFloat(spaceBetween);
5926  }
5927  swiper.virtualSize = -spaceBetween;
5928
5929  // reset margins
5930  slides.forEach(slideEl => {
5931    if (rtl) {
5932      slideEl.style.marginLeft = '';
5933    } else {
5934      slideEl.style.marginRight = '';
5935    }
5936    slideEl.style.marginBottom = '';
5937    slideEl.style.marginTop = '';
5938  });
5939
5940  // reset cssMode offsets
5941  if (params.centeredSlides && params.cssMode) {
5942    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(wrapperEl, '--swiper-centered-offset-before', '');
5943    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(wrapperEl, '--swiper-centered-offset-after', '');
5944  }
5945  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
5946  if (gridEnabled) {
5947    swiper.grid.initSlides(slidesLength);
5948  }
5949
5950  // Calc slides
5951  let slideSize;
5952  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {
5953    return typeof params.breakpoints[key].slidesPerView !== 'undefined';
5954  }).length > 0;
5955  for (let i = 0; i < slidesLength; i += 1) {
5956    slideSize = 0;
5957    let slide;
5958    if (slides[i]) slide = slides[i];
5959    if (gridEnabled) {
5960      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);
5961    }
5962    if (slides[i] && (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementStyle)(slide, 'display') === 'none') continue; // eslint-disable-line
5963
5964    if (params.slidesPerView === 'auto') {
5965      if (shouldResetSlideSize) {
5966        slides[i].style[getDirectionLabel('width')] = ``;
5967      }
5968      const slideStyles = getComputedStyle(slide);
5969      const currentTransform = slide.style.transform;
5970      const currentWebKitTransform = slide.style.webkitTransform;
5971      if (currentTransform) {
5972        slide.style.transform = 'none';
5973      }
5974      if (currentWebKitTransform) {
5975        slide.style.webkitTransform = 'none';
5976      }
5977      if (params.roundLengths) {
5978        slideSize = swiper.isHorizontal() ? (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementOuterSize)(slide, 'width', true) : (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementOuterSize)(slide, 'height', true);
5979      } else {
5980        // eslint-disable-next-line
5981        const width = getDirectionPropertyValue(slideStyles, 'width');
5982        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
5983        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
5984        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
5985        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
5986        const boxSizing = slideStyles.getPropertyValue('box-sizing');
5987        if (boxSizing && boxSizing === 'border-box') {
5988          slideSize = width + marginLeft + marginRight;
5989        } else {
5990          const {
5991            clientWidth,
5992            offsetWidth
5993          } = slide;
5994          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
5995        }
5996      }
5997      if (currentTransform) {
5998        slide.style.transform = currentTransform;
5999      }
6000      if (currentWebKitTransform) {
6001        slide.style.webkitTransform = currentWebKitTransform;
6002      }
6003      if (params.roundLengths) slideSize = Math.floor(slideSize);
6004    } else {
6005      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
6006      if (params.roundLengths) slideSize = Math.floor(slideSize);
6007      if (slides[i]) {
6008        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;
6009      }
6010    }
6011    if (slides[i]) {
6012      slides[i].swiperSlideSize = slideSize;
6013    }
6014    slidesSizesGrid.push(slideSize);
6015    if (params.centeredSlides) {
6016      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
6017      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
6018      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
6019      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
6020      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
6021      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
6022      slidesGrid.push(slidePosition);
6023    } else {
6024      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
6025      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
6026      slidesGrid.push(slidePosition);
6027      slidePosition = slidePosition + slideSize + spaceBetween;
6028    }
6029    swiper.virtualSize += slideSize + spaceBetween;
6030    prevSlideSize = slideSize;
6031    index += 1;
6032  }
6033  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
6034  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
6035    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;
6036  }
6037  if (params.setWrapperSize) {
6038    wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;
6039  }
6040  if (gridEnabled) {
6041    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);
6042  }
6043
6044  // Remove last grid elements depending on width
6045  if (!params.centeredSlides) {
6046    const newSlidesGrid = [];
6047    for (let i = 0; i < snapGrid.length; i += 1) {
6048      let slidesGridItem = snapGrid[i];
6049      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
6050      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
6051        newSlidesGrid.push(slidesGridItem);
6052      }
6053    }
6054    snapGrid = newSlidesGrid;
6055    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
6056      snapGrid.push(swiper.virtualSize - swiperSize);
6057    }
6058  }
6059  if (isVirtual && params.loop) {
6060    const size = slidesSizesGrid[0] + spaceBetween;
6061    if (params.slidesPerGroup > 1) {
6062      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);
6063      const groupSize = size * params.slidesPerGroup;
6064      for (let i = 0; i < groups; i += 1) {
6065        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);
6066      }
6067    }
6068    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {
6069      if (params.slidesPerGroup === 1) {
6070        snapGrid.push(snapGrid[snapGrid.length - 1] + size);
6071      }
6072      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);
6073      swiper.virtualSize += size;
6074    }
6075  }
6076  if (snapGrid.length === 0) snapGrid = [0];
6077  if (spaceBetween !== 0) {
6078    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');
6079    slides.filter((_, slideIndex) => {
6080      if (!params.cssMode || params.loop) return true;
6081      if (slideIndex === slides.length - 1) {
6082        return false;
6083      }
6084      return true;
6085    }).forEach(slideEl => {
6086      slideEl.style[key] = `${spaceBetween}px`;
6087    });
6088  }
6089  if (params.centeredSlides && params.centeredSlidesBounds) {
6090    let allSlidesSize = 0;
6091    slidesSizesGrid.forEach(slideSizeValue => {
6092      allSlidesSize += slideSizeValue + (spaceBetween || 0);
6093    });
6094    allSlidesSize -= spaceBetween;
6095    const maxSnap = allSlidesSize - swiperSize;
6096    snapGrid = snapGrid.map(snap => {
6097      if (snap < 0) return -offsetBefore;
6098      if (snap > maxSnap) return maxSnap + offsetAfter;
6099      return snap;
6100    });
6101  }
6102  if (params.centerInsufficientSlides) {
6103    let allSlidesSize = 0;
6104    slidesSizesGrid.forEach(slideSizeValue => {
6105      allSlidesSize += slideSizeValue + (spaceBetween || 0);
6106    });
6107    allSlidesSize -= spaceBetween;
6108    if (allSlidesSize < swiperSize) {
6109      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
6110      snapGrid.forEach((snap, snapIndex) => {
6111        snapGrid[snapIndex] = snap - allSlidesOffset;
6112      });
6113      slidesGrid.forEach((snap, snapIndex) => {
6114        slidesGrid[snapIndex] = snap + allSlidesOffset;
6115      });
6116    }
6117  }
6118  Object.assign(swiper, {
6119    slides,
6120    snapGrid,
6121    slidesGrid,
6122    slidesSizesGrid
6123  });
6124  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
6125    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);
6126    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
6127    const addToSnapGrid = -swiper.snapGrid[0];
6128    const addToSlidesGrid = -swiper.slidesGrid[0];
6129    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);
6130    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);
6131  }
6132  if (slidesLength !== previousSlidesLength) {
6133    swiper.emit('slidesLengthChange');
6134  }
6135  if (snapGrid.length !== previousSnapGridLength) {
6136    if (swiper.params.watchOverflow) swiper.checkOverflow();
6137    swiper.emit('snapGridLengthChange');
6138  }
6139  if (slidesGrid.length !== previousSlidesGridLength) {
6140    swiper.emit('slidesGridLengthChange');
6141  }
6142  if (params.watchSlidesProgress) {
6143    swiper.updateSlidesOffset();
6144  }
6145  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {
6146    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;
6147    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);
6148    if (slidesLength <= params.maxBackfaceHiddenSlides) {
6149      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);
6150    } else if (hasClassBackfaceClassAdded) {
6151      swiper.el.classList.remove(backFaceHiddenClass);
6152    }
6153  }
6154}
6155
6156/***/ }),
6157
vendor: 2,636 bytes, lines 6158-6223
6158/***/ "./node_modules/swiper/core/update/updateSlidesClasses.js":
6159/*!****************************************************************!*\
6160  !*** ./node_modules/swiper/core/update/updateSlidesClasses.js ***!
6161  \****************************************************************/
6162/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6163
6164__webpack_require__.r(__webpack_exports__);
6165/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6166/* harmony export */   "default": function() { return /* binding */ updateSlidesClasses; }
6167/* harmony export */ });
6168/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
6169
6170function updateSlidesClasses() {
6171  const swiper = this;
6172  const {
6173    slides,
6174    params,
6175    slidesEl,
6176    activeIndex
6177  } = swiper;
6178  const isVirtual = swiper.virtual && params.virtual.enabled;
6179  const getFilteredSlide = selector => {
6180    return (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementChildren)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];
6181  };
6182  slides.forEach(slideEl => {
6183    slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);
6184  });
6185  let activeSlide;
6186  if (isVirtual) {
6187    if (params.loop) {
6188      let slideIndex = activeIndex - swiper.virtual.slidesBefore;
6189      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;
6190      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;
6191      activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`);
6192    } else {
6193      activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`);
6194    }
6195  } else {
6196    activeSlide = slides[activeIndex];
6197  }
6198  if (activeSlide) {
6199    // Active classes
6200    activeSlide.classList.add(params.slideActiveClass);
6201
6202    // Next Slide
6203    let nextSlide = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementNextAll)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
6204    if (params.loop && !nextSlide) {
6205      nextSlide = slides[0];
6206    }
6207    if (nextSlide) {
6208      nextSlide.classList.add(params.slideNextClass);
6209    }
6210    // Prev Slide
6211    let prevSlide = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementPrevAll)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
6212    if (params.loop && !prevSlide === 0) {
6213      prevSlide = slides[slides.length - 1];
6214    }
6215    if (prevSlide) {
6216      prevSlide.classList.add(params.slidePrevClass);
6217    }
6218  }
6219  swiper.emitSlidesClasses();
6220}
6221
6222/***/ }),
6223
vendor: 1,054 bytes, lines 6224-6245
6224/***/ "./node_modules/swiper/core/update/updateSlidesOffset.js":
6225/*!***************************************************************!*\
6226  !*** ./node_modules/swiper/core/update/updateSlidesOffset.js ***!
6227  \***************************************************************/
6228/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6229
6230__webpack_require__.r(__webpack_exports__);
6231/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6232/* harmony export */   "default": function() { return /* binding */ updateSlidesOffset; }
6233/* harmony export */ });
6234function updateSlidesOffset() {
6235  const swiper = this;
6236  const slides = swiper.slides;
6237  // eslint-disable-next-line
6238  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;
6239  for (let i = 0; i < slides.length; i += 1) {
6240    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();
6241  }
6242}
6243
6244/***/ }),
6245
vendor: 2,641 bytes, lines 6246-6303
6246/***/ "./node_modules/swiper/core/update/updateSlidesProgress.js":
6247/*!*****************************************************************!*\
6248  !*** ./node_modules/swiper/core/update/updateSlidesProgress.js ***!
6249  \*****************************************************************/
6250/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6251
6252__webpack_require__.r(__webpack_exports__);
6253/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6254/* harmony export */   "default": function() { return /* binding */ updateSlidesProgress; }
6255/* harmony export */ });
6256function updateSlidesProgress(translate = this && this.translate || 0) {
6257  const swiper = this;
6258  const params = swiper.params;
6259  const {
6260    slides,
6261    rtlTranslate: rtl,
6262    snapGrid
6263  } = swiper;
6264  if (slides.length === 0) return;
6265  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
6266  let offsetCenter = -translate;
6267  if (rtl) offsetCenter = translate;
6268
6269  // Visible Slides
6270  slides.forEach(slideEl => {
6271    slideEl.classList.remove(params.slideVisibleClass);
6272  });
6273  swiper.visibleSlidesIndexes = [];
6274  swiper.visibleSlides = [];
6275  let spaceBetween = params.spaceBetween;
6276  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
6277    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
6278  } else if (typeof spaceBetween === 'string') {
6279    spaceBetween = parseFloat(spaceBetween);
6280  }
6281  for (let i = 0; i < slides.length; i += 1) {
6282    const slide = slides[i];
6283    let slideOffset = slide.swiperSlideOffset;
6284    if (params.cssMode && params.centeredSlides) {
6285      slideOffset -= slides[0].swiperSlideOffset;
6286    }
6287    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
6288    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
6289    const slideBefore = -(offsetCenter - slideOffset);
6290    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
6291    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
6292    if (isVisible) {
6293      swiper.visibleSlides.push(slide);
6294      swiper.visibleSlidesIndexes.push(i);
6295      slides[i].classList.add(params.slideVisibleClass);
6296    }
6297    slide.progress = rtl ? -slideProgress : slideProgress;
6298    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
6299  }
6300}
6301
6302/***/ }),
6303
vendor: 12,030 bytes, lines 6304-6661
6304/***/ "./node_modules/swiper/modules/a11y/a11y.js":
6305/*!**************************************************!*\
6306  !*** ./node_modules/swiper/modules/a11y/a11y.js ***!
6307  \**************************************************/
6308/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6309
6310__webpack_require__.r(__webpack_exports__);
6311/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6312/* harmony export */   "default": function() { return /* binding */ A11y; }
6313/* harmony export */ });
6314/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js");
6315/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
6316
6317
6318function A11y({
6319  swiper,
6320  extendParams,
6321  on
6322}) {
6323  extendParams({
6324    a11y: {
6325      enabled: true,
6326      notificationClass: 'swiper-notification',
6327      prevSlideMessage: 'Previous slide',
6328      nextSlideMessage: 'Next slide',
6329      firstSlideMessage: 'This is the first slide',
6330      lastSlideMessage: 'This is the last slide',
6331      paginationBulletMessage: 'Go to slide {{index}}',
6332      slideLabelMessage: '{{index}} / {{slidesLength}}',
6333      containerMessage: null,
6334      containerRoleDescriptionMessage: null,
6335      itemRoleDescriptionMessage: null,
6336      slideRole: 'group',
6337      id: null
6338    }
6339  });
6340  swiper.a11y = {
6341    clicked: false
6342  };
6343  let liveRegion = null;
6344  function notify(message) {
6345    const notification = liveRegion;
6346    if (notification.length === 0) return;
6347    notification.innerHTML = '';
6348    notification.innerHTML = message;
6349  }
6350  const makeElementsArray = el => {
6351    if (!Array.isArray(el)) el = [el].filter(e => !!e);
6352    return el;
6353  };
6354  function getRandomNumber(size = 16) {
6355    const randomChar = () => Math.round(16 * Math.random()).toString(16);
6356    return 'x'.repeat(size).replace(/x/g, randomChar);
6357  }
6358  function makeElFocusable(el) {
6359    el = makeElementsArray(el);
6360    el.forEach(subEl => {
6361      subEl.setAttribute('tabIndex', '0');
6362    });
6363  }
6364  function makeElNotFocusable(el) {
6365    el = makeElementsArray(el);
6366    el.forEach(subEl => {
6367      subEl.setAttribute('tabIndex', '-1');
6368    });
6369  }
6370  function addElRole(el, role) {
6371    el = makeElementsArray(el);
6372    el.forEach(subEl => {
6373      subEl.setAttribute('role', role);
6374    });
6375  }
6376  function addElRoleDescription(el, description) {
6377    el = makeElementsArray(el);
6378    el.forEach(subEl => {
6379      subEl.setAttribute('aria-roledescription', description);
6380    });
6381  }
6382  function addElControls(el, controls) {
6383    el = makeElementsArray(el);
6384    el.forEach(subEl => {
6385      subEl.setAttribute('aria-controls', controls);
6386    });
6387  }
6388  function addElLabel(el, label) {
6389    el = makeElementsArray(el);
6390    el.forEach(subEl => {
6391      subEl.setAttribute('aria-label', label);
6392    });
6393  }
6394  function addElId(el, id) {
6395    el = makeElementsArray(el);
6396    el.forEach(subEl => {
6397      subEl.setAttribute('id', id);
6398    });
6399  }
6400  function addElLive(el, live) {
6401    el = makeElementsArray(el);
6402    el.forEach(subEl => {
6403      subEl.setAttribute('aria-live', live);
6404    });
6405  }
6406  function disableEl(el) {
6407    el = makeElementsArray(el);
6408    el.forEach(subEl => {
6409      subEl.setAttribute('aria-disabled', true);
6410    });
6411  }
6412  function enableEl(el) {
6413    el = makeElementsArray(el);
6414    el.forEach(subEl => {
6415      subEl.setAttribute('aria-disabled', false);
6416    });
6417  }
6418  function onEnterOrSpaceKey(e) {
6419    if (e.keyCode !== 13 && e.keyCode !== 32) return;
6420    const params = swiper.params.a11y;
6421    const targetEl = e.target;
6422    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {
6423      if (!e.target.matches((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass))) return;
6424    }
6425    if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {
6426      if (!(swiper.isEnd && !swiper.params.loop)) {
6427        swiper.slideNext();
6428      }
6429      if (swiper.isEnd) {
6430        notify(params.lastSlideMessage);
6431      } else {
6432        notify(params.nextSlideMessage);
6433      }
6434    }
6435    if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {
6436      if (!(swiper.isBeginning && !swiper.params.loop)) {
6437        swiper.slidePrev();
6438      }
6439      if (swiper.isBeginning) {
6440        notify(params.firstSlideMessage);
6441      } else {
6442        notify(params.prevSlideMessage);
6443      }
6444    }
6445    if (swiper.pagination && targetEl.matches((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass))) {
6446      targetEl.click();
6447    }
6448  }
6449  function updateNavigation() {
6450    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
6451    const {
6452      nextEl,
6453      prevEl
6454    } = swiper.navigation;
6455    if (prevEl) {
6456      if (swiper.isBeginning) {
6457        disableEl(prevEl);
6458        makeElNotFocusable(prevEl);
6459      } else {
6460        enableEl(prevEl);
6461        makeElFocusable(prevEl);
6462      }
6463    }
6464    if (nextEl) {
6465      if (swiper.isEnd) {
6466        disableEl(nextEl);
6467        makeElNotFocusable(nextEl);
6468      } else {
6469        enableEl(nextEl);
6470        makeElFocusable(nextEl);
6471      }
6472    }
6473  }
6474  function hasPagination() {
6475    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
6476  }
6477  function hasClickablePagination() {
6478    return hasPagination() && swiper.params.pagination.clickable;
6479  }
6480  function updatePagination() {
6481    const params = swiper.params.a11y;
6482    if (!hasPagination()) return;
6483    swiper.pagination.bullets.forEach(bulletEl => {
6484      if (swiper.params.pagination.clickable) {
6485        makeElFocusable(bulletEl);
6486        if (!swiper.params.pagination.renderBullet) {
6487          addElRole(bulletEl, 'button');
6488          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementIndex)(bulletEl) + 1));
6489        }
6490      }
6491      if (bulletEl.matches((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletActiveClass))) {
6492        bulletEl.setAttribute('aria-current', 'true');
6493      } else {
6494        bulletEl.removeAttribute('aria-current');
6495      }
6496    });
6497  }
6498  const initNavEl = (el, wrapperId, message) => {
6499    makeElFocusable(el);
6500    if (el.tagName !== 'BUTTON') {
6501      addElRole(el, 'button');
6502      el.addEventListener('keydown', onEnterOrSpaceKey);
6503    }
6504    addElLabel(el, message);
6505    addElControls(el, wrapperId);
6506  };
6507  const handlePointerDown = () => {
6508    swiper.a11y.clicked = true;
6509  };
6510  const handlePointerUp = () => {
6511    requestAnimationFrame(() => {
6512      requestAnimationFrame(() => {
6513        if (!swiper.destroyed) {
6514          swiper.a11y.clicked = false;
6515        }
6516      });
6517    });
6518  };
6519  const handleFocus = e => {
6520    if (swiper.a11y.clicked) return;
6521    const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
6522    if (!slideEl || !swiper.slides.includes(slideEl)) return;
6523    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
6524    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
6525    if (isActive || isVisible) return;
6526    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
6527    if (swiper.isHorizontal()) {
6528      swiper.el.scrollLeft = 0;
6529    } else {
6530      swiper.el.scrollTop = 0;
6531    }
6532    swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
6533  };
6534  const initSlides = () => {
6535    const params = swiper.params.a11y;
6536    if (params.itemRoleDescriptionMessage) {
6537      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);
6538    }
6539    if (params.slideRole) {
6540      addElRole(swiper.slides, params.slideRole);
6541    }
6542    const slidesLength = swiper.slides.length;
6543    if (params.slideLabelMessage) {
6544      swiper.slides.forEach((slideEl, index) => {
6545        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;
6546        const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
6547        addElLabel(slideEl, ariaLabelMessage);
6548      });
6549    }
6550  };
6551  const init = () => {
6552    const params = swiper.params.a11y;
6553    if (swiper.isElement) {
6554      swiper.el.shadowEl.append(liveRegion);
6555    } else {
6556      swiper.el.append(liveRegion);
6557    }
6558
6559    // Container
6560    const containerEl = swiper.el;
6561    if (params.containerRoleDescriptionMessage) {
6562      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);
6563    }
6564    if (params.containerMessage) {
6565      addElLabel(containerEl, params.containerMessage);
6566    }
6567
6568    // Wrapper
6569    const wrapperEl = swiper.wrapperEl;
6570    const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;
6571    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
6572    addElId(wrapperEl, wrapperId);
6573    addElLive(wrapperEl, live);
6574
6575    // Slide
6576    initSlides();
6577
6578    // Navigation
6579    let {
6580      nextEl,
6581      prevEl
6582    } = swiper.navigation ? swiper.navigation : {};
6583    nextEl = makeElementsArray(nextEl);
6584    prevEl = makeElementsArray(prevEl);
6585    if (nextEl) {
6586      nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));
6587    }
6588    if (prevEl) {
6589      prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));
6590    }
6591
6592    // Pagination
6593    if (hasClickablePagination()) {
6594      const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];
6595      paginationEl.forEach(el => {
6596        el.addEventListener('keydown', onEnterOrSpaceKey);
6597      });
6598    }
6599
6600    // Tab focus
6601    swiper.el.addEventListener('focus', handleFocus, true);
6602    swiper.el.addEventListener('pointerdown', handlePointerDown, true);
6603    swiper.el.addEventListener('pointerup', handlePointerUp, true);
6604  };
6605  function destroy() {
6606    if (liveRegion) liveRegion.remove();
6607    let {
6608      nextEl,
6609      prevEl
6610    } = swiper.navigation ? swiper.navigation : {};
6611    nextEl = makeElementsArray(nextEl);
6612    prevEl = makeElementsArray(prevEl);
6613    if (nextEl) {
6614      nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
6615    }
6616    if (prevEl) {
6617      prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
6618    }
6619
6620    // Pagination
6621    if (hasClickablePagination()) {
6622      const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];
6623      paginationEl.forEach(el => {
6624        el.removeEventListener('keydown', onEnterOrSpaceKey);
6625      });
6626    }
6627
6628    // Tab focus
6629    swiper.el.removeEventListener('focus', handleFocus, true);
6630    swiper.el.removeEventListener('pointerdown', handlePointerDown, true);
6631    swiper.el.removeEventListener('pointerup', handlePointerUp, true);
6632  }
6633  on('beforeInit', () => {
6634    liveRegion = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.createElement)('span', swiper.params.a11y.notificationClass);
6635    liveRegion.setAttribute('aria-live', 'assertive');
6636    liveRegion.setAttribute('aria-atomic', 'true');
6637  });
6638  on('afterInit', () => {
6639    if (!swiper.params.a11y.enabled) return;
6640    init();
6641  });
6642  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {
6643    if (!swiper.params.a11y.enabled) return;
6644    initSlides();
6645  });
6646  on('fromEdge toEdge afterInit lock unlock', () => {
6647    if (!swiper.params.a11y.enabled) return;
6648    updateNavigation();
6649  });
6650  on('paginationUpdate', () => {
6651    if (!swiper.params.a11y.enabled) return;
6652    updatePagination();
6653  });
6654  on('destroy', () => {
6655    if (!swiper.params.a11y.enabled) return;
6656    destroy();
6657  });
6658}
6659
6660/***/ }),
6661
vendor: 9,404 bytes, lines 6662-6954
6662/***/ "./node_modules/swiper/modules/autoplay/autoplay.js":
6663/*!**********************************************************!*\
6664  !*** ./node_modules/swiper/modules/autoplay/autoplay.js ***!
6665  \**********************************************************/
6666/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6667
6668__webpack_require__.r(__webpack_exports__);
6669/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6670/* harmony export */   "default": function() { return /* binding */ Autoplay; }
6671/* harmony export */ });
6672/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
6673/* eslint no-underscore-dangle: "off" */
6674/* eslint no-use-before-define: "off" */
6675
6676function Autoplay({
6677  swiper,
6678  extendParams,
6679  on,
6680  emit,
6681  params
6682}) {
6683  swiper.autoplay = {
6684    running: false,
6685    paused: false,
6686    timeLeft: 0
6687  };
6688  extendParams({
6689    autoplay: {
6690      enabled: false,
6691      delay: 3000,
6692      waitForTransition: true,
6693      disableOnInteraction: true,
6694      stopOnLastSlide: false,
6695      reverseDirection: false,
6696      pauseOnMouseEnter: false
6697    }
6698  });
6699  let timeout;
6700  let raf;
6701  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;
6702  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;
6703  let autoplayTimeLeft;
6704  let autoplayStartTime = new Date().getTime;
6705  let wasPaused;
6706  let isTouched;
6707  let pausedByTouch;
6708  let touchStartTimeout;
6709  let slideChanged;
6710  let pausedByInteraction;
6711  function onTransitionEnd(e) {
6712    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;
6713    if (e.target !== swiper.wrapperEl) return;
6714    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);
6715    resume();
6716  }
6717  const calcTimeLeft = () => {
6718    if (swiper.destroyed || !swiper.autoplay.running) return;
6719    if (swiper.autoplay.paused) {
6720      wasPaused = true;
6721    } else if (wasPaused) {
6722      autoplayDelayCurrent = autoplayTimeLeft;
6723      wasPaused = false;
6724    }
6725    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();
6726    swiper.autoplay.timeLeft = timeLeft;
6727    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);
6728    raf = requestAnimationFrame(() => {
6729      calcTimeLeft();
6730    });
6731  };
6732  const getSlideDelay = () => {
6733    let activeSlideEl;
6734    if (swiper.virtual && swiper.params.virtual.enabled) {
6735      activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];
6736    } else {
6737      activeSlideEl = swiper.slides[swiper.activeIndex];
6738    }
6739    if (!activeSlideEl) return undefined;
6740    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);
6741    return currentSlideDelay;
6742  };
6743  const run = delayForce => {
6744    if (swiper.destroyed || !swiper.autoplay.running) return;
6745    cancelAnimationFrame(raf);
6746    calcTimeLeft();
6747    let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;
6748    autoplayDelayTotal = swiper.params.autoplay.delay;
6749    autoplayDelayCurrent = swiper.params.autoplay.delay;
6750    const currentSlideDelay = getSlideDelay();
6751    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {
6752      delay = currentSlideDelay;
6753      autoplayDelayTotal = currentSlideDelay;
6754      autoplayDelayCurrent = currentSlideDelay;
6755    }
6756    autoplayTimeLeft = delay;
6757    const speed = swiper.params.speed;
6758    const proceed = () => {
6759      if (!swiper || swiper.destroyed) return;
6760      if (swiper.params.autoplay.reverseDirection) {
6761        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {
6762          swiper.slidePrev(speed, true, true);
6763          emit('autoplay');
6764        } else if (!swiper.params.autoplay.stopOnLastSlide) {
6765          swiper.slideTo(swiper.slides.length - 1, speed, true, true);
6766          emit('autoplay');
6767        }
6768      } else {
6769        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {
6770          swiper.slideNext(speed, true, true);
6771          emit('autoplay');
6772        } else if (!swiper.params.autoplay.stopOnLastSlide) {
6773          swiper.slideTo(0, speed, true, true);
6774          emit('autoplay');
6775        }
6776      }
6777      if (swiper.params.cssMode) {
6778        autoplayStartTime = new Date().getTime();
6779        requestAnimationFrame(() => {
6780          run();
6781        });
6782      }
6783    };
6784    if (delay > 0) {
6785      clearTimeout(timeout);
6786      timeout = setTimeout(() => {
6787        proceed();
6788      }, delay);
6789    } else {
6790      requestAnimationFrame(() => {
6791        proceed();
6792      });
6793    }
6794
6795    // eslint-disable-next-line
6796    return delay;
6797  };
6798  const start = () => {
6799    swiper.autoplay.running = true;
6800    run();
6801    emit('autoplayStart');
6802  };
6803  const stop = () => {
6804    swiper.autoplay.running = false;
6805    clearTimeout(timeout);
6806    cancelAnimationFrame(raf);
6807    emit('autoplayStop');
6808  };
6809  const pause = (internal, reset) => {
6810    if (swiper.destroyed || !swiper.autoplay.running) return;
6811    clearTimeout(timeout);
6812    if (!internal) {
6813      pausedByInteraction = true;
6814    }
6815    const proceed = () => {
6816      emit('autoplayPause');
6817      if (swiper.params.autoplay.waitForTransition) {
6818        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);
6819      } else {
6820        resume();
6821      }
6822    };
6823    swiper.autoplay.paused = true;
6824    if (reset) {
6825      if (slideChanged) {
6826        autoplayTimeLeft = swiper.params.autoplay.delay;
6827      }
6828      slideChanged = false;
6829      proceed();
6830      return;
6831    }
6832    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;
6833    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);
6834    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;
6835    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;
6836    proceed();
6837  };
6838  const resume = () => {
6839    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;
6840    autoplayStartTime = new Date().getTime();
6841    if (pausedByInteraction) {
6842      pausedByInteraction = false;
6843      run(autoplayTimeLeft);
6844    } else {
6845      run();
6846    }
6847    swiper.autoplay.paused = false;
6848    emit('autoplayResume');
6849  };
6850  const onVisibilityChange = () => {
6851    if (swiper.destroyed || !swiper.autoplay.running) return;
6852    const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
6853    if (document.visibilityState === 'hidden') {
6854      pausedByInteraction = true;
6855      pause(true);
6856    }
6857    if (document.visibilityState === 'visible') {
6858      resume();
6859    }
6860  };
6861  const onPointerEnter = e => {
6862    if (e.pointerType !== 'mouse') return;
6863    pausedByInteraction = true;
6864    pause(true);
6865  };
6866  const onPointerLeave = e => {
6867    if (e.pointerType !== 'mouse') return;
6868    if (swiper.autoplay.paused) {
6869      resume();
6870    }
6871  };
6872  const attachMouseEvents = () => {
6873    if (swiper.params.autoplay.pauseOnMouseEnter) {
6874      swiper.el.addEventListener('pointerenter', onPointerEnter);
6875      swiper.el.addEventListener('pointerleave', onPointerLeave);
6876    }
6877  };
6878  const detachMouseEvents = () => {
6879    swiper.el.removeEventListener('pointerenter', onPointerEnter);
6880    swiper.el.removeEventListener('pointerleave', onPointerLeave);
6881  };
6882  const attachDocumentEvents = () => {
6883    const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
6884    document.addEventListener('visibilitychange', onVisibilityChange);
6885  };
6886  const detachDocumentEvents = () => {
6887    const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
6888    document.removeEventListener('visibilitychange', onVisibilityChange);
6889  };
6890  on('init', () => {
6891    if (swiper.params.autoplay.enabled) {
6892      attachMouseEvents();
6893      attachDocumentEvents();
6894      autoplayStartTime = new Date().getTime();
6895      start();
6896    }
6897  });
6898  on('destroy', () => {
6899    detachMouseEvents();
6900    detachDocumentEvents();
6901    if (swiper.autoplay.running) {
6902      stop();
6903    }
6904  });
6905  on('beforeTransitionStart', (_s, speed, internal) => {
6906    if (swiper.destroyed || !swiper.autoplay.running) return;
6907    if (internal || !swiper.params.autoplay.disableOnInteraction) {
6908      pause(true, true);
6909    } else {
6910      stop();
6911    }
6912  });
6913  on('sliderFirstMove', () => {
6914    if (swiper.destroyed || !swiper.autoplay.running) return;
6915    if (swiper.params.autoplay.disableOnInteraction) {
6916      stop();
6917      return;
6918    }
6919    isTouched = true;
6920    pausedByTouch = false;
6921    pausedByInteraction = false;
6922    touchStartTimeout = setTimeout(() => {
6923      pausedByInteraction = true;
6924      pausedByTouch = true;
6925      pause(true);
6926    }, 200);
6927  });
6928  on('touchEnd', () => {
6929    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;
6930    clearTimeout(touchStartTimeout);
6931    clearTimeout(timeout);
6932    if (swiper.params.autoplay.disableOnInteraction) {
6933      pausedByTouch = false;
6934      isTouched = false;
6935      return;
6936    }
6937    if (pausedByTouch && swiper.params.cssMode) resume();
6938    pausedByTouch = false;
6939    isTouched = false;
6940  });
6941  on('slideChange', () => {
6942    if (swiper.destroyed || !swiper.autoplay.running) return;
6943    slideChanged = true;
6944  });
6945  Object.assign(swiper.autoplay, {
6946    start,
6947    stop,
6948    pause,
6949    resume
6950  });
6951}
6952
6953/***/ }),
6954
vendor: 7,220 bytes, lines 6955-7151
6955/***/ "./node_modules/swiper/modules/controller/controller.js":
6956/*!**************************************************************!*\
6957  !*** ./node_modules/swiper/modules/controller/controller.js ***!
6958  \**************************************************************/
6959/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6960
6961__webpack_require__.r(__webpack_exports__);
6962/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6963/* harmony export */   "default": function() { return /* binding */ Controller; }
6964/* harmony export */ });
6965/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
6966/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
6967
6968function Controller({
6969  swiper,
6970  extendParams,
6971  on
6972}) {
6973  extendParams({
6974    controller: {
6975      control: undefined,
6976      inverse: false,
6977      by: 'slide' // or 'container'
6978    }
6979  });
6980
6981  swiper.controller = {
6982    control: undefined
6983  };
6984  function LinearSpline(x, y) {
6985    const binarySearch = function search() {
6986      let maxIndex;
6987      let minIndex;
6988      let guess;
6989      return (array, val) => {
6990        minIndex = -1;
6991        maxIndex = array.length;
6992        while (maxIndex - minIndex > 1) {
6993          guess = maxIndex + minIndex >> 1;
6994          if (array[guess] <= val) {
6995            minIndex = guess;
6996          } else {
6997            maxIndex = guess;
6998          }
6999        }
7000        return maxIndex;
7001      };
7002    }();
7003    this.x = x;
7004    this.y = y;
7005    this.lastIndex = x.length - 1;
7006    // Given an x value (x2), return the expected y2 value:
7007    // (x1,y1) is the known point before given value,
7008    // (x3,y3) is the known point after given value.
7009    let i1;
7010    let i3;
7011    this.interpolate = function interpolate(x2) {
7012      if (!x2) return 0;
7013
7014      // Get the indexes of x1 and x3 (the array indexes before and after given x2):
7015      i3 = binarySearch(this.x, x2);
7016      i1 = i3 - 1;
7017
7018      // We have our indexes i1 & i3, so we can calculate already:
7019      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
7020      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
7021    };
7022    return this;
7023  }
7024  function getInterpolateFunction(c) {
7025    swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);
7026  }
7027  function setTranslate(_t, byController) {
7028    const controlled = swiper.controller.control;
7029    let multiplier;
7030    let controlledTranslate;
7031    const Swiper = swiper.constructor;
7032    function setControlledTranslate(c) {
7033      if (c.destroyed) return;
7034
7035      // this will create an Interpolate function based on the snapGrids
7036      // x is the Grid of the scrolled scroller and y will be the controlled scroller
7037      // it makes sense to create this only once and recall it for the interpolation
7038      // the function does a lot of value caching for performance
7039      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
7040      if (swiper.params.controller.by === 'slide') {
7041        getInterpolateFunction(c);
7042        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
7043        // but it did not work out
7044        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
7045      }
7046      if (!controlledTranslate || swiper.params.controller.by === 'container') {
7047        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
7048        if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {
7049          multiplier = 1;
7050        }
7051        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
7052      }
7053      if (swiper.params.controller.inverse) {
7054        controlledTranslate = c.maxTranslate() - controlledTranslate;
7055      }
7056      c.updateProgress(controlledTranslate);
7057      c.setTranslate(controlledTranslate, swiper);
7058      c.updateActiveIndex();
7059      c.updateSlidesClasses();
7060    }
7061    if (Array.isArray(controlled)) {
7062      for (let i = 0; i < controlled.length; i += 1) {
7063        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7064          setControlledTranslate(controlled[i]);
7065        }
7066      }
7067    } else if (controlled instanceof Swiper && byController !== controlled) {
7068      setControlledTranslate(controlled);
7069    }
7070  }
7071  function setTransition(duration, byController) {
7072    const Swiper = swiper.constructor;
7073    const controlled = swiper.controller.control;
7074    let i;
7075    function setControlledTransition(c) {
7076      if (c.destroyed) return;
7077      c.setTransition(duration, swiper);
7078      if (duration !== 0) {
7079        c.transitionStart();
7080        if (c.params.autoHeight) {
7081          (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.nextTick)(() => {
7082            c.updateAutoHeight();
7083          });
7084        }
7085        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementTransitionEnd)(c.wrapperEl, () => {
7086          if (!controlled) return;
7087          c.transitionEnd();
7088        });
7089      }
7090    }
7091    if (Array.isArray(controlled)) {
7092      for (i = 0; i < controlled.length; i += 1) {
7093        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7094          setControlledTransition(controlled[i]);
7095        }
7096      }
7097    } else if (controlled instanceof Swiper && byController !== controlled) {
7098      setControlledTransition(controlled);
7099    }
7100  }
7101  function removeSpline() {
7102    if (!swiper.controller.control) return;
7103    if (swiper.controller.spline) {
7104      swiper.controller.spline = undefined;
7105      delete swiper.controller.spline;
7106    }
7107  }
7108  on('beforeInit', () => {
7109    if (typeof window !== 'undefined' && (
7110    // eslint-disable-line
7111    typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {
7112      const controlElement = document.querySelector(swiper.params.controller.control);
7113      if (controlElement && controlElement.swiper) {
7114        swiper.controller.control = controlElement.swiper;
7115      } else if (controlElement) {
7116        const onControllerSwiper = e => {
7117          swiper.controller.control = e.detail[0];
7118          swiper.update();
7119          controlElement.removeEventListener('init', onControllerSwiper);
7120        };
7121        controlElement.addEventListener('init', onControllerSwiper);
7122      }
7123      return;
7124    }
7125    swiper.controller.control = swiper.params.controller.control;
7126  });
7127  on('update', () => {
7128    removeSpline();
7129  });
7130  on('resize', () => {
7131    removeSpline();
7132  });
7133  on('observerUpdate', () => {
7134    removeSpline();
7135  });
7136  on('setTranslate', (_s, translate, byController) => {
7137    if (!swiper.controller.control || swiper.controller.control.destroyed) return;
7138    swiper.controller.setTranslate(translate, byController);
7139  });
7140  on('setTransition', (_s, duration, byController) => {
7141    if (!swiper.controller.control || swiper.controller.control.destroyed) return;
7142    swiper.controller.setTransition(duration, byController);
7143  });
7144  Object.assign(swiper.controller, {
7145    setTranslate,
7146    setTransition
7147  });
7148}
7149
7150/***/ }),
7151
vendor: 5,825 bytes, lines 7152-7285
7152/***/ "./node_modules/swiper/modules/effect-cards/effect-cards.js":
7153/*!******************************************************************!*\
7154  !*** ./node_modules/swiper/modules/effect-cards/effect-cards.js ***!
7155  \******************************************************************/
7156/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7157
7158__webpack_require__.r(__webpack_exports__);
7159/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7160/* harmony export */   "default": function() { return /* binding */ EffectCards; }
7161/* harmony export */ });
7162/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
7163/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
7164/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
7165/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
7166/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
7167
7168
7169
7170
7171
7172function EffectCards({
7173  swiper,
7174  extendParams,
7175  on
7176}) {
7177  extendParams({
7178    cardsEffect: {
7179      slideShadows: true,
7180      rotate: true,
7181      perSlideRotate: 2,
7182      perSlideOffset: 8
7183    }
7184  });
7185  const setTranslate = () => {
7186    const {
7187      slides,
7188      activeIndex
7189    } = swiper;
7190    const params = swiper.params.cardsEffect;
7191    const {
7192      startTranslate,
7193      isTouched
7194    } = swiper.touchEventsData;
7195    const currentTranslate = swiper.translate;
7196    for (let i = 0; i < slides.length; i += 1) {
7197      const slideEl = slides[i];
7198      const slideProgress = slideEl.progress;
7199      const progress = Math.min(Math.max(slideProgress, -4), 4);
7200      let offset = slideEl.swiperSlideOffset;
7201      if (swiper.params.centeredSlides && !swiper.params.cssMode) {
7202        swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;
7203      }
7204      if (swiper.params.centeredSlides && swiper.params.cssMode) {
7205        offset -= slides[0].swiperSlideOffset;
7206      }
7207      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;
7208      let tY = 0;
7209      const tZ = -100 * Math.abs(progress);
7210      let scale = 1;
7211      let rotate = -params.perSlideRotate * progress;
7212      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;
7213      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;
7214      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;
7215      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;
7216      if (isSwipeToNext || isSwipeToPrev) {
7217        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;
7218        rotate += -28 * progress * subProgress;
7219        scale += -0.5 * subProgress;
7220        tXAdd += 96 * subProgress;
7221        tY = `${-25 * subProgress * Math.abs(progress)}%`;
7222      }
7223      if (progress < 0) {
7224        // next
7225        tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;
7226      } else if (progress > 0) {
7227        // prev
7228        tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;
7229      } else {
7230        tX = `${tX}px`;
7231      }
7232      if (!swiper.isHorizontal()) {
7233        const prevY = tY;
7234        tY = tX;
7235        tX = prevY;
7236      }
7237      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;
7238      const transform = `
7239        translate3d(${tX}, ${tY}, ${tZ}px)
7240        rotateZ(${params.rotate ? rotate : 0}deg)
7241        scale(${scaleString})
7242      `;
7243      if (params.slideShadows) {
7244        // Set shadows
7245        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');
7246        if (!shadowEl) {
7247          shadowEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, slideEl);
7248        }
7249        if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);
7250      }
7251      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
7252      const targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, slideEl);
7253      targetEl.style.transform = transform;
7254    }
7255  };
7256  const setTransition = duration => {
7257    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_4__.getSlideTransformEl)(slideEl));
7258    transformElements.forEach(el => {
7259      el.style.transitionDuration = `${duration}ms`;
7260      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {
7261        shadowEl.style.transitionDuration = `${duration}ms`;
7262      });
7263    });
7264    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({
7265      swiper,
7266      duration,
7267      transformElements
7268    });
7269  };
7270  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
7271    effect: 'cards',
7272    swiper,
7273    on,
7274    setTranslate,
7275    setTransition,
7276    perspective: () => true,
7277    overwriteParams: () => ({
7278      watchSlidesProgress: true,
7279      virtualTranslate: !swiper.params.cssMode
7280    })
7281  });
7282}
7283
7284/***/ }),
7285
vendor: 5,690 bytes, lines 7286-7401
7286/***/ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js":
7287/*!**************************************************************************!*\
7288  !*** ./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js ***!
7289  \**************************************************************************/
7290/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7291
7292__webpack_require__.r(__webpack_exports__);
7293/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7294/* harmony export */   "default": function() { return /* binding */ EffectCoverflow; }
7295/* harmony export */ });
7296/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
7297/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
7298/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
7299/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
7300
7301
7302
7303
7304function EffectCoverflow({
7305  swiper,
7306  extendParams,
7307  on
7308}) {
7309  extendParams({
7310    coverflowEffect: {
7311      rotate: 50,
7312      stretch: 0,
7313      depth: 100,
7314      scale: 1,
7315      modifier: 1,
7316      slideShadows: true
7317    }
7318  });
7319  const setTranslate = () => {
7320    const {
7321      width: swiperWidth,
7322      height: swiperHeight,
7323      slides,
7324      slidesSizesGrid
7325    } = swiper;
7326    const params = swiper.params.coverflowEffect;
7327    const isHorizontal = swiper.isHorizontal();
7328    const transform = swiper.translate;
7329    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
7330    const rotate = isHorizontal ? params.rotate : -params.rotate;
7331    const translate = params.depth;
7332    // Each slide offset from center
7333    for (let i = 0, length = slides.length; i < length; i += 1) {
7334      const slideEl = slides[i];
7335      const slideSize = slidesSizesGrid[i];
7336      const slideOffset = slideEl.swiperSlideOffset;
7337      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;
7338      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;
7339      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
7340      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
7341      // var rotateZ = 0
7342      let translateZ = -translate * Math.abs(offsetMultiplier);
7343      let stretch = params.stretch;
7344      // Allow percentage to make a relative stretch for responsive sliders
7345      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
7346        stretch = parseFloat(params.stretch) / 100 * slideSize;
7347      }
7348      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
7349      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;
7350      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);
7351
7352      // Fix for ultra small values
7353      if (Math.abs(translateX) < 0.001) translateX = 0;
7354      if (Math.abs(translateY) < 0.001) translateY = 0;
7355      if (Math.abs(translateZ) < 0.001) translateZ = 0;
7356      if (Math.abs(rotateY) < 0.001) rotateY = 0;
7357      if (Math.abs(rotateX) < 0.001) rotateX = 0;
7358      if (Math.abs(scale) < 0.001) scale = 0;
7359      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;
7360      const targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, slideEl);
7361      targetEl.style.transform = slideTransform;
7362      slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
7363      if (params.slideShadows) {
7364        // Set shadows
7365        let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
7366        let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
7367        if (!shadowBeforeEl) {
7368          shadowBeforeEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, slideEl, isHorizontal ? 'left' : 'top');
7369        }
7370        if (!shadowAfterEl) {
7371          shadowAfterEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, slideEl, isHorizontal ? 'right' : 'bottom');
7372        }
7373        if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
7374        if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
7375      }
7376    }
7377  };
7378  const setTransition = duration => {
7379    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_3__.getSlideTransformEl)(slideEl));
7380    transformElements.forEach(el => {
7381      el.style.transitionDuration = `${duration}ms`;
7382      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {
7383        shadowEl.style.transitionDuration = `${duration}ms`;
7384      });
7385    });
7386  };
7387  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
7388    effect: 'coverflow',
7389    swiper,
7390    on,
7391    setTranslate,
7392    setTransition,
7393    perspective: () => true,
7394    overwriteParams: () => ({
7395      watchSlidesProgress: true
7396    })
7397  });
7398}
7399
7400/***/ }),
7401
vendor: 6,403 bytes, lines 7402-7559
7402/***/ "./node_modules/swiper/modules/effect-creative/effect-creative.js":
7403/*!************************************************************************!*\
7404  !*** ./node_modules/swiper/modules/effect-creative/effect-creative.js ***!
7405  \************************************************************************/
7406/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7407
7408__webpack_require__.r(__webpack_exports__);
7409/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7410/* harmony export */   "default": function() { return /* binding */ EffectCreative; }
7411/* harmony export */ });
7412/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
7413/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
7414/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
7415/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
7416/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
7417
7418
7419
7420
7421
7422function EffectCreative({
7423  swiper,
7424  extendParams,
7425  on
7426}) {
7427  extendParams({
7428    creativeEffect: {
7429      limitProgress: 1,
7430      shadowPerProgress: false,
7431      progressMultiplier: 1,
7432      perspective: true,
7433      prev: {
7434        translate: [0, 0, 0],
7435        rotate: [0, 0, 0],
7436        opacity: 1,
7437        scale: 1
7438      },
7439      next: {
7440        translate: [0, 0, 0],
7441        rotate: [0, 0, 0],
7442        opacity: 1,
7443        scale: 1
7444      }
7445    }
7446  });
7447  const getTranslateValue = value => {
7448    if (typeof value === 'string') return value;
7449    return `${value}px`;
7450  };
7451  const setTranslate = () => {
7452    const {
7453      slides,
7454      wrapperEl,
7455      slidesSizesGrid
7456    } = swiper;
7457    const params = swiper.params.creativeEffect;
7458    const {
7459      progressMultiplier: multiplier
7460    } = params;
7461    const isCenteredSlides = swiper.params.centeredSlides;
7462    if (isCenteredSlides) {
7463      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;
7464      wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;
7465    }
7466    for (let i = 0; i < slides.length; i += 1) {
7467      const slideEl = slides[i];
7468      const slideProgress = slideEl.progress;
7469      const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);
7470      let originalProgress = progress;
7471      if (!isCenteredSlides) {
7472        originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);
7473      }
7474      const offset = slideEl.swiperSlideOffset;
7475      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];
7476      const r = [0, 0, 0];
7477      let custom = false;
7478      if (!swiper.isHorizontal()) {
7479        t[1] = t[0];
7480        t[0] = 0;
7481      }
7482      let data = {
7483        translate: [0, 0, 0],
7484        rotate: [0, 0, 0],
7485        scale: 1,
7486        opacity: 1
7487      };
7488      if (progress < 0) {
7489        data = params.next;
7490        custom = true;
7491      } else if (progress > 0) {
7492        data = params.prev;
7493        custom = true;
7494      }
7495      // set translate
7496      t.forEach((value, index) => {
7497        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;
7498      });
7499      // set rotates
7500      r.forEach((value, index) => {
7501        r[index] = data.rotate[index] * Math.abs(progress * multiplier);
7502      });
7503      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
7504      const translateString = t.join(', ');
7505      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;
7506      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;
7507      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;
7508      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;
7509
7510      // Set shadows
7511      if (custom && data.shadow || !custom) {
7512        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');
7513        if (!shadowEl && data.shadow) {
7514          shadowEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, slideEl);
7515        }
7516        if (shadowEl) {
7517          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;
7518          shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);
7519        }
7520      }
7521      const targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, slideEl);
7522      targetEl.style.transform = transform;
7523      targetEl.style.opacity = opacityString;
7524      if (data.origin) {
7525        targetEl.style.transformOrigin = data.origin;
7526      }
7527    }
7528  };
7529  const setTransition = duration => {
7530    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_4__.getSlideTransformEl)(slideEl));
7531    transformElements.forEach(el => {
7532      el.style.transitionDuration = `${duration}ms`;
7533      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {
7534        shadowEl.style.transitionDuration = `${duration}ms`;
7535      });
7536    });
7537    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({
7538      swiper,
7539      duration,
7540      transformElements,
7541      allSlides: true
7542    });
7543  };
7544  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
7545    effect: 'creative',
7546    swiper,
7547    on,
7548    setTranslate,
7549    setTransition,
7550    perspective: () => swiper.params.creativeEffect.perspective,
7551    overwriteParams: () => ({
7552      watchSlidesProgress: true,
7553      virtualTranslate: !swiper.params.cssMode
7554    })
7555  });
7556}
7557
7558/***/ }),
7559
vendor: 7,519 bytes, lines 7560-7743
7560/***/ "./node_modules/swiper/modules/effect-cube/effect-cube.js":
7561/*!****************************************************************!*\
7562  !*** ./node_modules/swiper/modules/effect-cube/effect-cube.js ***!
7563  \****************************************************************/
7564/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7565
7566__webpack_require__.r(__webpack_exports__);
7567/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7568/* harmony export */   "default": function() { return /* binding */ EffectCube; }
7569/* harmony export */ });
7570/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
7571/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
7572
7573
7574function EffectCube({
7575  swiper,
7576  extendParams,
7577  on
7578}) {
7579  extendParams({
7580    cubeEffect: {
7581      slideShadows: true,
7582      shadow: true,
7583      shadowOffset: 20,
7584      shadowScale: 0.94
7585    }
7586  });
7587  const createSlideShadows = (slideEl, progress, isHorizontal) => {
7588    let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
7589    let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
7590    if (!shadowBefore) {
7591      shadowBefore = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.createElement)('div', `swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`);
7592      slideEl.append(shadowBefore);
7593    }
7594    if (!shadowAfter) {
7595      shadowAfter = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.createElement)('div', `swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`);
7596      slideEl.append(shadowAfter);
7597    }
7598    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
7599    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
7600  };
7601  const recreateShadows = () => {
7602    // create new ones
7603    const isHorizontal = swiper.isHorizontal();
7604    swiper.slides.forEach(slideEl => {
7605      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
7606      createSlideShadows(slideEl, progress, isHorizontal);
7607    });
7608  };
7609  const setTranslate = () => {
7610    const {
7611      el,
7612      wrapperEl,
7613      slides,
7614      width: swiperWidth,
7615      height: swiperHeight,
7616      rtlTranslate: rtl,
7617      size: swiperSize,
7618      browser
7619    } = swiper;
7620    const params = swiper.params.cubeEffect;
7621    const isHorizontal = swiper.isHorizontal();
7622    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7623    let wrapperRotate = 0;
7624    let cubeShadowEl;
7625    if (params.shadow) {
7626      if (isHorizontal) {
7627        cubeShadowEl = swiper.slidesEl.querySelector('.swiper-cube-shadow');
7628        if (!cubeShadowEl) {
7629          cubeShadowEl = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.createElement)('div', 'swiper-cube-shadow');
7630          swiper.slidesEl.append(cubeShadowEl);
7631        }
7632        cubeShadowEl.style.height = `${swiperWidth}px`;
7633      } else {
7634        cubeShadowEl = el.querySelector('.swiper-cube-shadow');
7635        if (!cubeShadowEl) {
7636          cubeShadowEl = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.createElement)('div', 'swiper-cube-shadow');
7637          el.append(cubeShadowEl);
7638        }
7639      }
7640    }
7641    for (let i = 0; i < slides.length; i += 1) {
7642      const slideEl = slides[i];
7643      let slideIndex = i;
7644      if (isVirtual) {
7645        slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);
7646      }
7647      let slideAngle = slideIndex * 90;
7648      let round = Math.floor(slideAngle / 360);
7649      if (rtl) {
7650        slideAngle = -slideAngle;
7651        round = Math.floor(-slideAngle / 360);
7652      }
7653      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
7654      let tx = 0;
7655      let ty = 0;
7656      let tz = 0;
7657      if (slideIndex % 4 === 0) {
7658        tx = -round * 4 * swiperSize;
7659        tz = 0;
7660      } else if ((slideIndex - 1) % 4 === 0) {
7661        tx = 0;
7662        tz = -round * 4 * swiperSize;
7663      } else if ((slideIndex - 2) % 4 === 0) {
7664        tx = swiperSize + round * 4 * swiperSize;
7665        tz = swiperSize;
7666      } else if ((slideIndex - 3) % 4 === 0) {
7667        tx = -swiperSize;
7668        tz = 3 * swiperSize + swiperSize * 4 * round;
7669      }
7670      if (rtl) {
7671        tx = -tx;
7672      }
7673      if (!isHorizontal) {
7674        ty = tx;
7675        tx = 0;
7676      }
7677      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
7678      if (progress <= 1 && progress > -1) {
7679        wrapperRotate = slideIndex * 90 + progress * 90;
7680        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
7681      }
7682      slideEl.style.transform = transform;
7683      if (params.slideShadows) {
7684        createSlideShadows(slideEl, progress, isHorizontal);
7685      }
7686    }
7687    wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;
7688    wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;
7689    if (params.shadow) {
7690      if (isHorizontal) {
7691        cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`;
7692      } else {
7693        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
7694        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
7695        const scale1 = params.shadowScale;
7696        const scale2 = params.shadowScale / multiplier;
7697        const offset = params.shadowOffset;
7698        cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;
7699      }
7700    }
7701    const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;
7702    wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;
7703    wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);
7704  };
7705  const setTransition = duration => {
7706    const {
7707      el,
7708      slides
7709    } = swiper;
7710    slides.forEach(slideEl => {
7711      slideEl.style.transitionDuration = `${duration}ms`;
7712      slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {
7713        subEl.style.transitionDuration = `${duration}ms`;
7714      });
7715    });
7716    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
7717      const shadowEl = el.querySelector('.swiper-cube-shadow');
7718      if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;
7719    }
7720  };
7721  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
7722    effect: 'cube',
7723    swiper,
7724    on,
7725    setTranslate,
7726    setTransition,
7727    recreateShadows,
7728    getEffectParams: () => swiper.params.cubeEffect,
7729    perspective: () => true,
7730    overwriteParams: () => ({
7731      slidesPerView: 1,
7732      slidesPerGroup: 1,
7733      watchSlidesProgress: true,
7734      resistanceRatio: 0,
7735      spaceBetween: 0,
7736      centeredSlides: false,
7737      virtualTranslate: true
7738    })
7739  });
7740}
7741
7742/***/ }),
7743
vendor: 3,143 bytes, lines 7744-7822
7744/***/ "./node_modules/swiper/modules/effect-fade/effect-fade.js":
7745/*!****************************************************************!*\
7746  !*** ./node_modules/swiper/modules/effect-fade/effect-fade.js ***!
7747  \****************************************************************/
7748/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7749
7750__webpack_require__.r(__webpack_exports__);
7751/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7752/* harmony export */   "default": function() { return /* binding */ EffectFade; }
7753/* harmony export */ });
7754/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
7755/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
7756/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
7757/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
7758
7759
7760
7761
7762function EffectFade({
7763  swiper,
7764  extendParams,
7765  on
7766}) {
7767  extendParams({
7768    fadeEffect: {
7769      crossFade: false
7770    }
7771  });
7772  const setTranslate = () => {
7773    const {
7774      slides
7775    } = swiper;
7776    const params = swiper.params.fadeEffect;
7777    for (let i = 0; i < slides.length; i += 1) {
7778      const slideEl = swiper.slides[i];
7779      const offset = slideEl.swiperSlideOffset;
7780      let tx = -offset;
7781      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
7782      let ty = 0;
7783      if (!swiper.isHorizontal()) {
7784        ty = tx;
7785        tx = 0;
7786      }
7787      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);
7788      const targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, slideEl);
7789      targetEl.style.opacity = slideOpacity;
7790      targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;
7791    }
7792  };
7793  const setTransition = duration => {
7794    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_3__.getSlideTransformEl)(slideEl));
7795    transformElements.forEach(el => {
7796      el.style.transitionDuration = `${duration}ms`;
7797    });
7798    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__["default"])({
7799      swiper,
7800      duration,
7801      transformElements,
7802      allSlides: true
7803    });
7804  };
7805  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
7806    effect: 'fade',
7807    swiper,
7808    on,
7809    setTranslate,
7810    setTransition,
7811    overwriteParams: () => ({
7812      slidesPerView: 1,
7813      slidesPerGroup: 1,
7814      watchSlidesProgress: true,
7815      spaceBetween: 0,
7816      virtualTranslate: !swiper.params.cssMode
7817    })
7818  });
7819}
7820
7821/***/ }),
7822
vendor: 5,325 bytes, lines 7823-7946
7823/***/ "./node_modules/swiper/modules/effect-flip/effect-flip.js":
7824/*!****************************************************************!*\
7825  !*** ./node_modules/swiper/modules/effect-flip/effect-flip.js ***!
7826  \****************************************************************/
7827/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7828
7829__webpack_require__.r(__webpack_exports__);
7830/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7831/* harmony export */   "default": function() { return /* binding */ EffectFlip; }
7832/* harmony export */ });
7833/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
7834/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
7835/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
7836/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
7837/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
7838
7839
7840
7841
7842
7843function EffectFlip({
7844  swiper,
7845  extendParams,
7846  on
7847}) {
7848  extendParams({
7849    flipEffect: {
7850      slideShadows: true,
7851      limitRotation: true
7852    }
7853  });
7854  const createSlideShadows = (slideEl, progress, params) => {
7855    let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
7856    let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
7857    if (!shadowBefore) {
7858      shadowBefore = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, slideEl, swiper.isHorizontal() ? 'left' : 'top');
7859    }
7860    if (!shadowAfter) {
7861      shadowAfter = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, slideEl, swiper.isHorizontal() ? 'right' : 'bottom');
7862    }
7863    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
7864    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
7865  };
7866  const recreateShadows = () => {
7867    // Set shadows
7868    const params = swiper.params.flipEffect;
7869    swiper.slides.forEach(slideEl => {
7870      let progress = slideEl.progress;
7871      if (swiper.params.flipEffect.limitRotation) {
7872        progress = Math.max(Math.min(slideEl.progress, 1), -1);
7873      }
7874      createSlideShadows(slideEl, progress, params);
7875    });
7876  };
7877  const setTranslate = () => {
7878    const {
7879      slides,
7880      rtlTranslate: rtl
7881    } = swiper;
7882    const params = swiper.params.flipEffect;
7883    for (let i = 0; i < slides.length; i += 1) {
7884      const slideEl = slides[i];
7885      let progress = slideEl.progress;
7886      if (swiper.params.flipEffect.limitRotation) {
7887        progress = Math.max(Math.min(slideEl.progress, 1), -1);
7888      }
7889      const offset = slideEl.swiperSlideOffset;
7890      const rotate = -180 * progress;
7891      let rotateY = rotate;
7892      let rotateX = 0;
7893      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;
7894      let ty = 0;
7895      if (!swiper.isHorizontal()) {
7896        ty = tx;
7897        tx = 0;
7898        rotateX = -rotateY;
7899        rotateY = 0;
7900      } else if (rtl) {
7901        rotateY = -rotateY;
7902      }
7903      slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
7904      if (params.slideShadows) {
7905        createSlideShadows(slideEl, progress, params);
7906      }
7907      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
7908      const targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, slideEl);
7909      targetEl.style.transform = transform;
7910    }
7911  };
7912  const setTransition = duration => {
7913    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_4__.getSlideTransformEl)(slideEl));
7914    transformElements.forEach(el => {
7915      el.style.transitionDuration = `${duration}ms`;
7916      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {
7917        shadowEl.style.transitionDuration = `${duration}ms`;
7918      });
7919    });
7920    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({
7921      swiper,
7922      duration,
7923      transformElements
7924    });
7925  };
7926  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
7927    effect: 'flip',
7928    swiper,
7929    on,
7930    setTranslate,
7931    setTransition,
7932    recreateShadows,
7933    getEffectParams: () => swiper.params.flipEffect,
7934    perspective: () => true,
7935    overwriteParams: () => ({
7936      slidesPerView: 1,
7937      slidesPerGroup: 1,
7938      watchSlidesProgress: true,
7939      spaceBetween: 0,
7940      virtualTranslate: !swiper.params.cssMode
7941    })
7942  });
7943}
7944
7945/***/ }),
7946
vendor: 9,125 bytes, lines 7947-8188
7947/***/ "./node_modules/swiper/modules/free-mode/free-mode.js":
7948/*!************************************************************!*\
7949  !*** ./node_modules/swiper/modules/free-mode/free-mode.js ***!
7950  \************************************************************/
7951/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7952
7953__webpack_require__.r(__webpack_exports__);
7954/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7955/* harmony export */   "default": function() { return /* binding */ freeMode; }
7956/* harmony export */ });
7957/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
7958
7959function freeMode({
7960  swiper,
7961  extendParams,
7962  emit,
7963  once
7964}) {
7965  extendParams({
7966    freeMode: {
7967      enabled: false,
7968      momentum: true,
7969      momentumRatio: 1,
7970      momentumBounce: true,
7971      momentumBounceRatio: 1,
7972      momentumVelocityRatio: 1,
7973      sticky: false,
7974      minimumVelocity: 0.02
7975    }
7976  });
7977  function onTouchStart() {
7978    const translate = swiper.getTranslate();
7979    swiper.setTranslate(translate);
7980    swiper.setTransition(0);
7981    swiper.touchEventsData.velocities.length = 0;
7982    swiper.freeMode.onTouchEnd({
7983      currentPos: swiper.rtl ? swiper.translate : -swiper.translate
7984    });
7985  }
7986  function onTouchMove() {
7987    const {
7988      touchEventsData: data,
7989      touches
7990    } = swiper;
7991    // Velocity
7992    if (data.velocities.length === 0) {
7993      data.velocities.push({
7994        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
7995        time: data.touchStartTime
7996      });
7997    }
7998    data.velocities.push({
7999      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
8000      time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)()
8001    });
8002  }
8003  function onTouchEnd({
8004    currentPos
8005  }) {
8006    const {
8007      params,
8008      wrapperEl,
8009      rtlTranslate: rtl,
8010      snapGrid,
8011      touchEventsData: data
8012    } = swiper;
8013    // Time diff
8014    const touchEndTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
8015    const timeDiff = touchEndTime - data.touchStartTime;
8016    if (currentPos < -swiper.minTranslate()) {
8017      swiper.slideTo(swiper.activeIndex);
8018      return;
8019    }
8020    if (currentPos > -swiper.maxTranslate()) {
8021      if (swiper.slides.length < snapGrid.length) {
8022        swiper.slideTo(snapGrid.length - 1);
8023      } else {
8024        swiper.slideTo(swiper.slides.length - 1);
8025      }
8026      return;
8027    }
8028    if (params.freeMode.momentum) {
8029      if (data.velocities.length > 1) {
8030        const lastMoveEvent = data.velocities.pop();
8031        const velocityEvent = data.velocities.pop();
8032        const distance = lastMoveEvent.position - velocityEvent.position;
8033        const time = lastMoveEvent.time - velocityEvent.time;
8034        swiper.velocity = distance / time;
8035        swiper.velocity /= 2;
8036        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {
8037          swiper.velocity = 0;
8038        }
8039        // this implies that the user stopped moving a finger then released.
8040        // There would be no events with distance zero, so the last event is stale.
8041        if (time > 150 || (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)() - lastMoveEvent.time > 300) {
8042          swiper.velocity = 0;
8043        }
8044      } else {
8045        swiper.velocity = 0;
8046      }
8047      swiper.velocity *= params.freeMode.momentumVelocityRatio;
8048      data.velocities.length = 0;
8049      let momentumDuration = 1000 * params.freeMode.momentumRatio;
8050      const momentumDistance = swiper.velocity * momentumDuration;
8051      let newPosition = swiper.translate + momentumDistance;
8052      if (rtl) newPosition = -newPosition;
8053      let doBounce = false;
8054      let afterBouncePosition;
8055      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
8056      let needsLoopFix;
8057      if (newPosition < swiper.maxTranslate()) {
8058        if (params.freeMode.momentumBounce) {
8059          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
8060            newPosition = swiper.maxTranslate() - bounceAmount;
8061          }
8062          afterBouncePosition = swiper.maxTranslate();
8063          doBounce = true;
8064          data.allowMomentumBounce = true;
8065        } else {
8066          newPosition = swiper.maxTranslate();
8067        }
8068        if (params.loop && params.centeredSlides) needsLoopFix = true;
8069      } else if (newPosition > swiper.minTranslate()) {
8070        if (params.freeMode.momentumBounce) {
8071          if (newPosition - swiper.minTranslate() > bounceAmount) {
8072            newPosition = swiper.minTranslate() + bounceAmount;
8073          }
8074          afterBouncePosition = swiper.minTranslate();
8075          doBounce = true;
8076          data.allowMomentumBounce = true;
8077        } else {
8078          newPosition = swiper.minTranslate();
8079        }
8080        if (params.loop && params.centeredSlides) needsLoopFix = true;
8081      } else if (params.freeMode.sticky) {
8082        let nextSlide;
8083        for (let j = 0; j < snapGrid.length; j += 1) {
8084          if (snapGrid[j] > -newPosition) {
8085            nextSlide = j;
8086            break;
8087          }
8088        }
8089        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
8090          newPosition = snapGrid[nextSlide];
8091        } else {
8092          newPosition = snapGrid[nextSlide - 1];
8093        }
8094        newPosition = -newPosition;
8095      }
8096      if (needsLoopFix) {
8097        once('transitionEnd', () => {
8098          swiper.loopFix();
8099        });
8100      }
8101      // Fix duration
8102      if (swiper.velocity !== 0) {
8103        if (rtl) {
8104          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
8105        } else {
8106          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
8107        }
8108        if (params.freeMode.sticky) {
8109          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity
8110          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
8111          // It's easy to see this when simulating touch with mouse events. To fix this,
8112          // limit single-slide swipes to the default slide duration. This also has the
8113          // nice side effect of matching slide speed if the user stopped moving before
8114          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
8115          // For faster swipes, also apply limits (albeit higher ones).
8116          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
8117          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
8118          if (moveDistance < currentSlideSize) {
8119            momentumDuration = params.speed;
8120          } else if (moveDistance < 2 * currentSlideSize) {
8121            momentumDuration = params.speed * 1.5;
8122          } else {
8123            momentumDuration = params.speed * 2.5;
8124          }
8125        }
8126      } else if (params.freeMode.sticky) {
8127        swiper.slideToClosest();
8128        return;
8129      }
8130      if (params.freeMode.momentumBounce && doBounce) {
8131        swiper.updateProgress(afterBouncePosition);
8132        swiper.setTransition(momentumDuration);
8133        swiper.setTranslate(newPosition);
8134        swiper.transitionStart(true, swiper.swipeDirection);
8135        swiper.animating = true;
8136        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementTransitionEnd)(wrapperEl, () => {
8137          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
8138          emit('momentumBounce');
8139          swiper.setTransition(params.speed);
8140          setTimeout(() => {
8141            swiper.setTranslate(afterBouncePosition);
8142            (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementTransitionEnd)(wrapperEl, () => {
8143              if (!swiper || swiper.destroyed) return;
8144              swiper.transitionEnd();
8145            });
8146          }, 0);
8147        });
8148      } else if (swiper.velocity) {
8149        emit('_freeModeNoMomentumRelease');
8150        swiper.updateProgress(newPosition);
8151        swiper.setTransition(momentumDuration);
8152        swiper.setTranslate(newPosition);
8153        swiper.transitionStart(true, swiper.swipeDirection);
8154        if (!swiper.animating) {
8155          swiper.animating = true;
8156          (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementTransitionEnd)(wrapperEl, () => {
8157            if (!swiper || swiper.destroyed) return;
8158            swiper.transitionEnd();
8159          });
8160        }
8161      } else {
8162        swiper.updateProgress(newPosition);
8163      }
8164      swiper.updateActiveIndex();
8165      swiper.updateSlidesClasses();
8166    } else if (params.freeMode.sticky) {
8167      swiper.slideToClosest();
8168      return;
8169    } else if (params.freeMode) {
8170      emit('_freeModeNoMomentumRelease');
8171    }
8172    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {
8173      swiper.updateProgress();
8174      swiper.updateActiveIndex();
8175      swiper.updateSlidesClasses();
8176    }
8177  }
8178  Object.assign(swiper, {
8179    freeMode: {
8180      onTouchStart,
8181      onTouchMove,
8182      onTouchEnd
8183    }
8184  });
8185}
8186
8187/***/ }),
8188
vendor: 4,165 bytes, lines 8189-8308
8189/***/ "./node_modules/swiper/modules/grid/grid.js":
8190/*!**************************************************!*\
8191  !*** ./node_modules/swiper/modules/grid/grid.js ***!
8192  \**************************************************/
8193/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8194
8195__webpack_require__.r(__webpack_exports__);
8196/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8197/* harmony export */   "default": function() { return /* binding */ Grid; }
8198/* harmony export */ });
8199function Grid({
8200  swiper,
8201  extendParams
8202}) {
8203  extendParams({
8204    grid: {
8205      rows: 1,
8206      fill: 'column'
8207    }
8208  });
8209  let slidesNumberEvenToRows;
8210  let slidesPerRow;
8211  let numFullColumns;
8212  const getSpaceBetween = () => {
8213    let spaceBetween = swiper.params.spaceBetween;
8214    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
8215      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
8216    } else if (typeof spaceBetween === 'string') {
8217      spaceBetween = parseFloat(spaceBetween);
8218    }
8219    return spaceBetween;
8220  };
8221  const initSlides = slidesLength => {
8222    const {
8223      slidesPerView
8224    } = swiper.params;
8225    const {
8226      rows,
8227      fill
8228    } = swiper.params.grid;
8229    slidesPerRow = slidesNumberEvenToRows / rows;
8230    numFullColumns = Math.floor(slidesLength / rows);
8231    if (Math.floor(slidesLength / rows) === slidesLength / rows) {
8232      slidesNumberEvenToRows = slidesLength;
8233    } else {
8234      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;
8235    }
8236    if (slidesPerView !== 'auto' && fill === 'row') {
8237      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);
8238    }
8239  };
8240  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {
8241    const {
8242      slidesPerGroup
8243    } = swiper.params;
8244    const spaceBetween = getSpaceBetween();
8245    const {
8246      rows,
8247      fill
8248    } = swiper.params.grid;
8249    // Set slides order
8250    let newSlideOrderIndex;
8251    let column;
8252    let row;
8253    if (fill === 'row' && slidesPerGroup > 1) {
8254      const groupIndex = Math.floor(i / (slidesPerGroup * rows));
8255      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;
8256      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);
8257      row = Math.floor(slideIndexInGroup / columnsInGroup);
8258      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;
8259      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;
8260      slide.style.order = newSlideOrderIndex;
8261    } else if (fill === 'column') {
8262      column = Math.floor(i / rows);
8263      row = i - column * rows;
8264      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {
8265        row += 1;
8266        if (row >= rows) {
8267          row = 0;
8268          column += 1;
8269        }
8270      }
8271    } else {
8272      row = Math.floor(i / slidesPerRow);
8273      column = i - row * slidesPerRow;
8274    }
8275    slide.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';
8276  };
8277  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {
8278    const {
8279      centeredSlides,
8280      roundLengths
8281    } = swiper.params;
8282    const spaceBetween = getSpaceBetween();
8283    const {
8284      rows
8285    } = swiper.params.grid;
8286    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;
8287    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;
8288    swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;
8289    if (centeredSlides) {
8290      const newSlidesGrid = [];
8291      for (let i = 0; i < snapGrid.length; i += 1) {
8292        let slidesGridItem = snapGrid[i];
8293        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);
8294        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
8295      }
8296      snapGrid.splice(0, snapGrid.length);
8297      snapGrid.push(...newSlidesGrid);
8298    }
8299  };
8300  swiper.grid = {
8301    initSlides,
8302    updateSlide,
8303    updateWrapperSize
8304  };
8305}
8306
8307/***/ }),
8308
vendor: 4,234 bytes, lines 8309-8412
8309/***/ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js":
8310/*!************************************************************************!*\
8311  !*** ./node_modules/swiper/modules/hash-navigation/hash-navigation.js ***!
8312  \************************************************************************/
8313/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8314
8315__webpack_require__.r(__webpack_exports__);
8316/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8317/* harmony export */   "default": function() { return /* binding */ HashNavigation; }
8318/* harmony export */ });
8319/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
8320/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
8321
8322
8323function HashNavigation({
8324  swiper,
8325  extendParams,
8326  emit,
8327  on
8328}) {
8329  let initialized = false;
8330  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
8331  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
8332  extendParams({
8333    hashNavigation: {
8334      enabled: false,
8335      replaceState: false,
8336      watchState: false,
8337      getSlideIndex(_s, hash) {
8338        if (swiper.virtual && swiper.params.virtual.enabled) {
8339          const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];
8340          if (!slideWithHash) return 0;
8341          const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);
8342          return index;
8343        }
8344        return swiper.getSlideIndex((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementChildren)(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]);
8345      }
8346    }
8347  });
8348  const onHashChange = () => {
8349    emit('hashChange');
8350    const newHash = document.location.hash.replace('#', '');
8351    const activeSlideEl = swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`);
8352    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';
8353    if (newHash !== activeSlideHash) {
8354      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);
8355      if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;
8356      swiper.slideTo(newIndex);
8357    }
8358  };
8359  const setHash = () => {
8360    if (!initialized || !swiper.params.hashNavigation.enabled) return;
8361    const activeSlideEl = swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`);
8362    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';
8363    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
8364      window.history.replaceState(null, null, `#${activeSlideHash}` || '');
8365      emit('hashSet');
8366    } else {
8367      document.location.hash = activeSlideHash || '';
8368      emit('hashSet');
8369    }
8370  };
8371  const init = () => {
8372    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
8373    initialized = true;
8374    const hash = document.location.hash.replace('#', '');
8375    if (hash) {
8376      const speed = 0;
8377      const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);
8378      swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);
8379    }
8380    if (swiper.params.hashNavigation.watchState) {
8381      window.addEventListener('hashchange', onHashChange);
8382    }
8383  };
8384  const destroy = () => {
8385    if (swiper.params.hashNavigation.watchState) {
8386      window.removeEventListener('hashchange', onHashChange);
8387    }
8388  };
8389  on('init', () => {
8390    if (swiper.params.hashNavigation.enabled) {
8391      init();
8392    }
8393  });
8394  on('destroy', () => {
8395    if (swiper.params.hashNavigation.enabled) {
8396      destroy();
8397    }
8398  });
8399  on('transitionEnd _freeModeNoMomentumRelease', () => {
8400    if (initialized) {
8401      setHash();
8402    }
8403  });
8404  on('slideChange', () => {
8405    if (initialized && swiper.params.cssMode) {
8406      setHash();
8407    }
8408  });
8409}
8410
8411/***/ }),
8412
vendor: 4,935 bytes, lines 8413-8564
8413/***/ "./node_modules/swiper/modules/history/history.js":
8414/*!********************************************************!*\
8415  !*** ./node_modules/swiper/modules/history/history.js ***!
8416  \********************************************************/
8417/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8418
8419__webpack_require__.r(__webpack_exports__);
8420/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8421/* harmony export */   "default": function() { return /* binding */ History; }
8422/* harmony export */ });
8423/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
8424
8425function History({
8426  swiper,
8427  extendParams,
8428  on
8429}) {
8430  extendParams({
8431    history: {
8432      enabled: false,
8433      root: '',
8434      replaceState: false,
8435      key: 'slides',
8436      keepQuery: false
8437    }
8438  });
8439  let initialized = false;
8440  let paths = {};
8441  const slugify = text => {
8442    return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
8443  };
8444  const getPathValues = urlOverride => {
8445    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
8446    let location;
8447    if (urlOverride) {
8448      location = new URL(urlOverride);
8449    } else {
8450      location = window.location;
8451    }
8452    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');
8453    const total = pathArray.length;
8454    const key = pathArray[total - 2];
8455    const value = pathArray[total - 1];
8456    return {
8457      key,
8458      value
8459    };
8460  };
8461  const setHistory = (key, index) => {
8462    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
8463    if (!initialized || !swiper.params.history.enabled) return;
8464    let location;
8465    if (swiper.params.url) {
8466      location = new URL(swiper.params.url);
8467    } else {
8468      location = window.location;
8469    }
8470    const slide = swiper.slides[index];
8471    let value = slugify(slide.getAttribute('data-history'));
8472    if (swiper.params.history.root.length > 0) {
8473      let root = swiper.params.history.root;
8474      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);
8475      value = `${root}/${key ? `${key}/` : ''}${value}`;
8476    } else if (!location.pathname.includes(key)) {
8477      value = `${key ? `${key}/` : ''}${value}`;
8478    }
8479    if (swiper.params.history.keepQuery) {
8480      value += location.search;
8481    }
8482    const currentState = window.history.state;
8483    if (currentState && currentState.value === value) {
8484      return;
8485    }
8486    if (swiper.params.history.replaceState) {
8487      window.history.replaceState({
8488        value
8489      }, null, value);
8490    } else {
8491      window.history.pushState({
8492        value
8493      }, null, value);
8494    }
8495  };
8496  const scrollToSlide = (speed, value, runCallbacks) => {
8497    if (value) {
8498      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
8499        const slide = swiper.slides[i];
8500        const slideHistory = slugify(slide.getAttribute('data-history'));
8501        if (slideHistory === value) {
8502          const index = swiper.getSlideIndex(slide);
8503          swiper.slideTo(index, speed, runCallbacks);
8504        }
8505      }
8506    } else {
8507      swiper.slideTo(0, speed, runCallbacks);
8508    }
8509  };
8510  const setHistoryPopState = () => {
8511    paths = getPathValues(swiper.params.url);
8512    scrollToSlide(swiper.params.speed, paths.value, false);
8513  };
8514  const init = () => {
8515    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
8516    if (!swiper.params.history) return;
8517    if (!window.history || !window.history.pushState) {
8518      swiper.params.history.enabled = false;
8519      swiper.params.hashNavigation.enabled = true;
8520      return;
8521    }
8522    initialized = true;
8523    paths = getPathValues(swiper.params.url);
8524    if (!paths.key && !paths.value) {
8525      if (!swiper.params.history.replaceState) {
8526        window.addEventListener('popstate', setHistoryPopState);
8527      }
8528      return;
8529    }
8530    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);
8531    if (!swiper.params.history.replaceState) {
8532      window.addEventListener('popstate', setHistoryPopState);
8533    }
8534  };
8535  const destroy = () => {
8536    const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
8537    if (!swiper.params.history.replaceState) {
8538      window.removeEventListener('popstate', setHistoryPopState);
8539    }
8540  };
8541  on('init', () => {
8542    if (swiper.params.history.enabled) {
8543      init();
8544    }
8545  });
8546  on('destroy', () => {
8547    if (swiper.params.history.enabled) {
8548      destroy();
8549    }
8550  });
8551  on('transitionEnd _freeModeNoMomentumRelease', () => {
8552    if (initialized) {
8553      setHistory(swiper.params.history.key, swiper.activeIndex);
8554    }
8555  });
8556  on('slideChange', () => {
8557    if (initialized && swiper.params.cssMode) {
8558      setHistory(swiper.params.history.key, swiper.activeIndex);
8559    }
8560  });
8561}
8562
8563/***/ }),
8564
vendor: 5,261 bytes, lines 8565-8692
8565/***/ "./node_modules/swiper/modules/keyboard/keyboard.js":
8566/*!**********************************************************!*\
8567  !*** ./node_modules/swiper/modules/keyboard/keyboard.js ***!
8568  \**********************************************************/
8569/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8570
8571__webpack_require__.r(__webpack_exports__);
8572/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8573/* harmony export */   "default": function() { return /* binding */ Keyboard; }
8574/* harmony export */ });
8575/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
8576/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
8577/* eslint-disable consistent-return */
8578
8579
8580function Keyboard({
8581  swiper,
8582  extendParams,
8583  on,
8584  emit
8585}) {
8586  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
8587  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
8588  swiper.keyboard = {
8589    enabled: false
8590  };
8591  extendParams({
8592    keyboard: {
8593      enabled: false,
8594      onlyInViewport: true,
8595      pageUpDown: true
8596    }
8597  });
8598  function handle(event) {
8599    if (!swiper.enabled) return;
8600    const {
8601      rtlTranslate: rtl
8602    } = swiper;
8603    let e = event;
8604    if (e.originalEvent) e = e.originalEvent; // jquery fix
8605    const kc = e.keyCode || e.charCode;
8606    const pageUpDown = swiper.params.keyboard.pageUpDown;
8607    const isPageUp = pageUpDown && kc === 33;
8608    const isPageDown = pageUpDown && kc === 34;
8609    const isArrowLeft = kc === 37;
8610    const isArrowRight = kc === 39;
8611    const isArrowUp = kc === 38;
8612    const isArrowDown = kc === 40;
8613    // Directions locks
8614    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
8615      return false;
8616    }
8617    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
8618      return false;
8619    }
8620    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
8621      return undefined;
8622    }
8623    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
8624      return undefined;
8625    }
8626    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
8627      let inView = false;
8628      // Check that swiper should be inside of visible area of window
8629      if ((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementParents)(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementParents)(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {
8630        return undefined;
8631      }
8632      const el = swiper.el;
8633      const swiperWidth = el.clientWidth;
8634      const swiperHeight = el.clientHeight;
8635      const windowWidth = window.innerWidth;
8636      const windowHeight = window.innerHeight;
8637      const swiperOffset = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementOffset)(el);
8638      if (rtl) swiperOffset.left -= el.scrollLeft;
8639      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
8640      for (let i = 0; i < swiperCoord.length; i += 1) {
8641        const point = swiperCoord[i];
8642        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
8643          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
8644          inView = true;
8645        }
8646      }
8647      if (!inView) return undefined;
8648    }
8649    if (swiper.isHorizontal()) {
8650      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
8651        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
8652      }
8653      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
8654      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
8655    } else {
8656      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
8657        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
8658      }
8659      if (isPageDown || isArrowDown) swiper.slideNext();
8660      if (isPageUp || isArrowUp) swiper.slidePrev();
8661    }
8662    emit('keyPress', kc);
8663    return undefined;
8664  }
8665  function enable() {
8666    if (swiper.keyboard.enabled) return;
8667    document.addEventListener('keydown', handle);
8668    swiper.keyboard.enabled = true;
8669  }
8670  function disable() {
8671    if (!swiper.keyboard.enabled) return;
8672    document.removeEventListener('keydown', handle);
8673    swiper.keyboard.enabled = false;
8674  }
8675  on('init', () => {
8676    if (swiper.params.keyboard.enabled) {
8677      enable();
8678    }
8679  });
8680  on('destroy', () => {
8681    if (swiper.keyboard.enabled) {
8682      disable();
8683    }
8684  });
8685  Object.assign(swiper.keyboard, {
8686    enable,
8687    disable
8688  });
8689}
8690
8691/***/ }),
8692
vendor: 2,183 bytes, lines 8693-8726
8693/***/ "./node_modules/swiper/modules/manipulation/manipulation.js":
8694/*!******************************************************************!*\
8695  !*** ./node_modules/swiper/modules/manipulation/manipulation.js ***!
8696  \******************************************************************/
8697/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8698
8699__webpack_require__.r(__webpack_exports__);
8700/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8701/* harmony export */   "default": function() { return /* binding */ Manipulation; }
8702/* harmony export */ });
8703/* harmony import */ var _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./methods/appendSlide.js */ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js");
8704/* harmony import */ var _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./methods/prependSlide.js */ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js");
8705/* harmony import */ var _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./methods/addSlide.js */ "./node_modules/swiper/modules/manipulation/methods/addSlide.js");
8706/* harmony import */ var _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./methods/removeSlide.js */ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js");
8707/* harmony import */ var _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./methods/removeAllSlides.js */ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js");
8708
8709
8710
8711
8712
8713function Manipulation({
8714  swiper
8715}) {
8716  Object.assign(swiper, {
8717    appendSlide: _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__["default"].bind(swiper),
8718    prependSlide: _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper),
8719    addSlide: _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper),
8720    removeSlide: _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper),
8721    removeAllSlides: _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__["default"].bind(swiper)
8722  });
8723}
8724
8725/***/ }),
8726
vendor: 2,091 bytes, lines 8727-8792
8727/***/ "./node_modules/swiper/modules/manipulation/methods/addSlide.js":
8728/*!**********************************************************************!*\
8729  !*** ./node_modules/swiper/modules/manipulation/methods/addSlide.js ***!
8730  \**********************************************************************/
8731/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8732
8733__webpack_require__.r(__webpack_exports__);
8734/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8735/* harmony export */   "default": function() { return /* binding */ addSlide; }
8736/* harmony export */ });
8737function addSlide(index, slides) {
8738  const swiper = this;
8739  const {
8740    params,
8741    activeIndex,
8742    slidesEl
8743  } = swiper;
8744  let activeIndexBuffer = activeIndex;
8745  if (params.loop) {
8746    activeIndexBuffer -= swiper.loopedSlides;
8747    swiper.loopDestroy();
8748    swiper.recalcSlides();
8749  }
8750  const baseLength = swiper.slides.length;
8751  if (index <= 0) {
8752    swiper.prependSlide(slides);
8753    return;
8754  }
8755  if (index >= baseLength) {
8756    swiper.appendSlide(slides);
8757    return;
8758  }
8759  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
8760  const slidesBuffer = [];
8761  for (let i = baseLength - 1; i >= index; i -= 1) {
8762    const currentSlide = swiper.slides[i];
8763    currentSlide.remove();
8764    slidesBuffer.unshift(currentSlide);
8765  }
8766  if (typeof slides === 'object' && 'length' in slides) {
8767    for (let i = 0; i < slides.length; i += 1) {
8768      if (slides[i]) slidesEl.append(slides[i]);
8769    }
8770    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
8771  } else {
8772    slidesEl.append(slides);
8773  }
8774  for (let i = 0; i < slidesBuffer.length; i += 1) {
8775    slidesEl.append(slidesBuffer[i]);
8776  }
8777  swiper.recalcSlides();
8778  if (params.loop) {
8779    swiper.loopCreate();
8780  }
8781  if (!params.observer || swiper.isElement) {
8782    swiper.update();
8783  }
8784  if (params.loop) {
8785    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
8786  } else {
8787    swiper.slideTo(newActiveIndex, 0, false);
8788  }
8789}
8790
8791/***/ }),
8792
vendor: 1,437 bytes, lines 8793-8839
8793/***/ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js":
8794/*!*************************************************************************!*\
8795  !*** ./node_modules/swiper/modules/manipulation/methods/appendSlide.js ***!
8796  \*************************************************************************/
8797/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8798
8799__webpack_require__.r(__webpack_exports__);
8800/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8801/* harmony export */   "default": function() { return /* binding */ appendSlide; }
8802/* harmony export */ });
8803function appendSlide(slides) {
8804  const swiper = this;
8805  const {
8806    params,
8807    slidesEl
8808  } = swiper;
8809  if (params.loop) {
8810    swiper.loopDestroy();
8811  }
8812  const appendElement = slideEl => {
8813    if (typeof slideEl === 'string') {
8814      const tempDOM = document.createElement('div');
8815      tempDOM.innerHTML = slideEl;
8816      slidesEl.append(tempDOM.children[0]);
8817      tempDOM.innerHTML = '';
8818    } else {
8819      slidesEl.append(slideEl);
8820    }
8821  };
8822  if (typeof slides === 'object' && 'length' in slides) {
8823    for (let i = 0; i < slides.length; i += 1) {
8824      if (slides[i]) appendElement(slides[i]);
8825    }
8826  } else {
8827    appendElement(slides);
8828  }
8829  swiper.recalcSlides();
8830  if (params.loop) {
8831    swiper.loopCreate();
8832  }
8833  if (!params.observer || swiper.isElement) {
8834    swiper.update();
8835  }
8836}
8837
8838/***/ }),
8839
vendor: 1,599 bytes, lines 8840-8890
8840/***/ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js":
8841/*!**************************************************************************!*\
8842  !*** ./node_modules/swiper/modules/manipulation/methods/prependSlide.js ***!
8843  \**************************************************************************/
8844/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8845
8846__webpack_require__.r(__webpack_exports__);
8847/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8848/* harmony export */   "default": function() { return /* binding */ prependSlide; }
8849/* harmony export */ });
8850function prependSlide(slides) {
8851  const swiper = this;
8852  const {
8853    params,
8854    activeIndex,
8855    slidesEl
8856  } = swiper;
8857  if (params.loop) {
8858    swiper.loopDestroy();
8859  }
8860  let newActiveIndex = activeIndex + 1;
8861  const prependElement = slideEl => {
8862    if (typeof slideEl === 'string') {
8863      const tempDOM = document.createElement('div');
8864      tempDOM.innerHTML = slideEl;
8865      slidesEl.prepend(tempDOM.children[0]);
8866      tempDOM.innerHTML = '';
8867    } else {
8868      slidesEl.prepend(slideEl);
8869    }
8870  };
8871  if (typeof slides === 'object' && 'length' in slides) {
8872    for (let i = 0; i < slides.length; i += 1) {
8873      if (slides[i]) prependElement(slides[i]);
8874    }
8875    newActiveIndex = activeIndex + slides.length;
8876  } else {
8877    prependElement(slides);
8878  }
8879  swiper.recalcSlides();
8880  if (params.loop) {
8881    swiper.loopCreate();
8882  }
8883  if (!params.observer || swiper.isElement) {
8884    swiper.update();
8885  }
8886  swiper.slideTo(newActiveIndex, 0, false);
8887}
8888
8889/***/ }),
8890
vendor: 863 bytes, lines 8891-8911
8891/***/ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js":
8892/*!*****************************************************************************!*\
8893  !*** ./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js ***!
8894  \*****************************************************************************/
8895/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8896
8897__webpack_require__.r(__webpack_exports__);
8898/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8899/* harmony export */   "default": function() { return /* binding */ removeAllSlides; }
8900/* harmony export */ });
8901function removeAllSlides() {
8902  const swiper = this;
8903  const slidesIndexes = [];
8904  for (let i = 0; i < swiper.slides.length; i += 1) {
8905    slidesIndexes.push(i);
8906  }
8907  swiper.removeSlide(slidesIndexes);
8908}
8909
8910/***/ }),
8911
vendor: 1,853 bytes, lines 8912-8963
8912/***/ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js":
8913/*!*************************************************************************!*\
8914  !*** ./node_modules/swiper/modules/manipulation/methods/removeSlide.js ***!
8915  \*************************************************************************/
8916/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8917
8918__webpack_require__.r(__webpack_exports__);
8919/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8920/* harmony export */   "default": function() { return /* binding */ removeSlide; }
8921/* harmony export */ });
8922function removeSlide(slidesIndexes) {
8923  const swiper = this;
8924  const {
8925    params,
8926    activeIndex
8927  } = swiper;
8928  let activeIndexBuffer = activeIndex;
8929  if (params.loop) {
8930    activeIndexBuffer -= swiper.loopedSlides;
8931    swiper.loopDestroy();
8932  }
8933  let newActiveIndex = activeIndexBuffer;
8934  let indexToRemove;
8935  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
8936    for (let i = 0; i < slidesIndexes.length; i += 1) {
8937      indexToRemove = slidesIndexes[i];
8938      if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
8939      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
8940    }
8941    newActiveIndex = Math.max(newActiveIndex, 0);
8942  } else {
8943    indexToRemove = slidesIndexes;
8944    if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
8945    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
8946    newActiveIndex = Math.max(newActiveIndex, 0);
8947  }
8948  swiper.recalcSlides();
8949  if (params.loop) {
8950    swiper.loopCreate();
8951  }
8952  if (!params.observer || swiper.isElement) {
8953    swiper.update();
8954  }
8955  if (params.loop) {
8956    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
8957  } else {
8958    swiper.slideTo(newActiveIndex, 0, false);
8959  }
8960}
8961
8962/***/ }),
8963
vendor: 15,819 bytes, lines 8964-9365
8964/***/ "./node_modules/swiper/modules/mousewheel/mousewheel.js":
8965/*!**************************************************************!*\
8966  !*** ./node_modules/swiper/modules/mousewheel/mousewheel.js ***!
8967  \**************************************************************/
8968/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8969
8970__webpack_require__.r(__webpack_exports__);
8971/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8972/* harmony export */   "default": function() { return /* binding */ Mousewheel; }
8973/* harmony export */ });
8974/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
8975/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
8976/* eslint-disable consistent-return */
8977
8978
8979function Mousewheel({
8980  swiper,
8981  extendParams,
8982  on,
8983  emit
8984}) {
8985  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
8986  extendParams({
8987    mousewheel: {
8988      enabled: false,
8989      releaseOnEdges: false,
8990      invert: false,
8991      forceToAxis: false,
8992      sensitivity: 1,
8993      eventsTarget: 'container',
8994      thresholdDelta: null,
8995      thresholdTime: null,
8996      noMousewheelClass: 'swiper-no-mousewheel'
8997    }
8998  });
8999  swiper.mousewheel = {
9000    enabled: false
9001  };
9002  let timeout;
9003  let lastScrollTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.now)();
9004  let lastEventBeforeSnap;
9005  const recentWheelEvents = [];
9006  function normalize(e) {
9007    // Reasonable defaults
9008    const PIXEL_STEP = 10;
9009    const LINE_HEIGHT = 40;
9010    const PAGE_HEIGHT = 800;
9011    let sX = 0;
9012    let sY = 0; // spinX, spinY
9013    let pX = 0;
9014    let pY = 0; // pixelX, pixelY
9015
9016    // Legacy
9017    if ('detail' in e) {
9018      sY = e.detail;
9019    }
9020    if ('wheelDelta' in e) {
9021      sY = -e.wheelDelta / 120;
9022    }
9023    if ('wheelDeltaY' in e) {
9024      sY = -e.wheelDeltaY / 120;
9025    }
9026    if ('wheelDeltaX' in e) {
9027      sX = -e.wheelDeltaX / 120;
9028    }
9029
9030    // side scrolling on FF with DOMMouseScroll
9031    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
9032      sX = sY;
9033      sY = 0;
9034    }
9035    pX = sX * PIXEL_STEP;
9036    pY = sY * PIXEL_STEP;
9037    if ('deltaY' in e) {
9038      pY = e.deltaY;
9039    }
9040    if ('deltaX' in e) {
9041      pX = e.deltaX;
9042    }
9043    if (e.shiftKey && !pX) {
9044      // if user scrolls with shift he wants horizontal scroll
9045      pX = pY;
9046      pY = 0;
9047    }
9048    if ((pX || pY) && e.deltaMode) {
9049      if (e.deltaMode === 1) {
9050        // delta in LINE units
9051        pX *= LINE_HEIGHT;
9052        pY *= LINE_HEIGHT;
9053      } else {
9054        // delta in PAGE units
9055        pX *= PAGE_HEIGHT;
9056        pY *= PAGE_HEIGHT;
9057      }
9058    }
9059
9060    // Fall-back if spin cannot be determined
9061    if (pX && !sX) {
9062      sX = pX < 1 ? -1 : 1;
9063    }
9064    if (pY && !sY) {
9065      sY = pY < 1 ? -1 : 1;
9066    }
9067    return {
9068      spinX: sX,
9069      spinY: sY,
9070      pixelX: pX,
9071      pixelY: pY
9072    };
9073  }
9074  function handleMouseEnter() {
9075    if (!swiper.enabled) return;
9076    swiper.mouseEntered = true;
9077  }
9078  function handleMouseLeave() {
9079    if (!swiper.enabled) return;
9080    swiper.mouseEntered = false;
9081  }
9082  function animateSlider(newEvent) {
9083    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {
9084      // Prevent if delta of wheel scroll delta is below configured threshold
9085      return false;
9086    }
9087    if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.now)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {
9088      // Prevent if time between scrolls is below configured threshold
9089      return false;
9090    }
9091
9092    // If the movement is NOT big enough and
9093    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
9094    //   Don't go any further (avoid insignificant scroll movement).
9095    if (newEvent.delta >= 6 && (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.now)() - lastScrollTime < 60) {
9096      // Return false as a default
9097      return true;
9098    }
9099    // If user is scrolling towards the end:
9100    //   If the slider hasn't hit the latest slide or
9101    //   if the slider is a loop and
9102    //   if the slider isn't moving right now:
9103    //     Go to next slide and
9104    //     emit a scroll event.
9105    // Else (the user is scrolling towards the beginning) and
9106    // if the slider hasn't hit the first slide or
9107    // if the slider is a loop and
9108    // if the slider isn't moving right now:
9109    //   Go to prev slide and
9110    //   emit a scroll event.
9111    if (newEvent.direction < 0) {
9112      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
9113        swiper.slideNext();
9114        emit('scroll', newEvent.raw);
9115      }
9116    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
9117      swiper.slidePrev();
9118      emit('scroll', newEvent.raw);
9119    }
9120    // If you got here is because an animation has been triggered so store the current time
9121    lastScrollTime = new window.Date().getTime();
9122    // Return false as a default
9123    return false;
9124  }
9125  function releaseScroll(newEvent) {
9126    const params = swiper.params.mousewheel;
9127    if (newEvent.direction < 0) {
9128      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
9129        // Return true to animate scroll on edges
9130        return true;
9131      }
9132    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
9133      // Return true to animate scroll on edges
9134      return true;
9135    }
9136    return false;
9137  }
9138  function handle(event) {
9139    let e = event;
9140    let disableParentSwiper = true;
9141    if (!swiper.enabled) return;
9142
9143    // Ignore event if the target or its parents have the swiper-no-mousewheel class
9144    if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;
9145    const params = swiper.params.mousewheel;
9146    if (swiper.params.cssMode) {
9147      e.preventDefault();
9148    }
9149    let targetEl = swiper.el;
9150    if (swiper.params.mousewheel.eventsTarget !== 'container') {
9151      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
9152    }
9153    const targetElContainsTarget = targetEl && targetEl.contains(e.target);
9154    if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;
9155    if (e.originalEvent) e = e.originalEvent; // jquery fix
9156    let delta = 0;
9157    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
9158    const data = normalize(e);
9159    if (params.forceToAxis) {
9160      if (swiper.isHorizontal()) {
9161        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
9162      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
9163    } else {
9164      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
9165    }
9166    if (delta === 0) return true;
9167    if (params.invert) delta = -delta;
9168
9169    // Get the scroll positions
9170    let positions = swiper.getTranslate() + delta * params.sensitivity;
9171    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
9172    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();
9173
9174    // When loop is true:
9175    //     the disableParentSwiper will be true.
9176    // When loop is false:
9177    //     if the scroll positions is not on edge,
9178    //     then the disableParentSwiper will be true.
9179    //     if the scroll on edge positions,
9180    //     then the disableParentSwiper will be false.
9181    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
9182    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
9183    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {
9184      // Register the new event in a variable which stores the relevant data
9185      const newEvent = {
9186        time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.now)(),
9187        delta: Math.abs(delta),
9188        direction: Math.sign(delta),
9189        raw: event
9190      };
9191
9192      // Keep the most recent events
9193      if (recentWheelEvents.length >= 2) {
9194        recentWheelEvents.shift(); // only store the last N events
9195      }
9196
9197      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
9198      recentWheelEvents.push(newEvent);
9199
9200      // If there is at least one previous recorded event:
9201      //   If direction has changed or
9202      //   if the scroll is quicker than the previous one:
9203      //     Animate the slider.
9204      // Else (this is the first time the wheel is moved):
9205      //     Animate the slider.
9206      if (prevEvent) {
9207        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
9208          animateSlider(newEvent);
9209        }
9210      } else {
9211        animateSlider(newEvent);
9212      }
9213
9214      // If it's time to release the scroll:
9215      //   Return now so you don't hit the preventDefault.
9216      if (releaseScroll(newEvent)) {
9217        return true;
9218      }
9219    } else {
9220      // Freemode or scrollContainer:
9221
9222      // If we recently snapped after a momentum scroll, then ignore wheel events
9223      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
9224      // or if it's a new scroll (larger delta or inverse sign as last event before
9225      // an end-of-momentum snap).
9226      const newEvent = {
9227        time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.now)(),
9228        delta: Math.abs(delta),
9229        direction: Math.sign(delta)
9230      };
9231      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;
9232      if (!ignoreWheelEvents) {
9233        lastEventBeforeSnap = undefined;
9234        let position = swiper.getTranslate() + delta * params.sensitivity;
9235        const wasBeginning = swiper.isBeginning;
9236        const wasEnd = swiper.isEnd;
9237        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
9238        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
9239        swiper.setTransition(0);
9240        swiper.setTranslate(position);
9241        swiper.updateProgress();
9242        swiper.updateActiveIndex();
9243        swiper.updateSlidesClasses();
9244        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
9245          swiper.updateSlidesClasses();
9246        }
9247        if (swiper.params.loop) {
9248          swiper.loopFix({
9249            direction: newEvent.direction < 0 ? 'next' : 'prev',
9250            byMousewheel: true
9251          });
9252        }
9253        if (swiper.params.freeMode.sticky) {
9254          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
9255          // the end of a momentum scroll by storing recent (N=15?) wheel events.
9256          // 1. do all N events have decreasing or same (absolute value) delta?
9257          // 2. did all N events arrive in the last M (M=500?) msecs?
9258          // 3. does the earliest event have an (absolute value) delta that's
9259          //    at least P (P=1?) larger than the most recent event's delta?
9260          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
9261          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
9262          // Snap immediately and ignore remaining wheel events in this scroll.
9263          // See comment above for "remaining wheel events in this scroll" determination.
9264          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
9265          clearTimeout(timeout);
9266          timeout = undefined;
9267          if (recentWheelEvents.length >= 15) {
9268            recentWheelEvents.shift(); // only store the last N events
9269          }
9270
9271          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
9272          const firstEvent = recentWheelEvents[0];
9273          recentWheelEvents.push(newEvent);
9274          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
9275            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
9276            recentWheelEvents.splice(0);
9277          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {
9278            // We're at the end of the deceleration of a momentum scroll, so there's no need
9279            // to wait for more events. Snap ASAP on the next tick.
9280            // Also, because there's some remaining momentum we'll bias the snap in the
9281            // direction of the ongoing scroll because it's better UX for the scroll to snap
9282            // in the same direction as the scroll instead of reversing to snap.  Therefore,
9283            // if it's already scrolled more than 20% in the current direction, keep going.
9284            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
9285            lastEventBeforeSnap = newEvent;
9286            recentWheelEvents.splice(0);
9287            timeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(() => {
9288              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
9289            }, 0); // no delay; move on next tick
9290          }
9291
9292          if (!timeout) {
9293            // if we get here, then we haven't detected the end of a momentum scroll, so
9294            // we'll consider a scroll "complete" when there haven't been any wheel events
9295            // for 500ms.
9296            timeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(() => {
9297              const snapToThreshold = 0.5;
9298              lastEventBeforeSnap = newEvent;
9299              recentWheelEvents.splice(0);
9300              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
9301            }, 500);
9302          }
9303        }
9304
9305        // Emit event
9306        if (!ignoreWheelEvents) emit('scroll', e);
9307
9308        // Stop autoplay
9309        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
9310        // Return page scroll on edge positions
9311        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
9312      }
9313    }
9314    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
9315    return false;
9316  }
9317  function events(method) {
9318    let targetEl = swiper.el;
9319    if (swiper.params.mousewheel.eventsTarget !== 'container') {
9320      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
9321    }
9322    targetEl[method]('mouseenter', handleMouseEnter);
9323    targetEl[method]('mouseleave', handleMouseLeave);
9324    targetEl[method]('wheel', handle);
9325  }
9326  function enable() {
9327    if (swiper.params.cssMode) {
9328      swiper.wrapperEl.removeEventListener('wheel', handle);
9329      return true;
9330    }
9331    if (swiper.mousewheel.enabled) return false;
9332    events('addEventListener');
9333    swiper.mousewheel.enabled = true;
9334    return true;
9335  }
9336  function disable() {
9337    if (swiper.params.cssMode) {
9338      swiper.wrapperEl.addEventListener(event, handle);
9339      return true;
9340    }
9341    if (!swiper.mousewheel.enabled) return false;
9342    events('removeEventListener');
9343    swiper.mousewheel.enabled = false;
9344    return true;
9345  }
9346  on('init', () => {
9347    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
9348      disable();
9349    }
9350    if (swiper.params.mousewheel.enabled) enable();
9351  });
9352  on('destroy', () => {
9353    if (swiper.params.cssMode) {
9354      enable();
9355    }
9356    if (swiper.mousewheel.enabled) disable();
9357  });
9358  Object.assign(swiper.mousewheel, {
9359    enable,
9360    disable
9361  });
9362}
9363
9364/***/ }),
9365
vendor: 6,665 bytes, lines 9366-9565
9366/***/ "./node_modules/swiper/modules/navigation/navigation.js":
9367/*!**************************************************************!*\
9368  !*** ./node_modules/swiper/modules/navigation/navigation.js ***!
9369  \**************************************************************/
9370/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9371
9372__webpack_require__.r(__webpack_exports__);
9373/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9374/* harmony export */   "default": function() { return /* binding */ Navigation; }
9375/* harmony export */ });
9376/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
9377
9378function Navigation({
9379  swiper,
9380  extendParams,
9381  on,
9382  emit
9383}) {
9384  extendParams({
9385    navigation: {
9386      nextEl: null,
9387      prevEl: null,
9388      hideOnClick: false,
9389      disabledClass: 'swiper-button-disabled',
9390      hiddenClass: 'swiper-button-hidden',
9391      lockClass: 'swiper-button-lock',
9392      navigationDisabledClass: 'swiper-navigation-disabled'
9393    }
9394  });
9395  swiper.navigation = {
9396    nextEl: null,
9397    prevEl: null
9398  };
9399  const makeElementsArray = el => {
9400    if (!Array.isArray(el)) el = [el].filter(e => !!e);
9401    return el;
9402  };
9403  function getEl(el) {
9404    let res;
9405    if (el && typeof el === 'string' && swiper.isElement) {
9406      res = swiper.el.shadowRoot.querySelector(el);
9407      if (res) return res;
9408    }
9409    if (el) {
9410      if (typeof el === 'string') res = [...document.querySelectorAll(el)];
9411      if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {
9412        res = swiper.el.querySelector(el);
9413      }
9414    }
9415    if (el && !res) return el;
9416    // if (Array.isArray(res) && res.length === 1) res = res[0];
9417    return res;
9418  }
9419  function toggleEl(el, disabled) {
9420    const params = swiper.params.navigation;
9421    el = makeElementsArray(el);
9422    el.forEach(subEl => {
9423      if (subEl) {
9424        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));
9425        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;
9426        if (swiper.params.watchOverflow && swiper.enabled) {
9427          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
9428        }
9429      }
9430    });
9431  }
9432  function update() {
9433    // Update Navigation Buttons
9434    const {
9435      nextEl,
9436      prevEl
9437    } = swiper.navigation;
9438    if (swiper.params.loop) {
9439      toggleEl(prevEl, false);
9440      toggleEl(nextEl, false);
9441      return;
9442    }
9443    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);
9444    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);
9445  }
9446  function onPrevClick(e) {
9447    e.preventDefault();
9448    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
9449    swiper.slidePrev();
9450    emit('navigationPrev');
9451  }
9452  function onNextClick(e) {
9453    e.preventDefault();
9454    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
9455    swiper.slideNext();
9456    emit('navigationNext');
9457  }
9458  function init() {
9459    const params = swiper.params.navigation;
9460    swiper.params.navigation = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
9461      nextEl: 'swiper-button-next',
9462      prevEl: 'swiper-button-prev'
9463    });
9464    if (!(params.nextEl || params.prevEl)) return;
9465    let nextEl = getEl(params.nextEl);
9466    let prevEl = getEl(params.prevEl);
9467    Object.assign(swiper.navigation, {
9468      nextEl,
9469      prevEl
9470    });
9471    nextEl = makeElementsArray(nextEl);
9472    prevEl = makeElementsArray(prevEl);
9473    const initButton = (el, dir) => {
9474      if (el) {
9475        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
9476      }
9477      if (!swiper.enabled && el) {
9478        el.classList.add(...params.lockClass.split(' '));
9479      }
9480    };
9481    nextEl.forEach(el => initButton(el, 'next'));
9482    prevEl.forEach(el => initButton(el, 'prev'));
9483  }
9484  function destroy() {
9485    let {
9486      nextEl,
9487      prevEl
9488    } = swiper.navigation;
9489    nextEl = makeElementsArray(nextEl);
9490    prevEl = makeElementsArray(prevEl);
9491    const destroyButton = (el, dir) => {
9492      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
9493      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));
9494    };
9495    nextEl.forEach(el => destroyButton(el, 'next'));
9496    prevEl.forEach(el => destroyButton(el, 'prev'));
9497  }
9498  on('init', () => {
9499    if (swiper.params.navigation.enabled === false) {
9500      // eslint-disable-next-line
9501      disable();
9502    } else {
9503      init();
9504      update();
9505    }
9506  });
9507  on('toEdge fromEdge lock unlock', () => {
9508    update();
9509  });
9510  on('destroy', () => {
9511    destroy();
9512  });
9513  on('enable disable', () => {
9514    let {
9515      nextEl,
9516      prevEl
9517    } = swiper.navigation;
9518    nextEl = makeElementsArray(nextEl);
9519    prevEl = makeElementsArray(prevEl);
9520    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));
9521  });
9522  on('click', (_s, e) => {
9523    let {
9524      nextEl,
9525      prevEl
9526    } = swiper.navigation;
9527    nextEl = makeElementsArray(nextEl);
9528    prevEl = makeElementsArray(prevEl);
9529    const targetEl = e.target;
9530    if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {
9531      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
9532      let isHidden;
9533      if (nextEl.length) {
9534        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);
9535      } else if (prevEl.length) {
9536        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);
9537      }
9538      if (isHidden === true) {
9539        emit('navigationShow');
9540      } else {
9541        emit('navigationHide');
9542      }
9543      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));
9544    }
9545  });
9546  const enable = () => {
9547    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));
9548    init();
9549    update();
9550  };
9551  const disable = () => {
9552    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));
9553    destroy();
9554  };
9555  Object.assign(swiper.navigation, {
9556    enable,
9557    disable,
9558    update,
9559    init,
9560    destroy
9561  });
9562}
9563
9564/***/ }),
9565
vendor: 18,303 bytes, lines 9566-10027
9566/***/ "./node_modules/swiper/modules/pagination/pagination.js":
9567/*!**************************************************************!*\
9568  !*** ./node_modules/swiper/modules/pagination/pagination.js ***!
9569  \**************************************************************/
9570/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
9571
9572__webpack_require__.r(__webpack_exports__);
9573/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9574/* harmony export */   "default": function() { return /* binding */ Pagination; }
9575/* harmony export */ });
9576/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js");
9577/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
9578/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
9579
9580
9581
9582function Pagination({
9583  swiper,
9584  extendParams,
9585  on,
9586  emit
9587}) {
9588  const pfx = 'swiper-pagination';
9589  extendParams({
9590    pagination: {
9591      el: null,
9592      bulletElement: 'span',
9593      clickable: false,
9594      hideOnClick: false,
9595      renderBullet: null,
9596      renderProgressbar: null,
9597      renderFraction: null,
9598      renderCustom: null,
9599      progressbarOpposite: false,
9600      type: 'bullets',
9601      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
9602      dynamicBullets: false,
9603      dynamicMainBullets: 1,
9604      formatFractionCurrent: number => number,
9605      formatFractionTotal: number => number,
9606      bulletClass: `${pfx}-bullet`,
9607      bulletActiveClass: `${pfx}-bullet-active`,
9608      modifierClass: `${pfx}-`,
9609      currentClass: `${pfx}-current`,
9610      totalClass: `${pfx}-total`,
9611      hiddenClass: `${pfx}-hidden`,
9612      progressbarFillClass: `${pfx}-progressbar-fill`,
9613      progressbarOppositeClass: `${pfx}-progressbar-opposite`,
9614      clickableClass: `${pfx}-clickable`,
9615      lockClass: `${pfx}-lock`,
9616      horizontalClass: `${pfx}-horizontal`,
9617      verticalClass: `${pfx}-vertical`,
9618      paginationDisabledClass: `${pfx}-disabled`
9619    }
9620  });
9621  swiper.pagination = {
9622    el: null,
9623    bullets: []
9624  };
9625  let bulletSize;
9626  let dynamicBulletIndex = 0;
9627  const makeElementsArray = el => {
9628    if (!Array.isArray(el)) el = [el].filter(e => !!e);
9629    return el;
9630  };
9631  function isPaginationDisabled() {
9632    return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;
9633  }
9634  function setSideBullets(bulletEl, position) {
9635    const {
9636      bulletActiveClass
9637    } = swiper.params.pagination;
9638    if (!bulletEl) return;
9639    bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
9640    if (bulletEl) {
9641      bulletEl.classList.add(`${bulletActiveClass}-${position}`);
9642      bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
9643      if (bulletEl) {
9644        bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);
9645      }
9646    }
9647  }
9648  function onBulletClick(e) {
9649    const bulletEl = e.target.closest((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass));
9650    if (!bulletEl) {
9651      return;
9652    }
9653    e.preventDefault();
9654    const index = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.elementIndex)(bulletEl) * swiper.params.slidesPerGroup;
9655    if (swiper.params.loop) {
9656      if (swiper.realIndex === index) return;
9657      const newSlideIndex = swiper.getSlideIndexByData(index);
9658      const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);
9659      if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {
9660        swiper.loopFix({
9661          direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',
9662          activeSlideIndex: newSlideIndex,
9663          slideTo: false
9664        });
9665      }
9666      swiper.slideToLoop(index);
9667    } else {
9668      swiper.slideTo(index);
9669    }
9670  }
9671  function update() {
9672    // Render || Update Pagination bullets/items
9673    const rtl = swiper.rtl;
9674    const params = swiper.params.pagination;
9675    if (isPaginationDisabled()) return;
9676    let el = swiper.pagination.el;
9677    el = makeElementsArray(el);
9678    // Current/Total
9679    let current;
9680    let previousIndex;
9681    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
9682    const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
9683    if (swiper.params.loop) {
9684      previousIndex = swiper.previousRealIndex || 0;
9685      current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;
9686    } else if (typeof swiper.snapIndex !== 'undefined') {
9687      current = swiper.snapIndex;
9688      previousIndex = swiper.previousSnapIndex;
9689    } else {
9690      previousIndex = swiper.previousIndex || 0;
9691      current = swiper.activeIndex || 0;
9692    }
9693    // Types
9694    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
9695      const bullets = swiper.pagination.bullets;
9696      let firstIndex;
9697      let lastIndex;
9698      let midIndex;
9699      if (params.dynamicBullets) {
9700        bulletSize = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.elementOuterSize)(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);
9701        el.forEach(subEl => {
9702          subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;
9703        });
9704        if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {
9705          dynamicBulletIndex += current - (previousIndex || 0);
9706          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
9707            dynamicBulletIndex = params.dynamicMainBullets - 1;
9708          } else if (dynamicBulletIndex < 0) {
9709            dynamicBulletIndex = 0;
9710          }
9711        }
9712        firstIndex = Math.max(current - dynamicBulletIndex, 0);
9713        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
9714        midIndex = (lastIndex + firstIndex) / 2;
9715      }
9716      bullets.forEach(bulletEl => {
9717        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();
9718        bulletEl.classList.remove(...classesToRemove);
9719      });
9720      if (el.length > 1) {
9721        bullets.forEach(bullet => {
9722          const bulletIndex = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.elementIndex)(bullet);
9723          if (bulletIndex === current) {
9724            bullet.classList.add(...params.bulletActiveClass.split(' '));
9725          }
9726          if (params.dynamicBullets) {
9727            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
9728              bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));
9729            }
9730            if (bulletIndex === firstIndex) {
9731              setSideBullets(bullet, 'prev');
9732            }
9733            if (bulletIndex === lastIndex) {
9734              setSideBullets(bullet, 'next');
9735            }
9736          }
9737        });
9738      } else {
9739        const bullet = bullets[current];
9740        if (bullet) {
9741          bullet.classList.add(...params.bulletActiveClass.split(' '));
9742        }
9743        if (params.dynamicBullets) {
9744          const firstDisplayedBullet = bullets[firstIndex];
9745          const lastDisplayedBullet = bullets[lastIndex];
9746          for (let i = firstIndex; i <= lastIndex; i += 1) {
9747            if (bullets[i]) {
9748              bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));
9749            }
9750          }
9751          setSideBullets(firstDisplayedBullet, 'prev');
9752          setSideBullets(lastDisplayedBullet, 'next');
9753        }
9754      }
9755      if (params.dynamicBullets) {
9756        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
9757        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
9758        const offsetProp = rtl ? 'right' : 'left';
9759        bullets.forEach(bullet => {
9760          bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;
9761        });
9762      }
9763    }
9764    el.forEach((subEl, subElIndex) => {
9765      if (params.type === 'fraction') {
9766        subEl.querySelectorAll((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.currentClass)).forEach(fractionEl => {
9767          fractionEl.textContent = params.formatFractionCurrent(current + 1);
9768        });
9769        subEl.querySelectorAll((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.totalClass)).forEach(totalEl => {
9770          totalEl.textContent = params.formatFractionTotal(total);
9771        });
9772      }
9773      if (params.type === 'progressbar') {
9774        let progressbarDirection;
9775        if (params.progressbarOpposite) {
9776          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
9777        } else {
9778          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
9779        }
9780        const scale = (current + 1) / total;
9781        let scaleX = 1;
9782        let scaleY = 1;
9783        if (progressbarDirection === 'horizontal') {
9784          scaleX = scale;
9785        } else {
9786          scaleY = scale;
9787        }
9788        subEl.querySelectorAll((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.progressbarFillClass)).forEach(progressEl => {
9789          progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;
9790          progressEl.style.transitionDuration = `${swiper.params.speed}ms`;
9791        });
9792      }
9793      if (params.type === 'custom' && params.renderCustom) {
9794        subEl.innerHTML = params.renderCustom(swiper, current + 1, total);
9795        if (subElIndex === 0) emit('paginationRender', subEl);
9796      } else {
9797        if (subElIndex === 0) emit('paginationRender', subEl);
9798        emit('paginationUpdate', subEl);
9799      }
9800      if (swiper.params.watchOverflow && swiper.enabled) {
9801        subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
9802      }
9803    });
9804  }
9805  function render() {
9806    // Render Container
9807    const params = swiper.params.pagination;
9808    if (isPaginationDisabled()) return;
9809    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
9810    let el = swiper.pagination.el;
9811    el = makeElementsArray(el);
9812    let paginationHTML = '';
9813    if (params.type === 'bullets') {
9814      let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
9815      if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {
9816        numberOfBullets = slidesLength;
9817      }
9818      for (let i = 0; i < numberOfBullets; i += 1) {
9819        if (params.renderBullet) {
9820          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
9821        } else {
9822          paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
9823        }
9824      }
9825    }
9826    if (params.type === 'fraction') {
9827      if (params.renderFraction) {
9828        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
9829      } else {
9830        paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`;
9831      }
9832    }
9833    if (params.type === 'progressbar') {
9834      if (params.renderProgressbar) {
9835        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
9836      } else {
9837        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
9838      }
9839    }
9840    swiper.pagination.bullets = [];
9841    el.forEach(subEl => {
9842      if (params.type !== 'custom') {
9843        subEl.innerHTML = paginationHTML || '';
9844      }
9845      if (params.type === 'bullets') {
9846        swiper.pagination.bullets.push(...subEl.querySelectorAll((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.bulletClass)));
9847      }
9848    });
9849    if (params.type !== 'custom') {
9850      emit('paginationRender', el[0]);
9851    }
9852  }
9853  function init() {
9854    swiper.params.pagination = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
9855      el: 'swiper-pagination'
9856    });
9857    const params = swiper.params.pagination;
9858    if (!params.el) return;
9859    let el;
9860    if (typeof params.el === 'string' && swiper.isElement) {
9861      el = swiper.el.shadowRoot.querySelector(params.el);
9862    }
9863    if (!el && typeof params.el === 'string') {
9864      el = [...document.querySelectorAll(params.el)];
9865    }
9866    if (!el) {
9867      el = params.el;
9868    }
9869    if (!el || el.length === 0) return;
9870    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {
9871      el = [...swiper.el.querySelectorAll(params.el)];
9872      // check if it belongs to another nested Swiper
9873      if (el.length > 1) {
9874        el = el.filter(subEl => {
9875          if ((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.elementParents)(subEl, '.swiper')[0] !== swiper.el) return false;
9876          return true;
9877        })[0];
9878      }
9879    }
9880    if (Array.isArray(el) && el.length === 1) el = el[0];
9881    Object.assign(swiper.pagination, {
9882      el
9883    });
9884    el = makeElementsArray(el);
9885    el.forEach(subEl => {
9886      if (params.type === 'bullets' && params.clickable) {
9887        subEl.classList.add(params.clickableClass);
9888      }
9889      subEl.classList.add(params.modifierClass + params.type);
9890      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
9891      if (params.type === 'bullets' && params.dynamicBullets) {
9892        subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);
9893        dynamicBulletIndex = 0;
9894        if (params.dynamicMainBullets < 1) {
9895          params.dynamicMainBullets = 1;
9896        }
9897      }
9898      if (params.type === 'progressbar' && params.progressbarOpposite) {
9899        subEl.classList.add(params.progressbarOppositeClass);
9900      }
9901      if (params.clickable) {
9902        subEl.addEventListener('click', onBulletClick);
9903      }
9904      if (!swiper.enabled) {
9905        subEl.classList.add(params.lockClass);
9906      }
9907    });
9908  }
9909  function destroy() {
9910    const params = swiper.params.pagination;
9911    if (isPaginationDisabled()) return;
9912    let el = swiper.pagination.el;
9913    if (el) {
9914      el = makeElementsArray(el);
9915      el.forEach(subEl => {
9916        subEl.classList.remove(params.hiddenClass);
9917        subEl.classList.remove(params.modifierClass + params.type);
9918        subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
9919        if (params.clickable) {
9920          subEl.removeEventListener('click', onBulletClick);
9921        }
9922      });
9923    }
9924    if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));
9925  }
9926  on('changeDirection', () => {
9927    if (!swiper.pagination || !swiper.pagination.el) return;
9928    const params = swiper.params.pagination;
9929    let {
9930      el
9931    } = swiper.pagination;
9932    el = makeElementsArray(el);
9933    el.forEach(subEl => {
9934      subEl.classList.remove(params.horizontalClass, params.verticalClass);
9935      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
9936    });
9937  });
9938  on('init', () => {
9939    if (swiper.params.pagination.enabled === false) {
9940      // eslint-disable-next-line
9941      disable();
9942    } else {
9943      init();
9944      render();
9945      update();
9946    }
9947  });
9948  on('activeIndexChange', () => {
9949    if (typeof swiper.snapIndex === 'undefined') {
9950      update();
9951    }
9952  });
9953  on('snapIndexChange', () => {
9954    update();
9955  });
9956  on('snapGridLengthChange', () => {
9957    render();
9958    update();
9959  });
9960  on('destroy', () => {
9961    destroy();
9962  });
9963  on('enable disable', () => {
9964    let {
9965      el
9966    } = swiper.pagination;
9967    if (el) {
9968      el = makeElementsArray(el);
9969      el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));
9970    }
9971  });
9972  on('lock unlock', () => {
9973    update();
9974  });
9975  on('click', (_s, e) => {
9976    const targetEl = e.target;
9977    let {
9978      el
9979    } = swiper.pagination;
9980    if (!Array.isArray(el)) el = [el].filter(element => !!element);
9981    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {
9982      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
9983      const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);
9984      if (isHidden === true) {
9985        emit('paginationShow');
9986      } else {
9987        emit('paginationHide');
9988      }
9989      el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));
9990    }
9991  });
9992  const enable = () => {
9993    swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);
9994    let {
9995      el
9996    } = swiper.pagination;
9997    if (el) {
9998      el = makeElementsArray(el);
9999      el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));
10000    }
10001    init();
10002    render();
10003    update();
10004  };
10005  const disable = () => {
10006    swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);
10007    let {
10008      el
10009    } = swiper.pagination;
10010    if (el) {
10011      el = makeElementsArray(el);
10012      el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));
10013    }
10014    destroy();
10015  };
10016  Object.assign(swiper.pagination, {
10017    enable,
10018    disable,
10019    render,
10020    update,
10021    init,
10022    destroy
10023  });
10024}
10025
10026/***/ }),
10027
vendor: 4,509 bytes, lines 10028-10147
10028/***/ "./node_modules/swiper/modules/parallax/parallax.js":
10029/*!**********************************************************!*\
10030  !*** ./node_modules/swiper/modules/parallax/parallax.js ***!
10031  \**********************************************************/
10032/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10033
10034__webpack_require__.r(__webpack_exports__);
10035/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10036/* harmony export */   "default": function() { return /* binding */ Parallax; }
10037/* harmony export */ });
10038/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
10039
10040function Parallax({
10041  swiper,
10042  extendParams,
10043  on
10044}) {
10045  extendParams({
10046    parallax: {
10047      enabled: false
10048    }
10049  });
10050  const setTransform = (el, progress) => {
10051    const {
10052      rtl
10053    } = swiper;
10054    const rtlFactor = rtl ? -1 : 1;
10055    const p = el.getAttribute('data-swiper-parallax') || '0';
10056    let x = el.getAttribute('data-swiper-parallax-x');
10057    let y = el.getAttribute('data-swiper-parallax-y');
10058    const scale = el.getAttribute('data-swiper-parallax-scale');
10059    const opacity = el.getAttribute('data-swiper-parallax-opacity');
10060    const rotate = el.getAttribute('data-swiper-parallax-rotate');
10061    if (x || y) {
10062      x = x || '0';
10063      y = y || '0';
10064    } else if (swiper.isHorizontal()) {
10065      x = p;
10066      y = '0';
10067    } else {
10068      y = p;
10069      x = '0';
10070    }
10071    if (x.indexOf('%') >= 0) {
10072      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
10073    } else {
10074      x = `${x * progress * rtlFactor}px`;
10075    }
10076    if (y.indexOf('%') >= 0) {
10077      y = `${parseInt(y, 10) * progress}%`;
10078    } else {
10079      y = `${y * progress}px`;
10080    }
10081    if (typeof opacity !== 'undefined' && opacity !== null) {
10082      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
10083      el.style.opacity = currentOpacity;
10084    }
10085    let transform = `translate3d(${x}, ${y}, 0px)`;
10086    if (typeof scale !== 'undefined' && scale !== null) {
10087      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
10088      transform += ` scale(${currentScale})`;
10089    }
10090    if (rotate && typeof rotate !== 'undefined' && rotate !== null) {
10091      const currentRotate = rotate * progress * -1;
10092      transform += ` rotate(${currentRotate}deg)`;
10093    }
10094    el.style.transform = transform;
10095  };
10096  const setTranslate = () => {
10097    const {
10098      el,
10099      slides,
10100      progress,
10101      snapGrid
10102    } = swiper;
10103    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementChildren)(el, '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').forEach(subEl => {
10104      setTransform(subEl, progress);
10105    });
10106    slides.forEach((slideEl, slideIndex) => {
10107      let slideProgress = slideEl.progress;
10108      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
10109        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
10110      }
10111      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
10112      slideEl.querySelectorAll('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale], [data-swiper-parallax-rotate]').forEach(subEl => {
10113        setTransform(subEl, slideProgress);
10114      });
10115    });
10116  };
10117  const setTransition = (duration = swiper.params.speed) => {
10118    const {
10119      el
10120    } = swiper;
10121    el.querySelectorAll('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').forEach(parallaxEl => {
10122      let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;
10123      if (duration === 0) parallaxDuration = 0;
10124      parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;
10125    });
10126  };
10127  on('beforeInit', () => {
10128    if (!swiper.params.parallax.enabled) return;
10129    swiper.params.watchSlidesProgress = true;
10130    swiper.originalParams.watchSlidesProgress = true;
10131  });
10132  on('init', () => {
10133    if (!swiper.params.parallax.enabled) return;
10134    setTranslate();
10135  });
10136  on('setTranslate', () => {
10137    if (!swiper.params.parallax.enabled) return;
10138    setTranslate();
10139  });
10140  on('setTransition', (_swiper, duration) => {
10141    if (!swiper.params.parallax.enabled) return;
10142    setTransition(duration);
10143  });
10144}
10145
10146/***/ }),
10147
vendor: 11,352 bytes, lines 10148-10511
10148/***/ "./node_modules/swiper/modules/scrollbar/scrollbar.js":
10149/*!************************************************************!*\
10150  !*** ./node_modules/swiper/modules/scrollbar/scrollbar.js ***!
10151  \************************************************************/
10152/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10153
10154__webpack_require__.r(__webpack_exports__);
10155/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10156/* harmony export */   "default": function() { return /* binding */ Scrollbar; }
10157/* harmony export */ });
10158/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
10159/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
10160/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
10161
10162
10163
10164function Scrollbar({
10165  swiper,
10166  extendParams,
10167  on,
10168  emit
10169}) {
10170  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
10171  let isTouched = false;
10172  let timeout = null;
10173  let dragTimeout = null;
10174  let dragStartPos;
10175  let dragSize;
10176  let trackSize;
10177  let divider;
10178  extendParams({
10179    scrollbar: {
10180      el: null,
10181      dragSize: 'auto',
10182      hide: false,
10183      draggable: false,
10184      snapOnRelease: true,
10185      lockClass: 'swiper-scrollbar-lock',
10186      dragClass: 'swiper-scrollbar-drag',
10187      scrollbarDisabledClass: 'swiper-scrollbar-disabled',
10188      horizontalClass: `swiper-scrollbar-horizontal`,
10189      verticalClass: `swiper-scrollbar-vertical`
10190    }
10191  });
10192  swiper.scrollbar = {
10193    el: null,
10194    dragEl: null
10195  };
10196  function setTranslate() {
10197    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10198    const {
10199      scrollbar,
10200      rtlTranslate: rtl
10201    } = swiper;
10202    const {
10203      dragEl,
10204      el
10205    } = scrollbar;
10206    const params = swiper.params.scrollbar;
10207    const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;
10208    let newSize = dragSize;
10209    let newPos = (trackSize - dragSize) * progress;
10210    if (rtl) {
10211      newPos = -newPos;
10212      if (newPos > 0) {
10213        newSize = dragSize - newPos;
10214        newPos = 0;
10215      } else if (-newPos + dragSize > trackSize) {
10216        newSize = trackSize + newPos;
10217      }
10218    } else if (newPos < 0) {
10219      newSize = dragSize + newPos;
10220      newPos = 0;
10221    } else if (newPos + dragSize > trackSize) {
10222      newSize = trackSize - newPos;
10223    }
10224    if (swiper.isHorizontal()) {
10225      dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;
10226      dragEl.style.width = `${newSize}px`;
10227    } else {
10228      dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;
10229      dragEl.style.height = `${newSize}px`;
10230    }
10231    if (params.hide) {
10232      clearTimeout(timeout);
10233      el.style.opacity = 1;
10234      timeout = setTimeout(() => {
10235        el.style.opacity = 0;
10236        el.style.transitionDuration = '400ms';
10237      }, 1000);
10238    }
10239  }
10240  function setTransition(duration) {
10241    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10242    swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;
10243  }
10244  function updateSize() {
10245    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10246    const {
10247      scrollbar
10248    } = swiper;
10249    const {
10250      dragEl,
10251      el
10252    } = scrollbar;
10253    dragEl.style.width = '';
10254    dragEl.style.height = '';
10255    trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;
10256    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));
10257    if (swiper.params.scrollbar.dragSize === 'auto') {
10258      dragSize = trackSize * divider;
10259    } else {
10260      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
10261    }
10262    if (swiper.isHorizontal()) {
10263      dragEl.style.width = `${dragSize}px`;
10264    } else {
10265      dragEl.style.height = `${dragSize}px`;
10266    }
10267    if (divider >= 1) {
10268      el.style.display = 'none';
10269    } else {
10270      el.style.display = '';
10271    }
10272    if (swiper.params.scrollbar.hide) {
10273      el.style.opacity = 0;
10274    }
10275    if (swiper.params.watchOverflow && swiper.enabled) {
10276      scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);
10277    }
10278  }
10279  function getPointerPosition(e) {
10280    return swiper.isHorizontal() ? e.clientX : e.clientY;
10281  }
10282  function setDragPosition(e) {
10283    const {
10284      scrollbar,
10285      rtlTranslate: rtl
10286    } = swiper;
10287    const {
10288      el
10289    } = scrollbar;
10290    let positionRatio;
10291    positionRatio = (getPointerPosition(e) - (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementOffset)(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
10292    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
10293    if (rtl) {
10294      positionRatio = 1 - positionRatio;
10295    }
10296    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
10297    swiper.updateProgress(position);
10298    swiper.setTranslate(position);
10299    swiper.updateActiveIndex();
10300    swiper.updateSlidesClasses();
10301  }
10302  function onDragStart(e) {
10303    const params = swiper.params.scrollbar;
10304    const {
10305      scrollbar,
10306      wrapperEl
10307    } = swiper;
10308    const {
10309      el,
10310      dragEl
10311    } = scrollbar;
10312    isTouched = true;
10313    dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
10314    e.preventDefault();
10315    e.stopPropagation();
10316    wrapperEl.style.transitionDuration = '100ms';
10317    dragEl.style.transitionDuration = '100ms';
10318    setDragPosition(e);
10319    clearTimeout(dragTimeout);
10320    el.style.transitionDuration = '0ms';
10321    if (params.hide) {
10322      el.style.opacity = 1;
10323    }
10324    if (swiper.params.cssMode) {
10325      swiper.wrapperEl.style['scroll-snap-type'] = 'none';
10326    }
10327    emit('scrollbarDragStart', e);
10328  }
10329  function onDragMove(e) {
10330    const {
10331      scrollbar,
10332      wrapperEl
10333    } = swiper;
10334    const {
10335      el,
10336      dragEl
10337    } = scrollbar;
10338    if (!isTouched) return;
10339    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
10340    setDragPosition(e);
10341    wrapperEl.style.transitionDuration = '0ms';
10342    el.style.transitionDuration = '0ms';
10343    dragEl.style.transitionDuration = '0ms';
10344    emit('scrollbarDragMove', e);
10345  }
10346  function onDragEnd(e) {
10347    const params = swiper.params.scrollbar;
10348    const {
10349      scrollbar,
10350      wrapperEl
10351    } = swiper;
10352    const {
10353      el
10354    } = scrollbar;
10355    if (!isTouched) return;
10356    isTouched = false;
10357    if (swiper.params.cssMode) {
10358      swiper.wrapperEl.style['scroll-snap-type'] = '';
10359      wrapperEl.style.transitionDuration = '';
10360    }
10361    if (params.hide) {
10362      clearTimeout(dragTimeout);
10363      dragTimeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(() => {
10364        el.style.opacity = 0;
10365        el.style.transitionDuration = '400ms';
10366      }, 1000);
10367    }
10368    emit('scrollbarDragEnd', e);
10369    if (params.snapOnRelease) {
10370      swiper.slideToClosest();
10371    }
10372  }
10373  function events(method) {
10374    const {
10375      scrollbar,
10376      params
10377    } = swiper;
10378    const el = scrollbar.el;
10379    if (!el) return;
10380    const target = el;
10381    const activeListener = params.passiveListeners ? {
10382      passive: false,
10383      capture: false
10384    } : false;
10385    const passiveListener = params.passiveListeners ? {
10386      passive: true,
10387      capture: false
10388    } : false;
10389    if (!target) return;
10390    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
10391    target[eventMethod]('pointerdown', onDragStart, activeListener);
10392    document[eventMethod]('pointermove', onDragMove, activeListener);
10393    document[eventMethod]('pointerup', onDragEnd, passiveListener);
10394  }
10395  function enableDraggable() {
10396    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10397    events('on');
10398  }
10399  function disableDraggable() {
10400    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10401    events('off');
10402  }
10403  function init() {
10404    const {
10405      scrollbar,
10406      el: swiperEl
10407    } = swiper;
10408    swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__["default"])(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {
10409      el: 'swiper-scrollbar'
10410    });
10411    const params = swiper.params.scrollbar;
10412    if (!params.el) return;
10413    let el;
10414    if (typeof params.el === 'string' && swiper.isElement) {
10415      el = swiper.el.shadowRoot.querySelector(params.el);
10416    }
10417    if (!el && typeof params.el === 'string') {
10418      el = document.querySelectorAll(params.el);
10419    } else if (!el) {
10420      el = params.el;
10421    }
10422    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {
10423      el = swiperEl.querySelector(params.el);
10424    }
10425    if (el.length > 0) el = el[0];
10426    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
10427    let dragEl;
10428    if (el) {
10429      dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);
10430      if (!dragEl) {
10431        dragEl = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.createElement)('div', swiper.params.scrollbar.dragClass);
10432        el.append(dragEl);
10433      }
10434    }
10435    Object.assign(scrollbar, {
10436      el,
10437      dragEl
10438    });
10439    if (params.draggable) {
10440      enableDraggable();
10441    }
10442    if (el) {
10443      el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);
10444    }
10445  }
10446  function destroy() {
10447    const params = swiper.params.scrollbar;
10448    const el = swiper.scrollbar.el;
10449    if (el) {
10450      el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
10451    }
10452    disableDraggable();
10453  }
10454  on('init', () => {
10455    if (swiper.params.scrollbar.enabled === false) {
10456      // eslint-disable-next-line
10457      disable();
10458    } else {
10459      init();
10460      updateSize();
10461      setTranslate();
10462    }
10463  });
10464  on('update resize observerUpdate lock unlock', () => {
10465    updateSize();
10466  });
10467  on('setTranslate', () => {
10468    setTranslate();
10469  });
10470  on('setTransition', (_s, duration) => {
10471    setTransition(duration);
10472  });
10473  on('enable disable', () => {
10474    const {
10475      el
10476    } = swiper.scrollbar;
10477    if (el) {
10478      el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);
10479    }
10480  });
10481  on('destroy', () => {
10482    destroy();
10483  });
10484  const enable = () => {
10485    swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);
10486    if (swiper.scrollbar.el) {
10487      swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);
10488    }
10489    init();
10490    updateSize();
10491    setTranslate();
10492  };
10493  const disable = () => {
10494    swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);
10495    if (swiper.scrollbar.el) {
10496      swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);
10497    }
10498    destroy();
10499  };
10500  Object.assign(swiper.scrollbar, {
10501    enable,
10502    disable,
10503    updateSize,
10504    setTranslate,
10505    init,
10506    destroy
10507  });
10508}
10509
10510/***/ }),
10511
vendor: 8,075 bytes, lines 10512-10716
10512/***/ "./node_modules/swiper/modules/thumbs/thumbs.js":
10513/*!******************************************************!*\
10514  !*** ./node_modules/swiper/modules/thumbs/thumbs.js ***!
10515  \******************************************************/
10516/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10517
10518__webpack_require__.r(__webpack_exports__);
10519/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10520/* harmony export */   "default": function() { return /* binding */ Thumb; }
10521/* harmony export */ });
10522/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
10523/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
10524
10525
10526function Thumb({
10527  swiper,
10528  extendParams,
10529  on
10530}) {
10531  extendParams({
10532    thumbs: {
10533      swiper: null,
10534      multipleActiveThumbs: true,
10535      autoScrollOffset: 0,
10536      slideThumbActiveClass: 'swiper-slide-thumb-active',
10537      thumbsContainerClass: 'swiper-thumbs'
10538    }
10539  });
10540  let initialized = false;
10541  let swiperCreated = false;
10542  swiper.thumbs = {
10543    swiper: null
10544  };
10545  function onThumbClick() {
10546    const thumbsSwiper = swiper.thumbs.swiper;
10547    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
10548    const clickedIndex = thumbsSwiper.clickedIndex;
10549    const clickedSlide = thumbsSwiper.clickedSlide;
10550    if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;
10551    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
10552    let slideToIndex;
10553    if (thumbsSwiper.params.loop) {
10554      slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
10555    } else {
10556      slideToIndex = clickedIndex;
10557    }
10558    if (swiper.params.loop) {
10559      swiper.slideToLoop(slideToIndex);
10560    } else {
10561      swiper.slideTo(slideToIndex);
10562    }
10563  }
10564  function init() {
10565    const {
10566      thumbs: thumbsParams
10567    } = swiper.params;
10568    if (initialized) return false;
10569    initialized = true;
10570    const SwiperClass = swiper.constructor;
10571    if (thumbsParams.swiper instanceof SwiperClass) {
10572      swiper.thumbs.swiper = thumbsParams.swiper;
10573      Object.assign(swiper.thumbs.swiper.originalParams, {
10574        watchSlidesProgress: true,
10575        slideToClickedSlide: false
10576      });
10577      Object.assign(swiper.thumbs.swiper.params, {
10578        watchSlidesProgress: true,
10579        slideToClickedSlide: false
10580      });
10581      swiper.thumbs.swiper.update();
10582    } else if ((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.isObject)(thumbsParams.swiper)) {
10583      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);
10584      Object.assign(thumbsSwiperParams, {
10585        watchSlidesProgress: true,
10586        slideToClickedSlide: false
10587      });
10588      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);
10589      swiperCreated = true;
10590    }
10591    swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);
10592    swiper.thumbs.swiper.on('tap', onThumbClick);
10593    return true;
10594  }
10595  function update(initial) {
10596    const thumbsSwiper = swiper.thumbs.swiper;
10597    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
10598    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
10599
10600    // Activate thumbs
10601    let thumbsToActivate = 1;
10602    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
10603    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
10604      thumbsToActivate = swiper.params.slidesPerView;
10605    }
10606    if (!swiper.params.thumbs.multipleActiveThumbs) {
10607      thumbsToActivate = 1;
10608    }
10609    thumbsToActivate = Math.floor(thumbsToActivate);
10610    thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));
10611    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
10612      for (let i = 0; i < thumbsToActivate; i += 1) {
10613        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementChildren)(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => {
10614          slideEl.classList.add(thumbActiveClass);
10615        });
10616      }
10617    } else {
10618      for (let i = 0; i < thumbsToActivate; i += 1) {
10619        if (thumbsSwiper.slides[swiper.realIndex + i]) {
10620          thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);
10621        }
10622      }
10623    }
10624    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
10625    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
10626    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
10627      const currentThumbsIndex = thumbsSwiper.activeIndex;
10628      let newThumbsIndex;
10629      let direction;
10630      if (thumbsSwiper.params.loop) {
10631        const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];
10632        newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);
10633        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
10634      } else {
10635        newThumbsIndex = swiper.realIndex;
10636        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
10637      }
10638      if (useOffset) {
10639        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
10640      }
10641      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
10642        if (thumbsSwiper.params.centeredSlides) {
10643          if (newThumbsIndex > currentThumbsIndex) {
10644            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
10645          } else {
10646            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
10647          }
10648        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {
10649          // newThumbsIndex = newThumbsIndex - slidesPerView + 1;
10650        }
10651        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
10652      }
10653    }
10654  }
10655  on('beforeInit', () => {
10656    const {
10657      thumbs
10658    } = swiper.params;
10659    if (!thumbs || !thumbs.swiper) return;
10660    if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {
10661      const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
10662      const getThumbsElementAndInit = () => {
10663        const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;
10664        if (thumbsElement && thumbsElement.swiper) {
10665          thumbs.swiper = thumbsElement.swiper;
10666          init();
10667          update(true);
10668        } else if (thumbsElement) {
10669          const onThumbsSwiper = e => {
10670            thumbs.swiper = e.detail[0];
10671            thumbsElement.removeEventListener('init', onThumbsSwiper);
10672            init();
10673            update(true);
10674            thumbs.swiper.update();
10675            swiper.update();
10676          };
10677          thumbsElement.addEventListener('init', onThumbsSwiper);
10678        }
10679        return thumbsElement;
10680      };
10681      const watchForThumbsToAppear = () => {
10682        if (swiper.destroyed) return;
10683        const thumbsElement = getThumbsElementAndInit();
10684        if (!thumbsElement) {
10685          requestAnimationFrame(watchForThumbsToAppear);
10686        }
10687      };
10688      requestAnimationFrame(watchForThumbsToAppear);
10689    } else {
10690      init();
10691      update(true);
10692    }
10693  });
10694  on('slideChange update resize observerUpdate', () => {
10695    update();
10696  });
10697  on('setTransition', (_s, duration) => {
10698    const thumbsSwiper = swiper.thumbs.swiper;
10699    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
10700    thumbsSwiper.setTransition(duration);
10701  });
10702  on('beforeDestroy', () => {
10703    const thumbsSwiper = swiper.thumbs.swiper;
10704    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
10705    if (swiperCreated) {
10706      thumbsSwiper.destroy();
10707    }
10708  });
10709  Object.assign(swiper.thumbs, {
10710    init,
10711    update
10712  });
10713}
10714
10715/***/ }),
10716
vendor: 11,576 bytes, lines 10717-11056
10717/***/ "./node_modules/swiper/modules/virtual/virtual.js":
10718/*!********************************************************!*\
10719  !*** ./node_modules/swiper/modules/virtual/virtual.js ***!
10720  \********************************************************/
10721/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
10722
10723__webpack_require__.r(__webpack_exports__);
10724/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10725/* harmony export */   "default": function() { return /* binding */ Virtual; }
10726/* harmony export */ });
10727/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
10728/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
10729
10730
10731function Virtual({
10732  swiper,
10733  extendParams,
10734  on,
10735  emit
10736}) {
10737  extendParams({
10738    virtual: {
10739      enabled: false,
10740      slides: [],
10741      cache: true,
10742      renderSlide: null,
10743      renderExternal: null,
10744      renderExternalUpdate: true,
10745      addSlidesBefore: 0,
10746      addSlidesAfter: 0
10747    }
10748  });
10749  let cssModeTimeout;
10750  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
10751  swiper.virtual = {
10752    cache: {},
10753    from: undefined,
10754    to: undefined,
10755    slides: [],
10756    offset: 0,
10757    slidesGrid: []
10758  };
10759  const tempDOM = document.createElement('div');
10760  function renderSlide(slide, index) {
10761    const params = swiper.params.virtual;
10762    if (params.cache && swiper.virtual.cache[index]) {
10763      return swiper.virtual.cache[index];
10764    }
10765    // eslint-disable-next-line
10766    let slideEl;
10767    if (params.renderSlide) {
10768      slideEl = params.renderSlide.call(swiper, slide, index);
10769      if (typeof slideEl === 'string') {
10770        tempDOM.innerHTML = slideEl;
10771        slideEl = tempDOM.children[0];
10772      }
10773    } else if (swiper.isElement) {
10774      slideEl = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.createElement)('swiper-slide');
10775    } else {
10776      slideEl = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.createElement)('div', swiper.params.slideClass);
10777    }
10778    slideEl.setAttribute('data-swiper-slide-index', index);
10779    if (!params.renderSlide) {
10780      slideEl.innerHTML = slide;
10781    }
10782    if (params.cache) swiper.virtual.cache[index] = slideEl;
10783    return slideEl;
10784  }
10785  function update(force) {
10786    const {
10787      slidesPerView,
10788      slidesPerGroup,
10789      centeredSlides,
10790      loop: isLoop
10791    } = swiper.params;
10792    const {
10793      addSlidesBefore,
10794      addSlidesAfter
10795    } = swiper.params.virtual;
10796    const {
10797      from: previousFrom,
10798      to: previousTo,
10799      slides,
10800      slidesGrid: previousSlidesGrid,
10801      offset: previousOffset
10802    } = swiper.virtual;
10803    if (!swiper.params.cssMode) {
10804      swiper.updateActiveIndex();
10805    }
10806    const activeIndex = swiper.activeIndex || 0;
10807    let offsetProp;
10808    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
10809    let slidesAfter;
10810    let slidesBefore;
10811    if (centeredSlides) {
10812      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
10813      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
10814    } else {
10815      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
10816      slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;
10817    }
10818    let from = activeIndex - slidesBefore;
10819    let to = activeIndex + slidesAfter;
10820    if (!isLoop) {
10821      from = Math.max(from, 0);
10822      to = Math.min(to, slides.length - 1);
10823    }
10824    let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
10825    if (isLoop && activeIndex >= slidesBefore) {
10826      from -= slidesBefore;
10827      if (!centeredSlides) offset += swiper.slidesGrid[0];
10828    } else if (isLoop && activeIndex < slidesBefore) {
10829      from = -slidesBefore;
10830      if (centeredSlides) offset += swiper.slidesGrid[0];
10831    }
10832    Object.assign(swiper.virtual, {
10833      from,
10834      to,
10835      offset,
10836      slidesGrid: swiper.slidesGrid,
10837      slidesBefore,
10838      slidesAfter
10839    });
10840    function onRendered() {
10841      swiper.updateSlides();
10842      swiper.updateProgress();
10843      swiper.updateSlidesClasses();
10844      emit('virtualUpdate');
10845    }
10846    if (previousFrom === from && previousTo === to && !force) {
10847      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
10848        swiper.slides.forEach(slideEl => {
10849          slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
10850        });
10851      }
10852      swiper.updateProgress();
10853      emit('virtualUpdate');
10854      return;
10855    }
10856    if (swiper.params.virtual.renderExternal) {
10857      swiper.params.virtual.renderExternal.call(swiper, {
10858        offset,
10859        from,
10860        to,
10861        slides: function getSlides() {
10862          const slidesToRender = [];
10863          for (let i = from; i <= to; i += 1) {
10864            slidesToRender.push(slides[i]);
10865          }
10866          return slidesToRender;
10867        }()
10868      });
10869      if (swiper.params.virtual.renderExternalUpdate) {
10870        onRendered();
10871      } else {
10872        emit('virtualUpdate');
10873      }
10874      return;
10875    }
10876    const prependIndexes = [];
10877    const appendIndexes = [];
10878    const getSlideIndex = index => {
10879      let slideIndex = index;
10880      if (index < 0) {
10881        slideIndex = slides.length + index;
10882      } else if (slideIndex >= slides.length) {
10883        // eslint-disable-next-line
10884        slideIndex = slideIndex - slides.length;
10885      }
10886      return slideIndex;
10887    };
10888    if (force) {
10889      swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}, swiper-slide`).forEach(slideEl => {
10890        slideEl.remove();
10891      });
10892    } else {
10893      for (let i = previousFrom; i <= previousTo; i += 1) {
10894        if (i < from || i > to) {
10895          const slideIndex = getSlideIndex(i);
10896          swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`).forEach(slideEl => {
10897            slideEl.remove();
10898          });
10899        }
10900      }
10901    }
10902    const loopFrom = isLoop ? -slides.length : 0;
10903    const loopTo = isLoop ? slides.length * 2 : slides.length;
10904    for (let i = loopFrom; i < loopTo; i += 1) {
10905      if (i >= from && i <= to) {
10906        const slideIndex = getSlideIndex(i);
10907        if (typeof previousTo === 'undefined' || force) {
10908          appendIndexes.push(slideIndex);
10909        } else {
10910          if (i > previousTo) appendIndexes.push(slideIndex);
10911          if (i < previousFrom) prependIndexes.push(slideIndex);
10912        }
10913      }
10914    }
10915    appendIndexes.forEach(index => {
10916      swiper.slidesEl.append(renderSlide(slides[index], index));
10917    });
10918    if (isLoop) {
10919      for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {
10920        const index = prependIndexes[i];
10921        swiper.slidesEl.prepend(renderSlide(slides[index], index));
10922      }
10923    } else {
10924      prependIndexes.sort((a, b) => b - a);
10925      prependIndexes.forEach(index => {
10926        swiper.slidesEl.prepend(renderSlide(slides[index], index));
10927      });
10928    }
10929    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementChildren)(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {
10930      slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
10931    });
10932    onRendered();
10933  }
10934  function appendSlide(slides) {
10935    if (typeof slides === 'object' && 'length' in slides) {
10936      for (let i = 0; i < slides.length; i += 1) {
10937        if (slides[i]) swiper.virtual.slides.push(slides[i]);
10938      }
10939    } else {
10940      swiper.virtual.slides.push(slides);
10941    }
10942    update(true);
10943  }
10944  function prependSlide(slides) {
10945    const activeIndex = swiper.activeIndex;
10946    let newActiveIndex = activeIndex + 1;
10947    let numberOfNewSlides = 1;
10948    if (Array.isArray(slides)) {
10949      for (let i = 0; i < slides.length; i += 1) {
10950        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
10951      }
10952      newActiveIndex = activeIndex + slides.length;
10953      numberOfNewSlides = slides.length;
10954    } else {
10955      swiper.virtual.slides.unshift(slides);
10956    }
10957    if (swiper.params.virtual.cache) {
10958      const cache = swiper.virtual.cache;
10959      const newCache = {};
10960      Object.keys(cache).forEach(cachedIndex => {
10961        const cachedEl = cache[cachedIndex];
10962        const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');
10963        if (cachedElIndex) {
10964          cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);
10965        }
10966        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;
10967      });
10968      swiper.virtual.cache = newCache;
10969    }
10970    update(true);
10971    swiper.slideTo(newActiveIndex, 0);
10972  }
10973  function removeSlide(slidesIndexes) {
10974    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
10975    let activeIndex = swiper.activeIndex;
10976    if (Array.isArray(slidesIndexes)) {
10977      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
10978        swiper.virtual.slides.splice(slidesIndexes[i], 1);
10979        if (swiper.params.virtual.cache) {
10980          delete swiper.virtual.cache[slidesIndexes[i]];
10981        }
10982        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
10983        activeIndex = Math.max(activeIndex, 0);
10984      }
10985    } else {
10986      swiper.virtual.slides.splice(slidesIndexes, 1);
10987      if (swiper.params.virtual.cache) {
10988        delete swiper.virtual.cache[slidesIndexes];
10989      }
10990      if (slidesIndexes < activeIndex) activeIndex -= 1;
10991      activeIndex = Math.max(activeIndex, 0);
10992    }
10993    update(true);
10994    swiper.slideTo(activeIndex, 0);
10995  }
10996  function removeAllSlides() {
10997    swiper.virtual.slides = [];
10998    if (swiper.params.virtual.cache) {
10999      swiper.virtual.cache = {};
11000    }
11001    update(true);
11002    swiper.slideTo(0, 0);
11003  }
11004  on('beforeInit', () => {
11005    if (!swiper.params.virtual.enabled) return;
11006    let domSlidesAssigned;
11007    if (typeof swiper.passedParams.virtual.slides === 'undefined') {
11008      const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));
11009      if (slides && slides.length) {
11010        swiper.virtual.slides = [...slides];
11011        domSlidesAssigned = true;
11012        slides.forEach((slideEl, slideIndex) => {
11013          slideEl.setAttribute('data-swiper-slide-index', slideIndex);
11014          swiper.virtual.cache[slideIndex] = slideEl;
11015          slideEl.remove();
11016        });
11017      }
11018    }
11019    if (!domSlidesAssigned) {
11020      swiper.virtual.slides = swiper.params.virtual.slides;
11021    }
11022    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
11023    swiper.params.watchSlidesProgress = true;
11024    swiper.originalParams.watchSlidesProgress = true;
11025    if (!swiper.params.initialSlide) {
11026      update();
11027    }
11028  });
11029  on('setTranslate', () => {
11030    if (!swiper.params.virtual.enabled) return;
11031    if (swiper.params.cssMode && !swiper._immediateVirtual) {
11032      clearTimeout(cssModeTimeout);
11033      cssModeTimeout = setTimeout(() => {
11034        update();
11035      }, 100);
11036    } else {
11037      update();
11038    }
11039  });
11040  on('init update resize', () => {
11041    if (!swiper.params.virtual.enabled) return;
11042    if (swiper.params.cssMode) {
11043      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.setCSSProperty)(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);
11044    }
11045  });
11046  Object.assign(swiper.virtual, {
11047    appendSlide,
11048    prependSlide,
11049    removeSlide,
11050    removeAllSlides,
11051    update
11052  });
11053}
11054
11055/***/ }),
11056
vendor: 22,571 bytes, lines 11057-11658
11057/***/ "./node_modules/swiper/modules/zoom/zoom.js":
11058/*!**************************************************!*\
11059  !*** ./node_modules/swiper/modules/zoom/zoom.js ***!
11060  \**************************************************/
11061/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11062
11063__webpack_require__.r(__webpack_exports__);
11064/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11065/* harmony export */   "default": function() { return /* binding */ Zoom; }
11066/* harmony export */ });
11067/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
11068/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
11069
11070
11071function Zoom({
11072  swiper,
11073  extendParams,
11074  on,
11075  emit
11076}) {
11077  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
11078  extendParams({
11079    zoom: {
11080      enabled: false,
11081      maxRatio: 3,
11082      minRatio: 1,
11083      toggle: true,
11084      containerClass: 'swiper-zoom-container',
11085      zoomedSlideClass: 'swiper-slide-zoomed'
11086    }
11087  });
11088  swiper.zoom = {
11089    enabled: false
11090  };
11091  let currentScale = 1;
11092  let isScaling = false;
11093  let fakeGestureTouched;
11094  let fakeGestureMoved;
11095  const evCache = [];
11096  const gesture = {
11097    originX: 0,
11098    originY: 0,
11099    slideEl: undefined,
11100    slideWidth: undefined,
11101    slideHeight: undefined,
11102    imageEl: undefined,
11103    imageWrapEl: undefined,
11104    maxRatio: 3
11105  };
11106  const image = {
11107    isTouched: undefined,
11108    isMoved: undefined,
11109    currentX: undefined,
11110    currentY: undefined,
11111    minX: undefined,
11112    minY: undefined,
11113    maxX: undefined,
11114    maxY: undefined,
11115    width: undefined,
11116    height: undefined,
11117    startX: undefined,
11118    startY: undefined,
11119    touchesStart: {},
11120    touchesCurrent: {}
11121  };
11122  const velocity = {
11123    x: undefined,
11124    y: undefined,
11125    prevPositionX: undefined,
11126    prevPositionY: undefined,
11127    prevTime: undefined
11128  };
11129  let scale = 1;
11130  Object.defineProperty(swiper.zoom, 'scale', {
11131    get() {
11132      return scale;
11133    },
11134    set(value) {
11135      if (scale !== value) {
11136        const imageEl = gesture.imageEl;
11137        const slideEl = gesture.slideEl;
11138        emit('zoomChange', value, imageEl, slideEl);
11139      }
11140      scale = value;
11141    }
11142  });
11143  function getDistanceBetweenTouches() {
11144    if (evCache.length < 2) return 1;
11145    const x1 = evCache[0].pageX;
11146    const y1 = evCache[0].pageY;
11147    const x2 = evCache[1].pageX;
11148    const y2 = evCache[1].pageY;
11149    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
11150    return distance;
11151  }
11152  function getScaleOrigin() {
11153    if (evCache.length < 2) return {
11154      x: null,
11155      y: null
11156    };
11157    const box = gesture.imageEl.getBoundingClientRect();
11158    return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y) / currentScale];
11159  }
11160  function getSlideSelector() {
11161    return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
11162  }
11163  function eventWithinSlide(e) {
11164    const slideSelector = getSlideSelector();
11165    if (e.target.matches(slideSelector)) return true;
11166    if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;
11167    return false;
11168  }
11169  function eventWithinZoomContainer(e) {
11170    const selector = `.${swiper.params.zoom.containerClass}`;
11171    if (e.target.matches(selector)) return true;
11172    if ([...swiper.el.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;
11173    return false;
11174  }
11175
11176  // Events
11177  function onGestureStart(e) {
11178    if (e.pointerType === 'mouse') {
11179      evCache.splice(0, evCache.length);
11180    }
11181    if (!eventWithinSlide(e)) return;
11182    const params = swiper.params.zoom;
11183    fakeGestureTouched = false;
11184    fakeGestureMoved = false;
11185    evCache.push(e);
11186    if (evCache.length < 2) {
11187      return;
11188    }
11189    fakeGestureTouched = true;
11190    gesture.scaleStart = getDistanceBetweenTouches();
11191    if (!gesture.slideEl) {
11192      gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
11193      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];
11194      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
11195      if (imageEl) {
11196        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
11197      }
11198      gesture.imageEl = imageEl;
11199      if (imageEl) {
11200        gesture.imageWrapEl = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementParents)(gesture.imageEl, `.${params.containerClass}`)[0];
11201      } else {
11202        gesture.imageWrapEl = undefined;
11203      }
11204      if (!gesture.imageWrapEl) {
11205        gesture.imageEl = undefined;
11206        return;
11207      }
11208      gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;
11209    }
11210    if (gesture.imageEl) {
11211      const [originX, originY] = getScaleOrigin();
11212      gesture.originX = originX;
11213      gesture.originY = originY;
11214      gesture.imageEl.style.transitionDuration = '0ms';
11215    }
11216    isScaling = true;
11217  }
11218  function onGestureChange(e) {
11219    if (!eventWithinSlide(e)) return;
11220    const params = swiper.params.zoom;
11221    const zoom = swiper.zoom;
11222    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
11223    if (pointerIndex >= 0) evCache[pointerIndex] = e;
11224    if (evCache.length < 2) {
11225      return;
11226    }
11227    fakeGestureMoved = true;
11228    gesture.scaleMove = getDistanceBetweenTouches();
11229    if (!gesture.imageEl) {
11230      return;
11231    }
11232    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;
11233    if (zoom.scale > gesture.maxRatio) {
11234      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
11235    }
11236    if (zoom.scale < params.minRatio) {
11237      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
11238    }
11239    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
11240  }
11241  function onGestureEnd(e) {
11242    if (!eventWithinSlide(e)) return;
11243    if (e.pointerType === 'mouse' && e.type === 'pointerout') return;
11244    const params = swiper.params.zoom;
11245    const zoom = swiper.zoom;
11246    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
11247    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);
11248    if (!fakeGestureTouched || !fakeGestureMoved) {
11249      return;
11250    }
11251    fakeGestureTouched = false;
11252    fakeGestureMoved = false;
11253    if (!gesture.imageEl) return;
11254    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
11255    gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;
11256    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
11257    currentScale = zoom.scale;
11258    isScaling = false;
11259    if (zoom.scale > 1 && gesture.slideEl) {
11260      gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
11261    } else if (zoom.scale <= 1 && gesture.slideEl) {
11262      gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
11263    }
11264    if (zoom.scale === 1) {
11265      gesture.originX = 0;
11266      gesture.originY = 0;
11267      gesture.slideEl = undefined;
11268    }
11269  }
11270  function onTouchStart(e) {
11271    const device = swiper.device;
11272    if (!gesture.imageEl) return;
11273    if (image.isTouched) return;
11274    if (device.android && e.cancelable) e.preventDefault();
11275    image.isTouched = true;
11276    const event = evCache.length > 0 ? evCache[0] : e;
11277    image.touchesStart.x = event.pageX;
11278    image.touchesStart.y = event.pageY;
11279  }
11280  function onTouchMove(e) {
11281    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;
11282    const zoom = swiper.zoom;
11283    if (!gesture.imageEl) return;
11284    if (!image.isTouched || !gesture.slideEl) return;
11285    if (!image.isMoved) {
11286      image.width = gesture.imageEl.offsetWidth;
11287      image.height = gesture.imageEl.offsetHeight;
11288      image.startX = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.getTranslate)(gesture.imageWrapEl, 'x') || 0;
11289      image.startY = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.getTranslate)(gesture.imageWrapEl, 'y') || 0;
11290      gesture.slideWidth = gesture.slideEl.offsetWidth;
11291      gesture.slideHeight = gesture.slideEl.offsetHeight;
11292      gesture.imageWrapEl.style.transitionDuration = '0ms';
11293    }
11294    // Define if we need image drag
11295    const scaledWidth = image.width * zoom.scale;
11296    const scaledHeight = image.height * zoom.scale;
11297    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
11298    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
11299    image.maxX = -image.minX;
11300    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
11301    image.maxY = -image.minY;
11302    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;
11303    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;
11304    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));
11305    if (touchesDiff > 5) {
11306      swiper.allowClick = false;
11307    }
11308    if (!image.isMoved && !isScaling) {
11309      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)) {
11310        image.isTouched = false;
11311        return;
11312      }
11313      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)) {
11314        image.isTouched = false;
11315        return;
11316      }
11317    }
11318    if (e.cancelable) {
11319      e.preventDefault();
11320    }
11321    e.stopPropagation();
11322    image.isMoved = true;
11323    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);
11324    const {
11325      originX,
11326      originY
11327    } = gesture;
11328    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);
11329    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);
11330    if (image.currentX < image.minX) {
11331      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
11332    }
11333    if (image.currentX > image.maxX) {
11334      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
11335    }
11336    if (image.currentY < image.minY) {
11337      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
11338    }
11339    if (image.currentY > image.maxY) {
11340      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
11341    }
11342
11343    // Velocity
11344    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
11345    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
11346    if (!velocity.prevTime) velocity.prevTime = Date.now();
11347    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
11348    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
11349    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
11350    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
11351    velocity.prevPositionX = image.touchesCurrent.x;
11352    velocity.prevPositionY = image.touchesCurrent.y;
11353    velocity.prevTime = Date.now();
11354    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
11355  }
11356  function onTouchEnd() {
11357    const zoom = swiper.zoom;
11358    if (!gesture.imageEl) return;
11359    if (!image.isTouched || !image.isMoved) {
11360      image.isTouched = false;
11361      image.isMoved = false;
11362      return;
11363    }
11364    image.isTouched = false;
11365    image.isMoved = false;
11366    let momentumDurationX = 300;
11367    let momentumDurationY = 300;
11368    const momentumDistanceX = velocity.x * momentumDurationX;
11369    const newPositionX = image.currentX + momentumDistanceX;
11370    const momentumDistanceY = velocity.y * momentumDurationY;
11371    const newPositionY = image.currentY + momentumDistanceY;
11372
11373    // Fix duration
11374    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
11375    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
11376    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
11377    image.currentX = newPositionX;
11378    image.currentY = newPositionY;
11379    // Define if we need image drag
11380    const scaledWidth = image.width * zoom.scale;
11381    const scaledHeight = image.height * zoom.scale;
11382    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
11383    image.maxX = -image.minX;
11384    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
11385    image.maxY = -image.minY;
11386    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
11387    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
11388    gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;
11389    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
11390  }
11391  function onTransitionEnd() {
11392    const zoom = swiper.zoom;
11393    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {
11394      if (gesture.imageEl) {
11395        gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';
11396      }
11397      if (gesture.imageWrapEl) {
11398        gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';
11399      }
11400      gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);
11401      zoom.scale = 1;
11402      currentScale = 1;
11403      gesture.slideEl = undefined;
11404      gesture.imageEl = undefined;
11405      gesture.imageWrapEl = undefined;
11406      gesture.originX = 0;
11407      gesture.originY = 0;
11408    }
11409  }
11410  function zoomIn(e) {
11411    const zoom = swiper.zoom;
11412    const params = swiper.params.zoom;
11413    if (!gesture.slideEl) {
11414      if (e && e.target) {
11415        gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
11416      }
11417      if (!gesture.slideEl) {
11418        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
11419          gesture.slideEl = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementChildren)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
11420        } else {
11421          gesture.slideEl = swiper.slides[swiper.activeIndex];
11422        }
11423      }
11424      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
11425      if (imageEl) {
11426        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
11427      }
11428      gesture.imageEl = imageEl;
11429      if (imageEl) {
11430        gesture.imageWrapEl = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementParents)(gesture.imageEl, `.${params.containerClass}`)[0];
11431      } else {
11432        gesture.imageWrapEl = undefined;
11433      }
11434    }
11435    if (!gesture.imageEl || !gesture.imageWrapEl) return;
11436    if (swiper.params.cssMode) {
11437      swiper.wrapperEl.style.overflow = 'hidden';
11438      swiper.wrapperEl.style.touchAction = 'none';
11439    }
11440    gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
11441    let touchX;
11442    let touchY;
11443    let offsetX;
11444    let offsetY;
11445    let diffX;
11446    let diffY;
11447    let translateX;
11448    let translateY;
11449    let imageWidth;
11450    let imageHeight;
11451    let scaledWidth;
11452    let scaledHeight;
11453    let translateMinX;
11454    let translateMinY;
11455    let translateMaxX;
11456    let translateMaxY;
11457    let slideWidth;
11458    let slideHeight;
11459    if (typeof image.touchesStart.x === 'undefined' && e) {
11460      touchX = e.pageX;
11461      touchY = e.pageY;
11462    } else {
11463      touchX = image.touchesStart.x;
11464      touchY = image.touchesStart.y;
11465    }
11466    const forceZoomRatio = typeof e === 'number' ? e : null;
11467    if (currentScale === 1 && forceZoomRatio) {
11468      touchX = undefined;
11469      touchY = undefined;
11470    }
11471    zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;
11472    currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;
11473    if (e && !(currentScale === 1 && forceZoomRatio)) {
11474      slideWidth = gesture.slideEl.offsetWidth;
11475      slideHeight = gesture.slideEl.offsetHeight;
11476      offsetX = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementOffset)(gesture.slideEl).left + window.scrollX;
11477      offsetY = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementOffset)(gesture.slideEl).top + window.scrollY;
11478      diffX = offsetX + slideWidth / 2 - touchX;
11479      diffY = offsetY + slideHeight / 2 - touchY;
11480      imageWidth = gesture.imageEl.offsetWidth;
11481      imageHeight = gesture.imageEl.offsetHeight;
11482      scaledWidth = imageWidth * zoom.scale;
11483      scaledHeight = imageHeight * zoom.scale;
11484      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
11485      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
11486      translateMaxX = -translateMinX;
11487      translateMaxY = -translateMinY;
11488      translateX = diffX * zoom.scale;
11489      translateY = diffY * zoom.scale;
11490      if (translateX < translateMinX) {
11491        translateX = translateMinX;
11492      }
11493      if (translateX > translateMaxX) {
11494        translateX = translateMaxX;
11495      }
11496      if (translateY < translateMinY) {
11497        translateY = translateMinY;
11498      }
11499      if (translateY > translateMaxY) {
11500        translateY = translateMaxY;
11501      }
11502    } else {
11503      translateX = 0;
11504      translateY = 0;
11505    }
11506    if (forceZoomRatio && zoom.scale === 1) {
11507      gesture.originX = 0;
11508      gesture.originY = 0;
11509    }
11510    gesture.imageWrapEl.style.transitionDuration = '300ms';
11511    gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;
11512    gesture.imageEl.style.transitionDuration = '300ms';
11513    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
11514  }
11515  function zoomOut() {
11516    const zoom = swiper.zoom;
11517    const params = swiper.params.zoom;
11518    if (!gesture.slideEl) {
11519      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
11520        gesture.slideEl = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementChildren)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
11521      } else {
11522        gesture.slideEl = swiper.slides[swiper.activeIndex];
11523      }
11524      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
11525      if (imageEl) {
11526        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
11527      }
11528      gesture.imageEl = imageEl;
11529      if (imageEl) {
11530        gesture.imageWrapEl = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.elementParents)(gesture.imageEl, `.${params.containerClass}`)[0];
11531      } else {
11532        gesture.imageWrapEl = undefined;
11533      }
11534    }
11535    if (!gesture.imageEl || !gesture.imageWrapEl) return;
11536    if (swiper.params.cssMode) {
11537      swiper.wrapperEl.style.overflow = '';
11538      swiper.wrapperEl.style.touchAction = '';
11539    }
11540    zoom.scale = 1;
11541    currentScale = 1;
11542    gesture.imageWrapEl.style.transitionDuration = '300ms';
11543    gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';
11544    gesture.imageEl.style.transitionDuration = '300ms';
11545    gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';
11546    gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
11547    gesture.slideEl = undefined;
11548    gesture.originX = 0;
11549    gesture.originY = 0;
11550  }
11551
11552  // Toggle Zoom
11553  function zoomToggle(e) {
11554    const zoom = swiper.zoom;
11555    if (zoom.scale && zoom.scale !== 1) {
11556      // Zoom Out
11557      zoomOut();
11558    } else {
11559      // Zoom In
11560      zoomIn(e);
11561    }
11562  }
11563  function getListeners() {
11564    const passiveListener = swiper.params.passiveListeners ? {
11565      passive: true,
11566      capture: false
11567    } : false;
11568    const activeListenerWithCapture = swiper.params.passiveListeners ? {
11569      passive: false,
11570      capture: true
11571    } : true;
11572    return {
11573      passiveListener,
11574      activeListenerWithCapture
11575    };
11576  }
11577
11578  // Attach/Detach Events
11579  function enable() {
11580    const zoom = swiper.zoom;
11581    if (zoom.enabled) return;
11582    zoom.enabled = true;
11583    const {
11584      passiveListener,
11585      activeListenerWithCapture
11586    } = getListeners();
11587
11588    // Scale image
11589    swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);
11590    swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);
11591    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {
11592      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);
11593    });
11594
11595    // Move image
11596    swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);
11597  }
11598  function disable() {
11599    const zoom = swiper.zoom;
11600    if (!zoom.enabled) return;
11601    zoom.enabled = false;
11602    const {
11603      passiveListener,
11604      activeListenerWithCapture
11605    } = getListeners();
11606
11607    // Scale image
11608    swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);
11609    swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);
11610    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {
11611      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);
11612    });
11613
11614    // Move image
11615    swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);
11616  }
11617  on('init', () => {
11618    if (swiper.params.zoom.enabled) {
11619      enable();
11620    }
11621  });
11622  on('destroy', () => {
11623    disable();
11624  });
11625  on('touchStart', (_s, e) => {
11626    if (!swiper.zoom.enabled) return;
11627    onTouchStart(e);
11628  });
11629  on('touchEnd', (_s, e) => {
11630    if (!swiper.zoom.enabled) return;
11631    onTouchEnd(e);
11632  });
11633  on('doubleTap', (_s, e) => {
11634    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
11635      zoomToggle(e);
11636    }
11637  });
11638  on('transitionEnd', () => {
11639    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
11640      onTransitionEnd();
11641    }
11642  });
11643  on('slideChange', () => {
11644    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
11645      onTransitionEnd();
11646    }
11647  });
11648  Object.assign(swiper.zoom, {
11649    enable,
11650    disable,
11651    in: zoomIn,
11652    out: zoomOut,
11653    toggle: zoomToggle
11654  });
11655}
11656
11657/***/ }),
11658
vendor: 742 bytes, lines 11659-11675
11659/***/ "./node_modules/swiper/shared/classes-to-selector.js":
11660/*!***********************************************************!*\
11661  !*** ./node_modules/swiper/shared/classes-to-selector.js ***!
11662  \***********************************************************/
11663/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11664
11665__webpack_require__.r(__webpack_exports__);
11666/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11667/* harmony export */   "default": function() { return /* binding */ classesToSelector; }
11668/* harmony export */ });
11669function classesToSelector(classes = '') {
11670  return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line
11671  .replace(/ /g, '.')}`;
11672}
11673
11674/***/ }),
11675
vendor: 1,446 bytes, lines 11676-11707
11676/***/ "./node_modules/swiper/shared/create-element-if-not-defined.js":
11677/*!*********************************************************************!*\
11678  !*** ./node_modules/swiper/shared/create-element-if-not-defined.js ***!
11679  \*********************************************************************/
11680/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11681
11682__webpack_require__.r(__webpack_exports__);
11683/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11684/* harmony export */   "default": function() { return /* binding */ createElementIfNotDefined; }
11685/* harmony export */ });
11686/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.js */ "./node_modules/swiper/shared/utils.js");
11687
11688function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
11689  if (swiper.params.createElements) {
11690    Object.keys(checkProps).forEach(key => {
11691      if (!params[key] && params.auto === true) {
11692        let element = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementChildren)(swiper.el, `.${checkProps[key]}`)[0];
11693        if (!element) {
11694          element = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.createElement)('div', checkProps[key]);
11695          element.className = checkProps[key];
11696          swiper.el.append(element);
11697        }
11698        params[key] = element;
11699        originalParams[key] = element;
11700      }
11701    });
11702  }
11703  return params;
11704}
11705
11706/***/ }),
11707
vendor: 1,200 bytes, lines 11708-11732
11708/***/ "./node_modules/swiper/shared/create-shadow.js":
11709/*!*****************************************************!*\
11710  !*** ./node_modules/swiper/shared/create-shadow.js ***!
11711  \*****************************************************/
11712/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11713
11714__webpack_require__.r(__webpack_exports__);
11715/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11716/* harmony export */   "default": function() { return /* binding */ createShadow; }
11717/* harmony export */ });
11718/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.js */ "./node_modules/swiper/shared/utils.js");
11719
11720function createShadow(params, slideEl, side) {
11721  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;
11722  const shadowContainer = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getSlideTransformEl)(slideEl);
11723  let shadowEl = shadowContainer.querySelector(`.${shadowClass}`);
11724  if (!shadowEl) {
11725    shadowEl = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.createElement)('div', `swiper-slide-shadow${side ? `-${side}` : ''}`);
11726    shadowContainer.append(shadowEl);
11727  }
11728  return shadowEl;
11729}
11730
11731/***/ }),
11732
vendor: 2,345 bytes, lines 11733-11801
11733/***/ "./node_modules/swiper/shared/effect-init.js":
11734/*!***************************************************!*\
11735  !*** ./node_modules/swiper/shared/effect-init.js ***!
11736  \***************************************************/
11737/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11738
11739__webpack_require__.r(__webpack_exports__);
11740/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11741/* harmony export */   "default": function() { return /* binding */ effectInit; }
11742/* harmony export */ });
11743function effectInit(params) {
11744  const {
11745    effect,
11746    swiper,
11747    on,
11748    setTranslate,
11749    setTransition,
11750    overwriteParams,
11751    perspective,
11752    recreateShadows,
11753    getEffectParams
11754  } = params;
11755  on('beforeInit', () => {
11756    if (swiper.params.effect !== effect) return;
11757    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);
11758    if (perspective && perspective()) {
11759      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
11760    }
11761    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};
11762    Object.assign(swiper.params, overwriteParamsResult);
11763    Object.assign(swiper.originalParams, overwriteParamsResult);
11764  });
11765  on('setTranslate', () => {
11766    if (swiper.params.effect !== effect) return;
11767    setTranslate();
11768  });
11769  on('setTransition', (_s, duration) => {
11770    if (swiper.params.effect !== effect) return;
11771    setTransition(duration);
11772  });
11773  on('transitionEnd', () => {
11774    if (swiper.params.effect !== effect) return;
11775    if (recreateShadows) {
11776      if (!getEffectParams || !getEffectParams().slideShadows) return;
11777      // remove shadows
11778      swiper.slides.forEach(slideEl => {
11779        slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());
11780      });
11781      // create new one
11782      recreateShadows();
11783    }
11784  });
11785  let requireUpdateOnVirtual;
11786  on('virtualUpdate', () => {
11787    if (swiper.params.effect !== effect) return;
11788    if (!swiper.slides.length) {
11789      requireUpdateOnVirtual = true;
11790    }
11791    requestAnimationFrame(() => {
11792      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
11793        setTranslate();
11794        requireUpdateOnVirtual = false;
11795      }
11796    });
11797  });
11798}
11799
11800/***/ }),
11801
vendor: 1,028 bytes, lines 11802-11824
11802/***/ "./node_modules/swiper/shared/effect-target.js":
11803/*!*****************************************************!*\
11804  !*** ./node_modules/swiper/shared/effect-target.js ***!
11805  \*****************************************************/
11806/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11807
11808__webpack_require__.r(__webpack_exports__);
11809/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11810/* harmony export */   "default": function() { return /* binding */ effectTarget; }
11811/* harmony export */ });
11812/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.js */ "./node_modules/swiper/shared/utils.js");
11813
11814function effectTarget(effectParams, slideEl) {
11815  const transformEl = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getSlideTransformEl)(slideEl);
11816  if (transformEl !== slideEl) {
11817    transformEl.style.backfaceVisibility = 'hidden';
11818    transformEl.style['-webkit-backface-visibility'] = 'hidden';
11819  }
11820  return transformEl;
11821}
11822
11823/***/ }),
11824
vendor: 2,104 bytes, lines 11825-11882
11825/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.js":
11826/*!*********************************************************************!*\
11827  !*** ./node_modules/swiper/shared/effect-virtual-transition-end.js ***!
11828  \*********************************************************************/
11829/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11830
11831__webpack_require__.r(__webpack_exports__);
11832/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11833/* harmony export */   "default": function() { return /* binding */ effectVirtualTransitionEnd; }
11834/* harmony export */ });
11835/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.js */ "./node_modules/swiper/shared/utils.js");
11836
11837function effectVirtualTransitionEnd({
11838  swiper,
11839  duration,
11840  transformElements,
11841  allSlides
11842}) {
11843  const {
11844    activeIndex
11845  } = swiper;
11846  const getSlide = el => {
11847    if (!el.parentElement) {
11848      // assume shadow root
11849      const slide = swiper.slides.filter(slideEl => slideEl.shadowEl && slideEl.shadowEl === el.parentNode)[0];
11850      return slide;
11851    }
11852    return el.parentElement;
11853  };
11854  if (swiper.params.virtualTranslate && duration !== 0) {
11855    let eventTriggered = false;
11856    let transitionEndTarget;
11857    if (allSlides) {
11858      transitionEndTarget = transformElements;
11859    } else {
11860      transitionEndTarget = transformElements.filter(transformEl => {
11861        const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;
11862        return swiper.getSlideIndex(el) === activeIndex;
11863      });
11864    }
11865    transitionEndTarget.forEach(el => {
11866      (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.elementTransitionEnd)(el, () => {
11867        if (eventTriggered) return;
11868        if (!swiper || swiper.destroyed) return;
11869        eventTriggered = true;
11870        swiper.animating = false;
11871        const evt = new window.CustomEvent('transitionend', {
11872          bubbles: true,
11873          cancelable: true
11874        });
11875        swiper.wrapperEl.dispatchEvent(evt);
11876      });
11877    });
11878  }
11879}
11880
11881/***/ }),
11882
vendor: 1,601 bytes, lines 11883-11925
11883/***/ "./node_modules/swiper/shared/get-browser.js":
11884/*!***************************************************!*\
11885  !*** ./node_modules/swiper/shared/get-browser.js ***!
11886  \***************************************************/
11887/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11888
11889__webpack_require__.r(__webpack_exports__);
11890/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11891/* harmony export */   "getBrowser": function() { return /* binding */ getBrowser; }
11892/* harmony export */ });
11893/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
11894
11895let browser;
11896function calcBrowser() {
11897  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
11898  let needPerspectiveFix = false;
11899  function isSafari() {
11900    const ua = window.navigator.userAgent.toLowerCase();
11901    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
11902  }
11903  if (isSafari()) {
11904    const ua = String(window.navigator.userAgent);
11905    if (ua.includes('Version/')) {
11906      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));
11907      needPerspectiveFix = major < 16 || major === 16 && minor < 2;
11908    }
11909  }
11910  return {
11911    isSafari: needPerspectiveFix || isSafari(),
11912    needPerspectiveFix,
11913    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
11914  };
11915}
11916function getBrowser() {
11917  if (!browser) {
11918    browser = calcBrowser();
11919  }
11920  return browser;
11921}
11922
11923
11924/***/ }),
11925
vendor: 2,410 bytes, lines 11926-11991
11926/***/ "./node_modules/swiper/shared/get-device.js":
11927/*!**************************************************!*\
11928  !*** ./node_modules/swiper/shared/get-device.js ***!
11929  \**************************************************/
11930/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11931
11932__webpack_require__.r(__webpack_exports__);
11933/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11934/* harmony export */   "getDevice": function() { return /* binding */ getDevice; }
11935/* harmony export */ });
11936/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
11937/* harmony import */ var _get_support_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-support.js */ "./node_modules/swiper/shared/get-support.js");
11938
11939
11940let deviceCached;
11941function calcDevice({
11942  userAgent
11943} = {}) {
11944  const support = (0,_get_support_js__WEBPACK_IMPORTED_MODULE_1__.getSupport)();
11945  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
11946  const platform = window.navigator.platform;
11947  const ua = userAgent || window.navigator.userAgent;
11948  const device = {
11949    ios: false,
11950    android: false
11951  };
11952  const screenWidth = window.screen.width;
11953  const screenHeight = window.screen.height;
11954  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
11955  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
11956  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
11957  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
11958  const windows = platform === 'Win32';
11959  let macos = platform === 'MacIntel';
11960
11961  // iPadOs 13 fix
11962  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
11963  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {
11964    ipad = ua.match(/(Version)\/([\d.]+)/);
11965    if (!ipad) ipad = [0, 1, '13_0_0'];
11966    macos = false;
11967  }
11968
11969  // Android
11970  if (android && !windows) {
11971    device.os = 'android';
11972    device.android = true;
11973  }
11974  if (ipad || iphone || ipod) {
11975    device.os = 'ios';
11976    device.ios = true;
11977  }
11978
11979  // Export object
11980  return device;
11981}
11982function getDevice(overrides = {}) {
11983  if (!deviceCached) {
11984    deviceCached = calcDevice(overrides);
11985  }
11986  return deviceCached;
11987}
11988
11989
11990/***/ }),
11991
vendor: 1,251 bytes, lines 11992-12022
11992/***/ "./node_modules/swiper/shared/get-support.js":
11993/*!***************************************************!*\
11994  !*** ./node_modules/swiper/shared/get-support.js ***!
11995  \***************************************************/
11996/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
11997
11998__webpack_require__.r(__webpack_exports__);
11999/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12000/* harmony export */   "getSupport": function() { return /* binding */ getSupport; }
12001/* harmony export */ });
12002/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
12003
12004let support;
12005function calcSupport() {
12006  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12007  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
12008  return {
12009    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,
12010    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)
12011  };
12012}
12013function getSupport() {
12014  if (!support) {
12015    support = calcSupport();
12016  }
12017  return support;
12018}
12019
12020
12021/***/ }),
12022
vendor: 2,291 bytes, lines 12023-12070
12023/***/ "./node_modules/swiper/shared/process-lazy-preloader.js":
12024/*!**************************************************************!*\
12025  !*** ./node_modules/swiper/shared/process-lazy-preloader.js ***!
12026  \**************************************************************/
12027/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12028
12029__webpack_require__.r(__webpack_exports__);
12030/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12031/* harmony export */   "preload": function() { return /* binding */ preload; },
12032/* harmony export */   "processLazyPreloader": function() { return /* binding */ processLazyPreloader; }
12033/* harmony export */ });
12034const processLazyPreloader = (swiper, imageEl) => {
12035  if (!swiper || swiper.destroyed || !swiper.params) return;
12036  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
12037  const slideEl = imageEl.closest(slideSelector());
12038  if (slideEl) {
12039    const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);
12040    if (lazyEl) lazyEl.remove();
12041  }
12042};
12043const unlazy = (swiper, index) => {
12044  if (!swiper.slides[index]) return;
12045  const imageEl = swiper.slides[index].querySelector('[loading="lazy"]');
12046  if (imageEl) imageEl.removeAttribute('loading');
12047};
12048const preload = swiper => {
12049  if (!swiper || swiper.destroyed || !swiper.params) return;
12050  let amount = swiper.params.lazyPreloadPrevNext;
12051  const len = swiper.slides.length;
12052  if (!len || !amount || amount < 0) return;
12053  amount = Math.min(amount, len);
12054  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);
12055  const activeIndex = swiper.activeIndex;
12056  const slideIndexLastInView = activeIndex + slidesPerView - 1;
12057  if (swiper.params.rewind) {
12058    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {
12059      const realIndex = (i % len + len) % len;
12060      if (realIndex !== activeIndex && realIndex > slideIndexLastInView) unlazy(swiper, realIndex);
12061    }
12062  } else {
12063    for (let i = Math.max(slideIndexLastInView - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {
12064      if (i !== activeIndex && i > slideIndexLastInView) unlazy(swiper, i);
12065    }
12066  }
12067};
12068
12069/***/ }),
12070
vendor: 11,684 bytes, lines 12071-12370
12071/***/ "./node_modules/swiper/shared/utils.js":
12072/*!*********************************************!*\
12073  !*** ./node_modules/swiper/shared/utils.js ***!
12074  \*********************************************/
12075/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12076
12077__webpack_require__.r(__webpack_exports__);
12078/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12079/* harmony export */   "animateCSSModeScroll": function() { return /* binding */ animateCSSModeScroll; },
12080/* harmony export */   "createElement": function() { return /* binding */ createElement; },
12081/* harmony export */   "deleteProps": function() { return /* binding */ deleteProps; },
12082/* harmony export */   "elementChildren": function() { return /* binding */ elementChildren; },
12083/* harmony export */   "elementIndex": function() { return /* binding */ elementIndex; },
12084/* harmony export */   "elementNextAll": function() { return /* binding */ elementNextAll; },
12085/* harmony export */   "elementOffset": function() { return /* binding */ elementOffset; },
12086/* harmony export */   "elementOuterSize": function() { return /* binding */ elementOuterSize; },
12087/* harmony export */   "elementParents": function() { return /* binding */ elementParents; },
12088/* harmony export */   "elementPrevAll": function() { return /* binding */ elementPrevAll; },
12089/* harmony export */   "elementStyle": function() { return /* binding */ elementStyle; },
12090/* harmony export */   "elementTransitionEnd": function() { return /* binding */ elementTransitionEnd; },
12091/* harmony export */   "extend": function() { return /* binding */ extend; },
12092/* harmony export */   "findElementsInElements": function() { return /* binding */ findElementsInElements; },
12093/* harmony export */   "getComputedStyle": function() { return /* binding */ getComputedStyle; },
12094/* harmony export */   "getSlideTransformEl": function() { return /* binding */ getSlideTransformEl; },
12095/* harmony export */   "getTranslate": function() { return /* binding */ getTranslate; },
12096/* harmony export */   "isObject": function() { return /* binding */ isObject; },
12097/* harmony export */   "nextTick": function() { return /* binding */ nextTick; },
12098/* harmony export */   "now": function() { return /* binding */ now; },
12099/* harmony export */   "setCSSProperty": function() { return /* binding */ setCSSProperty; }
12100/* harmony export */ });
12101/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
12102
12103function deleteProps(obj) {
12104  const object = obj;
12105  Object.keys(object).forEach(key => {
12106    try {
12107      object[key] = null;
12108    } catch (e) {
12109      // no getter for object
12110    }
12111    try {
12112      delete object[key];
12113    } catch (e) {
12114      // something got wrong
12115    }
12116  });
12117}
12118function nextTick(callback, delay = 0) {
12119  return setTimeout(callback, delay);
12120}
12121function now() {
12122  return Date.now();
12123}
12124function getComputedStyle(el) {
12125  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12126  let style;
12127  if (window.getComputedStyle) {
12128    style = window.getComputedStyle(el, null);
12129  }
12130  if (!style && el.currentStyle) {
12131    style = el.currentStyle;
12132  }
12133  if (!style) {
12134    style = el.style;
12135  }
12136  return style;
12137}
12138function getTranslate(el, axis = 'x') {
12139  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12140  let matrix;
12141  let curTransform;
12142  let transformMatrix;
12143  const curStyle = getComputedStyle(el, null);
12144  if (window.WebKitCSSMatrix) {
12145    curTransform = curStyle.transform || curStyle.webkitTransform;
12146    if (curTransform.split(',').length > 6) {
12147      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');
12148    }
12149    // Some old versions of Webkit choke when 'none' is passed; pass
12150    // empty string instead in this case
12151    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
12152  } else {
12153    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
12154    matrix = transformMatrix.toString().split(',');
12155  }
12156  if (axis === 'x') {
12157    // Latest Chrome and webkits Fix
12158    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;
12159    // Crazy IE10 Matrix
12160    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
12161    // Normal Browsers
12162    else curTransform = parseFloat(matrix[4]);
12163  }
12164  if (axis === 'y') {
12165    // Latest Chrome and webkits Fix
12166    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;
12167    // Crazy IE10 Matrix
12168    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
12169    // Normal Browsers
12170    else curTransform = parseFloat(matrix[5]);
12171  }
12172  return curTransform || 0;
12173}
12174function isObject(o) {
12175  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';
12176}
12177function isNode(node) {
12178  // eslint-disable-next-line
12179  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {
12180    return node instanceof HTMLElement;
12181  }
12182  return node && (node.nodeType === 1 || node.nodeType === 11);
12183}
12184function extend(...args) {
12185  const to = Object(args[0]);
12186  const noExtend = ['__proto__', 'constructor', 'prototype'];
12187  for (let i = 1; i < args.length; i += 1) {
12188    const nextSource = args[i];
12189    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
12190      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
12191      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
12192        const nextKey = keysArray[nextIndex];
12193        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
12194        if (desc !== undefined && desc.enumerable) {
12195          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
12196            if (nextSource[nextKey].__swiper__) {
12197              to[nextKey] = nextSource[nextKey];
12198            } else {
12199              extend(to[nextKey], nextSource[nextKey]);
12200            }
12201          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
12202            to[nextKey] = {};
12203            if (nextSource[nextKey].__swiper__) {
12204              to[nextKey] = nextSource[nextKey];
12205            } else {
12206              extend(to[nextKey], nextSource[nextKey]);
12207            }
12208          } else {
12209            to[nextKey] = nextSource[nextKey];
12210          }
12211        }
12212      }
12213    }
12214  }
12215  return to;
12216}
12217function setCSSProperty(el, varName, varValue) {
12218  el.style.setProperty(varName, varValue);
12219}
12220function animateCSSModeScroll({
12221  swiper,
12222  targetPosition,
12223  side
12224}) {
12225  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12226  const startPosition = -swiper.translate;
12227  let startTime = null;
12228  let time;
12229  const duration = swiper.params.speed;
12230  swiper.wrapperEl.style.scrollSnapType = 'none';
12231  window.cancelAnimationFrame(swiper.cssModeFrameID);
12232  const dir = targetPosition > startPosition ? 'next' : 'prev';
12233  const isOutOfBound = (current, target) => {
12234    return dir === 'next' && current >= target || dir === 'prev' && current <= target;
12235  };
12236  const animate = () => {
12237    time = new Date().getTime();
12238    if (startTime === null) {
12239      startTime = time;
12240    }
12241    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
12242    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
12243    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
12244    if (isOutOfBound(currentPosition, targetPosition)) {
12245      currentPosition = targetPosition;
12246    }
12247    swiper.wrapperEl.scrollTo({
12248      [side]: currentPosition
12249    });
12250    if (isOutOfBound(currentPosition, targetPosition)) {
12251      swiper.wrapperEl.style.overflow = 'hidden';
12252      swiper.wrapperEl.style.scrollSnapType = '';
12253      setTimeout(() => {
12254        swiper.wrapperEl.style.overflow = '';
12255        swiper.wrapperEl.scrollTo({
12256          [side]: currentPosition
12257        });
12258      });
12259      window.cancelAnimationFrame(swiper.cssModeFrameID);
12260      return;
12261    }
12262    swiper.cssModeFrameID = window.requestAnimationFrame(animate);
12263  };
12264  animate();
12265}
12266function getSlideTransformEl(slideEl) {
12267  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowEl && slideEl.shadowEl.querySelector('.swiper-slide-transform') || slideEl;
12268}
12269function findElementsInElements(elements = [], selector = '') {
12270  const found = [];
12271  elements.forEach(el => {
12272    found.push(...el.querySelectorAll(selector));
12273  });
12274  return found;
12275}
12276function elementChildren(element, selector = '') {
12277  return [...element.children].filter(el => el.matches(selector));
12278}
12279function createElement(tag, classes = []) {
12280  const el = document.createElement(tag);
12281  el.classList.add(...(Array.isArray(classes) ? classes : [classes]));
12282  return el;
12283}
12284function elementOffset(el) {
12285  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12286  const document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
12287  const box = el.getBoundingClientRect();
12288  const body = document.body;
12289  const clientTop = el.clientTop || body.clientTop || 0;
12290  const clientLeft = el.clientLeft || body.clientLeft || 0;
12291  const scrollTop = el === window ? window.scrollY : el.scrollTop;
12292  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;
12293  return {
12294    top: box.top + scrollTop - clientTop,
12295    left: box.left + scrollLeft - clientLeft
12296  };
12297}
12298function elementPrevAll(el, selector) {
12299  const prevEls = [];
12300  while (el.previousElementSibling) {
12301    const prev = el.previousElementSibling; // eslint-disable-line
12302    if (selector) {
12303      if (prev.matches(selector)) prevEls.push(prev);
12304    } else prevEls.push(prev);
12305    el = prev;
12306  }
12307  return prevEls;
12308}
12309function elementNextAll(el, selector) {
12310  const nextEls = [];
12311  while (el.nextElementSibling) {
12312    const next = el.nextElementSibling; // eslint-disable-line
12313    if (selector) {
12314      if (next.matches(selector)) nextEls.push(next);
12315    } else nextEls.push(next);
12316    el = next;
12317  }
12318  return nextEls;
12319}
12320function elementStyle(el, prop) {
12321  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12322  return window.getComputedStyle(el, null).getPropertyValue(prop);
12323}
12324function elementIndex(el) {
12325  let child = el;
12326  let i;
12327  if (child) {
12328    i = 0;
12329    // eslint-disable-next-line
12330    while ((child = child.previousSibling) !== null) {
12331      if (child.nodeType === 1) i += 1;
12332    }
12333    return i;
12334  }
12335  return undefined;
12336}
12337function elementParents(el, selector) {
12338  const parents = []; // eslint-disable-line
12339  let parent = el.parentElement; // eslint-disable-line
12340  while (parent) {
12341    if (selector) {
12342      if (parent.matches(selector)) parents.push(parent);
12343    } else {
12344      parents.push(parent);
12345    }
12346    parent = parent.parentElement;
12347  }
12348  return parents;
12349}
12350function elementTransitionEnd(el, callback) {
12351  function fireCallBack(e) {
12352    if (e.target !== el) return;
12353    callback.call(el, e);
12354    el.removeEventListener('transitionend', fireCallBack);
12355  }
12356  if (callback) {
12357    el.addEventListener('transitionend', fireCallBack);
12358  }
12359}
12360function elementOuterSize(el, size, includeMargins) {
12361  const window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12362  if (includeMargins) {
12363    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'));
12364  }
12365  return el.offsetWidth;
12366}
12367
12368
12369/***/ }),
12370
vendor: 9,443 bytes, lines 12371-12466
12371/***/ "./node_modules/swiper/swiper.esm.js":
12372/*!*******************************************!*\
12373  !*** ./node_modules/swiper/swiper.esm.js ***!
12374  \*******************************************/
12375/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12376
12377__webpack_require__.r(__webpack_exports__);
12378/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12379/* harmony export */   "A11y": function() { return /* reexport safe */ _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_10__["default"]; },
12380/* harmony export */   "Autoplay": function() { return /* reexport safe */ _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_13__["default"]; },
12381/* harmony export */   "Controller": function() { return /* reexport safe */ _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_9__["default"]; },
12382/* harmony export */   "EffectCards": function() { return /* reexport safe */ _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_23__["default"]; },
12383/* harmony export */   "EffectCoverflow": function() { return /* reexport safe */ _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_21__["default"]; },
12384/* harmony export */   "EffectCreative": function() { return /* reexport safe */ _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_22__["default"]; },
12385/* harmony export */   "EffectCube": function() { return /* reexport safe */ _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_19__["default"]; },
12386/* harmony export */   "EffectFade": function() { return /* reexport safe */ _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_18__["default"]; },
12387/* harmony export */   "EffectFlip": function() { return /* reexport safe */ _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_20__["default"]; },
12388/* harmony export */   "FreeMode": function() { return /* reexport safe */ _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_15__["default"]; },
12389/* harmony export */   "Grid": function() { return /* reexport safe */ _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_16__["default"]; },
12390/* harmony export */   "HashNavigation": function() { return /* reexport safe */ _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_12__["default"]; },
12391/* harmony export */   "History": function() { return /* reexport safe */ _modules_history_history_js__WEBPACK_IMPORTED_MODULE_11__["default"]; },
12392/* harmony export */   "Keyboard": function() { return /* reexport safe */ _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__["default"]; },
12393/* harmony export */   "Manipulation": function() { return /* reexport safe */ _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_17__["default"]; },
12394/* harmony export */   "Mousewheel": function() { return /* reexport safe */ _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__["default"]; },
12395/* harmony export */   "Navigation": function() { return /* reexport safe */ _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__["default"]; },
12396/* harmony export */   "Pagination": function() { return /* reexport safe */ _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__["default"]; },
12397/* harmony export */   "Parallax": function() { return /* reexport safe */ _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__["default"]; },
12398/* harmony export */   "Scrollbar": function() { return /* reexport safe */ _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__["default"]; },
12399/* harmony export */   "Swiper": function() { return /* reexport safe */ _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; },
12400/* harmony export */   "Thumbs": function() { return /* reexport safe */ _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_14__["default"]; },
12401/* harmony export */   "Virtual": function() { return /* reexport safe */ _modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__["default"]; },
12402/* harmony export */   "Zoom": function() { return /* reexport safe */ _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__["default"]; },
12403/* harmony export */   "default": function() { return /* reexport safe */ _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }
12404/* harmony export */ });
12405/* harmony import */ var _core_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/core.js */ "./node_modules/swiper/core/core.js");
12406/* harmony import */ var _modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/virtual/virtual.js */ "./node_modules/swiper/modules/virtual/virtual.js");
12407/* harmony import */ var _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/keyboard/keyboard.js */ "./node_modules/swiper/modules/keyboard/keyboard.js");
12408/* harmony import */ var _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/mousewheel/mousewheel.js */ "./node_modules/swiper/modules/mousewheel/mousewheel.js");
12409/* harmony import */ var _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/navigation/navigation.js */ "./node_modules/swiper/modules/navigation/navigation.js");
12410/* harmony import */ var _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/pagination/pagination.js */ "./node_modules/swiper/modules/pagination/pagination.js");
12411/* harmony import */ var _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/scrollbar/scrollbar.js */ "./node_modules/swiper/modules/scrollbar/scrollbar.js");
12412/* harmony import */ var _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/parallax/parallax.js */ "./node_modules/swiper/modules/parallax/parallax.js");
12413/* harmony import */ var _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modules/zoom/zoom.js */ "./node_modules/swiper/modules/zoom/zoom.js");
12414/* harmony import */ var _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/controller/controller.js */ "./node_modules/swiper/modules/controller/controller.js");
12415/* harmony import */ var _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/a11y/a11y.js */ "./node_modules/swiper/modules/a11y/a11y.js");
12416/* harmony import */ var _modules_history_history_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/history/history.js */ "./node_modules/swiper/modules/history/history.js");
12417/* harmony import */ var _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/hash-navigation/hash-navigation.js */ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js");
12418/* harmony import */ var _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/autoplay/autoplay.js */ "./node_modules/swiper/modules/autoplay/autoplay.js");
12419/* harmony import */ var _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/thumbs/thumbs.js */ "./node_modules/swiper/modules/thumbs/thumbs.js");
12420/* harmony import */ var _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./modules/free-mode/free-mode.js */ "./node_modules/swiper/modules/free-mode/free-mode.js");
12421/* harmony import */ var _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/grid/grid.js */ "./node_modules/swiper/modules/grid/grid.js");
12422/* harmony import */ var _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modules/manipulation/manipulation.js */ "./node_modules/swiper/modules/manipulation/manipulation.js");
12423/* harmony import */ var _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./modules/effect-fade/effect-fade.js */ "./node_modules/swiper/modules/effect-fade/effect-fade.js");
12424/* harmony import */ var _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./modules/effect-cube/effect-cube.js */ "./node_modules/swiper/modules/effect-cube/effect-cube.js");
12425/* harmony import */ var _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./modules/effect-flip/effect-flip.js */ "./node_modules/swiper/modules/effect-flip/effect-flip.js");
12426/* harmony import */ var _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/effect-coverflow/effect-coverflow.js */ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js");
12427/* harmony import */ var _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/effect-creative/effect-creative.js */ "./node_modules/swiper/modules/effect-creative/effect-creative.js");
12428/* harmony import */ var _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/effect-cards/effect-cards.js */ "./node_modules/swiper/modules/effect-cards/effect-cards.js");
12429/**
12430 * Swiper 9.3.2
12431 * Most modern mobile touch slider and framework with hardware accelerated transitions
12432 * https://swiperjs.com
12433 *
12434 * Copyright 2014-2023 Vladimir Kharlampidi
12435 *
12436 * Released under the MIT License
12437 *
12438 * Released on: May 15, 2023
12439 */
12440
12441
12442
12443
12444
12445
12446
12447
12448
12449
12450
12451
12452
12453
12454
12455
12456
12457
12458
12459
12460
12461
12462
12463
12464
12465
12466/***/ })
12466
12467
12468/******/ 	});
12469/************************************************************************/
12470/******/ 	// The module cache
12471/******/ 	var __webpack_module_cache__ = {};
12472/******/ 	
12473/******/ 	// The require function
12474/******/ 	function __webpack_require__(moduleId) {
12475/******/ 		// Check if module is in cache
12476/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
12477/******/ 		if (cachedModule !== undefined) {
12478/******/ 			return cachedModule.exports;
12479/******/ 		}
12480/******/ 		// Create a new module (and put it into the cache)
12481/******/ 		var module = __webpack_module_cache__[moduleId] = {
12482/******/ 			// no module.id needed
12483/******/ 			// no module.loaded needed
12484/******/ 			exports: {}
12485/******/ 		};
12486/******/ 	
12487/******/ 		// Execute the module function
12488/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
12489/******/ 	
12490/******/ 		// Return the exports of the module
12491/******/ 		return module.exports;
12492/******/ 	}
12493/******/ 	
12494/************************************************************************/
12495/******/ 	/* webpack/runtime/define property getters */
12496/******/ 	!function() {
12497/******/ 		// define getter functions for harmony exports
12498/******/ 		__webpack_require__.d = function(exports, definition) {
12499/******/ 			for(var key in definition) {
12500/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
12501/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
12502/******/ 				}
12503/******/ 			}
12504/******/ 		};
12505/******/ 	}();
12506/******/ 	
12507/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
12508/******/ 	!function() {
12509/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
12510/******/ 	}();
12511/******/ 	
12512/******/ 	/* webpack/runtime/make namespace object */
12513/******/ 	!function() {
12514/******/ 		// define __esModule on exports
12515/******/ 		__webpack_require__.r = function(exports) {
12516/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
12517/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
12518/******/ 			}
12519/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
12520/******/ 		};
12521/******/ 	}();
12522/******/ 	
12523/************************************************************************/
12524var __webpack_exports__ = {};
12525// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
12526!function() {
12527/*!*********************************************************************!*\
12528  !*** ./cartridges/app_purina/cartridge/client/default/js/search.js ***!
12529  \*********************************************************************/
12530
12531
12532var processInclude = __webpack_require__(/*! purina_core/util */ "./cartridges/app_purina_core/cartridge/client/default/js/util.js");
12533
12534$(document).ready(function () {
12535    processInclude(__webpack_require__(/*! ./search/search */ "./cartridges/app_purina/cartridge/client/default/js/search/search.js"));
12536    processInclude(__webpack_require__(/*! purina_core/product/quickView */ "./cartridges/app_purina_core/cartridge/client/default/js/product/quickView.js"));
12537});
12538
12539}();
12540/******/ })()
12541;
12542//# sourceMappingURL=search.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.