PageSourceSearch

https://tvseoul.kr/js/common/swiper.jquery.min.js

js tvseoul.kr collected 2026-10-02 19:40:30 UTC 200,889 bytes, 3,698 lines download raw bytes

vendor: 8,905 bytes, lines 1-235
1/**
2 * Swiper 4.1.5
3 * Most modern mobile touch slider and framework with hardware accelerated transitions
4 * http://www.idangero.us/swiper/
5 *
6 * Copyright 2014-2018 Vladimir Kharlampidi
7 *
8 * Released under the MIT License
9 *
10 * Released on: February 10, 2018
11 */
12!function(e, t) {
13    "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : e.Swiper = t()
14}(this, function() {
15    "use strict";
16    var e = "undefined" == typeof document ? {
17            body: {},
18            addEventListener: function() {},
19            removeEventListener: function() {},
20            activeElement: {
21                blur: function() {},
22                nodeName: ""
23            },
24            querySelector: function() {
25                return null
26            },
27            querySelectorAll: function() {
28                return []
29            },
30            getElementById: function() {
31                return null
32            },
33            createEvent: function() {
34                return {
35                    initEvent: function() {}
36                }
37            },
38            createElement: function() {
39                return {
40                    children: [],
41                    childNodes: [],
42                    style: {},
43                    setAttribute: function() {},
44                    getElementsByTagName: function() {
45                        return []
46                    }
47                }
48            },
49            location: {
50                hash: ""
51            }
52        } : document,
53        t = "undefined" == typeof window ? {
54            document: e,
55            navigator: {
56                userAgent: ""
57            },
58            location: {},
59            history: {},
60            CustomEvent: function() {
61                return this
62            },
63            addEventListener: function() {},
64            removeEventListener: function() {},
65            getComputedStyle: function() {
66                return {
67                    getPropertyValue: function() {
68                        return ""
69                    }
70                }
71            },
72            Image: function() {},
73            Date: function() {},
74            screen: {},
75            setTimeout: function() {},
76            clearTimeout: function() {}
77        } : window,
78        i = function(e) {
79            for (var t = 0; t < e.length; t += 1)
80                this[t] = e[t];
81            return this.length = e.length, this
82        };
83    function s(s, a) {
84        var r = [],
85            n = 0;
86        if (s && !a && s instanceof i)
87            return s;
88        if (s)
89            if ("string" == typeof s) {
90                var o,
91                    l,
92                    d = s.trim();
93                if (d.indexOf("<") >= 0 && d.indexOf(">") >= 0) {
94                    var h = "div";
95                    for (0 === d.indexOf("<li") && (h = "ul"), 0 === d.indexOf("<tr") && (h = "tbody"), 0 !== d.indexOf("<td") && 0 !== d.indexOf("<th") || (h = "tr"), 0 === d.indexOf("<tbody") && (h = "table"), 0 === d.indexOf("<option") && (h = "select"), (l = e.createElement(h)).innerHTML = d, n = 0; n < l.childNodes.length; n += 1)
96                        r.push(l.childNodes[n])
97                } else
98                    for (o = a || "#" !== s[0] || s.match(/[ .<>:~]/) ? (a || e).querySelectorAll(s.trim()) : [e.getElementById(s.trim().split("#")[1])], n = 0; n < o.length; n += 1)
99                        o[n] && r.push(o[n])
100            } else if (s.nodeType || s === t || s === e)
101                r.push(s);
102            else if (s.length > 0 && s[0].nodeType)
103                for (n = 0; n < s.length; n += 1)
104                    r.push(s[n]);
105        return new i(r)
106    }
107    function a(e) {
108        for (var t = [], i = 0; i < e.length; i += 1)
109            -1 === t.indexOf(e[i]) && t.push(e[i]);
110        return t
111    }
112    s.fn = i.prototype, s.Class = i, s.Dom7 = i;
113    "resize scroll".split(" ");
114    var r = {
115        addClass: function(e) {
116            if (void 0 === e)
117                return this;
118            for (var t = e.split(" "), i = 0; i < t.length; i += 1)
119                for (var s = 0; s < this.length; s += 1)
120                    void 0 !== this[s].classList && this[s].classList.add(t[i]);
121            return this
122        },
123        removeClass: function(e) {
124            for (var t = e.split(" "), i = 0; i < t.length; i += 1)
125                for (var s = 0; s < this.length; s += 1)
126                    void 0 !== this[s].classList && this[s].classList.remove(t[i]);
127            return this
128        },
129        hasClass: function(e) {
130            return !!this[0] && this[0].classList.contains(e)
131        },
132        toggleClass: function(e) {
133            for (var t = e.split(" "), i = 0; i < t.length; i += 1)
134                for (var s = 0; s < this.length; s += 1)
135                    void 0 !== this[s].classList && this[s].classList.toggle(t[i]);
136            return this
137        },
138        attr: function(e, t) {
139            var i = arguments;
140            if (1 === arguments.length && "string" == typeof e)
141                return this[0] ? this[0].getAttribute(e) : void 0;
142            for (var s = 0; s < this.length; s += 1)
143                if (2 === i.length)
144                    this[s].setAttribute(e, t);
145                else
146                    for (var a in e)
147                        this[s][a] = e[a], this[s].setAttribute(a, e[a]);
148            return this
149        },
150        removeAttr: function(e) {
151            for (var t = 0; t < this.length; t += 1)
152                this[t].removeAttribute(e);
153            return this
154        },
155        data: function(e, t) {
156            var i;
157            if (void 0 !== t) {
158                for (var s = 0; s < this.length; s += 1)
159                    (i = this[s]).dom7ElementDataStorage || (i.dom7ElementDataStorage = {}), i.dom7ElementDataStorage[e] = t;
160                return this
161            }
162            if (i = this[0]) {
163                if (i.dom7ElementDataStorage && e in i.dom7ElementDataStorage)
164                    return i.dom7ElementDataStorage[e];
165                var a = i.getAttribute("data-" + e);
166                return a || void 0
167            }
168        },
169        transform: function(e) {
170            for (var t = 0; t < this.length; t += 1) {
171                var i = this[t].style;
172                i.webkitTransform = e, i.transform = e
173            }
174            return this
175        },
176        transition: function(e) {
177            "string" != typeof e && (e += "ms");
178            for (var t = 0; t < this.length; t += 1) {
179                var i = this[t].style;
180                i.webkitTransitionDuration = e, i.transitionDuration = e
181            }
182            return this
183        },
184        on: function() {
185            for (var e = [], t = arguments.length; t--;)
186                e[t] = arguments[t];
187            var i,
188                a = e[0],
189                r = e[1],
190                n = e[2],
191                o = e[3];
192            function l(e) {
193                var t = e.target;
194                if (t) {
195                    var i = e.target.dom7EventData || [];
196                    if (i.unshift(e), s(t).is(r))
197                        n.apply(t, i);
198                    else
199                        for (var a = s(t).parents(), o = 0; o < a.length; o += 1)
200                            s(a[o]).is(r) && n.apply(a[o], i)
201                }
202            }
203            function d(e) {
204                var t = e && e.target ? e.target.dom7EventData || [] : [];
205                t.unshift(e), n.apply(this, t)
206            }
207            "function" == typeof e[1] && (a = (i = e)[0], n = i[1], o = i[2], r = void 0), o || (o = !1);
208            for (var h, p = a.split(" "), c = 0; c < this.length; c += 1) {
209                var u = this[c];
210                if (r)
211                    for (h = 0; h < p.length; h += 1)
212                        u.dom7LiveListeners || (u.dom7LiveListeners = []), u.dom7LiveListeners.push({
213                            type: a,
214                            listener: n,
215                            proxyListener: l
216                        }), u.addEventListener(p[h], l, o);
217                else
218                    for (h = 0; h < p.length; h += 1)
219                        u.dom7Listeners || (u.dom7Listeners = []), u.dom7Listeners.push({
220                            type: a,
221                            listener: n,
222                            proxyListener: d
223                        }), u.addEventListener(p[h], d, o)
224            }
225            return this
226        },
227        off: function() {
228            for (var e = [], t = arguments.length; t--;)
229                e[t] = arguments[t];
230            var i,
231                s = e[0],
232                a = e[1],
233                r = e[2],
234                n = e[3];
235            "function" == typeof e[1] && (s = (i = e)[0], r = i[
vendor: 11,576 bytes, lines 235-519
2351], n = i[2], a = void 0), n || (n = !1);
236            for (var o = s.split(" "), l = 0; l < o.length; l += 1)
237                for (var d = 0; d < this.length; d += 1) {
238                    var h = this[d];
239                    if (a) {
240                        if (h.dom7LiveListeners)
241                            for (var p = 0; p < h.dom7LiveListeners.length; p += 1)
242                                r ? h.dom7LiveListeners[p].listener === r && h.removeEventListener(o[l], h.dom7LiveListeners[p].proxyListener, n) : h.dom7LiveListeners[p].type === o[l] && h.removeEventListener(o[l], h.dom7LiveListeners[p].proxyListener, n)
243                    } else if (h.dom7Listeners)
244                        for (var c = 0; c < h.dom7Listeners.length; c += 1)
245                            r ? h.dom7Listeners[c].listener === r && h.removeEventListener(o[l], h.dom7Listeners[c].proxyListener, n) : h.dom7Listeners[c].type === o[l] && h.removeEventListener(o[l], h.dom7Listeners[c].proxyListener, n)
246                }
247            return this
248        },
249        trigger: function() {
250            for (var i = [], s = arguments.length; s--;)
251                i[s] = arguments[s];
252            for (var a = i[0].split(" "), r = i[1], n = 0; n < a.length; n += 1)
253                for (var o = 0; o < this.length; o += 1) {
254                    var l = void 0;
255                    try {
256                        l = new t.CustomEvent(a[n], {
257                            detail: r,
258                            bubbles: !0,
259                            cancelable: !0
260                        })
261                    } catch (t) {
262                        (l = e.createEvent("Event")).initEvent(a[n], !0, !0), l.detail = r
263                    }
264                    this[o].dom7EventData = i.filter(function(e, t) {
265                        return t > 0
266                    }), this[o].dispatchEvent(l), this[o].dom7EventData = [], delete this[o].dom7EventData
267                }
268            return this
269        },
270        transitionEnd: function(e) {
271            var t,
272                i = ["webkitTransitionEnd", "transitionend"],
273                s = this;
274            function a(r) {
275                if (r.target === this)
276                    for (e.call(this, r), t = 0; t < i.length; t += 1)
277                        s.off(i[t], a)
278            }
279            if (e)
280                for (t = 0; t < i.length; t += 1)
281                    s.on(i[t], a);
282            return this
283        },
284        outerWidth: function(e) {
285            if (this.length > 0) {
286                if (e) {
287                    var t = this.styles();
288                    return this[0].offsetWidth + parseFloat(t.getPropertyValue("margin-right")) + parseFloat(t.getPropertyValue("margin-left"))
289                }
290                return this[0].offsetWidth
291            }
292            return null
293        },
294        outerHeight: function(e) {
295            if (this.length > 0) {
296                if (e) {
297                    var t = this.styles();
298                    return this[0].offsetHeight + parseFloat(t.getPropertyValue("margin-top")) + parseFloat(t.getPropertyValue("margin-bottom"))
299                }
300                return this[0].offsetHeight
301            }
302            return null
303        },
304        offset: function() {
305            if (this.length > 0) {
306                var i = this[0],
307                    s = i.getBoundingClientRect(),
308                    a = e.body,
309                    r = i.clientTop || a.clientTop || 0,
310                    n = i.clientLeft || a.clientLeft || 0,
311                    o = i === t ? t.scrollY : i.scrollTop,
312                    l = i === t ? t.scrollX : i.scrollLeft;
313                return {
314                    top: s.top + o - r,
315                    left: s.left + l - n
316                }
317            }
318            return null
319        },
320        css: function(e, i) {
321            var s;
322            if (1 === arguments.length) {
323                if ("string" != typeof e) {
324                    for (s = 0; s < this.length; s += 1)
325                        for (var a in e)
326                            this[s].style[a] = e[a];
327                    return this
328                }
329                if (this[0])
330                    return t.getComputedStyle(this[0], null).getPropertyValue(e)
331            }
332            if (2 === arguments.length && "string" == typeof e) {
333                for (s = 0; s < this.length; s += 1)
334                    this[s].style[e] = i;
335                return this
336            }
337            return this
338        },
339        each: function(e) {
340            if (!e)
341                return this;
342            for (var t = 0; t < this.length; t += 1)
343                if (!1 === e.call(this[t], t, this[t]))
344                    return this;
345            return this
346        },
347        html: function(e) {
348            if (void 0 === e)
349                return this[0] ? this[0].innerHTML : void 0;
350            for (var t = 0; t < this.length; t += 1)
351                this[t].innerHTML = e;
352            return this
353        },
354        text: function(e) {
355            if (void 0 === e)
356                return this[0] ? this[0].textContent.trim() : null;
357            for (var t = 0; t < this.length; t += 1)
358                this[t].textContent = e;
359            return this
360        },
361        is: function(a) {
362            var r,
363                n,
364                o = this[0];
365            if (!o || void 0 === a)
366                return !1;
367            if ("string" == typeof a) {
368                if (o.matches)
369                    return o.matches(a);
370                if (o.webkitMatchesSelector)
371                    return o.webkitMatchesSelector(a);
372                if (o.msMatchesSelector)
373                    return o.msMatchesSelector(a);
374                for (r = s(a), n = 0; n < r.length; n += 1)
375                    if (r[n] === o)
376                        return !0;
377                return !1
378            }
379            if (a === e)
380                return o === e;
381            if (a === t)
382                return o === t;
383            if (a.nodeType || a instanceof i) {
384                for (r = a.nodeType ? [a] : a, n = 0; n < r.length; n += 1)
385                    if (r[n] === o)
386                        return !0;
387                return !1
388            }
389            return !1
390        },
391        index: function() {
392            var e,
393                t = this[0];
394            if (t) {
395                for (e = 0; null !== (t = t.previousSibling);)
396                    1 === t.nodeType && (e += 1);
397                return e
398            }
399        },
400        eq: function(e) {
401            if (void 0 === e)
402                return this;
403            var t,
404                s = this.length;
405            return new i(e > s - 1 ? [] : e < 0 ? (t = s + e) < 0 ? [] : [this[t]] : [this[e]])
406        },
407        append: function() {
408            for (var t, s = [], a = arguments.length; a--;)
409                s[a] = arguments[a];
410            for (var r = 0; r < s.length; r += 1) {
411                t = s[r];
412                for (var n = 0; n < this.length; n += 1)
413                    if ("string" == typeof t) {
414                        var o = e.createElement("div");
415                        for (o.innerHTML = t; o.firstChild;)
416                            this[n].appendChild(o.firstChild)
417                    } else if (t instanceof i)
418                        for (var l = 0; l < t.length; l += 1)
419                            this[n].appendChild(t[l]);
420                    else
421                        this[n].appendChild(t)
422            }
423            return this
424        },
425        prepend: function(t) {
426            var s,
427                a;
428            for (s = 0; s < this.length; s += 1)
429                if ("string" == typeof t) {
430                    var r = e.createElement("div");
431                    for (r.innerHTML = t, a = r.childNodes.length - 1; a >= 0; a -= 1)
432                        this[s].insertBefore(r.childNodes[a], this[s].childNodes[0])
433                } else if (t instanceof i)
434                    for (a = 0; a < t.length; a += 1)
435                        this[s].insertBefore(t[a], this[s].childNodes[0]);
436                else
437                    this[s].insertBefore(t, this[s].childNodes[0]);
438            return this
439        },
440        next: function(e) {
441            return this.length > 0 ? e ? this[0].nextElementSibling && s(this[0].nextElementSibling).is(e) ? new i([this[0].nextElementSibling]) : new i([]) : this[0].nextElementSibling ? new i([this[0].nextElementSibling]) : new i([]) : new i([])
442        },
443        nextAll: function(e) {
444            var t = [],
445                a = this[0];
446            if (!a)
447                return new i([]);
448            for (; a.nextElementSibling;) {
449                var r = a.nextElementSibling;
450                e ? s(r).is(e) && t.push(r) : t.push(r), a = r
451            }
452            return new i(t)
453        },
454        prev: function(e) {
455            if (this.length > 0) {
456                var t = this[0];
457                return e ? t.previousElementSibling && s(t.previousElementSibling).is(e) ? new i([t.previousElementSibling]) : new i([]) : t.previousElementSibling ? new i([t.previousElementSibling]) : new i([])
458            }
459            return new i([])
460        },
461        prevAll: function(e) {
462            var t = [],
463                a = this[0];
464            if (!a)
465                return new i([]);
466            for (; a.previousElementSibling;) {
467                var r = a.previousElementSibling;
468                e ? s(r).is(e) && t.push(r) : t.push(r), a = r
469            }
470            return new i(t)
471        },
472        parent: function(e) {
473            for (var t = [], i = 0; i < this.length; i += 1)
474                null !== this[i].parentNode && (e ? s(this[i].parentNode).is(e) && t.push(this[i].parentNode) : t.push(this[i].parentNode));
475            return s(a(t))
476        },
477        parents: function(e) {
478            for (var t = [], i = 0; i < this.length; i += 1)
479                for (var r = this[i].parentNode; r;)
480                    e ? s(r).is(e) && t.push(r) : t.push(r), r = r.parentNode;
481            return s(a(t))
482        },
483        closest: function(e) {
484            var t = this;
485            return void 0 === e ? new i([]) : (t.is(e) || (t = t.parents(e).eq(0)), t)
486        },
487        find: function(e) {
488            for (var t = [], s = 0; s < this.length; s += 1)
489                for (var a = this[s].querySelectorAll(e), r = 0; r < a.length; r += 1)
490                    t.push(a[r]);
491            return new i(t)
492        },
493        children: function(e) {
494            for (var t = [], r = 0; r < this.length; r += 1)
495                for (var n = this[r].childNodes, o = 0; o < n.length; o += 1)
496                    e ? 1 === n[o].nodeType && s(n[o]).is(e) && t.push(n[o]) : 1 === n[o].nodeType && t.push(n[o]);
497            return new i(a(t))
498        },
499        remove: function() {
500            for (var e = 0; e < this.length; e += 1)
501                this[e].parentNode && this[e].parentNode.removeChild(this[e]);
502            return this
503        },
504        add: function() {
505            for (var e = [], t = arguments.length; t--;)
506                e[t] = arguments[t];
507            var i,
508                a;
509            for (i = 0; i < e.length; i += 1) {
510                var r = s(e[i]);
511                for (a = 0; a < r.length; a += 1)
512                    this[this.length] = r[a], this.length += 1
513            }
514            return this
515        },
516        styles: function() {
517            return this[0] ? t.getComputedStyle(this[0], null) : {}
518        }
519    };
vendor: 4,963 bytes, lines 520-616
520    Object.keys(r).forEach(function(e) {
521        s.fn[e] = r[e]
522    });
523    var n,
524        o,
525        l,
526        d = {
527            deleteProps: function(e) {
528                var t = e;
529                Object.keys(t).forEach(function(e) {
530                    try {
531                        t[e] = null
532                    } catch (e) {}
533                    try {
534                        delete t[e]
535                    } catch (e) {}
536                })
537            },
538            nextTick: function(e, t) {
539                return void 0 === t && (t = 0), setTimeout(e, t)
540            },
541            now: function() {
542                return Date.now()
543            },
544            getTranslate: function(e, i) {
545                var s,
546                    a,
547                    r;
548                void 0 === i && (i = "x");
549                var n = t.getComputedStyle(e, null);
550                return t.WebKitCSSMatrix ? ((a = n.transform || n.webkitTransform).split(",").length > 6 && (a = a.split(", ").map(function(e) {
551                    return e.replace(",", ".")
552                }).join(", ")), r = new t.WebKitCSSMatrix("none" === a ? "" : a)) : s = (r = n.MozTransform || n.OTransform || n.MsTransform || n.msTransform || n.transform || n.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,")).toString().split(","), "x" === i && (a = t.WebKitCSSMatrix ? r.m41 : 16 === s.length ? parseFloat(s[12]) : parseFloat(s[4])), "y" === i && (a = t.WebKitCSSMatrix ? r.m42 : 16 === s.length ? parseFloat(s[13]) : parseFloat(s[5])), a || 0
553            },
554            parseUrlQuery: function(e) {
555                var i,
556                    s,
557                    a,
558                    r,
559                    n = {},
560                    o = e || t.location.href;
561                if ("string" == typeof o && o.length)
562                    for (r = (s = (o = o.indexOf("?") > -1 ? o.replace(/\S*\?/, "") : "").split("&").filter(function(e) {
563                        return "" !== e
564                    })).length, i = 0; i < r; i += 1)
565                        a = s[i].replace(/#\S+/g, "").split("="), n[decodeURIComponent(a[0])] = void 0 === a[1] ? void 0 : decodeURIComponent(a[1]) || "";
566                return n
567            },
568            isObject: function(e) {
569                return "object" == typeof e && null !== e && e.constructor && e.constructor === Object
570            },
571            extend: function() {
572                for (var e = [], t = arguments.length; t--;)
573                    e[t] = arguments[t];
574                for (var i = Object(e[0]), s = 1; s < e.length; s += 1) {
575                    var a = e[s];
576                    if (void 0 !== a && null !== a)
577                        for (var r = Object.keys(Object(a)), n = 0, o = r.length; n < o; n += 1) {
578                            var l = r[n],
579                                h = Object.getOwnPropertyDescriptor(a, l);
580                            void 0 !== h && h.enumerable && (d.isObject(i[l]) && d.isObject(a[l]) ? d.extend(i[l], a[l]) : !d.isObject(i[l]) && d.isObject(a[l]) ? (i[l] = {}, d.extend(i[l], a[l])) : i[l] = a[l])
581                        }
582                }
583                return i
584            }
585        },
586        h = (l = e.createElement("div"), {
587            touch: t.Modernizr && !0 === t.Modernizr.touch || !!("ontouchstart" in t || t.DocumentTouch && e instanceof t.DocumentTouch),
588            pointerEvents: !(!t.navigator.pointerEnabled && !t.PointerEvent),
589            prefixedPointerEvents: !!t.navigator.msPointerEnabled,
590            transition: (o = l.style, "transition" in o || "webkitTransition" in o || "MozTransition" in o),
591            transforms3d: t.Modernizr && !0 === t.Modernizr.csstransforms3d || (n = l.style, "webkitPerspective" in n || "MozPerspective" in n || "OPerspective" in n || "MsPerspective" in n || "perspective" in n),
592            flexbox: function() {
593                for (var e = l.style, t = "alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient".split(" "), i = 0; i < t.length; i += 1)
594                    if (t[i] in e)
595                        return !0;
596                return !1
597            }(),
598            observer: "MutationObserver" in t || "WebkitMutationObserver" in t,
599            passiveListener: function() {
600                var e = !1;
601                try {
602                    var i = Object.defineProperty({}, "passive", {
603                        get: function() {
604                            e = !0
605                        }
606                    });
607                    t.addEventListener("testPassiveListener", null, i)
608                } catch (e) {}
609                return e
610            }(),
611            gestures: "ongesturestart" in t
612        }),
613        p = function(e) {
614            void 0 === e && (e = {});
615            var t = this;
616            t.params = e, t.eventsListeners = {}
616, t.params && t.params.on && Object.keys(t.params.on).forEach(function(e) {
617                t.on(e, t.params.on[e])
618            })
619        },
620        c = {
621            components: {
622                configurable: !0
623            }
624        };
625    p.prototype.on = function(e, t) {
626        var i = this;
627        return "function" != typeof t ? i : (e.split(" ").forEach(function(e) {
628            i.eventsListeners[e] || (i.eventsListeners[e] = []), i.eventsListeners[e].push(t)
629        }), i)
630    }, p.prototype.once = function(e, t) {
631        var i = this;
632        if ("function" != typeof t)
633            return i;
634        return i.on(e, function s() {
635            for (var a = [], r = arguments.length; r--;)
636                a[r] = arguments[r];
637            t.apply(i, a), i.off(e, s)
638        })
639    }, p.prototype.off = function(e, t) {
640        var i = this;
641        return e.split(" ").forEach(function(e) {
642            void 0 === t ? i.eventsListeners[e] = [] : i.eventsListeners[e].forEach(function(s, a) {
643                s === t && i.eventsListeners[e].splice(a, 1)
644            })
645        }), i
646    }, p.prototype.emit = function() {
647        for (var e = [], t = arguments.length; t--;)
648            e[t] = arguments[t];
649        var i,
650            s,
651            a,
652            r = this;
653        return r.eventsListeners ? ("string" == typeof e[0] || Array.isArray(e[0]) ? (i = e[0], s = e.slice(1, e.length), a = r) : (i = e[0].events, s = e[0].data, a = e[0].context || r), (Array.isArray(i) ? i : i.split(" ")).forEach(function(e) {
654            if (r.eventsListeners[e]) {
655                var t = [];
656                r.eventsListeners[e].forEach(function(e) {
657                    t.push(e)
658                }), t.forEach(function(e) {
659                    e.apply(a, s)
660                })
661            }
662        }), r) : r
663    }, p.prototype.useModulesParams = function(e) {
664        var t = this;
665        t.modules && Object.keys(t.modules).forEach(function(i) {
666            var s = t.modules[i];
667            s.params && d.extend(e, s.params)
668        })
669    }, p.prototype.useModules = function(e) {
670        void 0 === e && (e = {});
671        var t = this;
672        t.modules && Object.keys(t.modules).forEach(function(i) {
673            var s = t.modules[i],
674                a = e[i] || {};
675            s.instance && Object.keys(s.instance).forEach(function(e) {
676                var i = s.instance[e];
677                t[e] = "function" == typeof i ? i.bind(t) : i
678            }), s.on && t.on && Object.keys(s.on).forEach(function(e) {
679                t.on(e, s.on[e])
680            }), s.create && s.create.bind(t)(a)
681        })
682    }, c.components.set = function(e) {
683        this.use && this.use(e)
684    }, p.installModule = function(e) {
685        for (var t = [], i = arguments.length - 1; i-- > 0;)
686            t[i] = arguments[i + 1];
687        var s = this;
688        s.prototype.modules || (s.prototype.modules = {});
689        var a = e.name || Object.keys(s.prototype.modules).length + "_" + d.now();
690        return s.prototype.modules[a] = e, e.proto && Object.keys(e.proto).forEach(function(t) {
691            s.prototype[t] = e.proto[t]
692        }), e.static && Object.keys(e.static).forEach(function(t) {
693            s[t] = e.static[t]
694        }), e.install && e.install.apply(s, t), s
695    }, p.use = function(e) {
696        for (var t = [], i = arguments.length - 1; i-- > 0;)
697            t[i] = arguments[i + 1];
698        var s = this;
699        return Array.isArray(e) ? (e.forEach(function(e) {
700            return s.installModule(e)
701        }), s) : s.installModule.apply(s, [e].concat(t))
702    }, Object.defineProperties(p, c);
703    var u = {
704            updateSize: function() {
705                var e,
706                    t,
707                    i = this.$el;
708                e = void 0 !== this.params.width ? this.params.width : i[0].clientWidth, t = void 0 !== this.params.height ? this.params.height : i[0].clientHeight, 0 === e && this.isHorizontal() || 0 === t && this.isVertical() || (e = e - parseInt(i.css("padding-left"), 10) - parseInt(i.css("padding-right"), 10), t = t - parseInt(i.css("padding-top"), 10) - parseInt(i.css("padding-bottom"), 10), d.extend(this, {
709                    width: e,
710                    height: t,
711                    size: this.isHorizontal() ? e : t
712                }))
713            },
714            updateSlides: function() {
715                var e = this.params,
716                    t = this.$wrapperEl,
717                    i = this.size,
718                    s = this.rtl,
719                    a = this.wrongRTL,
720                    r = t.children("." + this.params.slideClass),
721                    n = this.virtual && e.virtual.enabled ? this.virtual.slides.length : r.length,
722                    o = [],
723                    l = [],
724                    p = [],
725                    c = e.slidesOffsetBefore;
726                "function" == typeof c && (c = e.slidesOffsetBefore.call(this));
727                var u = e.slidesOffsetAfter;
728                "function" == typeof u && (u = e.slidesOffsetAfter.call(this));
729                var v = n,
730                    f = this.snapGrid.length,
731                    m = this.snapGrid.length,
732                    g = e.spaceBetween,
733                    b = -c,
734                    w = 0,
735                    y = 0;
736                if (void 0 !== i) {
737                    var x,
738                        E;
739                    "string" == typeof g && g.indexOf("%") >= 0 && (g = parseFloat(g.replace("%", "")) / 100 * i), this.virtualSize = -g, s ? r.css({
740                        marginLeft: "",
741                        marginTop: ""
742                    }) : r.css({
743                        marginRight: "",
744                        marginBottom: ""
745                    }), e.slidesPerColumn > 1 && (x = Math.floor(n / e.slidesPerColumn) === n / this.params.slidesPerColumn ? n : Math.ceil(n / e.slidesPerColumn) * e.slidesPerColumn, "auto" !== e.slidesPerView && "row" === e.slidesPerColumnFill && (x = Math.max(x, e.slidesPerView * e.slidesPerColumn)));
746                    for (var T, S = e.slidesPerColumn, C = x / S, M = C - (e.slidesPerColumn * C - n), z = 0; z < n; z += 1) {
747                        E = 0;
748                        var P = r.eq(z);
749                        if (e.slidesPerColumn > 1) {
750                            var k = void 0,
751                                $ = void 0,
752                                L = void 0;
753                            "column" === e.slidesPerColumnFill ? (L = z - ($ = Math.floor(z / S)) * S, ($ > M || $ === M && L === S - 1) && (L += 1) >= S && (L = 0, $ += 1), k = $ + L * x / S, P.css({
754                                "-webkit-box-ordinal-group": k,
755                                "-moz-box-ordinal-group": k,
756                                "-ms-flex-order": k,
757                                "-webkit-order": k,
758                                order: k
759                            })) : $ = z - (L = Math.floor(z / C)) * C, P.css("margin-" + (this.isHorizontal() ? "top" : "left"), 0 !== L && e.spaceBetween && e.spaceBetween + "px").attr("data-swiper-column", $).attr("data-swiper-row", L)
760                        }
761                        "none" !== P.css("display") && ("auto" === e.slidesPerView ? (E = this.isHorizontal() ? P.outerWidth(!0) : P.outerHeight(!0), e.roundLengths && (E = Math.floor(E))) : (E = (i - (e.slidesPerView - 1) * g) / e.slidesPerView, e.roundLengths && (E = Math.floor(E)), r[z] && (this.isHorizontal() ? r[z].style.width = E + "px" : r[z].style.height = E + "px")), r[z] && (r[z].swiperSlideSize = E), p.push(E), e.centeredSlides ? (b = b + E / 2 + w / 2 + g, 0 === w && 0 !== z && (b = b - i / 2 - g), 0 === z && (b = b - i / 2 - g), Math.abs(b) < .001 && (b = 0), y % e.slidesPerGroup == 0 && o.push(b), l.push(b)) : (y % e.slidesPerGroup == 0 && o.push(b), l.push(b), b = b + E + g), this.virtualSize += E + g, w = E, y += 1)
762                    }
763                    if (this.virtualSize = Math.max(this.virtualSize, i) + u, s && a && ("slide" === e.effect || "coverflow" === e.effect) && t.css({
764                        width: this.virtualSize + e.spaceBetween + "px"
765                    }), h.flexbox && !e.setWrapperSize || (this.isHorizontal() ? t.css({
766                        width: this.virtualSize + e.spaceBetween + "px"
767                    }) : t.css({
768                        height: this.virtualSize + e.spaceBetween + "px"
769                    })), e.slidesPerColumn > 1 && (this.virtualSize = (E + e.spaceBetween) * x, this.virtualSize = Math.
769ceil(this.virtualSize / e.slidesPerColumn) - e.spaceBetween, this.isHorizontal() ? t.css({
770                        width: this.virtualSize + e.spaceBetween + "px"
771                    }) : t.css({
772                        height: this.virtualSize + e.spaceBetween + "px"
773                    }), e.centeredSlides)) {
774                        T = [];
775                        for (var I = 0; I < o.length; I += 1)
776                            o[I] < this.virtualSize + o[0] && T.push(o[I]);
777                        o = T
778                    }
779                    if (!e.centeredSlides) {
780                        T = [];
781                        for (var D = 0; D < o.length; D += 1)
782                            o[D] <= this.virtualSize - i && T.push(o[D]);
783                        o = T, Math.floor(this.virtualSize - i) - Math.floor(o[o.length - 1]) > 1 && o.push(this.virtualSize - i)
784                    }
785                    0 === o.length && (o = [0]), 0 !== e.spaceBetween && (this.isHorizontal() ? s ? r.css({
786                        marginLeft: g + "px"
787                    }) : r.css({
788                        marginRight: g + "px"
789                    }) : r.css({
790                        marginBottom: g + "px"
791                    })), d.extend(this, {
792                        slides: r,
793                        snapGrid: o,
794                        slidesGrid: l,
795                        slidesSizesGrid: p
796                    }), n !== v && this.emit("slidesLengthChange"), o.length !== f && (this.params.watchOverflow && this.checkOverflow(), this.emit("snapGridLengthChange")), l.length !== m && this.emit("slidesGridLengthChange"), (e.watchSlidesProgress || e.watchSlidesVisibility) && this.updateSlidesOffset()
797                }
798            },
799            updateAutoHeight: function() {
800                var e,
801                    t = [],
802                    i = 0;
803                if ("auto" !== this.params.slidesPerView && this.params.slidesPerView > 1)
804                    for (e = 0; e < Math.ceil(this.params.slidesPerView); e += 1) {
805                        var s = this.activeIndex + e;
806                        if (s > this.slides.length)
807                            break;
808                        t.push(this.slides.eq(s)[0])
809                    }
810                else
811                    t.push(this.slides.eq(this.activeIndex)[0]);
812                for (e = 0; e < t.length; e += 1)
813                    if (void 0 !== t[e]) {
814                        var a = t[e].offsetHeight;
815                        i = a > i ? a : i
816                    }
817                i && this.$wrapperEl.css("height", i + "px")
818            },
819            updateSlidesOffset: function() {
820                for (var e = this.slides, t = 0; t < e.length; t += 1)
821                    e[t].swiperSlideOffset = this.isHorizontal() ? e[t].offsetLeft : e[t].offsetTop
822            },
823            updateSlidesProgress: function(e) {
824                void 0 === e && (e = this.translate || 0);
825                var t = this.params,
826                    i = this.slides,
827                    s = this.rtl;
828                if (0 !== i.length) {
829                    void 0 === i[0].swiperSlideOffset && this.updateSlidesOffset();
830                    var a = -e;
831                    s && (a = e), i.removeClass(t.slideVisibleClass);
832                    for (var r = 0; r < i.length; r += 1) {
833                        var n = i[r],
834                            o = (a + (t.centeredSlides ? this.minTranslate() : 0) - n.swiperSlideOffset) / (n.swiperSlideSize + t.spaceBetween);
835                        if (t.watchSlidesVisibility) {
836                            var l = -(a - n.swiperSlideOffset),
837                                d = l + this.slidesSizesGrid[r];
838                            (l >= 0 && l < this.size || d > 0 && d <= this.size || l <= 0 && d >= this.size) && i.eq(r).addClass(t.slideVisibleClass)
839                        }
840                        n.progress = s ? -o : o
841                    }
842                }
843            },
844            updateProgress: function(e) {
845                void 0 === e && (e = this.translate || 0);
846                var t = this.params,
847                    i = this.maxTranslate() - this.minTranslate(),
848                    s = this.progress,
849                    a = this.isBeginning,
850                    r = this.isEnd,
851                    n = a,
852                    o = r;
853                0 === i ? (s = 0, a = !0, r = !0) : (a = (s = (e - this.minTranslate()) / i) <= 0, r = s >= 1), d.extend(this, {
854                    progress: s,
855                    isBeginning: a,
856                    isEnd: r
857                }), (t.watchSlidesProgress || t.watchSlidesVisibility) && this.updateSlidesProgress(e), a && !n && this.emit("reachBeginning toEdge"), r && !o && this.emit("reachEnd toEdge"), (n && !a || o && !r) && this.emit("fromEdge"), this.emit("progress", s)
858            },
859            updateSlidesClasses: function() {
860                var e,
861                    t = this.slides,
862                    i = this.params,
863                    s = this.$wrapperEl,
864                    a = this.activeIndex,
865                    r = this.realIndex,
866                    n = this.virtual && i.virtual.enabled;
867                t.removeClass(i.slideActiveClass + " " + i.slideNextClass + " " + i.slidePrevClass + " " + i.slideDuplicateActiveClass + " " + i.slideDuplicateNextClass + " " + i.slideDuplicatePrevClass), (e = n ? this.$wrapperEl.find("." + i.slideClass + '[data-swiper-slide-index="' + a + '"]') : t.eq(a)).addClass(i.slideActiveClass), i.loop && (e.hasClass(i.slideDuplicateClass) ? s.children("." + i.slideClass + ":not(." + i.slideDuplicateClass + ')[data-swiper-slide-index="' + r + '"]').addClass(i.slideDuplicateActiveClass) : s.children("." + i.slideClass + "." + i.slideDuplicateClass + '[data-swiper-slide-index="' + r + '"]').addClass(i.slideDuplicateActiveClass));
868                var o = e.nextAll("." + i.slideClass).eq(0).addClass(i.slideNextClass);
869                i.loop && 0 === o.length && (o = t.eq(0)).addClass(i.slideNextClass);
870                var l = e.prevAll("." + i.slideClass).eq(0).addClass(i.slidePrevClass);
871                i.loop && 0 === l.length && (l = t.eq(-1)).addClass(i.slidePrevClass), i.loop && (o.hasClass(i.slideDuplicateClass) ? s.children("." + i.slideClass + ":not(." + i.slideDuplicateClass + ')[data-swiper-slide-index="' + o.attr("data-swiper-slide-index") + '"]').addClass(i.slideDuplicateNextClass) : s.children("." + i.slideClass + "." + i.slideDuplicateClass + '[data-swiper-slide-index="' + o.attr("data-swiper-slide-index") + '"]').addClass(i.slideDuplicateNextClass), l.hasClass(i.slideDuplicateClass) ? s.children("." + i.slideClass + ":not(." + i.slideDuplicateClass + ')[data-swiper-slide-index="' + l.attr("data-swiper-slide-index") + '"]').addClass(i.slideDuplicatePrevClass) : s.children("." + i.slideClass + "." + i.slideDuplicateClass + '[data-swiper-slide-index="' + l.attr("data-swiper-slide-index") + '"]').addClass(i.slideDuplicatePrevClass))
872            },
873            updateActiveIndex: function(e) {
874                var t,
875                    i = this.rtl ? this.translate : -this.translate,
876                    s = this.slidesGrid,
877                    a = this.snapGrid,
878                    r = this.params,
879                    n = this.activeIndex,
880                    o = this.realIndex,
881                    l = this.snapIndex,
882                    h = e;
883                if (void 0 === h) {
884                    for (var p = 0; p < s.length; p += 1)
885                        void 0 !== s[p + 1] ? i >= s[p] && i < s[p + 1] - (s[p + 1] - s[p]) / 2 ? h = p : i >= s[p] && i < s[p + 1] && (h = p + 1) : i >= s[p] && (h = p);
886                    r.normalizeSlideIndex && (h < 0 || void 0 === h) && (h = 0)
887                }
888                if ((t = a.indexOf(i) >= 0 ? a.indexOf(i) : Math.floor(h / r.slidesPerGroup)) >= a.length && (t = a.length - 1), h !== n) {
889                    var c = parseInt(this.slides.eq(h).attr("data-swiper-slide-index") || h, 10);
890                    d.extend(this, {
891                        snapIndex: t,
892                        realIndex: c,
893                        previousIndex: n,
894                        activeIndex: h
895                    }), this.emit("activeIndexChange"), this.emit("snapIndexChange"), o !== c && this.emit("realIndexChange"), this.emit("slideChange")
896                } else
897                    t !== l && (this.snapIndex = t, this.emit("snapIndexChange"))
898            },
899            updateClickedSlide: function(e) {
900                var t = this.params,
901                    i = s(e.target).closest("." + t.slideClass)[0],
902                    a = !1;
903                if (i)
904                    for (var r = 0; r < this.slides.length; r += 1)
905                        this.slides[r] === i && (a = !0);
906                if (!i || !a)
907                    return this.clickedSlide = void 0, void (this.clickedIndex = void 0);
908                this.clickedSlide = i, this.virtual && this.params.virtual.enabled ? this.clickedIndex = parseInt(s(i).attr("data-swiper-slide-index"), 10) : this.clickedIndex = s(i).index(), t.slideToClickedSlide && void 0 !== this.clickedIndex && this.clickedIndex !== this.activeIndex && this.slideToClickedSlide()
909            }
910        },
911        v = {
912            getTranslate: function(e) {
913                void 0 === e && (e = this.isHorizontal() ? "x" : "y");
914                var t = this.params,
915                    i = this.rtl,
916                    s = this.translate,
917                    a = this.$wrapperEl;
918                if (t.virtualTranslate)
919                    return i ? -s : s;
920                var r = d.getTranslate(a[0], e);
921                return i && (r = -r), r || 0
922            },
923            setTranslate: function(e, t) {
924                var i = this.rtl,
925                    s = this.params,
926                    a = this.$wrapperEl,
927                    r = this.progress,
928                    n = 0,
929                    o = 0;
930                this.isHorizontal() ? n = i ? -e : e : o = e, s.roundLengths && (n = Math.floor(n), o = Math.floor(o)), s.virtualTranslate || (h.transforms3d ? a.transform("translate3d(" + n + "px, " + o + "px, 0px)") : a.transform("translate(" + n + "px, " + o + "px)")), this.translate = this.isHorizontal() ? n : o;
931                var l = this.maxTranslate() - this.minTranslate();
932                (0 === l ? 0 : (e - this.minTranslate()) / l) !== r && this.updateProgress(e), this.emit("setTranslate", this.translate, t)
933            },
934            minTranslate: function() {
935                return -this.snapGrid[0]
936            },
937            maxTranslate: function() {
938                return -this.snapGrid[this.snapGrid.length - 1]
939            }
940        },
941        f = {
942            setTransition: function(e, t) {
943                this.$wrapperEl.transition(e), this.emit("setTransition", e, t)
944            },
945            transitionStart: function(e, t) {
946                void 0 === e && (e = !0);
947                var i = this.activeIndex,
948                    s = this.params,
949                    a = this.previousIndex;
950                s.autoHeight && this.updateAutoHeight();
951                var r = t;
952                if (r || (r = i > a ? "next" : i < a ? "prev" : "reset"), this.emit("transitionStart"), e && i !== a) {
953                    if ("reset" === r)
954                        return void this.emit("slideResetTransitionStart");
955                    this.emit("slideChangeTransitionStart"), "next" === r ? this.emit("slideNextTransitionStart") : this.emit("slidePrevTransitionStart")
956                }
957            },
958            transitionEnd: function(e, t) {
959                void 0 === e && (e = !0);
960                var i = this.activeIndex,
961                    s = this.previousIndex;
962                this.animating = !1, this.setTransition(0);
963                var a = t;
964                if (a || (a = i >
vendor: 5,412 bytes, lines 964-1048
964 s ? "next" : i < s ? "prev" : "reset"), this.emit("transitionEnd"), e && i !== s) {
965                    if ("reset" === a)
966                        return void this.emit("slideResetTransitionEnd");
967                    this.emit("slideChangeTransitionEnd"), "next" === a ? this.emit("slideNextTransitionEnd") : this.emit("slidePrevTransitionEnd")
968                }
969            }
970        },
971        m = {
972            slideTo: function(e, t, i, s) {
973                void 0 === e && (e = 0), void 0 === t && (t = this.params.speed), void 0 === i && (i = !0);
974                var a = this,
975                    r = e;
976                r < 0 && (r = 0);
977                var n = a.params,
978                    o = a.snapGrid,
979                    l = a.slidesGrid,
980                    d = a.previousIndex,
981                    p = a.activeIndex,
982                    c = a.rtl,
983                    u = a.$wrapperEl;
984                if (a.animating && n.preventIntercationOnTransition)
985                    return !1;
986                var v = Math.floor(r / n.slidesPerGroup);
987                v >= o.length && (v = o.length - 1), (p || n.initialSlide || 0) === (d || 0) && i && a.emit("beforeSlideChangeStart");
988                var f,
989                    m = -o[v];
990                if (a.updateProgress(m), n.normalizeSlideIndex)
991                    for (var g = 0; g < l.length; g += 1)
992                        -Math.floor(100 * m) >= Math.floor(100 * l[g]) && (r = g);
993                if (a.initialized && r !== p) {
994                    if (!a.allowSlideNext && m < a.translate && m < a.minTranslate())
995                        return !1;
996                    if (!a.allowSlidePrev && m > a.translate && m > a.maxTranslate() && (p || 0) !== r)
997                        return !1
998                }
999                return f = r > p ? "next" : r < p ? "prev" : "reset", c && -m === a.translate || !c && m === a.translate ? (a.updateActiveIndex(r), n.autoHeight && a.updateAutoHeight(), a.updateSlidesClasses(), "slide" !== n.effect && a.setTranslate(m), "reset" !== f && (a.transitionStart(i, f), a.transitionEnd(i, f)), !1) : (0 !== t && h.transition ? (a.setTransition(t), a.setTranslate(m), a.updateActiveIndex(r), a.updateSlidesClasses(), a.emit("beforeTransitionStart", t, s), a.transitionStart(i, f), a.animating || (a.animating = !0, u.transitionEnd(function() {
1000                    a && !a.destroyed && a.transitionEnd(i, f)
1001                }))) : (a.setTransition(0), a.setTranslate(m), a.updateActiveIndex(r), a.updateSlidesClasses(), a.emit("beforeTransitionStart", t, s), a.transitionStart(i, f), a.transitionEnd(i, f)), !0)
1002            },
1003            slideToLoop: function(e, t, i, s) {
1004                void 0 === e && (e = 0), void 0 === t && (t = this.params.speed), void 0 === i && (i = !0);
1005                var a = e;
1006                return this.params.loop && (a += this.loopedSlides), this.slideTo(a, t, i, s)
1007            },
1008            slideNext: function(e, t, i) {
1009                void 0 === e && (e = this.params.speed), void 0 === t && (t = !0);
1010                var s = this.params,
1011                    a = this.animating;
1012                return s.loop ? !a && (this.loopFix(), this._clientLeft = this.$wrapperEl[0].clientLeft, this.slideTo(this.activeIndex + s.slidesPerGroup, e, t, i)) : this.slideTo(this.activeIndex + s.slidesPerGroup, e, t, i)
1013            },
1014            slidePrev: function(e, t, i) {
1015                void 0 === e && (e = this.params.speed), void 0 === t && (t = !0);
1016                var s = this.params,
1017                    a = this.animating;
1018                return s.loop ? !a && (this.loopFix(), this._clientLeft = this.$wrapperEl[0].clientLeft, this.slideTo(this.activeIndex - 1, e, t, i)) : this.slideTo(this.activeIndex - 1, e, t, i)
1019            },
1020            slideReset: function(e, t, i) {
1021                void 0 === e && (e = this.params.speed), void 0 === t && (t = !0);
1022                return this.slideTo(this.activeIndex, e, t, i)
1023            },
1024            slideToClickedSlide: function() {
1025                var e,
1026                    t = this,
1027                    i = t.params,
1028                    a = t.$wrapperEl,
1029                    r = "auto" === i.slidesPerView ? t.slidesPerViewDynamic() : i.slidesPerView,
1030                    n = t.clickedIndex;
1031                if (i.loop) {
1032                    if (t.animating)
1033                        return;
1034                    e = parseInt(s(t.clickedSlide).attr("data-swiper-slide-index"), 10), i.centeredSlides ? n < t.loopedSlides - r / 2 || n > t.slides.length - t.loopedSlides + r / 2 ? (t.loopFix(), n = a.children("." + i.slideClass + '[data-swiper-slide-index="' + e + '"]:not(.' + i.slideDuplicateClass + ")").eq(0).index(), d.nextTick(function() {
1035                        t.slideTo(n)
1036                    })) : t.slideTo(n) : n > t.slides.length - r ? (t.loopFix(), n = a.children("." + i.slideClass + '[data-swiper-slide-index="' + e + '"]:not(.' + i.slideDuplicateClass + ")").eq(0).index(), d.nextTick(function() {
1037                        t.slideTo(n)
1038                    })) : t.slideTo(n)
1039                } else
1040                    t.slideTo(n)
1041            }
1042        },
1043        g = {
1044            loopCreate: function() {
1045                var t = this,
1046                    i = t.params,
1047                    a = t.$wrapperEl;
1048                a.children("." + i.slideClass + "." + i.slideDuplicateClass).remove();
1049                var r = a.children("." + i.slideClass);
1050                if (i.loopFillGroupWithBlank) {
1051                    var n = i.slidesPerGroup - r.length % i.slidesPerGroup;
1052                    if (n !== i.slidesPerGroup) {
1053                        for (var o = 0; o < n; o += 1) {
1054                            var l = s(e.createElement("div")).addClass(i.slideClass + " " + i.slideBlankClass);
1055                            a.append(l)
1056                        }
1057                        r = a.children("." + i.slideClass)
1058                    }
1059                }
1060                "auto" !== i.slidesPerView || i.loopedSlides || (i.loopedSlides = r.length), t.loopedSlides = parseInt(i.loopedSlides || i.slidesPerView, 10), t.loopedSlides += i.loopAdditionalSlides, t.loopedSlides > r.length && (t.loopedSlides = r.length);
1061                var d = [],
1062                    h = [];
1063                r.each(function(e, i) {
1064                    var a = s(i);
1065                    e < t.loopedSlides && h.push(i), e < r.length && e >= r.length - t.loopedSlides && d.push(i), a.attr("data-swiper-slide-index", e)
1066                });
1067                for (var p = 0; p < h.length; p += 1)
1068                    a.append(s(h[p].cloneNode(!0)).addClass(i.slideDuplicateClass));
1069                for (var c = d.length - 1; c >= 0; c -= 1)
1070                    a.prepend(s(d[c].cloneNode(!0)).addClass(i.slideDuplicateClass))
1071            },
1072            loopFix: function() {
1073                var e,
1074                    t = this.params,
1075                    i = this.activeIndex,
1076                    s = this.slides,
1077                    a = this.loopedSlides,
1078                    r = this.allowSlidePrev,
1079                    n = this.allowSlideNext,
1080                    o = this.snapGrid,
1081                    l = this.rtl;
1082                this.allowSlidePrev = !0, this.allowSlideNext = !0;
1083                var d = -o[i] - this.getTranslate();
1084                i < a ? (e = s.length - 3 * a + i, e += a, this.slideTo(e, 0, !1, !0) && 0 !== d && this.setTranslate((l ? -this.translate : this.translate) - d)) : ("auto" === t.slidesPerView && i >= 2 * a || i > s.length - 2 * t.slidesPerView) && (e = -s.length + i + a, e += a, this.slideTo(e, 0, !1, !0) && 0 !== d && this.setTranslate((l ? -this.translate : this.translate) - d));
1085                this.allowSlidePrev = r, this.allowSlideNext = n
1086            },
1087            loopDestroy: function() {
1088                var e = this.$wrapperEl,
1089                    t = this.params,
1090                    i = this.slides;
1091                e.children("." + t.slideClass + "." + t.slideDuplicateClass).remove(), i.removeAttr("data-swiper-slide-index")
1092            }
1093        },
1094        b = {
1095            setGrabCursor: function(e) {
1096                if (!h.touch && this.params.simulateTouch) {
1097                    var t = this.el;
1098                    t.style.cursor = "move", t.style.cursor = e ? "-webkit-grabbing" : "-webkit-grab", t.style.cursor = e ? "-moz-grabbin" : "-moz-grab", t.style.cursor = e ? "grabbing" : "grab"
1099                }
1100            },
1101            unsetGrabCursor: function() {
1102                h.touch || (this.el.style.cursor = "")
1103            }
1104        },
1105        w = {
1106            appendSlide: function(e) {
1107                var t = this.$wrapperEl,
1108                    i = this.params;
1109                if (i.loop && this.loopDestroy(), "object" == typeof e && "length" in e)
1110                    for (var s = 0; s < e.length; s += 1)
1111                        e[s] && t.append(e[s]);
1112                else
1113                    t.append(e);
1114                i.loop && this.loopCreate(), i.observer && h.observer || this.update()
1115            },
1116            prependSlide: function(e) {
1117                var t = this.params,
1118                    i = this.$wrapperEl,
1119                    s = this.activeIndex;
1120                t.loop && this.loopDestroy();
1121                var a = s + 1;
1122                if ("object" == typeof e && "length" in e) {
1123                    for (var r = 0; r < e.length; r += 1)
1124                        e[r] && i.prepend(e[r]);
1125                    a = s + e.length
1126                } else
1127                    i.prepend(e);
1128                t.loop && this.loopCreate(), t.observer && h.observer || this.update(), this.slideTo(a, 0, !1)
1129            },
1130            removeSlide: function(e) {
1131                var t = this.params,
1132                    i = this.$wrapperEl,
1133                    s = this.activeIndex;
1134                t.loop && (this.loopDestroy(), this.slides = i.children("." + t.slideClass));
1135                var a,
1136                    r = s;
1137                if ("object" == typeof e && "length" in e) {
1138                    for (var n = 0; n < e.length; n += 1)
1139                        a = e[n], this.slides[a] && this.slides.eq(a).remove(), a < r && (r -= 1);
1140                    r = Math.max(r, 0)
1141                } else
1142                    a = e, this.slides[a] && this.slides.eq(a).remove(), a < r && (r -= 1), r = Math.max(r, 0);
1143                t.loop && this.loopCreate(), t.observer && h.observer || this.update(), t.loop ? this.slideTo(r + this.loopedSlides, 0, !1) : this.slideTo(r, 0, !1)
1144            },
1145            removeAllSlides: function() {
1146                for (var e = [], t = 0; t < this.slides.length; t += 1)
1147                    e.push(t);
1148                this.removeSlide(e)
1149            }
1150        },
1151        y = function() {
1152            var i = t.navigator.userAgent,
1153                s = {
1154                    ios: !1,
1155                    android: !1,
1156                    androidChrome: !1,
1157                    desktop: !1,
1158                    windows: !1,
1159                    iphone: !1,
1160                    ipod: !1,
1161                    ipad: !1,
1162                    cordova: t.cordova || t.phonegap,
1163                    phonegap: t.cordova || t.phonegap
1164                },
1165                a = i.match(/(Windows Phone);?[\s\/]+([\d.]+)?/),
1166                r = i.match(/(Android);?[\s\/]+([\d.]+)?/),
1167                n = i.match(/(iPad).*OS\s([\d_]+)/),
1168                o = i.match(/(iPod)(.*OS\s([\d_]+))?/),
1169                l = !n && i.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
1170            if (a && (s.os = "windows", s.osVersion = a[2], s.windows = !0), r && !a && (s.os = "android", s.osVersion = r[2], s.android = !0, s.androidChrome = i.toLowerCase().indexOf("chrome") >= 0), (n || l || o) && (s.os = "ios", s.ios = !0), l && !o && (s.osVersion = l[2].replace(/_/g, "."), s.iphone = !0), n && (s.osVersion = n[2].replace(/_/g, "."), s.ipad = !0), o && (s.osVersion = o[3] ? o[3].replace(/_/g, ".") : null, s.iphone = !0), s.ios && s.osVersion && i.indexOf("Version/") >= 0 && "10" === s.osVersion.split(".")[0] && (s.osVersion = i.toLowerCase().split("version/")[1].split(" ")[0]), s.desktop = !(s.os || s.android || s.webView), s.webView = (l || n || o) && i.match(/.*AppleWeb
1170Kit(?!.*Safari)/i), s.os && "ios" === s.os) {
1171                var d = s.osVersion.split("."),
1172                    h = e.querySelector('meta[name="viewport"]');
1173                s.minimalUi = !s.webView && (o || l) && (1 * d[0] == 7 ? 1 * d[1] >= 1 : 1 * d[0] > 7) && h && h.getAttribute("content").indexOf("minimal-ui") >= 0
1174            }
1175            return s.pixelRatio = t.devicePixelRatio || 1, s
1176        }(),
1177        x = function(i) {
1178            var a = this.touchEventsData,
1179                r = this.params,
1180                n = this.touches;
1181            if (!this.animating || !r.preventIntercationOnTransition) {
1182                var o = i;
1183                if (o.originalEvent && (o = o.originalEvent), a.isTouchEvent = "touchstart" === o.type, (a.isTouchEvent || !("which" in o) || 3 !== o.which) && (!a.isTouched || !a.isMoved))
1184                    if (r.noSwiping && s(o.target).closest(r.noSwipingSelector ? r.noSwipingSelector : "." + r.noSwipingClass)[0])
1185                        this.allowClick = !0;
1186                    else if (!r.swipeHandler || s(o).closest(r.swipeHandler)[0]) {
1187                        n.currentX = "touchstart" === o.type ? o.targetTouches[0].pageX : o.pageX, n.currentY = "touchstart" === o.type ? o.targetTouches[0].pageY : o.pageY;
1188                        var l = n.currentX,
1189                            h = n.currentY;
1190                        if (!(y.ios && !y.cordova && r.iOSEdgeSwipeDetection && l <= r.iOSEdgeSwipeThreshold && l >= t.screen.width - r.iOSEdgeSwipeThreshold)) {
1191                            if (d.extend(a, {
1192                                isTouched: !0,
1193                                isMoved: !1,
1194                                allowTouchCallbacks: !0,
1195                                isScrolling: void 0,
1196                                startMoving: void 0
1197                            }), n.startX = l, n.startY = h, a.touchStartTime = d.now(), this.allowClick = !0, this.updateSize(), this.swipeDirection = void 0, r.threshold > 0 && (a.allowThresholdMove = !1), "touchstart" !== o.type) {
1198                                var p = !0;
1199                                s(o.target).is(a.formElements) && (p = !1), e.activeElement && s(e.activeElement).is(a.formElements) && e.activeElement !== o.target && e.activeElement.blur(), p && this.allowTouchMove && o.preventDefault()
1200                            }
1201                            this.emit("touchStart", o)
1202                        }
1203                    }
1204            }
1205        },
1206        E = function(t) {
1207            var i = this.touchEventsData,
1208                a = this.params,
1209                r = this.touches,
1210                n = this.rtl,
1211                o = t;
1212            if (o.originalEvent && (o = o.originalEvent), i.isTouched) {
1213                if (!i.isTouchEvent || "mousemove" !== o.type) {
1214                    var l = "touchmove" === o.type ? o.targetTouches[0].pageX : o.pageX,
1215                        h = "touchmove" === o.type ? o.targetTouches[0].pageY : o.pageY;
1216                    if (o.preventedByNestedSwiper)
1217                        return r.startX = l, void (r.startY = h);
1218                    if (!this.allowTouchMove)
1219                        return this.allowClick = !1, void (i.isTouched && (d.extend(r, {
1220                            startX: l,
1221                            startY: h,
1222                            currentX: l,
1223                            currentY: h
1224                        }), i.touchStartTime = d.now()));
1225                    if (i.isTouchEvent && a.touchReleaseOnEdges && !a.loop)
1226                        if (this.isVertical()) {
1227                            if (h < r.startY && this.translate <= this.maxTranslate() || h > r.startY && this.translate >= this.minTranslate())
1228                                return i.isTouched = !1, void (i.isMoved = !1)
1229                        } else if (l < r.startX && this.translate <= this.maxTranslate() || l > r.startX && this.translate >= this.minTranslate())
1230                            return;
1231                    if (i.isTouchEvent && e.activeElement && o.target === e.activeElement && s(o.target).is(i.formElements))
1232                        return i.isMoved = !0, void (this.allowClick = !1);
1233                    if (i.allowTouchCallbacks && this.emit("touchMove", o), !(o.targetTouches && o.targetTouches.length > 1)) {
1234                        r.currentX = l, r.currentY = h;
1235                        var p,
1236                            c = r.currentX - r.startX,
1237                            u = r.currentY - r.startY;
1238                        if (void 0 === i.isScrolling)
1239                            this.isHorizontal() && r.currentY === r.startY || this.isVertical() && r.currentX === r.startX ? i.isScrolling = !1 : c * c + u * u >= 25 && (p = 180 * Math.atan2(Math.abs(u), Math.abs(c)) / Math.PI, i.isScrolling = this.isHorizontal() ? p > a.touchAngle : 90 - p > a.touchAngle);
1240                        if (i.isScrolling && this.emit("touchMoveOpposite", o), "undefined" == typeof startMoving && (r.currentX === r.startX && r.currentY === r.startY || (i.startMoving = !0)), i.isScrolling)
1241                            i.isTouched = !1;
1242                        else if (i.startMoving) {
1243                            this.allowClick = !1, o.preventDefault(), a.touchMoveStopPropagation && !a.nested && o.stopPropagation(), i.isMoved || (a.loop && this.loopFix(), i.startTranslate = this.getTranslate(), this.setTransition(0), this.animating && this.$wrapperEl.trigger("webkitTransitionEnd transitionend"), i.allowMomentumBounce = !1, !a.grabCursor || !0 !== this.allowSlideNext && !0 !== this.allowSlidePrev || this.setGrabCursor(!0), this.emit("sliderFirstMove", o)), this.emit("sliderMove", o), i.isMoved = !0;
1244                            var v = this.isHorizontal() ? c : u;
1245                            r.diff = v, v *= a.touchRatio, n && (v = -v), this.swipeDirection = v > 0 ? "prev" : "next", i.currentTranslate = v + i.startTranslate;
1246                            var f = !0,
1247                                m = a.resistanceRatio;
1248                            if (a.touchReleaseOnEdges && (m = 0), v > 0 && i.currentTranslate > this.minTranslate() ? (f = !1, a.resistance && (i.currentTranslate = this.minTranslate() - 1 + Math.pow(-this.minTranslate() + i.startTranslate + v, m))) : v < 0 && i.currentTranslate < this.maxTranslate() && (f = !1, a.resistance && (i.currentTranslate = this.maxTranslate() + 1 - Math.pow(this.maxTranslate() - i.startTranslate - v, m))), f && (o.preventedByNestedSwiper = !0), !this.allowSlideNext && "next" === this.swipeDirection && i.currentTranslate < i.startTranslate && (i.currentTranslate = i.startTranslate), !this.allowSlidePrev && "prev" === this.swipeDirection && i.currentTranslate > i.startTranslate && (i.currentTranslate = i.startTranslate), a.threshold > 0) {
1249                                if (!(Math.abs(v) > a.threshold || i.allowThresholdMove))
1250                                    return void (i.currentTranslate = i.startTranslate);
1251                                if (!i.allowThresholdMove)
1252                                    return i.allowThresholdMove = !0, r.startX = r.currentX, r.startY = r.currentY, i.currentTranslate = i.startTranslate, void (r.diff = this.isHorizontal() ? r.currentX - r.startX : r.currentY - r.startY)
1253                            }
1254                            a.followFinger && ((a.freeMode || a.watchSlidesProgress || a.watchSlidesVisibility) && (this.updateActiveIndex(), this.updateSlidesClasses()), a.freeMode && (0 === i.velocities.length && i.velocities.push({
1255                                position: r[this.isHorizontal() ? "startX" : "startY"],
1256                                time: i.touchStartTime
1257                            }), i.velocities.push({
1258                                position: r[this.isHorizontal() ? "currentX" : "currentY"],
1259                                time: d.now()
1260                            })), this.updateProgress(i.currentTranslate), this.setTranslate(i.currentTranslate))
1261                        }
1262                    }
1263                }
1264            } else
1265                i.isMoved && i.isScrolling && this.emit("touchMoveOpposite", o)
1266        },
1267        T = function(e) {
1268            var t = this,
1269                i = t.touchEventsData,
1270                s = t.params,
1271                a = t.touches,
1272                r = t.rtl,
1273                n = t.$wrapperEl,
1274                o = t.slidesGrid,
1275                l = t.snapGrid,
1276                h = e;
1277            if (h.originalEvent && (h = h.originalEvent), i.allowTouchCallbacks && t.emit("touchEnd", h), i.allowTouchCallbacks = !1, !i.isTouched)
1278                return i.isMoved && s.grabCursor && t.setGrabCursor(!1), void (i.isMoved = !1);
1279            s.grabCursor && i.isMoved && i.isTouched && (!0 === t.allowSlideNext || !0 === t.allowSlidePrev) && t.setGrabCursor(!1);
1280            var p,
1281                c = d.now(),
1282                u = c - i.touchStartTime;
1283            if (t.allowClick && (t.updateClickedSlide(h), t.emit("tap", h), u < 300 && c - i.lastClickTime > 300 && (i.clickTimeout && clearTimeout(i.clickTimeout), i.clickTimeout = d.nextTick(function() {
1284                t && !t.destroyed && t.emit("click", h)
1285            }, 300)), u < 300 && c - i.lastClickTime < 300 && (i.clickTimeout && clearTimeout(i.clickTimeout), t.emit("doubleTap", h))), i.lastClickTime = d.now(), d.nextTick(function() {
1286                t.destroyed || (t.allowClick = !0)
1287            }), !i.isTouched || !i.isMoved || !t.swipeDirection || 0 === a.diff || i.currentTranslate === i.startTranslate)
1288                return i.isTouched = !1, void (i.isMoved = !1);
1289            if (i.isTouched = !1, i.isMoved = !1, p = s.followFinger ? r ? t.translate : -t.translate : -i.currentTranslate, s.freeMode) {
1290                if (p < -t.minTranslate())
1291                    return void t.slideTo(t.activeIndex);
1292                if (p > -t.maxTranslate())
1293                    return void (t.slides.length < l.length ? t.slideTo(l.length - 1) : t.slideTo(t.slides.length - 1));
1294                if (s.freeModeMomentum) {
1295                    if (i.velocities.length > 1) {
1296                        var v = i.velocities.pop(),
1297                            f = i.velocities.pop(),
1298                            m = v.position - f.position,
1299                            g = v.time - f.time;
1300                        t.velocity = m / g, t.velocity /= 2, Math.abs(t.velocity) < s.freeModeMinimumVelocity && (t.velocity = 0), (g > 150 || d.now() - v.time > 300) && (t.velocity = 0)
1301                    } else
1302                        t.velocity = 0;
1303                    t.velocity *= s.freeModeMomentumVelocityRatio, i.velocities.length = 0;
1304                    var b = 1e3 * s.freeModeMomentumRatio,
1305                        w = t.velocity * b,
1306                        y = t.translate + w;
1307                    r && (y = -y);
1308                    var x,
1309                        E = !1,
1310                        T = 20 * Math.abs(t.velocity) * s.freeModeMomentumBounceRatio;
1311                    if (y < t.maxTranslate())
1312                        s.freeModeMomentumBounce ? (y + t.maxTranslate() < -T && (y = t.maxTranslate() - T), x = t.maxTranslate(), E = !0, i.allowMomentumBounce = !0) : y = t.maxTranslate();
1313                    else if (y > t.minTranslate())
1314                        s.freeModeMomentumBounce ? (y - t.minTranslate() > T && (y = t.minTranslate() + T), x = t.minTranslate(), E = !0, i.allowMomentumBounce = !0) : y = t.minTranslate();
1315                    else if (s.freeModeSticky) {
1316                        for (var S, C = 0; C < l.length; C += 1)
1317                            if (l[C] > -y) {
1318                                S = C;
1319                                break
1320                            }
1321                        y = -(y = Math.abs(l[S] - y) < Math.abs(l[S - 1] - y) || "next" === t.swipeDirection ? l[S] : l[S - 1])
1322                    }
1323                    if (0 !== t.velocity)
1324                        b = r ? Math.abs((-y - t.translate) / t.velocity) : Math.abs((y - t.translate) / t.velocity);
1325                    else if (s.freeModeSticky)
1326                        return void t.slideReset();
1327                    s.freeModeMomentumBounce && E ? (t.updateProgress(x), t.setTransition(b), t.setTranslate(y), t.transitionStart(!0, t.swipeDirection), t.animating = !0, n.transitionEnd(function() {
1328                        t && !t.destroyed && i.allowMomentumBounce && (t.emit("momentumBounce"), t.setTransition(s.speed), t.setTranslate(x), n.transitionEnd(function() {
1329                            t && !t.destroyed && t.transitionEnd()
1330                        }))
1331                    })) : t.velocity ? (t.updateProgress(y), t.setTransition(b), t.setTranslate(y), t.transitionStart(!0, t.swipeDirection), t.animating || (t.animating = !0, n.transitionEnd(function() {
1332                        t && !t.destroyed && t.transitionEnd()
1333                    }))) : t.updateProgress(y), t.updateActiveIndex(), t.updateSlidesClasses()
1334                }
1335                (!s.freeModeMomentum || u >= s.longSwipesMs) && (t.updateProgress(), t.updateActiveIndex(), t.updateSlidesClasses())
1336            } else {
1337                for (var M = 0, z = t.slidesSizesGrid[0], P = 0; P < o.length; P += s.slidesPerGroup)
1338                    void 0 !== o[P + s.slidesPerGroup] ? p >= o[P] && p < o[P + s.slidesPerGroup] && (M = P, z = o[P + s.slidesPerGroup] - o[P]) : p >= o[P] && (M = P, z = o[o.length - 1] - o[o.length - 2]);
1339                var k = (p - o[M]) / z;
1340                if (u > s.longSwipesMs) {
1341                    if (!s.longSwipes)
1342                        return void t.slideTo(t.activeIndex);
1343                    "next" === t.swipeDirection && (k >= s.longSwipesRatio ? t.slideTo(M + s.slidesPerGroup) : t.slideTo(M)), "prev" === t.swipeDirection && (k > 1 - s.longSwipesRatio ? t.slideTo(M + s.slidesPerGroup) : t.slideTo(M))
1344                } else {
1345                    if (!s.shortSwipes)
1346                        return void t.slideTo(t.activeIndex);
1347                    "next" === t.swipeDirection && t.slideTo(M + s.slidesPerGroup), "prev" === t.swipeDirection && t.slideTo(M)
1348                }
1349            }
1350        },
1351        S = function() {
1352            var e = this.params,
1353                t = this.el;
1354            if (!t || 0 !== t.offsetWidth) {
1355                e.breakpoints && this.setBreakpoint();
1356                var i = this.allowSlideNext,
1357                    s = this.allowSlidePrev;
1358                if (this.allowSlideNext = !0, this.allowSlidePrev = !0, this.updateSize(), this.updateSlides(), e.freeMode) {
1359                    var a = Math.min(Math.max(this.translate, this.maxTranslate()), this.minTranslate());
1360                    this.setTranslate(a), this.updateActiveIndex(), this.updateSlidesClasses(), e.autoHeight && this.updateAutoHeight()
1361                } else
1362                    this.updateSlidesClasses(), ("auto" === e.slidesPerView || e.slidesPerView > 1) && this.isEnd && !this.params.centeredSlides ? this.slideTo(this.slides.length - 1, 0, !1, !0) : this.slideTo(this.activeIndex, 0, !1, !0);
1363                this.allowSlidePrev = s, this.allowSlideNext = i
1364            }
1365        },
1366        C = function(e) {
1367            this.allowClick || (this.params.preventClicks && e.preventDefault(), this.params.preventClicksPropagation && this.animating && (e.stopPropagation(), e.stopImmediatePropagation()))
1368        };
1369    var M = {
1370            attachEvents: function() {
1371                var t = this.params,
1372                    i = this.touchEvents,
1373                    s = this.el,
1374                    a = this.wrapperEl;
1375                this.onTouchStart = x.bind(this), this.onTouchMove = E.bind(this), this.onTouchEnd = T.bind(this), this.onClick = C.bind(this);
1376                var r = "container" === t.touchEventsTarget ? s : a,
1377                    n = !!t.nested;
1378                if (h.touch || !h.pointerEvents && !h.prefixedPointerEvents) {
1379                    if (h.touch) {
1380                        var o = !("touchstart" !== i.start || !h.passiveListener || !t.passiveListeners) && {
1381                            passive: !0,
1382                            capture: !1
1383                        };
1384                        r.addEventListener(i.start, this.onTouchStart, o), r.addEventListener(i.move, this.onTouchMove, h.passiveListener ? {
1385                            passive: !1,
1386                            capture: n
1387                        } : n), r.addEventListener(i.end, this.onTouchEnd, o)
1388                    }
1389                    (t.simulateTouch && !y.ios && !y.android || t.simulateTouch && !h.touch && y.ios) && (r.addEventListener("mousedown", this.onTouchStart, !1), e.addEventListener("mousemove", this.onTouchMove, n), e.addEventListener("mouseup", this.onTouchEnd, !1))
1390                } else
1391                    r.addEventListener(i.start, this.onTouchStart, !1), e.addEventListener(i.move, this.onTouchMove, n), e.addEventListener(i.end, this.onTouchEnd, !1);
1392                (t.preventClicks || t.preventClicksPropagation) && r.addEventListener("click", this.onClick, !0), this.on("resize observerUpdate", S)
1393            },
1394            detachEvents: function() {
1395                var t = this.params,
1396                    i = this.touchEvents,
1397                    s = this.el,
1398                    a = this.wrapperEl,
1399                    r = "container" === t.touchEventsTarget ? s : a,
1400                    n = !!t.nested;
1401                if (h.touch || !h.pointerEvents && !h.prefixedPointerEvents) {
1402                    if (h.touch) {
1403                        var o = !("onTouchStart" !== i.start || !h.passiveListener || !t.passiveListeners) && {
1404                            passive: !0,
1405                            capture: !1
1406                        };
1407                        r.removeEventListener(i.start, this.onTouchStart, o), r.removeEventListener(i.move, this.onTouchMove, n), r.removeEventListener(i.end, this.onTouchEnd, o)
1408                    }
1409                    (t.simulateTouch && !y.ios && !y.android || t.simulateTouch && !h.touch && y.ios) && (r.removeEventListener("mousedown", this.onTouchStart, !1), e.removeEventListener("mousemove", this.onTouchMove, n), e.removeEventListener("mouseup", this.onTouchEnd, !1))
1410                } else
1411                    r.removeEventListener(i.start, this.onTouchStart, !1), e.removeEventListener(i.move, this.onTouchMove, n), e.removeEventListener(i.end, this.onTouchEnd, !1);
1412                (t.preventClicks || t.preventClicksPropagation) && r.removeEventListener("click", this.onClick, !0), this.off("resize observerUpdate", S)
1413            }
1414        },
1415        z = {
1416            setBreakpoint: function() {
1417                var e = this.activeIndex,
1418                    t = this.loopedSlides;
1419                void 0 === t && (t = 0);
1420                var i = this.params,
1421                    s = i.breakpoints;
1422                if (s && (!s || 0 !== Object.keys(s).length)) {
1423                    var a = this.getBreakpoint(s);
1424                    if (a && this.currentBreakpoint !== a) {
1425                        var r = a in s ? s[a] : this.originalParams,
1426                            n = i.loop && r.slidesPerView !== i.slidesPerView;
1427                        d.extend(this.params, r), d.extend(this, {
1428                            allowTouchMove: this.params.allowTouchMove,
1429                            allowSlideNext: this.params.allowSlideNext,
1430                            allowSlidePrev: this.params.allowSlidePrev
1431                        }), this.currentBreakpoint = a, n && (this.loopDestroy(), this.loopCreate(), this.updateSlides(), this.slideTo(e - t + this.loopedSlides, 0, !1)), this.emit("breakpoint", r)
1432                    }
1433                }
1434            },
1435            getBreakpoint: function(e) {
1436                if (e) {
1437                    var i = !1,
1438                        s = [];
1439                    Object.keys(e).forEach(function(e) {
1440                        s.push(e)
1441                    }), s.sort(function(e, t) {
1442                        return parseInt(e, 10) - parseInt(t, 10)
1443                    });
1444                    for (var a = 0; a < s.length; a += 1) {
1445                        var r = s[a];
1446                        r >= t.innerWidth && !i && (i = r)
1447                    }
1448                    return i || "max"
1449                }
1450            }
1451        },
1452        P = function() {
1453            return {
1454                isIE: !!t.navigator.userAgent.match(/Trident/g) || !!t.navigator.userAgent.match(/MSIE/g),
1455                isSafari: (e = t.navigator.userAgent.toLowerCase(), e.indexOf("safari") >= 0 && e.indexOf("chrome") < 0 && e.indexOf("android") < 0),
1456                isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(t.navigator.userAgent)
1457            };
1458            var e
1459        }();
1460    var k = {
1461            init: !0,
1462            direction: "horizontal",
1463            touchEventsTarget: "container",
1464            initialSlide: 0,
1465            speed: 300,
1466            preventIntercationOnTransition: !1,
1467            iOSEdgeSwipeDetection: !1,
1468            iOSEdgeSwipeThreshold: 20,
1469            freeMode: !1,
1470            freeModeMomentum: !0,
1471            freeModeMomentumRatio: 1,
1472            freeModeMomentumBounce: !0,
1473            freeModeMomentumBounceRatio: 1,
1474            freeModeMomentumVelocityRatio: 1,
1475            freeModeSticky: !1,
1476            freeModeMinimumVelocity: .02,
1477            autoHeight: !1,
1478            setWrapperSize: !1,
1479            virtualTranslate: !1,
1480            effect: "slide",
1481            breakpoints: void 0,
1482            spaceBetween: 0,
1483            slidesPerView: 1,
1484            slidesPerColumn: 1,
1485            slidesPerColumnFill: "column",
1486            slidesPerGroup: 1,
1487            centeredSlides: !1,
1488            slidesOffsetBefore: 0,
1489            slidesOffsetAfter: 0,
1490            normalizeSlideIndex: !0,
1491            watchOverflow: !1,
1492            roundLengths: !1,
1493            touchRatio: 1,
1494            touchAngle: 45,
1495            simulateTouch: !0,
1496            shortSwipes: !0,
1497            longSwipes: !0,
1498            longSwipesRatio: .5,
1499            longSwipesMs: 300,
1500            followFinger: !0,
1501            allowTouchMove: !0,
1502            threshold: 0,
1503            touchMoveStopPropagation: !0,
1504            touchReleaseOnEdges: !1,
1505            uniqueNavElements: !0,
1506            resistance: !0,
1507            resistanceRatio: .85,
1508            watchSlidesProgress: !1,
1509            watchSlidesVisibility: !1,
1510            grabCursor: !1,
1511            preventClicks: !0,
1512            preventClicksPropagation: !0,
1513            slideToClickedSlide: !1,
1514            preloadImages: !0,
1515            updateOnImagesReady: !0,
1516            loop: !1,
1517            loopAdditionalSlides: 0,
1518            loopedSlides: null,
1519            loopFillGroupWithBlank: !1,
1520            allowSlidePrev: !0,
1521            allowSlideNext: !0,
1522            swipeHandler: null,
1523            noSwiping: !0,
1524            noSwipingClass: "swiper-no-swiping",
1525            noSwipingSelector: null,
1526            passiveListeners: !0,
1527            containerModifierClass: "swiper-container-",
1528            slideClass: "swiper-slide",
1529            slideBlankClass: "swiper-slide-invisible-blank",
1530            slideActiveClass: "swiper-slide-active",
1531            slideDuplicateActiveClass: "swiper-slide-duplicate-active",
1532            slideVisibleClass: "swiper-slide-visible",
1533            slideDuplicateClass: "swiper-slide-duplicate",
1534            slideNextClass: "swiper-slide-next",
1535            slideDuplicateNextClass: "swiper-slide-duplicate-next",
1536            slidePrevClass: "swiper-slide-prev",
1537            slideDuplicatePrevClass: "swiper-slide-duplicate-prev",
1538            wrapperClass: "swiper-wrapper",
1539            runCallbacksOnInit: !0
1540        },
1541        $ = {
1542            update: u,
1543            translate: v,
1544            transition: f,
1545            slide: m,
1546            loop: g,
1547            grabCursor: b,
1548            manipulation: w,
1549            events: M,
1550            breakpoints: z,
1551            checkOverflow: {
1552                checkOverflow: function() {
1553                    var e = this.isLocked;
vendor: 7,906 bytes, lines 1554-1705
1554                    this.isLocked = 1 === this.snapGrid.length, this.allowTouchMove = !this.isLocked, e && e !== this.isLocked && (this.isEnd = !1, this.navigation.update())
1555                }
1556            },
1557            classes: {
1558                addClasses: function() {
1559                    var e = this.classNames,
1560                        t = this.params,
1561                        i = this.rtl,
1562                        s = this.$el,
1563                        a = [];
1564                    a.push(t.direction), t.freeMode && a.push("free-mode"), h.flexbox || a.push("no-flexbox"), t.autoHeight && a.push("autoheight"), i && a.push("rtl"), t.slidesPerColumn > 1 && a.push("multirow"), y.android && a.push("android"), y.ios && a.push("ios"), P.isIE && (h.pointerEvents || h.prefixedPointerEvents) && a.push("wp8-" + t.direction), a.forEach(function(i) {
1565                        e.push(t.containerModifierClass + i)
1566                    }), s.addClass(e.join(" "))
1567                },
1568                removeClasses: function() {
1569                    var e = this.$el,
1570                        t = this.classNames;
1571                    e.removeClass(t.join(" "))
1572                }
1573            },
1574            images: {
1575                loadImage: function(e, i, s, a, r, n) {
1576                    var o;
1577                    function l() {
1578                        n && n()
1579                    }
1580                    e.complete && r ? l() : i ? ((o = new t.Image).onload = l, o.onerror = l, a && (o.sizes = a), s && (o.srcset = s), i && (o.src = i)) : l()
1581                },
1582                preloadImages: function() {
1583                    var e = this;
1584                    function t() {
1585                        void 0 !== e && null !== e && e && !e.destroyed && (void 0 !== e.imagesLoaded && (e.imagesLoaded += 1), e.imagesLoaded === e.imagesToLoad.length && (e.params.updateOnImagesReady && e.update(), e.emit("imagesReady")))
1586                    }
1587                    e.imagesToLoad = e.$el.find("img");
1588                    for (var i = 0; i < e.imagesToLoad.length; i += 1) {
1589                        var s = e.imagesToLoad[i];
1590                        e.loadImage(s, s.currentSrc || s.getAttribute("src"), s.srcset || s.getAttribute("srcset"), s.sizes || s.getAttribute("sizes"), !0, t)
1591                    }
1592                }
1593            }
1594        },
1595        L = {},
1596        I = function(e) {
1597            function t() {
1598                for (var i, a, r, n = [], o = arguments.length; o--;)
1599                    n[o] = arguments[o];
1600                1 === n.length && n[0].constructor && n[0].constructor === Object ? a = n[0] : (i = (r = n)[0], a = r[1]);
1601                a || (a = {}), a = d.extend({}, a), i && !a.el && (a.el = i), e.call(this, a), Object.keys($).forEach(function(e) {
1602                    Object.keys($[e]).forEach(function(i) {
1603                        t.prototype[i] || (t.prototype[i] = $[e][i])
1604                    })
1605                });
1606                var l = this;
1607                void 0 === l.modules && (l.modules = {}), Object.keys(l.modules).forEach(function(e) {
1608                    var t = l.modules[e];
1609                    if (t.params) {
1610                        var i = Object.keys(t.params)[0],
1611                            s = t.params[i];
1612                        if ("object" != typeof s)
1613                            return;
1614                        if (!(i in a && "enabled" in s))
1615                            return;
1616                        !0 === a[i] && (a[i] = {
1617                            enabled: !0
1618                        }), "object" != typeof a[i] || "enabled" in a[i] || (a[i].enabled = !0), a[i] || (a[i] = {
1619                            enabled: !1
1620                        })
1621                    }
1622                });
1623                var p = d.extend({}, k);
1624                l.useModulesParams(p), l.params = d.extend({}, p, L, a), l.originalParams = d.extend({}, l.params), l.passedParams = d.extend({}, a), l.$ = s;
1625                var c = s(l.params.el);
1626                if (i = c[0]) {
1627                    if (c.length > 1) {
1628                        var u = [];
1629                        return c.each(function(e, i) {
1630                            var s = d.extend({}, a, {
1631                                el: i
1632                            });
1633                            u.push(new t(s))
1634                        }), u
1635                    }
1636                    i.swiper = l, c.data("swiper", l);
1637                    var v,
1638                        f,
1639                        m = c.children("." + l.params.wrapperClass);
1640                    return d.extend(l, {
1641                        $el: c,
1642                        el: i,
1643                        $wrapperEl: m,
1644                        wrapperEl: m[0],
1645                        classNames: [],
1646                        slides: s(),
1647                        slidesGrid: [],
1648                        snapGrid: [],
1649                        slidesSizesGrid: [],
1650                        isHorizontal: function() {
1651                            return "horizontal" === l.params.direction
1652                        },
1653                        isVertical: function() {
1654                            return "vertical" === l.params.direction
1655                        },
1656                        rtl: "horizontal" === l.params.direction && ("rtl" === i.dir.toLowerCase() || "rtl" === c.css("direction")),
1657                        wrongRTL: "-webkit-box" === m.css("display"),
1658                        activeIndex: 0,
1659                        realIndex: 0,
1660                        isBeginning: !0,
1661                        isEnd: !1,
1662                        translate: 0,
1663                        progress: 0,
1664                        velocity: 0,
1665                        animating: !1,
1666                        allowSlideNext: l.params.allowSlideNext,
1667                        allowSlidePrev: l.params.allowSlidePrev,
1668                        touchEvents: (v = ["touchstart", "touchmove", "touchend"], f = ["mousedown", "mousemove", "mouseup"], h.pointerEvents ? f = ["pointerdown", "pointermove", "pointerup"] : h.prefixedPointerEvents && (f = ["MSPointerDown", "MSPointerMove", "MSPointerUp"]), l.touchEventsTouch = {
1669                            start: v[0],
1670                            move: v[1],
1671                            end: v[2]
1672                        }, l.touchEventsDesktop = {
1673                            start: f[0],
1674                            move: f[1],
1675                            end: f[2]
1676                        }, h.touch || !l.params.simulateTouch ? l.touchEventsTouch : l.touchEventsDesktop),
1677                        touchEventsData: {
1678                            isTouched: void 0,
1679                            isMoved: void 0,
1680                            allowTouchCallbacks: void 0,
1681                            touchStartTime: void 0,
1682                            isScrolling: void 0,
1683                            currentTranslate: void 0,
1684                            startTranslate: void 0,
1685                            allowThresholdMove: void 0,
1686                            formElements: "input, select, option, textarea, button, video",
1687                            lastClickTime: d.now(),
1688                            clickTimeout: void 0,
1689                            velocities: [],
1690                            allowMomentumBounce: void 0,
1691                            isTouchEvent: void 0,
1692                            startMoving: void 0
1693                        },
1694                        allowClick: !0,
1695                        allowTouchMove: l.params.allowTouchMove,
1696                        touches: {
1697                            startX: 0,
1698                            startY: 0,
1699                            currentX: 0,
1700                            currentY: 0,
1701                            diff: 0
1702                        },
1703                        imagesToLoad: [],
1704                        imagesLoaded: 0
1705                    }
vendor: 2,205 bytes, lines 1705-1747
1705), l.useModules(), l.params.init && l.init(), l
1706                }
1707            }
1708            e && (t.__proto__ = e), t.prototype = Object.create(e && e.prototype), t.prototype.constructor = t;
1709            var i = {
1710                extendedDefaults: {
1711                    configurable: !0
1712                },
1713                defaults: {
1714                    configurable: !0
1715                },
1716                Class: {
1717                    configurable: !0
1718                },
1719                $: {
1720                    configurable: !0
1721                }
1722            };
1723            return t.prototype.slidesPerViewDynamic = function() {
1724                var e = this.params,
1725                    t = this.slides,
1726                    i = this.slidesGrid,
1727                    s = this.size,
1728                    a = this.activeIndex,
1729                    r = 1;
1730                if (e.centeredSlides) {
1731                    for (var n, o = t[a].swiperSlideSize, l = a + 1; l < t.length; l += 1)
1732                        t[l] && !n && (r += 1, (o += t[l].swiperSlideSize) > s && (n = !0));
1733                    for (var d = a - 1; d >= 0; d -= 1)
1734                        t[d] && !n && (r += 1, (o += t[d].swiperSlideSize) > s && (n = !0))
1735                } else
1736                    for (var h = a + 1; h < t.length; h += 1)
1737                        i[h] - i[a] < s && (r += 1);
1738                return r
1739            }, t.prototype.update = function() {
1740                var e = this;
1741                e && !e.destroyed && (e.updateSize(), e.updateSlides(), e.updateProgress(), e.updateSlidesClasses(), e.params.freeMode ? (t(), e.params.autoHeight && e.updateAutoHeight()) : (("auto" === e.params.slidesPerView || e.params.slidesPerView > 1) && e.isEnd && !e.params.centeredSlides ? e.slideTo(e.slides.length - 1, 0, !1, !0) : e.slideTo(e.activeIndex, 0, !1, !0)) || t(), e.emit("update"));
1742                function t() {
1743                    var t = e.rtl ? -1 * e.translate : e.translate,
1744                        i = Math.min(Math.max(t, e.maxTranslate()), e.minTranslate());
1745                    e.setTranslate(i), e.updateActiveIndex(), e.updateSlidesClasses()
1746                }
1747            }, t.prototype.init = function() {
1748                this.initialized || (this.emit("beforeInit"), this.params.breakpoints && this.setBreakpoint(), this.addClasses(), this.params.loop && this.loopCreate(), this.updateSize(), this.updateSlides(), this.params.watchOverflow && this.checkOverflow(), this.params.grabCursor && this.setGrabCursor(), this.params.preloadImages && this.preloadImages(), this.params.loop ? this.slideTo(this.params.initialSlide + this.loopedSlides, 0, this.params.runCallbacksOnInit) : this.slideTo(this.params.initialSlide, 0, this.params.runCallbacksOnInit), this.attachEvents(), this.initialized = !0, this.emit("init"))
1749            }, t.prototype.destroy = function(e, t) {
1750                void 0 === e && (e = !0), void 0 === t && (t = !0);
1751                var i = this,
1752                    s = i.params,
1753                    a = i.$el,
1754                    r = i.$wrapperEl,
1755                    n = i.slides;
1756                i.emit("beforeDestroy"), i.initialized = !1, i.detachEvents(), s.loop && i.loopDestroy(), t && (i.removeClasses(), a.removeAttr("style"), r.removeAttr("style"), n && n.length && n.removeClass([s.slideVisibleClass, s.slideActiveClass, s.slideNextClass, s.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index").removeAttr("data-swiper-column").removeAttr("data-swiper-row")), i.emit("destroy"), Object.keys(i.eventsListeners).forEach(function(e) {
1757                    i.off(e)
1758                }), !1 !== e && (i.$el[0].swiper = null, i.$el.data("swiper", null), d.deleteProps(i)), i.destroyed = !0
1759            }, t.extendDefaults = function(e) {
1760                d.extend(L, e)
1761            }, i.extendedDefaults.get = function() {
1762                return L
1763            }, i.defaults.get = function() {
1764                return k
1765            }, i.Class.get = function() {
1766                return e
1767            }, i.$.get = function() {
1768                return s
1769            }, Object.defineProperties(t, i), t
1770        }(p),
1771        D = {
1772            name: "device",
1773            proto: {
1774                device: y
1775            },
1776            static: {
1777                device: y
1778            }
1779        },
1780        O = {
1781            name: "support",
1782            proto: {
1783                support: h
1784            },
1785            static: {
1786                support: h
1787            }
1788        },
1789        A = {
1790            name: "browser",
1791            proto: {
1792                browser: P
1793            },
1794            static: {
1795                browser: P
1796            }
1797        },
1798        H = {
1799            name: "resize",
1800            create: function() {
1801                var e = this;
1802                d.extend(e, {
1803                    resize: {
1804                        resizeHandler: function() {
1805                            e && !e.destroyed && e.initialized && (e.emit("beforeResize"), e.emit("resize"))
1806                        },
1807                        orientationChangeHandler: function() {
1808                            e && !e.destroyed && e.initialized && e.emit("orientationchange")
1809                        }
1810                    }
1811                })
1812            },
1813            on: {
1814                init: function() {
1815                    t.addEventListener("resize", this.resize.resizeHandler), t.addEventListener("orientationchange", this.resize.orientationChangeHandler)
1816                },
1817                destroy: function() {
1818                    t.removeEventListener("resize", this.resize.resizeHandler), t.removeEventListener("orientationchange", this.resize.orientationChangeHandler)
1819                }
1820            }
1821        },
1822        N = {
1823            func: t.MutationObserver || t.WebkitMutationObserver,
1824            attach: function(e, t) {
1825                void 0 === t && (t = {});
1826                var i = this,
1827                    s = new (0, N.func)(function(e) {
1828                        e.forEach(function(e) {
1829                            i.emit("observerUpdate", e)
1830                        })
1831                    });
1832                s.observe(e, {
1833                    attributes: void 0 === t.attributes || t.attributes,
1834                    childList: void 0 === t.childList || t.childList,
1835                    characterData: void 0 === t.characterData || t.characterData
1836                }), i.observer.observers.push(s)
1837            },
1838            init: function() {
1839                if (h.observer && this.params.observer) {
1840                    if (this.params.observeParents)
1841                        for (var e = this.$el.parents(), t = 0; t < e.length; t += 1)
1842                            this.observer.attach(e[t]);
1843                    this.observer.attach(this.$el[0], {
1844                        childList: !1
1845                    }), this.observer.attach(this.$wrapperEl[0], {
1846                        attributes: !1
1847                    })
1848                }
1849            },
1850            destroy: function() {
vendor: 3,617 bytes, lines 1851-1938
1851                this.observer.observers.forEach(function(e) {
1852                    e.disconnect()
1853                }), this.observer.observers = []
1854            }
1855        },
1856        X = {
1857            name: "observer",
1858            params: {
1859                observer: !1,
1860                observeParents: !1
1861            },
1862            create: function() {
1863                d.extend(this, {
1864                    observer: {
1865                        init: N.init.bind(this),
1866                        attach: N.attach.bind(this),
1867                        destroy: N.destroy.bind(this),
1868                        observers: []
1869                    }
1870                })
1871            },
1872            on: {
1873                init: function() {
1874                    this.observer.init()
1875                },
1876                destroy: function() {
1877                    this.observer.destroy()
1878                }
1879            }
1880        },
1881        Y = {
1882            update: function(e) {
1883                var t = this,
1884                    i = t.params,
1885                    s = i.slidesPerView,
1886                    a = i.slidesPerGroup,
1887                    r = i.centeredSlides,
1888                    n = t.virtual,
1889                    o = n.from,
1890                    l = n.to,
1891                    h = n.slides,
1892                    p = n.slidesGrid,
1893                    c = n.renderSlide,
1894                    u = n.offset;
1895                t.updateActiveIndex();
1896                var v,
1897                    f,
1898                    m,
1899                    g = t.activeIndex || 0;
1900                v = t.rtl && t.isHorizontal() ? "right" : t.isHorizontal() ? "left" : "top", r ? (f = Math.floor(s / 2) + a, m = Math.floor(s / 2) + a) : (f = s + (a - 1), m = a);
1901                var b = Math.max((g || 0) - m, 0),
1902                    w = Math.min((g || 0) + f, h.length - 1),
1903                    y = (t.slidesGrid[b] || 0) - (t.slidesGrid[0] || 0);
1904                function x() {
1905                    t.updateSlides(), t.updateProgress(), t.updateSlidesClasses(), t.lazy && t.params.lazy.enabled && t.lazy.load()
1906                }
1907                if (d.extend(t.virtual, {
1908                    from: b,
1909                    to: w,
1910                    offset: y,
1911                    slidesGrid: t.slidesGrid
1912                }), o === b && l === w && !e)
1913                    return t.slidesGrid !== p && y !== u && t.slides.css(v, y + "px"), void t.updateProgress();
1914                if (t.params.virtual.renderExternal)
1915                    return t.params.virtual.renderExternal.call(t, {
1916                        offset: y,
1917                        from: b,
1918                        to: w,
1919                        slides: function() {
1920                            for (var e = [], t = b; t <= w; t += 1)
1921                                e.push(h[t]);
1922                            return e
1923                        }()
1924                    }), void x();
1925                var E = [],
1926                    T = [];
1927                if (e)
1928                    t.$wrapperEl.find("." + t.params.slideClass).remove();
1929                else
1930                    for (var S = o; S <= l; S += 1)
1931                        (S < b || S > w) && t.$wrapperEl.find("." + t.params.slideClass + '[data-swiper-slide-index="' + S + '"]').remove();
1932                for (var C = 0; C < h.length; C += 1)
1933                    C >= b && C <= w && (void 0 === l || e ? T.push(C) : (C > l && T.push(C), C < o && E.push(C)));
1934                T.forEach(function(e) {
1935                    t.$wrapperEl.append(c(h[e], e))
1936                }), E.sort(function(e, t) {
1937                    return e < t
1938                }
1938).forEach(function(e) {
1939                    t.$wrapperEl.prepend(c(h[e], e))
1940                }), t.$wrapperEl.children(".swiper-slide").css(v, y + "px"), x()
1941            },
1942            renderSlide: function(e, t) {
1943                var i = this.params.virtual;
1944                if (i.cache && this.virtual.cache[t])
1945                    return this.virtual.cache[t];
1946                var a = i.renderSlide ? s(i.renderSlide.call(this, e, t)) : s('<div class="' + this.params.slideClass + '" data-swiper-slide-index="' + t + '">' + e + "</div>");
1947                return a.attr("data-swiper-slide-index") || a.attr("data-swiper-slide-index", t), i.cache && (this.virtual.cache[t] = a), a
1948            },
1949            appendSlide: function(e) {
1950                this.virtual.slides.push(e), this.virtual.update(!0)
1951            },
1952            prependSlide: function(e) {
1953                if (this.virtual.slides.unshift(e), this.params.virtual.cache) {
1954                    var t = this.virtual.cache,
1955                        i = {};
1956                    Object.keys(t).forEach(function(e) {
1957                        i[e + 1] = t[e]
1958                    }), this.virtual.cache = i
1959                }
1960                this.virtual.update(!0), this.slideNext(0)
1961            }
1962        },
1963        B = {
1964            name: "virtual",
1965            params: {
1966                virtual: {
1967                    enabled: !1,
1968                    slides: [],
1969                    cache: !0,
1970                    renderSlide: null,
1971                    renderExternal: null
1972                }
1973            },
1974            create: function() {
1975                d.extend(this, {
1976                    virtual: {
1977                        update: Y.update.bind(this),
1978                        appendSlide: Y.appendSlide.bind(this),
1979                        prependSlide: Y.prependSlide.bind(this),
1980                        renderSlide: Y.renderSlide.bind(this),
1981                        slides: this.params.virtual.slides,
1982                        cache: {}
1983                    }
1984                })
1985            },
1986            on: {
1987                beforeInit: function() {
1988                    if (this.params.virtual.enabled) {
1989                        this.classNames.push(this.params.containerModifierClass + "virtual");
1990                        var e = {
1991                            watchSlidesProgress: !0
1992                        };
1993                        d.extend(this.params, e), d.extend(this.originalParams, e), this.virtual.update(
1993)
1994                    }
1995                },
1996                setTranslate: function() {
1997                    this.params.virtual.enabled && this.virtual.update()
1998                }
1999            }
2000        },
2001        G = {
2002            handle: function(i) {
2003                var s = i;
2004                s.originalEvent && (s = s.originalEvent);
2005                var a = s.keyCode || s.charCode;
2006                if (!this.allowSlideNext && (this.isHorizontal() && 39 === a || this.isVertical() && 40 === a))
2007                    return !1;
2008                if (!this.allowSlidePrev && (this.isHorizontal() && 37 === a || this.isVertical() && 38 === a))
2009                    return !1;
2010                if (!(s.shiftKey || s.altKey || s.ctrlKey || s.metaKey || e.activeElement && e.activeElement.nodeName && ("input" === e.activeElement.nodeName.toLowerCase() || "textarea" === e.activeElement.nodeName.toLowerCase()))) {
2011                    if (this.params.keyboard.onlyInViewport && (37 === a || 39 === a || 38 === a || 40 === a)) {
2012                        var r = !1;
2013                        if (this.$el.parents("." + this.params.slideClass).length > 0 && 0 === this.$el.parents("." + this.params.slideActiveClass).length)
2014                            return;
2015                        var n = t.innerWidth,
2016                            o = t.innerHeight,
2017                            l = this.$el.offset();
2018                        this.rtl && (l.left -= this.$el[0].scrollLeft);
2019                        for (var d = [[l.left, l.top], [l.left + this.width, l.top], [l.left, l.top + this.height], [l.left + this.width, l.top + this.height]], h = 0; h < d.length; h += 1) {
2020                            var p = d[h];
2021                            p[0] >= 0 && p[0] <= n && p[1] >= 0 && p[1] <= o && (r = !0)
2022                        }
2023                        if (!r)
2024                            return
2025                    }
2026                    this.isHorizontal() ? (37 !== a && 39 !== a || (s.preventDefault ? s.preventDefault() : s.returnValue = !1), (39 === a && !this.rtl || 37 === a && this.rtl) && this.slideNext(), (37 === a && !this.rtl || 39 === a && this.rtl) && this.slidePrev()) : (38 !== a && 40 !== a || (s.preventDefault ? s.preventDefault() : s.returnValue = !1), 40 === a && this.slideNext(), 38 === a && this.slidePrev()), this.emit("keyPress", a)
2027                }
2028            },
2029            enable: function() {
2030                this.keyboard.enabled || (s(e).on("keydown", this.keyboard.handle), this.keyboard.enabled = !0)
2031            },
2032            disable: function() {
2033                this.keyboard.enabled && (s(e).off("keydown", this.keyboard.handle), this.keyboard.enabled = !1)
2034            }
2035        },
2036        V = {
2037            name: "keyboard",
2038            params: {
2039                keyboard: {
2040                    enabled: !1,
2041                    onlyInViewport: !0
2042                }
2043            },
2044            create: function() {
2045                d.extend(this, {
2046                    keyboard: {
2047                        enabled: !1,
2048                        enable: G.enable.bind(this),
2049                        disable: G.disable.bind(this),
2050                        handle: G.handle.bind(this)
2051                    }
2052                })
2053            },
2054            on: {
2055                init: function() {
2056                    this.params.keyboard.enabled && this.keyboard.enable()
2057                },
2058                destroy: function() {
2059                    this.keyboard.enabled && this.keyboard.disable()
2060                }
2061            }
2062        };
2063    var R = {
2064            lastScrollTime: d.now(),
2065            event: t.navigator.userAgent.indexOf("firefox") > -1 ? "DOMMouseScroll" : function() {
2066                var t = "onwheel" in e;
2067                if (!t) {
2068                    var i = e.createElement("div");
2069                    i.setAttribute("onwheel", "return;"), t = "function" == typeof i.onwheel
2070                }
2071                return !t && e.implementation && e.implementation.hasFeature && !0 !== e.implementation.hasFeature("", "") && (t = e.implementation.hasFeature("Events.wheel", "3.0")), t
2072            }() ? "wheel" : "mousewheel",
2073            normalize: function(e) {
2074                var t = 0,
2075                    i = 0,
2076                    s = 0,
2077                    a = 0;
2078                return "detail" in e && (i = e.detail), "wheelDelta" in e && (i = -e.wheelDelta / 120), "wheelDeltaY" in e && (i = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (t = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && (t = i, i = 0), s = 10 * t, a = 10 * i, "deltaY" in e && (a = e.deltaY), "deltaX" in e && (s = e.deltaX), (s || a) && e.deltaMode && (1 === e.deltaMode ? (s *= 40, a *= 40) : (s *= 800, a *= 800)), s && !t && (t = s < 1 ? -1 : 1), a && !i && (i = a < 1 ? -1 : 1), {
2079                    spinX: t,
2080                    spinY: i,
2081                    pixelX: s,
2082                    pixelY: a
2083                }
2084            },
2085            handle: function(e) {
2086                var i = e,
2087                    s = this,
2088                    a = s.params.mousewheel;
2089                i.originalEvent && (i = i.originalEvent);
2090                var r = 0,
2091                    n = s.rtl ? -1 : 1,
2092                    o = R.normalize(i);
2093                if (a.forceToAxis)
2094                    if (s.isHorizontal()) {
2095                        if (!(Math.abs(o.pixelX) > Math.abs(o.pixelY)))
2096                            return !0;
2097                        r = o.pixelX * n
2098                    } else {
2099                        if (!(Math.abs(o.pixelY) > Math.abs(o.pixelX)))
2100                            return !0;
2101                        r = o.pixelY
2102                    }
2103                else
2104                    r = Math.abs(o.pixelX) > Math.abs(o.pixelY) ? -o.pixelX * n : -o.pixelY;
2105                if (0 === r)
2106                    return !0;
2107                if (a.invert && (r = -r), s.params.freeMode) {
2108                    var l = s.getTranslate() + r * a.sensitivity,
2109                        h = s.isBeginning,
2110                        p = s.isEnd;
2111                    if (l >= s.minTranslate() && (l = s.minTranslate()), l <= s.maxTranslate() && (l = s.maxTranslate()), s.setTransition(0), s.setTranslate(l), s.updateProgress(), s.updateActiveIndex(), s.updateSlidesClasses(), (!h && s.isBeginning || !p && s.isEnd) && s.updateSlidesClasses(), s.params.freeModeSticky && (clearTimeout(s.mousewheel.timeout), s.mousewheel.timeout = d.nextTick(function() {
2112                        s.slideReset()
2113                    }, 300)), s.emit("scroll", i), s.params.autoplay && s.params.autoplayDisableOnInteraction && s.stopAutoplay(), l === s.minTranslate() || l === s.maxTranslate())
2114                        return !0
2115                } else {
2116                    if (d.now() - s.mousewheel.lastScrollTime > 60)
2117                        if (r < 0)
2118                            if (s.isEnd && !s.params.loop || s.animating) {
2119                                if (a.releaseOnEdges)
2120                                    return !0
2121                            } else
2122                                s.slideNext(), s.emit("scroll", i);
2123                        else if (s.isBeginning && !s.params.loop || s.animating) {
2124                            if (a.releaseOnEdges)
2125                                return !0
2126                        } else
2127                            s.slidePrev(), s.emit("scroll", i);
2128                    s.mousewheel.lastScrollTime = (new t.Date).getTime()
2129                }
2130                return i.preventDefault ? i.preventDefault() : i.returnValue = !1, !1
2131            },
2132            enable: function() {
2133                if (!R.event)
2134                    return !1;
2135                if (this.mousewheel.enabled)
2136                    return !1;
2137                var e = this.$el;
2138                return "container" !== this.params.mousewheel.eventsTarged && (e = s(this.params.mousewheel.eventsTarged)), e.on(R.event, this.mousewheel.handle), this.mousewheel.enabled = !0, !0
2139            },
2140            disable: function() {
2141                if (!R.event)
2142                    return !1;
2143                if (!this.mousewheel.enabled)
2144                    return !1;
2145                var e = this.$el;
2146                return "container" !== this.params.mousewheel.eventsTarged && (e = s(this.params.mousewheel.eventsTarged)), e.off(R.event, this.mousewheel.handle), this.mousewheel.enabled = !1, !0
2147            }
2148        },
2149        F = {
2150            update: function() {
2151                var e = this.params.navigation;
2152                if (!this.params.loop) {
2153                    var t = this.navigation,
2154                        i = t.$nextEl,
2155                        s = t.$prevEl;
2156                    s && s.length > 0 && (this.isBeginning ? s.addClass(e.disabledClass) : s.removeClass(e.disabledClass), s[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](e.lockClass)), i && i.length > 0 && (this.isEnd ? i.addClass(e.disabledClass) : i.removeClass(e.disabledClass), i[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](e.lockClass))
2157                }
2158            },
2159            init: function() {
2160                var e,
2161                    t,
2162                    i = this,
2163                    a = i.params.navigation;
2164                (a.nextEl || a.prevEl) && (a.nextEl && (e = s(a.nextEl), i.params.uniqueNavElements && "string" == typeof a.nextEl && e.length > 1 && 1 === i.$el.find(a.nextEl).length && (e = i.$el.find(a.nextEl))), a.prevEl && (t = s(a.prevEl), i.params.uniqueNavElements && "string" == typeof a.prevEl && t.length > 1 && 1 === i.$el.find(a.prevEl).length && (t = i.$el.find(a.prevEl))), e && e.length > 0 && e.on("click", function(e) {
2165                    e.preventDefault(), i.isEnd && !i.params.loop || i.slideNext()
2166                }), t && t.length > 0 && t.on("click", function(e) {
2167                    e.preventDefault(), i.isBeginning && !i.params.loop || i.slidePrev()
2168                }), d.extend(i.navigation, {
2169                    $nextEl: e,
2170                    nextEl: e && e[0],
2171                    $prevEl: t,
2172                    prevEl: t && t[0]
2173                }))
2174            },
2175            destroy: function() {
2176                var e = this.navigation,
2177                    t = e.$nextEl,
2178                    i = e.$prevEl;
2179                t && t.length && (t.off("click"), t.removeClass(this.params.navigation.disabledClass)), i && i.length && (i.off("
2179click"), i.removeClass(this.params.navigation.disabledClass))
2180            }
2181        },
2182        W = {
2183            update: function() {
2184                var e = this.rtl,
2185                    t = this.params.pagination;
2186                if (t.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) {
2187                    var i,
2188                        a = this.virtual && this.params.virtual.enabled ? this.virtual.slides.length : this.slides.length,
2189                        r = this.pagination.$el,
2190                        n = this.params.loop ? Math.ceil((a - 2 * this.loopedSlides) / this.params.slidesPerGroup) : this.snapGrid.length;
2191                    if (this.params.loop ? ((i = Math.ceil((this.activeIndex - this.loopedSlides) / this.params.slidesPerGroup)) > a - 1 - 2 * this.loopedSlides && (i -= a - 2 * this.loopedSlides), i > n - 1 && (i -= n), i < 0 && "bullets" !== this.params.paginationType && (i = n + i)) : i = void 0 !== this.snapIndex ? this.snapIndex : this.activeIndex || 0, "bullets" === t.type && this.pagination.bullets && this.pagination.bullets.length > 0) {
2192                        var o,
2193                            l,
2194                            d,
2195                            h = this.pagination.bullets;
2196                        if (t.dynamicBullets && (this.pagination.bulletSize = h.eq(0)[this.isHorizontal() ? "outerWidth" : "outerHeight"](!0), r.css(this.isHorizontal() ? "width" : "height", this.pagination.bulletSize * (t.dynamicMainBullets + 4) + "px"), t.dynamicMainBullets > 1 && void 0 !== this.previousIndex && (i > this.previousIndex && this.pagination.dynamicBulletIndex < t.dynamicMainBullets - 1 ? this.pagination.dynamicBulletIndex += 1 : i < this.previousIndex && this.pagination.dynamicBulletIndex > 0 && (this.pagination.dynamicBulletIndex -= 1)), o = i - this.pagination.dynamicBulletIndex, d = ((l = o + (t.dynamicMainBullets - 1)) + o) / 2), h.removeClass(t.bulletActiveClass + " " + t.bulletActiveClass + "-next " + t.bulletActiveClass + "-next-next " + t.bulletActiveClass + "-prev " + t.bulletActiveClass + "-prev-prev " + t.bulletActiveClass + "-main"), r.length > 1)
2197                            h.each(function(e, a) {
2198                                var r = s(a),
2199                                    n = r.index();
2200                                n === i && r.addClass(t.bulletActiveClass), t.dynamicBullets && (n >= o && n <= l && r.addClass(t.bulletActiveClass + "-main"), n === o && r.prev().addClass(t.bulletActiveClass + "-prev").prev().addClass(t.bulletActiveClass + "-prev-prev"), n === l && r.next().addClass(t.bulletActiveClass + "-next").next().addClass(t.bulletActiveClass + "-next-next"))
2201                            });
2202                        else if (h.eq(i).addClass(t.bulletActiveClass), t.dynamicBullets) {
2203                            for (var p = h.eq(o), c = h.eq(l), u = o; u <= l; u += 1)
2204                                h.eq(u).addClass(t.bulletActiveClass + "-main");
2205                            p.prev().addClass(t.bulletActiveClass + "-prev").prev().addClass(t.bulletActiveClass + "-prev-prev"), c.next().addClass(t.bulletActiveClass + "-next").next().addClass(t.bulletActiveClass + "-next-next")
2206                        }
2207                        if (t.dynamicBullets) {
2208                            var v = Math.min(h.length, t.dynamicMainBullets + 4),
2209                                f = (this.pagination.bulletSize * v - this.pagination.bulletSize) / 2 - d * this.pagination.bulletSize,
2210                                m = e ? "right" : "left";
2211                            h.css(this.isHorizontal() ? m : "top", f + "px")
2212                        }
2213                    }
2214                    if ("fraction" === t.type && (r.find("." + t.currentClass).text(i + 1), r.find("." + t.totalClass).text(n)), "progressbar" === t.type) {
2215                        var g = (i + 1) / n,
2216                            b = g * 100,
2217                            w = 1;
2218                        this.isHorizontal() || (w = g, b = 1), r.find("." + t.progressbarFillClass).transform("translate3d(0,0,0) scaleY(" + w + ")").transition(this.params.speed).css('width', b + "%")
2219                    }
2220                    "custom" === t.type && t.renderCustom ? (r.html(t.renderCustom(this, i + 1, n)), this.emit
2220("paginationRender", this, r[0])) : this.emit("paginationUpdate", this, r[0]), r[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](t.lockClass)
2221                }
2222            },
2223            render: function() {
2224                var e = this.params.pagination;
2225                if (e.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) {
2226                    var t = this.virtual && this.params.virtual.enabled ? this.virtual.slides.length : this.slides.length,
2227                        i = this.pagination.$el,
2228                        s = "";
2229                    if ("bullets" === e.type) {
2230                        for (var a = this.params.loop ? Math.ceil((t - 2 * this.loopedSlides) / this.params.slidesPerGroup) : this.snapGrid.length, r = 0; r < a; r += 1)
2231                            e.renderBullet ? s += e.renderBullet.call(this, r, e.bulletClass) : s += "<" + e.bulletElement + ' class="' + e.bulletClass + '"></' + e.bulletElement + ">";
2232                        i.html(s), this.pagination.bullets = i.find("." + e.bulletClass)
2233                    }
2234                    "fraction" === e.type && (s = e.renderFraction ? e.renderFraction.call(this, e.currentClass, e.totalClass) : '<span class="' + e.currentClass + '"></span> / <span class="' + e.totalClass + '"></span>', i.html(s)), "progressbar" === e.type && (s = e.renderProgressbar ? e.renderProgressbar.call(this, e.progressbarFillClass) : '<span class="' + e.progressbarFillClass + '"></span>', i.html(s)), "custom" !== e.type && this.emit("paginationRender", this.pagination.$el[0])
2235                }
2236            },
2237            init: function() {
2238                var e = this,
2239                    t = e.params.pagination;
2240                if (t.el) {
2241                    var i = s(t.el);
2242                    0 !== i.length && (e.params.uniqueNavElements && "string" == typeof t.el && i.length > 1 && 1 === e.$el.find(t.el).length && (i = e.$el.find(t.el)), "bullets" === t.type && t.clickable && i.addClass(t.clickableClass), i.addClass(t.modifierClass + t.type), "bullets" === t.type && t.dynamicBullets && (i.addClass("" + t.modifierClass + t.type + "-dynamic"), e.pagination.dynamicBulletIndex = 0, t.dynamicMainBullets < 1 && (t.dynamicMainBullets = 1)), t.clickable && i.on("click", "." + t.bulletClass, function(t) {
2243                        t.preventDefault();
2244                        var i = s(this).index() * e.params.slidesPerGroup;
2245                        e.params.loop && (i += e.loopedSlides), e.slideTo(i)
2246                    }), d.extend(e.pagination, {
2247                        $el: i,
2248                        el: i[0]
2249                    }))
2250                }
2251            },
2252            destroy: function() {
2253                var e = this.params.pagination;
2254                if (e.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) {
2255                    var t = this.pagination.$el;
2256                    t.removeClass(e.hiddenClass), t.removeClass(e.modifierClass + e.type), this.pagination.bullets && this.pagination.bullets.removeClass(e.bulletActiveClass), e.clickable && t.off("click", "." + e.bulletClass)
2257                }
2258            }
2259        },
2260        q = {
2261            setTranslate: function() {
2262                if (this.params.scrollbar.el && this.scrollbar.el) {
2263                    var e = this.scrollbar,
2264                        t = this.rtl,
2265                        i = this.progress,
2266                        s = e.dragSize,
2267                        a = e.trackSize,
2268                        r = e.$dragEl,
2269                        n = e.$el,
2270                        o = this.params.scrollbar,
2271                        l = s,
2272                        d = (a - s) * i;
2273                    t && this.isHorizontal() ? (d = -d) > 0 ? (l = s - d, d = 0) : -d + s > a && (l = a + d) : d < 0 ? (l = s + d, d = 0) : d + s > a && (l = a - d), this.isHorizontal() ? (h.transforms3d ? r.transform("translate3d(" + d + "px, 0, 0)") : r.transform("translateX(" + d + "px)"), r[0].style.width = l + "px") : (h.transforms3d ? r.transform("translate3d(0px, " + d + "px, 0)") : r.transform("translateY(" + d + "px)"), r[0].style.height = l + "px"), o.hide && (clearTimeout(this.scrollbar.timeout), n[0].style.opacity = 1, this.scrollbar.timeout = setTimeout(function() {
2274                        n[0].style.opacity = 0, n.transition(400)
2275                    }, 1e3))
2276                }
2277            },
2278            setTransition: function(e) {
2279                this.params.scrollbar.el && this.scrollbar.el && this.scrollbar.$dragEl.transition(e)
2280            },
2281            updateSize: function() {
2282                if (this.params.scrollbar.el && this.scrollbar.el) {
2283                    var e = this.scrollbar,
2284                        t = e.$dragEl,
2285                        i = e.$el;
2286                    t[0].style.width = "", t[0].style.height = "";
2287                    var s,
2288                        a = this.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight,
2289                        r = this.size / this.virtualSize,
2290                        n = r * (a / this.size);
2291                    s = "auto" === this.params.scrollbar.dragSize ? a * r : parseInt(this.params.scrollbar.dragSize, 10), this.isHorizontal() ? t[0].style.width = s + "px" : t[0].style.height = s + "px", i[0].style.display = r >= 1 ? "none" : "", this.params.scrollbarHide && (i[0].style.opacity = 0), d.extend(e, {
2292                        trackSize: a,
2293                        divider: r,
2294                        moveDivider: n,
2295                        dragSize: s
2296                    }), e.$el[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](this.params.scrollbar.lockClass)
2297                }
2298            },
2299            setDragPosition: function(e) {
2300                var t,
2301                    i = this.scrollbar,
2302                    s = i.$el,
2303                    a = i.dragSize,
2304                    r = i.trackSize;
2305                t = ((this.isHorizontal() ? "touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX || e.clientX : "touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY || e.clientY) - s.offset()[this.isHorizontal() ? "left" : "top"] - a / 2) / (r - a), t = Math.max(Math.min(t, 1), 0
2305), this.rtl && (t = 1 - t);
2306                var n = this.minTranslate() + (this.maxTranslate() - this.minTranslate()) * t;
2307                this.updateProgress(n), this.setTranslate(n), this.updateActiveIndex(), this.updateSlidesClasses()
2308            },
2309            onDragStart: function(e) {
2310                var t = this.params.scrollbar,
2311                    i = this.scrollbar,
2312                    s = this.$wrapperEl,
2313                    a = i.$el,
2314                    r = i.$dragEl;
2315                this.scrollbar.isTouched = !0, e.preventDefault(), e.stopPropagation(), s.transition(100), r.transition(100), i.setDragPosition(e), clearTimeout(this.scrollbar.dragTimeout), a.transition(0), t.hide && a.css("opacity", 1), this.emit("scrollbarDragStart", e)
2316            },
2317            onDragMove: function(e) {
2318                var t = this.scrollbar,
2319                    i = this.$wrapperEl,
2320                    s = t.$el,
2321                    a = t.$dragEl;
2322                this.scrollbar.isTouched && (e.preventDefault ? e.preventDefault() : e.returnValue = !1, t.setDragPosition(e), i.transition(0), s.transition(0), a.transition(0), this.emit("scrollbarDragMove", e))
2323            },
2324            onDragEnd: function(e) {
2325                var t = this.params.scrollbar,
2326                    i = this.scrollbar.$el;
2327                this.scrollbar.isTouched && (this.scrollbar.isTouched = !1, t.hide && (clearTimeout(this.scrollbar.dragTimeout), this.scrollbar.dragTimeout = d.nextTick(function() {
2328                    i.css("opacity", 0), i.transition(400)
2329                }, 1e3)), this.emit("scrollbarDragEnd", e), t.snapOnRelease && this.slideReset())
2330            },
2331            enableDraggable: function() {
2332                if (this.params.scrollbar.el) {
2333                    var t = this.scrollbar,
2334                        i = this.touchEvents,
2335                        s = this.touchEventsDesktop,
2336                        a = this.params,
2337                        r = t.$el[0],
2338                        n = !(!h.passiveListener || !a.passiveListener) && {
2339                            passive: !1,
2340                            capture: !1
2341                        },
2342                        o = !(!h.passiveListener || !a.passiveListener) && {
2343                            passive: !0,
2344                            capture: !1
2345                        };
2346                    h.touch || !h.pointerEvents && !h.prefixedPointerEvents ? (h.touch && (r.addEventListener(i.start, this.scrollbar.onDragStart, n), r.addEventListener(i.move, this.scrollbar.onDragMove, n), r.addEventListener(i.end, this.scrollbar.onDragEnd, o)), (a.simulateTouch && !y.ios && !y.android || a.simulateTouch && !h.touch && y.ios) && (r.addEventListener("mousedown", this.scrollbar.onDragStart, n), e.addEventListener("mousemove", this.scrollbar.onDragMove, n), e.addEventListener("mouseup", this.scrollbar.onDragEnd, o))) : (r.addEventListener(s.start, this.scrollbar.onDragStart, n), e.addEventListener(s.move, this.scrollbar.onDragMove, n), e.addEventListener(s.end, this.scrollbar.onDragEnd, o))
2347                }
2348            },
2349            disableDraggable: function() {
2350                if (this.params.scrollbar.el) {
2351                    var t = this.scrollbar,
2352                        i = this.touchEvents,
2353                        s = this.touchEventsDesktop,
2354                        a = this.params,
2355                        r = t.$el[0],
2356                        n = !(!h.passiveListener || !a.passiveListener) && {
2357                            passive: !1,
2358                            capture: !1
2359                        },
2360                        o = !(!h.passiveListener || !a.passiveListener) && {
2361                            passive: !0,
2362                            capture: !1
2363                        };
2364                    h.touch || !h.pointerEvents && !h.prefixedPointerEvents ? (h.touch && (r.removeEventListener(i.start, this.scrollbar.onDragStart, n), r.removeEventListener(i.move, this.scrollbar.onDragMove, n), r.removeEventListener(i.end, this.scrollbar.onDragEnd, o)), (a.simulateTouch && !y.ios && !y.android || a.simulateTouch && !h.touch && y.ios) && (r.removeEventListener("mousedown", this.scrollbar.onDragStart, n), e.removeEventListener("mousemove", this.scrollbar.onDragMove, n), e.removeEventListener("mouseup", this.scrollbar.onDragEnd, o))) : (r.removeEventListener(s.start, this.scrollbar.onDragStart, n), e.removeEventListener(s.move, this.scrollbar.onDragMove, n), e.removeEventListener(s.end, this.scrollbar.onDragEnd, o))
2365                }
2366            },
2367            init: function() {
2368                if (this.params.scrollbar.el) {
2369                    var e = this.scrollbar,
2370                        t = this.$el,
2371                        i = this.params.scrollbar,
2372                        a = s(i.el);
2373                    this.params.uniqueNavElements && "string" == typeof i.el && a.length > 1 && 1 === t.find(i.el).length && (a = t.find(i.el));
2374                    var r = a.find("." + this.params.scrollbar.dragClass);
2375                    0 === r.length && (r = s('<div class="' + this.params.scrollbar.dragClass + '"></div>'), a.append(r)), d.extend(e, {
2376                        $el: a,
2377                        el: a[0],
2378                        $dragEl: r,
2379                        dragEl: r[0]
2380                    }), i.draggable && e.enableDraggable()
2381                }
2382            },
2383            destroy: function() {
2384                this.scrollbar.disableDraggable()
2385            }
2386        },
2387        j = {
2388            setTransform: function(e, t) {
2389                var i = this.rtl,
2390                    a = s(e),
2391                    r = i ? -1 : 1,
2392                    n = a.attr("data-swiper-parallax") || "0",
2393                    o = a.attr("data-swiper-parallax-x"),
2394                    l = a.attr("data-swiper-parallax-y"),
2395                    d = a.attr("data-swiper-parallax-scale"),
2396                    h = a.attr("data-swiper-parallax-opacity");
2397                if (o || l ? (o = o || "0", l = l || "0") : this.isHorizontal() ? (o = n, l = "0") : (l = n, o = "0"), o = o.indexOf("%") >= 0 ? parseInt(o, 10) * t * r + "%" : o * t * r + "px", l = l.indexOf("%") >= 0 ? parseInt(l, 10) * t + "%" : l * t + "px", void 0 !== h && null !== h) {
2398                    var p = h - (h - 1) * (1 - Math.abs(t));
2399                    a[0].style.opacity = p
2400                }
2401                if (void 0 === d || null === d)
2402                    a.transform("translate3d(" + o + ", " + l + ", 0px)");
2403                else {
2404                    var c = d - (d - 1) * (1 - Math.abs(t));
2405                    a.transform("translate3d(" + o + ", " + l + ", 0px) scale(" + c + ")")
2406                }
2407            },
2408            setTranslate: function() {
2409                var e = this,
2410                    t = e.$el,
2411                    i = e.slides,
2412                    a = e.progress,
2413                    r = e.snapGrid;
2414                t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(t, i) {
2415                    e.parallax.setTransform(i, a)
2416                }), i.each(function(t, i) {
2417                    var n = i.progress;
2418                    e.params.slidesPerGroup > 1 && "auto" !== e.params.slidesPerView && (n += Math.ceil(t / 2) - a * (r.length - 1)), n = Math.min(Math.max(n, -1), 1), s(i).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(t, i) {
2419                        e.parallax.setTransform(i, n)
2420                    })
2421                })
2422            },
2423            setTransition: function(e) {
2424                void 0 === e && (e = this.params.speed);
2425                this.$el.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(t, i) {
2426                    var a = s(i),
2427                        r = parseInt(a.attr("data-swiper-parallax-duration"), 10) || e;
2428                    0 === e && (r = 0), a.transition(r)
2429                })
2430            }
2431        },
2432        K = {
2433            getDistanceBetweenTouches: function(e) {
2434                if (e.targetTouches.length < 2)
2435                    return 1;
2436                var t = e.targetTouches[0].pageX,
2437                    i = e.targetTouches[0].pageY,
2438                    s = e.targetTouches[1].pageX,
2439                    a = e.targetTouches[1].pageY;
2440                return Math.sqrt(Math.pow(s - t, 2) + Math.pow(a - i, 2))
2441            },
2442            onGestureStart: function(e) {
2443                var t = this.params.zoom,
2444                    i = this.zoom,
2445                    a = i.gesture;
2446                if (i.fakeGestureTouched = !1, i.fakeGestureMoved = !1, !h.gestures) {
2447                    if ("touchstart" !== e.type || "touchstart" === e.type && e.targetTouches.length < 2)
2448                        return;
2449                    i.fakeGestureTouched = !0, a.scaleStart = K.getDistanceBetweenTouches(e)
2450                }
2451                a.$slideEl && a.$slideEl.length || (a.$slideEl = s(e.target).closest(".swiper-slide"), 0 === a.$slideEl.length && (a.$slideEl = this.slides.eq(this.activeIndex)), a.$imageEl = a.$slideEl.find("img, svg, canvas"), a.$imageWrapEl = a.$imageEl.parent("." + t.containerClass), a.maxRatio = a.$imageWrapEl.attr("data-swiper-zoom") || t.maxRatio, 0 !== a.$imageWrapEl.length) ? (a.$imageEl.transition(0), this.zoom.isScaling = !0) : a.$imageEl = void 0
2452            },
2453            onGestureChange: function(e) {
2454                var t = this.params.zoom,
2455                    i = this.zoom,
2456                    s = i.gesture;
2457                if (!h.gestures) {
2458                    if ("touchmove" !== e.type || "touchmove" === e.type && e.targetTouches.length < 2)
2459                        return;
2460                    i.fakeGestureMoved = !0, s.scaleMove = K.getDistanceBetweenTouches(e)
2461                }
2462                s.$imageEl && 0 !== s.$imageEl.length && (h.gestures ? this.zoom.scale = e.scale * i.currentScale : i.scale = s.scaleMove / s.scaleStart * i.currentScale, i.scale > s.maxRatio && (i.scale = s.maxRatio - 1 + Math.pow(i.scale - s.maxRatio + 1, .5)), i.scale < t.minRatio && (i.scale = t.minRatio + 1 - Math.pow(t.minRatio - i.scale + 1, .5)), s.$imageEl.transform("translate3d(0,
vendor: 4,368 bytes, lines 2462-2499
24620,0) scale(" + i.scale + ")"))
2463            },
2464            onGestureEnd: function(e) {
2465                var t = this.params.zoom,
2466                    i = this.zoom,
2467                    s = i.gesture;
2468                if (!h.gestures) {
2469                    if (!i.fakeGestureTouched || !i.fakeGestureMoved)
2470                        return;
2471                    if ("touchend" !== e.type || "touchend" === e.type && e.changedTouches.length < 2 && !y.android)
2472                        return;
2473                    i.fakeGestureTouched = !1, i.fakeGestureMoved = !1
2474                }
2475                s.$imageEl && 0 !== s.$imageEl.length && (i.scale = Math.max(Math.min(i.scale, s.maxRatio), t.minRatio), s.$imageEl.transition(this.params.speed).transform("translate3d(0,0,0) scale(" + i.scale + ")"), i.currentScale = i.scale, i.isScaling = !1, 1 === i.scale && (s.$slideEl = void 0))
2476            },
2477            onTouchStart: function(e) {
2478                var t = this.zoom,
2479                    i = t.gesture,
2480                    s = t.image;
2481                i.$imageEl && 0 !== i.$imageEl.length && (s.isTouched || (y.android && e.preventDefault(), s.isTouched = !0, s.touchesStart.x = "touchstart" === e.type ? e.targetTouches[0].pageX : e.pageX, s.touchesStart.y = "touchstart" === e.type ? e.targetTouches[0].pageY : e.pageY))
2482            },
2483            onTouchMove: function(e) {
2484                var t = this.zoom,
2485                    i = t.gesture,
2486                    s = t.image,
2487                    a = t.velocity;
2488                if (i.$imageEl && 0 !== i.$imageEl.length && (this.allowClick = !1, s.isTouched && i.$slideEl)) {
2489                    s.isMoved || (s.width = i.$imageEl[0].offsetWidth, s.height = i.$imageEl[0].offsetHeight, s.startX = d.getTranslate(i.$imageWrapEl[0], "x") || 0, s.startY = d.getTranslate(i.$imageWrapEl[0], "y") || 0, i.slideWidth = i.$slideEl[0].offsetWidth, i.slideHeight = i.$slideEl[0].offsetHeight, i.$imageWrapEl.transition(0), this.rtl && (s.startX = -s.startX), this.rtl && (s.startY = -s.startY));
2490                    var r = s.width * t.scale,
2491                        n = s.height * t.scale;
2492                    if (!(r < i.slideWidth && n < i.slideHeight)) {
2493                        if (s.minX = Math.min(i.slideWidth / 2 - r / 2, 0), s.maxX = -s.minX, s.minY = Math.min(i.slideHeight / 2 - n / 2, 0), s.maxY = -s.minY, s.touchesCurrent.x = "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX, s.touchesCurrent.y = "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY, !s.isMoved && !t.isScaling) {
2494                            if (this.isHorizontal() && (Math.floor(s.minX) === Math.floor(s.startX) && s.touchesCurrent.x < s.touchesStart.x || Math.floor(s.maxX) === Math.floor(s.startX) && s.touchesCurrent.x > s.touchesStart.x))
2495                                return void (s.isTouched = !1);
2496                            if (!this.isHorizontal() && (Math.floor(s.minY) === Math.floor(s.startY) && s.touchesCurrent.y < s.touchesStart.y || Math.floor(s.maxY) === Math.floor(s.startY) && s.touchesCurrent.y > s.touchesStart.y))
2497                                return void (s.isTouched = !1)
2498                        }
2499                        e.preventDefault(), e.stopPropagation(), s.isMoved = !0, s.currentX = s.touchesCurrent.x - s.touchesStart.x + s.startX, s.currentY = s.touchesCurrent.y - s.touchesStart.y + s.startY, s.currentX < s.minX && (s.currentX = s.minX + 1 - Math.pow(s.minX - s.currentX + 1, .8)), s.currentX > s.maxX && (s.currentX = s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, .8)), s.currentY < s.minY && (s.currentY = s.minY + 1 - Math.pow(s.minY - s.currentY + 1, .8)), s.currentY > s.maxY && (s.currentY = s.maxY - 1 + Math.pow(s.currentY - s.maxY + 1, .8)), a.prevPositionX || (a.prevPositionX = s.touchesCurrent.x), a.prevPositionY || (a.prevPositionY = s.touchesCurrent.y), a.prevTime || (a.prevTime = Date.now()), a.x = (s.touchesCurrent.x - a.prevPositionX) / (Date.now() - a.prevTime) / 2, a.y = (s.touchesCurrent.y - a.prevPositionY) / (Date.now() - a.prevTime) / 2, Math.abs(s.touchesCurrent.x - a.prevPositionX) < 2 && (a.x = 0), Math.abs(s.touchesCurrent.y - a.prevPositionY) < 2 && (a.y = 0), a.prevPositionX = s.touchesCurrent.x, a.prevPositionY = s.touchesCurrent.y, a.prevTime = Date.now(), i.$imageWrapEl.transform("translate3d(" + s.currentX + "px, " + s.currentY + "px,0
vendor: 4,328 bytes, lines 2499-2562
2499)")
2500                    }
2501                }
2502            },
2503            onTouchEnd: function() {
2504                var e = this.zoom,
2505                    t = e.gesture,
2506                    i = e.image,
2507                    s = e.velocity;
2508                if (t.$imageEl && 0 !== t.$imageEl.length) {
2509                    if (!i.isTouched || !i.isMoved)
2510                        return i.isTouched = !1, void (i.isMoved = !1);
2511                    i.isTouched = !1, i.isMoved = !1;
2512                    var a = 300,
2513                        r = 300,
2514                        n = s.x * a,
2515                        o = i.currentX + n,
2516                        l = s.y * r,
2517                        d = i.currentY + l;
2518                    0 !== s.x && (a = Math.abs((o - i.currentX) / s.x)), 0 !== s.y && (r = Math.abs((d - i.currentY) / s.y));
2519                    var h = Math.max(a, r);
2520                    i.currentX = o, i.currentY = d;
2521                    var p = i.width * e.scale,
2522                        c = i.height * e.scale;
2523                    i.minX = Math.min(t.slideWidth / 2 - p / 2, 0), i.maxX = -i.minX, i.minY = Math.min(t.slideHeight / 2 - c / 2, 0), i.maxY = -i.minY, i.currentX = Math.max(Math.min(i.currentX, i.maxX), i.minX), i.currentY = Math.max(Math.min(i.currentY, i.maxY), i.minY), t.$imageWrapEl.transition(h).transform("translate3d(" + i.currentX + "px, " + i.currentY + "px,0)")
2524                }
2525            },
2526            onTransitionEnd: function() {
2527                var e = this.zoom,
2528                    t = e.gesture;
2529                t.$slideEl && this.previousIndex !== this.activeIndex && (t.$imageEl.transform("translate3d(0,0,0) scale(1)"), t.$imageWrapEl.transform("translate3d(0,0,0)"), t.$slideEl = void 0, t.$imageEl = void 0, t.$imageWrapEl = void 0, e.scale = 1, e.currentScale = 1)
2530            },
2531            toggle: function(e) {
2532                var t = this.zoom;
2533                t.scale && 1 !== t.scale ? t.out() : t.in(e)
2534            },
2535            in: function(e) {
2536                var t,
2537                    i,
2538                    a,
2539                    r,
2540                    n,
2541                    o,
2542                    l,
2543                    d,
2544                    h,
2545                    p,
2546                    c,
2547                    u,
2548                    v,
2549                    f,
2550                    m,
2551                    g,
2552                    b = this.zoom,
2553                    w = this.params.zoom,
2554                    y = b.gesture,
2555                    x = b.image;
2556                (y.$slideEl || (y.$slideEl = this.clickedSlide ? s(this.clickedSlide) : this.slides.eq(this.activeIndex), y.$imageEl = y.$slideEl.find("img, svg, canvas"), y.$imageWrapEl = y.$imageEl.parent("." + w.containerClass)), y.$imageEl && 0 !== y.$imageEl.length) && (y.$slideEl.addClass("" + w.zoomedSlideClass), void 0 === x.touchesStart.x && e ? (t = "touchend" === e.type ? e.changedTouches[0].pageX : e.pageX, i = "touchend" === e.type ? e.changedTouches[0].pageY : e.pageY) : (t = x.touchesStart.x, i = x.touchesStart.y), b.scale = y.$imageWrapEl.attr("data-swiper-zoom") || w.maxRatio, b.currentScale = y.$imageWrapEl.attr("data-swiper-zoom") || w.maxRatio, e ? (m = y.$slideEl[0].offsetWidth, g = y.$slideEl[0].offsetHeight, a = y.$slideEl.offset().left + m / 2 - t, r = y.$slideEl.offset().top + g / 2 - i, l = y.$imageEl[0].offsetWidth, d = y.$imageEl[0].offsetHeight, h = l * b.scale, p = d * b.scale, v = -(c = Math.min(m / 2 - h / 2, 0)), f = -(u = Math.min(g / 2 - p / 2, 0)), n = a * b.scale, o = r * b.scale, n < c && (n = c), n > v && (n = v), o < u && (o = u), o > f && (o = f)) : (n = 0, o = 0), y.$imageWrapEl.transition(300).transform("translate3d(" + n + "px, " + o + "px,0)"), y.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + b.scale + ")"))
2557            },
2558            out: function() {
2559                var e = this.zoom,
2560                    t = this.params.zoom,
2561                    i = e.gesture;
2562                i.$slideEl || (i.$slideEl = this.clickedSlide ? s(this.clickedSlide) : this.slides.eq(this.activeIndex), i.$imageEl = i.$slideEl.find("img, svg, canvas"), i.$imageWrapEl = i.$imageEl.parent("." + t.containerClass)), i.$imageEl && 0 !== i.$imageEl.length && (e.scale = 1, e.currentScale = 1, i.$imageWrapEl.transition(300).transform("translate3d(0,
vendor: 6,062 bytes, lines 2562-2646
25620,0)"), i.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"), i.$slideEl.removeClass("" + t.zoomedSlideClass), i.$slideEl = void 0)
2563            },
2564            enable: function() {
2565                var e = this.zoom;
2566                if (!e.enabled) {
2567                    e.enabled = !0;
2568                    var t = !("touchstart" !== this.touchEvents.start || !h.passiveListener || !this.params.passiveListeners) && {
2569                        passive: !0,
2570                        capture: !1
2571                    };
2572                    h.gestures ? (this.$wrapperEl.on("gesturestart", ".swiper-slide", e.onGestureStart, t), this.$wrapperEl.on("gesturechange", ".swiper-slide", e.onGestureChange, t), this.$wrapperEl.on("gestureend", ".swiper-slide", e.onGestureEnd, t)) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.on(this.touchEvents.start, ".swiper-slide", e.onGestureStart, t), this.$wrapperEl.on(this.touchEvents.move, ".swiper-slide", e.onGestureChange, t), this.$wrapperEl.on(this.touchEvents.end, ".swiper-slide", e.onGestureEnd, t)), this.$wrapperEl.on(this.touchEvents.move, "." + this.params.zoom.containerClass, e.onTouchMove)
2573                }
2574            },
2575            disable: function() {
2576                var e = this.zoom;
2577                if (e.enabled) {
2578                    this.zoom.enabled = !1;
2579                    var t = !("touchstart" !== this.touchEvents.start || !h.passiveListener || !this.params.passiveListeners) && {
2580                        passive: !0,
2581                        capture: !1
2582                    };
2583                    h.gestures ? (this.$wrapperEl.off("gesturestart", ".swiper-slide", e.onGestureStart, t), this.$wrapperEl.off("gesturechange", ".swiper-slide", e.onGestureChange, t), this.$wrapperEl.off("gestureend", ".swiper-slide", e.onGestureEnd, t)) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.off(this.touchEvents.start, ".swiper-slide", e.onGestureStart, t), this.$wrapperEl.off(this.touchEvents.move, ".swiper-slide", e.onGestureChange, t), this.$wrapperEl.off(this.touchEvents.end, ".swiper-slide", e.onGestureEnd, t)), this.$wrapperEl.off(this.touchEvents.move, "." + this.params.zoom.containerClass, e.onTouchMove)
2584                }
2585            }
2586        },
2587        U = {
2588            loadInSlide: function(e, t) {
2589                void 0 === t && (t = !0);
2590                var i = this,
2591                    a = i.params.lazy;
2592                if (void 0 !== e && 0 !== i.slides.length) {
2593                    var r = i.virtual && i.params.virtual.enabled ? i.$wrapperEl.children("." + i.params.slideClass + '[data-swiper-slide-index="' + e + '"]') : i.slides.eq(e),
2594                        n = r.find("." + a.elementClass + ":not(." + a.loadedClass + "):not(." + a.loadingClass + ")");
2595                    !r.hasClass(a.elementClass) || r.hasClass(a.loadedClass) || r.hasClass(a.loadingClass) || (n = n.add(r[0])), 0 !== n.length && n.each(function(e, n) {
2596                        var o = s(n);
2597                        o.addClass(a.loadingClass);
2598                        var l = o.attr("data-background"),
2599                            d = o.attr("data-src"),
2600                            h = o.attr("data-srcset"),
2601                            p = o.attr("data-sizes");
2602                        i.loadImage(o[0], d || l, h, p, !1, function() {
2603                            if (void 0 !== i && null !== i && i && (!i || i.params) && !i.destroyed) {
2604                                if (l ? (o.css("background-image", 'url("' + l + '")'), o.removeAttr("data-background")) : (h && (o.attr("srcset", h), o.removeAttr("data-srcset")), p && (o.attr("sizes", p), o.removeAttr("data-sizes")), d && (o.attr("src", d), o.removeAttr("data-src"))), o.addClass(a.loadedClass).removeClass(a.loadingClass), r.find("." + a.preloaderClass).remove(), i.params.loop && t) {
2605                                    var e = r.attr("data-swiper-slide-index");
2606                                    if (r.hasClass(i.params.slideDuplicateClass)) {
2607                                        var s = i.$wrapperEl.children('[data-swiper-slide-index="' + e + '"]:not(.' + i.params.slideDuplicateClass + ")");
2608                                        i.lazy.loadInSlide(s.index(), !1)
2609                                    } else {
2610                                        var n = i.$wrapperEl.children("." + i.params.slideDuplicateClass + '[data-swiper-slide-index="' + e + '"]');
2611                                        i.lazy.loadInSlide(n.index(), !1)
2612                                    }
2613                                }
2614                                i.emit("lazyImageReady", r[0], o[0])
2615                            }
2616                        }), i.emit("lazyImageLoad", r[0], o[0])
2617                    })
2618                }
2619            },
2620            load: function() {
2621                var e = this,
2622                    t = e.$wrapperEl,
2623                    i = e.params,
2624                    a = e.slides,
2625                    r = e.activeIndex,
2626                    n = e.virtual && i.virtual.enabled,
2627                    o = i.lazy,
2628                    l = i.slidesPerView;
2629                function d(e) {
2630                    if (n) {
2631                        if (t.children("." + i.slideClass + '[data-swiper-slide-index="' + e + '"]').length)
2632                            return !0
2633                    } else if (a[e])
2634                        return !0;
2635                    return !1
2636                }
2637                function h(e) {
2638                    return n ? s(e).attr("data-swiper-slide-index") : s(e).index()
2639                }
2640                if ("auto" === l && (l = 0), e.lazy.initialImageLoaded || (e.lazy.initialImageLoaded = !0), e.params.watchSlidesVisibility)
2641                    t.children("." + i.slideVisibleClass).each(function(t, i) {
2642                        var a = n ? s(i).attr("data-swiper-slide-index") : s(i).index();
2643                        e.lazy.loadInSlide(a)
2644                    });
2645                else if (l > 1)
2646                    for (var p = r; p < r + l; p += 1)
vendor: 4,668 bytes, lines 2647-2734
2647                        d(p) && e.lazy.loadInSlide(p);
2648                else
2649                    e.lazy.loadInSlide(r);
2650                if (o.loadPrevNext)
2651                    if (l > 1 || o.loadPrevNextAmount && o.loadPrevNextAmount > 1) {
2652                        for (var c = o.loadPrevNextAmount, u = l, v = Math.min(r + u + Math.max(c, u), a.length), f = Math.max(r - Math.max(u, c), 0), m = r + l; m < v; m += 1)
2653                            d(m) && e.lazy.loadInSlide(m);
2654                        for (var g = f; g < r; g += 1)
2655                            d(g) && e.lazy.loadInSlide(g)
2656                    } else {
2657                        var b = t.children("." + i.slideNextClass);
2658                        b.length > 0 && e.lazy.loadInSlide(h(b));
2659                        var w = t.children("." + i.slidePrevClass);
2660                        w.length > 0 && e.lazy.loadInSlide(h(w))
2661                    }
2662            }
2663        },
2664        _ = {
2665            LinearSpline: function(e, t) {
2666                var i,
2667                    s,
2668                    a,
2669                    r,
2670                    n,
2671                    o = function(e, t) {
2672                        for (s = -1, i = e.length; i - s > 1;)
2673                            e[a = i + s >> 1] <= t ? s = a : i = a;
2674                        return i
2675                    };
2676                return this.x = e, this.y = t, this.lastIndex = e.length - 1, this.interpolate = function(e) {
2677                    return e ? (n = o(this.x, e), r = n - 1, (e - this.x[r]) * (this.y[n] - this.y[r]) / (this.x[n] - this.x[r]) + this.y[r]) : 0
2678                }, this
2679            },
2680            getInterpolateFunction: function(e) {
2681                this.controller.spline || (this.controller.spline = this.params.loop ? new _.LinearSpline(this.slidesGrid, e.slidesGrid) : new _.LinearSpline(this.snapGrid, e.snapGrid))
2682            },
2683            setTranslate: function(e, t) {
2684                var i,
2685                    s,
2686                    a = this,
2687                    r = a.controller.control;
2688                function n(e) {
2689                    var t = e.rtl && "horizontal" === e.params.direction ? -a.translate : a.translate;
2690                    "slide" === a.params.controller.by && (a.controller.getInterpolateFunction(e), s = -a.controller.spline.interpolate(-t)), s && "container" !== a.params.controller.by || (i = (e.maxTranslate() - e.minTranslate()) / (a.maxTranslate() - a.minTranslate()), s = (t - a.minTranslate()) * i + e.minTranslate()), a.params.controller.inverse && (s = e.maxTranslate() - s), e.updateProgress(s), e.setTranslate(s, a), e.updateActiveIndex(), e.updateSlidesClasses()
2691                }
2692                if (Array.isArray(r))
2693                    for (var o = 0; o < r.length; o += 1)
2694                        r[o] !== t && r[o] instanceof I && n(r[o]);
2695                else
2696                    r instanceof I && t !== r && n(r)
2697            },
2698            setTransition: function(e, t) {
2699                var i,
2700                    s = this,
2701                    a = s.controller.control;
2702                function r(t) {
2703                    t.setTransition(e, s), 0 !== e && (t.transitionStart(), t.$wrapperEl.transitionEnd(function() {
2704                        a && (t.params.loop && "slide" === s.params.controller.by && t.loopFix(), t.transitionEnd())
2705                    }))
2706                }
2707                if (Array.isArray(a))
2708                    for (i = 0; i < a.length; i += 1)
2709                        a[i] !== t && a[i] instanceof I && r(a[i]);
2710                else
2711                    a instanceof I && t !== a && r(a)
2712            }
2713        },
2714        Z = {
2715            makeElFocusable: function(e) {
2716                return e.attr("tabIndex", "0"), e
2717            },
2718            addElRole: function(e, t) {
2719                return e.attr("role", t), e
2720            },
2721            addElLabel: function(e, t) {
2722                return e.attr("aria-label", t), e
2723            },
2724            disableEl: function(e) {
2725                return e.attr("aria-disabled", !0), e
2726            },
2727            enableEl: function(e) {
2728                return e.attr("aria-disabled", !1), e
2729            },
2730            onEnterKey: function(e) {
2731                var t = this.params.a11y;
2732                if (13 === e.keyCode) {
2733                    var i = s(e.target);
2734                    this.navigation && this.navigation.$nextEl && i.is(this.navigation.$nextEl) && (this.isEnd && !this.params.loop || this.slideNext(), this.isEnd ? this.a11y.notify(t.lastSlideMessage) : this.a11y.notify(t.nextSlideMessage)), this.navigation && this.navigation.$prevEl && i.is(this.navigation.$prevEl) && (this.isBeg
2734inning && !this.params.loop || this.slidePrev(), this.isBeginning ? this.a11y.notify(t.firstSlideMessage) : this.a11y.notify(t.prevSlideMessage)), this.pagination && i.is("." + this.params.pagination.bulletClass) && i[0].click()
2735                }
2736            },
2737            notify: function(e) {
2738                var t = this.a11y.liveRegion;
2739                0 !== t.length && (t.html(""), t.html(e))
2740            },
2741            updateNavigation: function() {
2742                if (!this.params.loop) {
2743                    var e = this.navigation,
2744                        t = e.$nextEl,
2745                        i = e.$prevEl;
2746                    i && i.length > 0 && (this.isBeginning ? this.a11y.disableEl(i) : this.a11y.enableEl(i)), t && t.length > 0 && (this.isEnd ? this.a11y.disableEl(t) : this.a11y.enableEl(t))
2747                }
2748            },
2749            updatePagination: function() {
2750                var e = this,
2751                    t = e.params.a11y;
2752                e.pagination && e.params.pagination.clickable && e.pagination.bullets && e.pagination.bullets.length && e.pagination.bullets.each(function(i, a) {
2753                    var r = s(a);
2754                    e.a11y.makeElFocusable(r), e.a11y.addElRole(r, "button"), e.a11y.addElLabel(r, t.paginationBulletMessage.replace(/{{index}}/, r.index() + 1))
2755                })
2756            },
2757            init: function() {
2758                this.$el.append(this.a11y.liveRegion);
2759                var e,
2760                    t,
2761                    i = this.params.a11y;
2762                this.navigation && this.navigation.$nextEl && (e = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (t = this.navigation.$prevEl), e && (this.a11y.makeElFocusable(e), this.a11y.addElRole(e, "button"), this.a11y.addElLabel(e, i.nextSlideMessage), e.on("keydown", this.a11y.onEnterKey)), t && (this.a11y.makeElFocusable(t), this.a11y.addElRole(t, "button"), this.a11y.addElLabel(t, i.prevSlideMessage), t.on("keydown", this.a11y.onEnterKey)), this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.on("keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey)
2763            },
2764            destroy: function() {
2765                var e,
2766                    t;
2767                this.a11y.liveRegion && this.a11y.liveRegion.length > 0 && this.a11y.liveRegion.remove(), this.navigation && this.navigation.$nextEl && (e = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (t = this.navigation.$prevEl), e && e.off("keydown", this.a11y.onEnterKey), t && t.off("keydown", this.a11y.onEnterKey), this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.off("keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey)
2768            }
2769        },
2770        Q = {
2771            init: function() {
2772                if (this.params.history) {
2773                    if (!t.history || !t.history.pushState)
2774                        return this.params.history.enabled = !1, void (this.params.hashNavigation.enabled = !0);
2775                    var e = this.history;
2776                    e.initialized = !0, e.paths = Q.getPathValues(), (e.paths.key || e.paths.value) && (e.scrollToSlide(0, e.paths.value, this.params.runCallbacksOnInit), this.params.history.replaceState || t.addEventListener("popstate", this.history.setHistoryPopState))
2777                }
2778            },
2779            destroy: function() {
2780                this.params.history.replaceState || t.removeEventListener("popstate", this.history.setHistoryPopState)
2781            },
2782            setHistoryPopState: function() {
2783                this.history.paths = Q.getPathValues(), this.history.scrollToSlide(this.params.speed, this.history.paths.value, !1)
2784            },
2785            getPathValues: function() {
2786                var e = t.location.pathname.slice(1).split("/").filter(function(e) {
2787                        return "" !== e
2788                    }),
2789                    i = e.length;
2790                return {
2791                    key: e[i - 2],
2792                    value: e[i - 1]
2793                }
2794            },
2795            setHistory: function(e, i) {
2796                if (this.history.initialized && this.params.history.enabled) {
2797                    var s = this.slides.eq(i),
2798                        a = Q.slugify(s.attr("data-history"));
2799                    t.location.pathname.includes(e) || (a = e + "/" + a);
2800                    var r = t.history.state;
2801                    r && r.value === a || (this.params.history.replaceState ? t.history.replaceState({
2802                        value: a
2803                    }, null, a) : t.history.pushState({
2804                        value: a
2805                    }, null, a))
2806                }
2807            },
2808            slugify: function(e) {
2809                return e.toString().toLowerCase().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, "")
2810            },
2811            scrollToSlide: function(e, t, i) {
2812                if (t)
2813                    for (var s = 0, a = this.slides.length; s < a; s += 1) {
2814                        var r = this.slides.eq(s);
2815                        if (Q.slugify(r.attr("data-history")) === t && !r.hasClass(this.params.slideDuplicateClass)) {
2816                            var n = r.index();
2817                            this.slideTo(n, e, i)
2818                        }
2819                    }
2820                else
2821                    this.slideTo(0, e, i)
2822            }
2823        },
2824        J = {
2825            onHashCange: function() {
2826                var t = e.location.hash.replace("#", "");
2827                t !== this.slides.eq(this.activeIndex).attr("data-hash") && this.slideTo(this.$wrapperEl.children("." + this.params.slideClass + '[data-hash="' + t + '"]').index())
2828            },
2829            setHash: function() {
2830                if (this.hashNavigation.initialized && this.params.hashNavigation.enabled)
2831                    if (this.params.hashNavigation.replaceState && t.history && t.history.replaceState)
2832                        t.history.replaceState(null, null, "#" + this.slides.eq(this.activeIndex).attr("data-hash") || "");
2833                    else {
2834                        var i = this.slides.eq(this.activeIndex),
2835                            s = i.attr("data-hash") || i.attr("data-history");
2836                        e.location.hash = s || ""
2837                    }
2838            },
2839            init: function() {
2840                if (!(!this.params.hashNavigation.enabled || this.params.history && this.params.history.enabled)) {
2841                    this.hashNavigation.initialized = !0;
2842                    var i = e.location.hash.replace("#", "");
2843                    if (i)
2844                        for (var a = 0, r = this.slides.length; a < r; a += 1) {
2845                            var n = this.slides.eq(a);
2846                            if ((n.attr("data-hash") || n.attr("data-history")) === i && !n.hasClass(this.params.slideDuplicateClass)) {
2847                                var o = n.index();
2848                                this.slideTo(o, 0, this.params.runCallbacksOnInit, !0)
2849                            }
2850                        }
2851                    this.params.hashNavigation.watchState && s(t).on("hashchange", this.hashNavigation.onHashCange)
2852                }
2853            },
2854            destroy: function() {
2855                this.params.hashNavigation.watchState && s(t).off("hashchange", this.hashNavigation.onHashCange)
2856            }
2857        },
2858        ee = {
2859            run: function() {
2860                var e = this,
2861                    t = e.slides.eq(e.activeIndex),
2862                    i = e.params.autoplay.delay;
2863                t.attr("data-swiper-autoplay") && (i = t.attr("data-swiper-autoplay") || e.params.autoplay.delay), e.autoplay.timeout = d.nextTick(function() {
2864                    e.params.autoplay.reverseDirection ? e.params.loop ? (e.loopFix(), e.slidePrev(e.params.speed, !0, !0), e.emit("autoplay")) : e.isBeginning ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(e.slides.length - 1, e.params.speed, !0, !0), e.emit("autoplay")) : (e.slidePrev(e.params.speed, !0, !0), e.emit("autoplay")) : e.params.loop ? (e.loopFix(), e.slideNext(e.params.speed, !0, !0), e.emit("autoplay")) : e.isEnd ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(0, e.params.speed, !0, !0), e.emit("autoplay")) : (e.slideNext(e.params.speed, !0, !0), e.emit("autoplay"))
2865                }, i)
2866            },
2867            start: function() {
2868                return void 0 === this.autoplay.timeout && (!this.autoplay.running && (this.autoplay.running = !0, this.emit
2868("autoplayStart"), this.autoplay.run(), !0))
2869            },
2870            stop: function() {
2871                return !!this.autoplay.running && (void 0 !== this.autoplay.timeout && (this.autoplay.timeout && (clearTimeout(this.autoplay.timeout), this.autoplay.timeout = void 0), this.autoplay.running = !1, this.emit("autoplayStop"), !0))
2872            },
2873            pause: function(e) {
2874                var t = this;
2875                t.autoplay.running && (t.autoplay.paused || (t.autoplay.timeout && clearTimeout(t.autoplay.timeout), t.autoplay.paused = !0, 0 !== e && t.params.autoplay.waitForTransition ? t.$wrapperEl.transitionEnd(function() {
2876                    t && !t.destroyed && (t.autoplay.paused = !1, t.autoplay.running ? t.autoplay.run() : t.autoplay.stop())
2877                }) : (t.autoplay.paused = !1, t.autoplay.run())))
2878            }
2879        },
2880        te = {
2881            setTranslate: function() {
2882                for (var e = this.slides, t = 0; t < e.length; t += 1) {
2883                    var i = this.slides.eq(t),
2884                        s = -i[0].swiperSlideOffset;
2885                    this.params.virtualTranslate || (s -= this.translate);
2886                    var a = 0;
2887                    this.isHorizontal() || (a = s, s = 0);
2888                    var r = this.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(i[0].progress), 0) : 1 + Math.min(Math.max(i[0].progress, -1), 0);
2889                    i.css({
2890                        opacity: r
2891                    }).transform("translate3d(" + s + "px, " + a + "px, 0px)")
2892                }
2893            },
2894            setTransition: function(e) {
2895                var t = this,
2896                    i = t.slides,
2897                    s = t.$wrapperEl;
2898                if (i.transition(e), t.params.virtualTranslate && 0 !== e) {
2899                    var a = !1;
2900                    i.transitionEnd(function() {
2901                        if (!a && t && !t.destroyed) {
2902                            a = !0, t.animating = !1;
2903                            for (var e = ["webkitTransitionEnd", "transitionend"], i = 0; i < e.length; i += 1)
2904                                s.trigger(e[i])
2905                        }
2906                    })
2907                }
2908            }
2909        },
2910        ie = {
2911            setTranslate: function() {
2912                var e,
2913                    t = this.$el,
2914                    i = this.$wrapperEl,
2915                    a = this.slides,
2916                    r = this.width,
2917                    n = this.height,
2918                    o = this.rtl,
2919                    l = this.size,
2920                    d = this.params.cubeEffect,
2921                    h = this.isHorizontal(),
2922                    p = this.virtual && this.params.virtual.enabled,
2923                    c = 0;
2924                d.shadow && (h ? (0 === (e = i.find(".swiper-cube-shadow")).length && (e = s('<div class="swiper-cube-shadow"></div>'), i.append(e)), e.css({
2925                    height: r + "px"
2926                })) : 0 === (e = t.find(".swiper-cube-shadow")).length && (e = s('<div class="swiper-cube-shadow"></div>'), t.append(e)));
2927                for (var u = 0; u < a.length; u += 1) {
2928                    var v = a.eq(u),
2929                        f = u;
2930                    p && (f = parseInt(v.attr("data-swiper-slide-index"), 10));
2931                    var m = 90 * f,
2932                        g = Math.floor(m / 360);
vendor: 34,550 bytes, lines 2933-3698
2933                    o && (m = -m, g = Math.floor(-m / 360));
2934                    var b = Math.max(Math.min(v[0].progress, 1), -1),
2935                        w = 0,
2936                        y = 0,
2937                        x = 0;
2938                    f % 4 == 0 ? (w = 4 * -g * l, x = 0) : (f - 1) % 4 == 0 ? (w = 0, x = 4 * -g * l) : (f - 2) % 4 == 0 ? (w = l + 4 * g * l, x = l) : (f - 3) % 4 == 0 && (w = -l, x = 3 * l + 4 * l * g), o && (w = -w), h || (y = w, w = 0);
2939                    var E = "rotateX(" + (h ? 0 : -m) + "deg) rotateY(" + (h ? m : 0) + "deg) translate3d(" + w + "px, " + y + "px, " + x + "px)";
2940                    if (b <= 1 && b > -1 && (c = 90 * f + 90 * b, o && (c = 90 * -f - 90 * b)), v.transform(E), d.slideShadows) {
2941                        var T = h ? v.find(".swiper-slide-shadow-left") : v.find(".swiper-slide-shadow-top"),
2942                            S = h ? v.find(".swiper-slide-shadow-right") : v.find(".swiper-slide-shadow-bottom");
2943                        0 === T.length && (T = s('<div class="swiper-slide-shadow-' + (h ? "left" : "top") + '"></div>'), v.append(T)), 0 === S.length && (S = s('<div class="swiper-slide-shadow-' + (h ? "right" : "bottom") + '"></div>'), v.append(S)), T.length && (T[0].style.opacity = Math.max(-b, 0)), S.length && (S[0].style.opacity = Math.max(b, 0))
2944                    }
2945                }
2946                if (i.css({
2947                    "-webkit-transform-origin": "50% 50% -" + l / 2 + "px",
2948                    "-moz-transform-origin": "50% 50% -" + l / 2 + "px",
2949                    "-ms-transform-origin": "50% 50% -" + l / 2 + "px",
2950                    "transform-origin": "50% 50% -" + l / 2 + "px"
2951                }), d.shadow)
2952                    if (h)
2953                        e.transform("translate3d(0px, " + (r / 2 + d.shadowOffset) + "px, " + -r / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + d.shadowScale + ")");
2954                    else {
2955                        var C = Math.abs(c) - 90 * Math.floor(Math.abs(c) / 90),
2956                            M = 1.5 - (Math.sin(2 * C * Math.PI / 360) / 2 + Math.cos(2 * C * Math.PI / 360) / 2),
2957                            z = d.shadowScale,
2958                            k = d.shadowScale / M,
2959                            $ = d.shadowOffset;
2960                        e.transform("scale3d(" + z + ", 1, " + k + ") translate3d(0px, " + (n / 2 + $) + "px, " + -n / 2 / k + "px) rotateX(-90deg)")
2961                    }
2962                var L = P.isSafari || P.isUiWebView ? -l / 2 : 0;
2963                i.transform("translate3d(0px,0," + L + "px) rotateX(" + (this.isHorizontal() ? 0 : c) + "deg) rotateY(" + (this.isHorizontal() ? -c : 0) + "deg)")
2964            },
2965            setTransition: function(e) {
2966                var t = this.$el;
2967                this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e), this.params.cubeEffect.shadow && !this.isHorizontal() && t.find(".swiper-cube-shadow").transition(e)
2968            }
2969        },
2970        se = {
2971            setTranslate: function() {
2972                for (var e = this.slides, t = 0; t < e.length; t += 1) {
2973                    var i = e.eq(t),
2974                        a = i[0].progress;
2975                    this.params.flipEffect.limitRotation && (a = Math.max(Math.min(i[0].progress, 1), -1));
2976                    var r = -180 * a,
2977                        n = 0,
2978                        o = -i[0].swiperSlideOffset,
2979                        l = 0;
2980                    if (this.isHorizontal() ? this.rtl && (r = -r) : (l = o, o = 0, n = -r, r = 0), i[0].style.zIndex = -Math.abs(Math.round(a)) + e.length, this.params.flipEffect.slideShadows) {
2981                        var d = this.isHorizontal() ? i.find(".swiper-slide-shadow-left") : i.find(".swiper-slide-shadow-top"),
2982                            h = this.isHorizontal() ? i.find(".swiper-slide-shadow-right") : i.find(".swiper-slide-shadow-bottom");
2983                        0 === d.length && (d = s('<div class="swiper-slide-shadow-' + (this.isHorizontal() ? "left" : "top") + '"></div>'), i.append(d)), 0 === h.length && (h = s('<div class="swiper-slide-shadow-' + (this.isHorizontal() ? "right" : "bottom") + '"></div>'), i.append(h)), d.length && (d[0].style.opacity = Math.max(-a, 0)), h.length && (h[0].style.opacity = Math.max(a, 0))
2984                    }
2985                    i.transform("translate3d(" + o + "px, " + l + "px, 0px) rotateX(" + n + "deg) rotateY(" + r + "deg)")
2986                }
2987            },
2988            setTransition: function(e) {
2989                var t = this,
2990                    i = t.slides,
2991                    s = t.activeIndex,
2992                    a = t.$wrapperEl;
2993                if (i.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e), t.params.virtualTranslate && 0 !== e) {
2994                    var r = !1;
2995                    i.eq(s).transitionEnd(function() {
2996                        if (!r && t && !t.destroyed) {
2997                            r = !0, t.animating = !1;
2998                            for (var e = ["webkitTransitionEnd", "transitionend"], i = 0; i < e.length; i += 1)
2999                                a.trigger(e[i])
3000                        }
3001                    })
3002                }
3003            }
3004        },
3005        ae = {
3006            setTranslate: function() {
3007                for (var e = this.width, t = this.height, i = this.slides, a = this.$wrapperEl, r = this.slidesSizesGrid, n = this.params.coverflowEffect, o = this.isHorizontal(), l = this.translate, d = o ? e / 2 - l : t / 2 - l, p = o ? n.rotate : -n.rotate, c = n.depth, u = 0, v = i.length; u < v; u += 1) {
3008                    var f = i.eq(u),
3009                        m = r[u],
3010                        g = (d - f[0].swiperSlideOffset - m / 2) / m * n.modifier,
3011                        b = o ? p * g : 0,
3012                        w = o ? 0 : p * g,
3013                        y = -c * Math.abs(g),
3014                        x = o ? 0 : n.stretch * g,
3015                        E = o ? n.stretch * g : 0;
3016                    Math.abs(E) < .001 && (E = 0), Math.abs(x) < .001 && (x = 0), Math.abs(y) < .001 && (y = 0), Math.abs(b) < .001 && (b = 0), Math.abs(w) < .001 && (w = 0);
3017                    var T = "translate3d(" + E + "px," + x + "px," + y + "px)  rotateX(" + w + "deg) rotateY(" + b + "deg)";
3018                    if (f.transform(T), f[0].style.zIndex = 1 - Math.abs(Math.round(g)), n.slideShadows) {
3019                        var S = o ? f.find(".swiper-slide-shadow-left") : f.find(".swiper-slide-shadow-top"),
3020                            C = o ? f.find(".swiper-slide-shadow-right") : f.find(".swiper-slide-shadow-bottom");
3021                        0 === S.length && (S = s('<div class="swiper-slide-shadow-' + (o ? "left" : "top") + '"></div>'), f.append(S)), 0 === C.length && (C = s('<div class="swiper-slide-shadow-' + (o ? "right" : "bottom") + '"></div>'), f.append(C)), S.length && (S[0].style.opacity = g > 0 ? g : 0), C.length && (C[0].style.opacity = -g > 0 ? -g : 0)
3022                    }
3023                }
3024                (h.pointerEvents || h.prefixedPointerEvents) && (a[0].style.perspectiveOrigin = d + "px 50%")
3025            },
3026            setTransition: function(e) {
3027                this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)
3028            }
3029        },
3030        re = [D, O, A, H, X, B, V, {
3031            name: "mousewheel",
3032            params: {
3033                mousewheel: {
3034                    enabled: !1,
3035                    releaseOnEdges: !1,
3036                    invert: !1,
3037                    forceToAxis: !1,
3038                    sensitivity: 1,
3039                    eventsTarged: "container"
3040                }
3041            },
3042            create: function() {
3043                d.extend(this, {
3044                    mousewheel: {
3045                        enabled: !1,
3046                        enable: R.enable.bind(this),
3047                        disable: R.disable.bind(this),
3048                        handle: R.handle.bind(this),
3049                        lastScrollTime: d.now()
3050                    }
3051                })
3052            },
3053            on: {
3054                init: function() {
3055                    this.params.mousewheel.enabled && this.mousewheel.enable()
3056                },
3057                destroy: function() {
3058                    this.mousewheel.enabled && this.mousewheel.disable()
3059                }
3060            }
3061        }, {
3062            name: "navigation",
3063            params: {
3064                navigation: {
3065                    nextEl: null,
3066                    prevEl: null,
3067                    hideOnClick: !1,
3068                    disabledClass: "swiper-button-disabled",
3069                    hiddenClass: "swiper-button-hidden",
3070                    lockClass: "swiper-button-lock"
3071                }
3072            },
3073            create: function() {
3074                d.extend(this, {
3075                    navigation: {
3076                        init: F.init.bind(this),
3077                        update: F.update.bind(this),
3078                        destroy: F.destroy.bind(this)
3079                    }
3080                })
3081            },
3082            on: {
3083                init: function() {
3084                    this.navigation.init(), this.navigation.update()
3085                },
3086                toEdge: function() {
3087                    this.navigation.update()
3088                },
3089                fromEdge: function() {
3090                    this.navigation.update()
3091                },
3092                destroy: function() {
3093                    this.navigation.destroy()
3094                },
3095                click: function(e) {
3096                    var t = this.navigation,
3097                        i = t.$nextEl,
3098                        a = t.$prevEl;
3099                    !this.params.navigation.hideOnClick || s(e.target).is(a) || s(e.target).is(i) || (i && i.toggleClass(this.params.navigation.hiddenClass), a && a.toggleClass(this.params.navigation.hiddenClass))
3100                }
3101            }
3102        }, {
3103            name: "pagination",
3104            params: {
3105                pagination: {
3106                    el: null,
3107                    bulletElement: "span",
3108                    clickable: !1,
3109                    hideOnClick: !1,
3110                    renderBullet: null,
3111                    renderProgressbar: null,
3112                    renderFraction: null,
3113                    renderCustom: null,
3114                    type: "bullets",
3115                    dynamicBullets: !1,
3116                    dynamicMainBullets: 1,
3117                    bulletClass: "swiper-pagination-bullet",
3118                    bulletActiveClass: "swiper-pagination-bullet-active",
3119                    modifierClass: "swiper-pagination-",
3120                    currentClass: "swiper-pagination-current",
3121                    totalClass: "swiper-pagination-total",
3122                    hiddenClass: "swiper-pagination-hidden",
3123                    progressbarFillClass: "swiper-pagination-progressbar-fill",
3124                    clickableClass: "swiper-pagination-clickable",
3125                    lockClass: "swiper-pagination-lock"
3126                }
3127            },
3128            create: function() {
3129                d.extend(this, {
3130                    pagination: {
3131                        init: W.init.bind(this),
3132                        render: W.render.bind(this),
3133                        update: W.update.bind(this),
3134                        destroy: W.destroy.bind(this),
3135                        dynamicBulletIndex: 0
3136                    }
3137                })
3138            },
3139            on: {
3140                init: function() {
3141                    this.pagination.init(), this.pagination.render(), this.pagination.update()
3142                },
3143                activeIndexChange: function() {
3144                    this.params.loop ? this.pagination.update() : void 0 === this.snapIndex && this.pagination.update()
3145                },
3146                snapIndexChange: function() {
3147                    this.params.loop || this.pagination.update()
3148                },
3149                slidesLengthChange: function() {
3150                    this.params.loop && (this.pagination.render(), this.pagination.update())
3151                },
3152                snapGridLengthChange: function() {
3153                    this.params.loop || (this.pagination.render(), this.pagination.update())
3154                },
3155                destroy: function() {
3156                    this.pagination.destroy()
3157                },
3158                click: function(e) {
3159                    this.params.pagination.el && this.params.pagination.hideOnClick && this.pagination.$el.length > 0 && !s(e.target).hasClass(this.params.pagination.bulletClass) && this.pagination.$el.toggleClass(this.params.pagination.hiddenClass)
3160                }
3161            }
3162        }, {
3163            name: "scrollbar",
3164            params: {
3165                scrollbar: {
3166                    el: null,
3167                    dragSize: "auto",
3168                    hide: !1,
3169                    draggable: !1,
3170                    snapOnRelease: !0,
3171                    lockClass: "swiper-scrollbar-lock",
3172                    dragClass: "swiper-scrollbar-drag"
3173                }
3174            },
3175            create: function() {
3176                d.extend(this, {
3177                    scrollbar: {
3178                        init: q.init.bind(this),
3179                        destroy: q.destroy.bind(this),
3180                        updateSize: q.updateSize.bind(this),
3181                        setTranslate: q.setTranslate.bind(this),
3182                        setTransition: q.setTransition.bind(this),
3183                        enableDraggable: q.enableDraggable.bind(this),
3184                        disableDraggable: q.disableDraggable.bind(this),
3185                        setDragPosition: q.setDragPosition.bind(this),
3186                        onDragStart: q.onDragStart.bind(this),
3187                        onDragMove: q.onDragMove.bind(this),
3188                        onDragEnd: q.onDragEnd.bind(this),
3189                        isTouched: !1,
3190                        timeout: null,
3191                        dragTimeout: null
3192                    }
3193                })
3194            },
3195            on: {
3196                init: function() {
3197                    this.scrollbar.init(), this.scrollbar.updateSize(), this.scrollbar.setTranslate()
3198                },
3199                update: function() {
3200                    this.scrollbar.updateSize()
3201                },
3202                resize: function() {
3203                    this.scrollbar.updateSize()
3204                },
3205                observerUpdate: function() {
3206                    this.scrollbar.updateSize()
3207                },
3208                setTranslate: function() {
3209                    this.scrollbar.setTranslate()
3210                },
3211                setTransition: function(e) {
3212                    this.scrollbar.setTransition(e)
3213                },
3214                destroy: function() {
3215                    this.scrollbar.destroy()
3216                }
3217            }
3218        }, {
3219            name: "parallax",
3220            params: {
3221                parallax: {
3222                    enabled: !1
3223                }
3224            },
3225            create: function() {
3226                d.extend(this, {
3227                    parallax: {
3228                        setTransform: j.setTransform.bind(this),
3229                        setTranslate: j.setTranslate.bind(this),
3230                        setTransition: j.setTransition.bind(this)
3231                    }
3232                })
3233            },
3234            on: {
3235                beforeInit: function() {
3236                    this.params.parallax.enabled && (this.params.watchSlidesProgress = !0)
3237                },
3238                init: function() {
3239                    this.params.parallax && this.parallax.setTranslate()
3240                },
3241                setTranslate: function() {
3242                    this.params.parallax && this.parallax.setTranslate()
3243                },
3244                setTransition: function(e) {
3245                    this.params.parallax && this.parallax.setTransition(e)
3246                }
3247            }
3248        }, {
3249            name: "zoom",
3250            params: {
3251                zoom: {
3252                    enabled: !1,
3253                    maxRatio: 3,
3254                    minRatio: 1,
3255                    toggle: !0,
3256                    containerClass: "swiper-zoom-container",
3257                    zoomedSlideClass: "swiper-slide-zoomed"
3258                }
3259            },
3260            create: function() {
3261                var e = this,
3262                    t = {
3263                        enabled: !1,
3264                        scale: 1,
3265                        currentScale: 1,
3266                        isScaling: !1,
3267                        gesture: {
3268                            $slideEl: void 0,
3269                            slideWidth: void 0,
3270                            slideHeight: void 0,
3271                            $imageEl: void 0,
3272                            $imageWrapEl: void 0,
3273                            maxRatio: 3
3274                        },
3275                        image: {
3276                            isTouched: void 0,
3277                            isMoved: void 0,
3278                            currentX: void 0,
3279                            currentY: void 0,
3280                            minX: void 0,
3281                            minY: void 0,
3282                            maxX: void 0,
3283                            maxY: void 0,
3284                            width: void 0,
3285                            height: void 0,
3286                            startX: void 0,
3287                            startY: void 0,
3288                            touchesStart: {},
3289                            touchesCurrent: {}
3290                        },
3291                        velocity: {
3292                            x: void 0,
3293                            y: void 0,
3294                            prevPositionX: void 0,
3295                            prevPositionY: void 0,
3296                            prevTime: void 0
3297                        }
3298                    };
3299                "onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out".split(" ").forEach(function(i) {
3300                    t[i] = K[i].bind(e)
3301                }), d.extend(e, {
3302                    zoom: t
3303                })
3304            },
3305            on: {
3306                init: function() {
3307                    this.params.zoom.enabled && this.zoom.enable()
3308                },
3309                destroy: function() {
3310                    this.zoom.disable()
3311                },
3312                touchStart: function(e) {
3313                    this.zoom.enabled && this.zoom.onTouchStart(e)
3314                },
3315                touchEnd: function(e) {
3316                    this.zoom.enabled && this.zoom.onTouchEnd(e)
3317                },
3318                doubleTap: function(e) {
3319                    this.params.zoom.enabled && this.zoom.enabled && this.params.zoom.toggle && this.zoom.toggle(e)
3320                },
3321                transitionEnd: function() {
3322                    this.zoom.enabled && this.params.zoom.enabled && this.zoom.onTransitionEnd()
3323                }
3324            }
3325        }, {
3326            name: "lazy",
3327            params: {
3328                lazy: {
3329                    enabled: !1,
3330                    loadPrevNext: !1,
3331                    loadPrevNextAmount: 1,
3332                    loadOnTransitionStart: !1,
3333                    elementClass: "swiper-lazy",
3334                    loadingClass: "swiper-lazy-loading",
3335                    loadedClass: "swiper-lazy-loaded",
3336                    preloaderClass: "swiper-lazy-preloader"
3337                }
3338            },
3339            create: function() {
3340                d.extend(this, {
3341                    lazy: {
3342                        initialImageLoaded: !1,
3343                        load: U.load.bind(this),
3344                        loadInSlide: U.loadInSlide.bind(this)
3345                    }
3346                })
3347            },
3348            on: {
3349                beforeInit: function() {
3350                    this.params.lazy.enabled && this.params.preloadImages && (this.params.preloadImages = !1)
3351                },
3352                init: function() {
3353                    this.params.lazy.enabled && !this.params.loop && 0 === this.params.initialSlide && this.lazy.load()
3354                },
3355                scroll: function() {
3356                    this.params.freeMode && !this.params.freeModeSticky && this.lazy.load()
3357                },
3358                resize: function() {
3359                    this.params.lazy.enabled && this.lazy.load()
3360                },
3361                scrollbarDragMove: function() {
3362                    this.params.lazy.enabled && this.lazy.load()
3363                },
3364                transitionStart: function() {
3365                    this.params.lazy.enabled && (this.params.lazy.loadOnTransitionStart || !this.params.lazy.loadOnTransitionStart && !this.lazy.initialImageLoaded) && this.lazy.load()
3366                },
3367                transitionEnd: function() {
3368                    this.params.lazy.enabled && !this.params.lazy.loadOnTransitionStart && this.lazy.load()
3369                }
3370            }
3371        }, {
3372            name: "controller",
3373            params: {
3374                controller: {
3375                    control: void 0,
3376                    inverse: !1,
3377                    by: "slide"
3378                }
3379            },
3380            create: function() {
3381                d.extend(this, {
3382                    controller: {
3383                        control: this.params.controller.control,
3384                        getInterpolateFunction: _.getInterpolateFunction.bind(this),
3385                        setTranslate: _.setTranslate.bind(this),
3386                        setTransition: _.setTransition.bind(this)
3387                    }
3388                })
3389            },
3390            on: {
3391                update: function() {
3392                    this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline)
3393                },
3394                resize: function() {
3395                    this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline)
3396                },
3397                observerUpdate: function() {
3398                    this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline)
3399                },
3400                setTranslate: function(e, t) {
3401                    this.controller.control && this.controller.setTranslate(e, t)
3402                },
3403                setTransition: function(e, t) {
3404                    this.controller.control && this.controller.setTransition(e, t)
3405                }
3406            }
3407        }, {
3408            name: "a11y",
3409            params: {
3410                a11y: {
3411                    enabled: !1,
3412                    notificationClass: "swiper-notification",
3413                    prevSlideMessage: "Previous slide",
3414                    nextSlideMessage: "Next slide",
3415                    firstSlideMessage: "This is the first slide",
3416                    lastSlideMessage: "This is the last slide",
3417                    paginationBulletMessage: "Go to slide {{index}}"
3418                }
3419            },
3420            create: function() {
3421                var e = this;
3422                d.extend(e, {
3423                    a11y: {
3424                        liveRegion: s('<span class="' + e.params.a11y.notificationClass + '" aria-live="assertive" aria-atomic="true"></span>')
3425                    }
3426                }), Object.keys(Z).forEach(function(t) {
3427                    e.a11y[t] = Z[t].bind(e)
3428                })
3429            },
3430            on: {
3431                init: function() {
3432                    this.params.a11y.enabled && (this.a11y.init(), this.a11y.updateNavigation())
3433                },
3434                toEdge: function() {
3435                    this.params.a11y.enabled && this.a11y.updateNavigation()
3436                },
3437                fromEdge: function() {
3438                    this.params.a11y.enabled && this.a11y.updateNavigation()
3439                },
3440                paginationUpdate: function() {
3441                    this.params.a11y.enabled && this.a11y.updatePagination()
3442                },
3443                destroy: function() {
3444                    this.params.a11y.enabled && this.a11y.destroy()
3445                }
3446            }
3447        }, {
3448            name: "history",
3449            params: {
3450                history: {
3451                    enabled: !1,
3452                    replaceState: !1,
3453                    key: "slides"
3454                }
3455            },
3456            create: function() {
3457                d.extend(this, {
3458                    history: {
3459                        init: Q.init.bind(this),
3460                        setHistory: Q.setHistory.bind(this),
3461                        setHistoryPopState: Q.setHistoryPopState.bind(this),
3462                        scrollToSlide: Q.scrollToSlide.bind(this),
3463                        destroy: Q.destroy.bind(this)
3464                    }
3465                })
3466            },
3467            on: {
3468                init: function() {
3469                    this.params.history.enabled && this.history.init()
3470                },
3471                destroy: function() {
3472                    this.params.history.enabled && this.history.destroy()
3473                },
3474                transitionEnd: function() {
3475                    this.history.initialized && this.history.setHistory(this.params.history.key, this.activeIndex)
3476                }
3477            }
3478        }, {
3479            name: "hash-navigation",
3480            params: {
3481                hashNavigation: {
3482                    enabled: !1,
3483                    replaceState: !1,
3484                    watchState: !1
3485                }
3486            },
3487            create: function() {
3488                d.extend(this, {
3489                    hashNavigation: {
3490                        initialized: !1,
3491                        init: J.init.bind(this),
3492                        destroy: J.destroy.bind(this),
3493                        setHash: J.setHash.bind(this),
3494                        onHashCange: J.onHashCange.bind(this)
3495                    }
3496                })
3497            },
3498            on: {
3499                init: function() {
3500                    this.params.hashNavigation.enabled && this.hashNavigation.init()
3501                },
3502                destroy: function() {
3503                    this.params.hashNavigation.enabled && this.hashNavigation.destroy()
3504                },
3505                transitionEnd: function() {
3506                    this.hashNavigation.initialized && this.hashNavigation.setHash()
3507                }
3508            }
3509        }, {
3510            name: "autoplay",
3511            params: {
3512                autoplay: {
3513                    enabled: !1,
3514                    delay: 3e3,
3515                    waitForTransition: !0,
3516                    disableOnInteraction: !0,
3517                    stopOnLastSlide: !1,
3518                    reverseDirection: !1
3519                }
3520            },
3521            create: function() {
3522                d.extend(this, {
3523                    autoplay: {
3524                        running: !1,
3525                        paused: !1,
3526                        run: ee.run.bind(this),
3527                        start: ee.start.bind(this),
3528                        stop: ee.stop.bind(this),
3529                        pause: ee.pause.bind(this)
3530                    }
3531                })
3532            },
3533            on: {
3534                init: function() {
3535                    this.params.autoplay.enabled && this.autoplay.start()
3536                },
3537                beforeTransitionStart: function(e, t) {
3538                    this.autoplay.running && (t || !this.params.autoplay.disableOnInteraction ? this.autoplay.pause(e) : this.autoplay.stop())
3539                },
3540                sliderFirstMove: function() {
3541                    this.autoplay.running && (this.params.autoplay.disableOnInteraction ? this.autoplay.stop() : this.autoplay.pause())
3542                },
3543                destroy: function() {
3544                    this.autoplay.running && this.autoplay.stop()
3545                }
3546            }
3547        }, {
3548            name: "effect-fade",
3549            params: {
3550                fadeEffect: {
3551                    crossFade: !1
3552                }
3553            },
3554            create: function() {
3555                d.extend(this, {
3556                    fadeEffect: {
3557                        setTranslate: te.setTranslate.bind(this),
3558                        setTransition: te.setTransition.bind(this)
3559                    }
3560                })
3561            },
3562            on: {
3563                beforeInit: function() {
3564                    if ("fade" === this.params.effect) {
3565                        this.classNames.push(this.params.containerModifierClass + "fade");
3566                        var e = {
3567                            slidesPerView: 1,
3568                            slidesPerColumn: 1,
3569                            slidesPerGroup: 1,
3570                            watchSlidesProgress: !0,
3571                            spaceBetween: 0,
3572                            virtualTranslate: !0
3573                        };
3574                        d.extend(this.params, e), d.extend(this.originalParams, e)
3575                    }
3576                },
3577                setTranslate: function() {
3578                    "fade" === this.params.effect && this.fadeEffect.setTranslate()
3579                },
3580                setTransition: function(e) {
3581                    "fade" === this.params.effect && this.fadeEffect.setTransition(e)
3582                }
3583            }
3584        }, {
3585            name: "effect-cube",
3586            params: {
3587                cubeEffect: {
3588                    slideShadows: !0,
3589                    shadow: !0,
3590                    shadowOffset: 20,
3591                    shadowScale: .94
3592                }
3593            },
3594            create: function() {
3595                d.extend(this, {
3596                    cubeEffect: {
3597                        setTranslate: ie.setTranslate.bind(this),
3598                        setTransition: ie.setTransition.bind(this)
3599                    }
3600                })
3601            },
3602            on: {
3603                beforeInit: function() {
3604                    if ("cube" === this.params.effect) {
3605                        this.classNames.push(this.params.containerModifierClass + "cube"), this.classNames.push(this.params.containerModifierClass + "3d");
3606                        var e = {
3607                            slidesPerView: 1,
3608                            slidesPerColumn: 1,
3609                            slidesPerGroup: 1,
3610                            watchSlidesProgress: !0,
3611                            resistanceRatio: 0,
3612                            spaceBetween: 0,
3613                            centeredSlides: !1,
3614                            virtualTranslate: !0
3615                        };
3616                        d.extend(this.params, e), d.extend(this.originalParams, e)
3617                    }
3618                },
3619                setTranslate: function() {
3620                    "cube" === this.params.effect && this.cubeEffect.setTranslate()
3621                },
3622                setTransition: function(e) {
3623                    "cube" === this.params.effect && this.cubeEffect.setTransition(e)
3624                }
3625            }
3626        }, {
3627            name: "effect-flip",
3628            params: {
3629                flipEffect: {
3630                    slideShadows: !0,
3631                    limitRotation: !0
3632                }
3633            },
3634            create: function() {
3635                d.extend(this, {
3636                    flipEffect: {
3637                        setTranslate: se.setTranslate.bind(this),
3638                        setTransition: se.setTransition.bind(this)
3639                    }
3640                })
3641            },
3642            on: {
3643                beforeInit: function() {
3644                    if ("flip" === this.params.effect) {
3645                        this.classNames.push(this.params.containerModifierClass + "flip"), this.classNames.push(this.params.containerModifierClass + "3d");
3646                        var e = {
3647                            slidesPerView: 1,
3648                            slidesPerColumn: 1,
3649                            slidesPerGroup: 1,
3650                            watchSlidesProgress: !0,
3651                            spaceBetween: 0,
3652                            virtualTranslate: !0
3653                        };
3654                        d.extend(this.params, e), d.extend(this.originalParams, e)
3655                    }
3656                },
3657                setTranslate: function() {
3658                    "flip" === this.params.effect && this.flipEffect.setTranslate()
3659                },
3660                setTransition: function(e) {
3661                    "flip" === this.params.effect && this.flipEffect.setTransition(e)
3662                }
3663            }
3664        }, {
3665            name: "effect-coverflow",
3666            params: {
3667                coverflowEffect: {
3668                    rotate: 50,
3669                    stretch: 0,
3670                    depth: 100,
3671                    modifier: 1,
3672                    slideShadows: !0
3673                }
3674            },
3675            create: function() {
3676                d.extend(this, {
3677                    coverflowEffect: {
3678                        setTranslate: ae.setTranslate.bind(this),
3679                        setTransition: ae.setTransition.bind(this)
3680                    }
3681                })
3682            },
3683            on: {
3684                beforeInit: function() {
3685                    "coverflow" === this.params.effect && (this.classNames.push(this.params.containerModifierClass + "coverflow"), this.classNames.push(this.params.containerModifierClass + "3d"), this.params.watchSlidesProgress = !0, this.originalParams.watchSlidesProgress = !0)
3686                },
3687                setTranslate: function() {
3688                    "coverflow" === this.params.effect && this.coverflowEffect.setTranslate()
3689                },
3690                setTransition: function(e) {
3691                    "coverflow" === this.params.effect && this.coverflowEffect.setTransition(e)
3692                }
3693            }
3694        }];
3695    return void 0 === I.use && (I.use = I.Class.use, I.installModule = I.Class.installModule), I.use(re), I
3696});
3697//# sourceMappingURL=swiper.min.js.map
3698

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.