Browse code

Refactor and rewrite as contao bundle

Benjamin Roth authored on04/11/2022 22:32:32
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,9572 @@
1
+/**
2
+ * Swiper 6.5.0
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * https://swiperjs.com
5
+ *
6
+ * Copyright 2014-2021 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: March 5, 2021
11
+ */
12
+
13
+(function (global, factory) {
14
+  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
15
+  typeof define === 'function' && define.amd ? define(factory) :
16
+  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Swiper = factory());
17
+}(this, (function () { 'use strict';
18
+
19
+  function _defineProperties(target, props) {
20
+    for (var i = 0; i < props.length; i++) {
21
+      var descriptor = props[i];
22
+      descriptor.enumerable = descriptor.enumerable || false;
23
+      descriptor.configurable = true;
24
+      if ("value" in descriptor) descriptor.writable = true;
25
+      Object.defineProperty(target, descriptor.key, descriptor);
26
+    }
27
+  }
28
+
29
+  function _createClass(Constructor, protoProps, staticProps) {
30
+    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
31
+    if (staticProps) _defineProperties(Constructor, staticProps);
32
+    return Constructor;
33
+  }
34
+
35
+  function _extends() {
36
+    _extends = Object.assign || function (target) {
37
+      for (var i = 1; i < arguments.length; i++) {
38
+        var source = arguments[i];
39
+
40
+        for (var key in source) {
41
+          if (Object.prototype.hasOwnProperty.call(source, key)) {
42
+            target[key] = source[key];
43
+          }
44
+        }
45
+      }
46
+
47
+      return target;
48
+    };
49
+
50
+    return _extends.apply(this, arguments);
51
+  }
52
+
53
+  /**
54
+   * SSR Window 3.0.0
55
+   * Better handling for window object in SSR environment
56
+   * https://github.com/nolimits4web/ssr-window
57
+   *
58
+   * Copyright 2020, Vladimir Kharlampidi
59
+   *
60
+   * Licensed under MIT
61
+   *
62
+   * Released on: November 9, 2020
63
+   */
64
+
65
+  /* eslint-disable no-param-reassign */
66
+  function isObject(obj) {
67
+    return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
68
+  }
69
+
70
+  function extend(target, src) {
71
+    if (target === void 0) {
72
+      target = {};
73
+    }
74
+
75
+    if (src === void 0) {
76
+      src = {};
77
+    }
78
+
79
+    Object.keys(src).forEach(function (key) {
80
+      if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
81
+        extend(target[key], src[key]);
82
+      }
83
+    });
84
+  }
85
+
86
+  var ssrDocument = {
87
+    body: {},
88
+    addEventListener: function addEventListener() {},
89
+    removeEventListener: function removeEventListener() {},
90
+    activeElement: {
91
+      blur: function blur() {},
92
+      nodeName: ''
93
+    },
94
+    querySelector: function querySelector() {
95
+      return null;
96
+    },
97
+    querySelectorAll: function querySelectorAll() {
98
+      return [];
99
+    },
100
+    getElementById: function getElementById() {
101
+      return null;
102
+    },
103
+    createEvent: function createEvent() {
104
+      return {
105
+        initEvent: function initEvent() {}
106
+      };
107
+    },
108
+    createElement: function createElement() {
109
+      return {
110
+        children: [],
111
+        childNodes: [],
112
+        style: {},
113
+        setAttribute: function setAttribute() {},
114
+        getElementsByTagName: function getElementsByTagName() {
115
+          return [];
116
+        }
117
+      };
118
+    },
119
+    createElementNS: function createElementNS() {
120
+      return {};
121
+    },
122
+    importNode: function importNode() {
123
+      return null;
124
+    },
125
+    location: {
126
+      hash: '',
127
+      host: '',
128
+      hostname: '',
129
+      href: '',
130
+      origin: '',
131
+      pathname: '',
132
+      protocol: '',
133
+      search: ''
134
+    }
135
+  };
136
+
137
+  function getDocument() {
138
+    var doc = typeof document !== 'undefined' ? document : {};
139
+    extend(doc, ssrDocument);
140
+    return doc;
141
+  }
142
+
143
+  var ssrWindow = {
144
+    document: ssrDocument,
145
+    navigator: {
146
+      userAgent: ''
147
+    },
148
+    location: {
149
+      hash: '',
150
+      host: '',
151
+      hostname: '',
152
+      href: '',
153
+      origin: '',
154
+      pathname: '',
155
+      protocol: '',
156
+      search: ''
157
+    },
158
+    history: {
159
+      replaceState: function replaceState() {},
160
+      pushState: function pushState() {},
161
+      go: function go() {},
162
+      back: function back() {}
163
+    },
164
+    CustomEvent: function CustomEvent() {
165
+      return this;
166
+    },
167
+    addEventListener: function addEventListener() {},
168
+    removeEventListener: function removeEventListener() {},
169
+    getComputedStyle: function getComputedStyle() {
170
+      return {
171
+        getPropertyValue: function getPropertyValue() {
172
+          return '';
173
+        }
174
+      };
175
+    },
176
+    Image: function Image() {},
177
+    Date: function Date() {},
178
+    screen: {},
179
+    setTimeout: function setTimeout() {},
180
+    clearTimeout: function clearTimeout() {},
181
+    matchMedia: function matchMedia() {
182
+      return {};
183
+    },
184
+    requestAnimationFrame: function requestAnimationFrame(callback) {
185
+      if (typeof setTimeout === 'undefined') {
186
+        callback();
187
+        return null;
188
+      }
189
+
190
+      return setTimeout(callback, 0);
191
+    },
192
+    cancelAnimationFrame: function cancelAnimationFrame(id) {
193
+      if (typeof setTimeout === 'undefined') {
194
+        return;
195
+      }
196
+
197
+      clearTimeout(id);
198
+    }
199
+  };
200
+
201
+  function getWindow() {
202
+    var win = typeof window !== 'undefined' ? window : {};
203
+    extend(win, ssrWindow);
204
+    return win;
205
+  }
206
+
207
+  /**
208
+   * Dom7 3.0.0
209
+   * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
210
+   * https://framework7.io/docs/dom7.html
211
+   *
212
+   * Copyright 2020, Vladimir Kharlampidi
213
+   *
214
+   * Licensed under MIT
215
+   *
216
+   * Released on: November 9, 2020
217
+   */
218
+
219
+  function _inheritsLoose(subClass, superClass) {
220
+    subClass.prototype = Object.create(superClass.prototype);
221
+    subClass.prototype.constructor = subClass;
222
+    subClass.__proto__ = superClass;
223
+  }
224
+
225
+  function _getPrototypeOf(o) {
226
+    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
227
+      return o.__proto__ || Object.getPrototypeOf(o);
228
+    };
229
+    return _getPrototypeOf(o);
230
+  }
231
+
232
+  function _setPrototypeOf(o, p) {
233
+    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
234
+      o.__proto__ = p;
235
+      return o;
236
+    };
237
+
238
+    return _setPrototypeOf(o, p);
239
+  }
240
+
241
+  function _isNativeReflectConstruct() {
242
+    if (typeof Reflect === "undefined" || !Reflect.construct) return false;
243
+    if (Reflect.construct.sham) return false;
244
+    if (typeof Proxy === "function") return true;
245
+
246
+    try {
247
+      Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
248
+      return true;
249
+    } catch (e) {
250
+      return false;
251
+    }
252
+  }
253
+
254
+  function _construct(Parent, args, Class) {
255
+    if (_isNativeReflectConstruct()) {
256
+      _construct = Reflect.construct;
257
+    } else {
258
+      _construct = function _construct(Parent, args, Class) {
259
+        var a = [null];
260
+        a.push.apply(a, args);
261
+        var Constructor = Function.bind.apply(Parent, a);
262
+        var instance = new Constructor();
263
+        if (Class) _setPrototypeOf(instance, Class.prototype);
264
+        return instance;
265
+      };
266
+    }
267
+
268
+    return _construct.apply(null, arguments);
269
+  }
270
+
271
+  function _isNativeFunction(fn) {
272
+    return Function.toString.call(fn).indexOf("[native code]") !== -1;
273
+  }
274
+
275
+  function _wrapNativeSuper(Class) {
276
+    var _cache = typeof Map === "function" ? new Map() : undefined;
277
+
278
+    _wrapNativeSuper = function _wrapNativeSuper(Class) {
279
+      if (Class === null || !_isNativeFunction(Class)) return Class;
280
+
281
+      if (typeof Class !== "function") {
282
+        throw new TypeError("Super expression must either be null or a function");
283
+      }
284
+
285
+      if (typeof _cache !== "undefined") {
286
+        if (_cache.has(Class)) return _cache.get(Class);
287
+
288
+        _cache.set(Class, Wrapper);
289
+      }
290
+
291
+      function Wrapper() {
292
+        return _construct(Class, arguments, _getPrototypeOf(this).constructor);
293
+      }
294
+
295
+      Wrapper.prototype = Object.create(Class.prototype, {
296
+        constructor: {
297
+          value: Wrapper,
298
+          enumerable: false,
299
+          writable: true,
300
+          configurable: true
301
+        }
302
+      });
303
+      return _setPrototypeOf(Wrapper, Class);
304
+    };
305
+
306
+    return _wrapNativeSuper(Class);
307
+  }
308
+
309
+  function _assertThisInitialized(self) {
310
+    if (self === void 0) {
311
+      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
312
+    }
313
+
314
+    return self;
315
+  }
316
+  /* eslint-disable no-proto */
317
+
318
+
319
+  function makeReactive(obj) {
320
+    var proto = obj.__proto__;
321
+    Object.defineProperty(obj, '__proto__', {
322
+      get: function get() {
323
+        return proto;
324
+      },
325
+      set: function set(value) {
326
+        proto.__proto__ = value;
327
+      }
328
+    });
329
+  }
330
+
331
+  var Dom7 = /*#__PURE__*/function (_Array) {
332
+    _inheritsLoose(Dom7, _Array);
333
+
334
+    function Dom7(items) {
335
+      var _this;
336
+
337
+      _this = _Array.call.apply(_Array, [this].concat(items)) || this;
338
+      makeReactive(_assertThisInitialized(_this));
339
+      return _this;
340
+    }
341
+
342
+    return Dom7;
343
+  }( /*#__PURE__*/_wrapNativeSuper(Array));
344
+
345
+  function arrayFlat(arr) {
346
+    if (arr === void 0) {
347
+      arr = [];
348
+    }
349
+
350
+    var res = [];
351
+    arr.forEach(function (el) {
352
+      if (Array.isArray(el)) {
353
+        res.push.apply(res, arrayFlat(el));
354
+      } else {
355
+        res.push(el);
356
+      }
357
+    });
358
+    return res;
359
+  }
360
+
361
+  function arrayFilter(arr, callback) {
362
+    return Array.prototype.filter.call(arr, callback);
363
+  }
364
+
365
+  function arrayUnique(arr) {
366
+    var uniqueArray = [];
367
+
368
+    for (var i = 0; i < arr.length; i += 1) {
369
+      if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
370
+    }
371
+
372
+    return uniqueArray;
373
+  }
374
+
375
+  function qsa(selector, context) {
376
+    if (typeof selector !== 'string') {
377
+      return [selector];
378
+    }
379
+
380
+    var a = [];
381
+    var res = context.querySelectorAll(selector);
382
+
383
+    for (var i = 0; i < res.length; i += 1) {
384
+      a.push(res[i]);
385
+    }
386
+
387
+    return a;
388
+  }
389
+
390
+  function $(selector, context) {
391
+    var window = getWindow();
392
+    var document = getDocument();
393
+    var arr = [];
394
+
395
+    if (!context && selector instanceof Dom7) {
396
+      return selector;
397
+    }
398
+
399
+    if (!selector) {
400
+      return new Dom7(arr);
401
+    }
402
+
403
+    if (typeof selector === 'string') {
404
+      var html = selector.trim();
405
+
406
+      if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
407
+        var toCreate = 'div';
408
+        if (html.indexOf('<li') === 0) toCreate = 'ul';
409
+        if (html.indexOf('<tr') === 0) toCreate = 'tbody';
410
+        if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';
411
+        if (html.indexOf('<tbody') === 0) toCreate = 'table';
412
+        if (html.indexOf('<option') === 0) toCreate = 'select';
413
+        var tempParent = document.createElement(toCreate);
414
+        tempParent.innerHTML = html;
415
+
416
+        for (var i = 0; i < tempParent.childNodes.length; i += 1) {
417
+          arr.push(tempParent.childNodes[i]);
418
+        }
419
+      } else {
420
+        arr = qsa(selector.trim(), context || document);
421
+      } // arr = qsa(selector, document);
422
+
423
+    } else if (selector.nodeType || selector === window || selector === document) {
424
+      arr.push(selector);
425
+    } else if (Array.isArray(selector)) {
426
+      if (selector instanceof Dom7) return selector;
427
+      arr = selector;
428
+    }
429
+
430
+    return new Dom7(arrayUnique(arr));
431
+  }
432
+
433
+  $.fn = Dom7.prototype;
434
+
435
+  function addClass() {
436
+    for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {
437
+      classes[_key] = arguments[_key];
438
+    }
439
+
440
+    var classNames = arrayFlat(classes.map(function (c) {
441
+      return c.split(' ');
442
+    }));
443
+    this.forEach(function (el) {
444
+      var _el$classList;
445
+
446
+      (_el$classList = el.classList).add.apply(_el$classList, classNames);
447
+    });
448
+    return this;
449
+  }
450
+
451
+  function removeClass() {
452
+    for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
453
+      classes[_key2] = arguments[_key2];
454
+    }
455
+
456
+    var classNames = arrayFlat(classes.map(function (c) {
457
+      return c.split(' ');
458
+    }));
459
+    this.forEach(function (el) {
460
+      var _el$classList2;
461
+
462
+      (_el$classList2 = el.classList).remove.apply(_el$classList2, classNames);
463
+    });
464
+    return this;
465
+  }
466
+
467
+  function toggleClass() {
468
+    for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
469
+      classes[_key3] = arguments[_key3];
470
+    }
471
+
472
+    var classNames = arrayFlat(classes.map(function (c) {
473
+      return c.split(' ');
474
+    }));
475
+    this.forEach(function (el) {
476
+      classNames.forEach(function (className) {
477
+        el.classList.toggle(className);
478
+      });
479
+    });
480
+  }
481
+
482
+  function hasClass() {
483
+    for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
484
+      classes[_key4] = arguments[_key4];
485
+    }
486
+
487
+    var classNames = arrayFlat(classes.map(function (c) {
488
+      return c.split(' ');
489
+    }));
490
+    return arrayFilter(this, function (el) {
491
+      return classNames.filter(function (className) {
492
+        return el.classList.contains(className);
493
+      }).length > 0;
494
+    }).length > 0;
495
+  }
496
+
497
+  function attr(attrs, value) {
498
+    if (arguments.length === 1 && typeof attrs === 'string') {
499
+      // Get attr
500
+      if (this[0]) return this[0].getAttribute(attrs);
501
+      return undefined;
502
+    } // Set attrs
503
+
504
+
505
+    for (var i = 0; i < this.length; i += 1) {
506
+      if (arguments.length === 2) {
507
+        // String
508
+        this[i].setAttribute(attrs, value);
509
+      } else {
510
+        // Object
511
+        for (var attrName in attrs) {
512
+          this[i][attrName] = attrs[attrName];
513
+          this[i].setAttribute(attrName, attrs[attrName]);
514
+        }
515
+      }
516
+    }
517
+
518
+    return this;
519
+  }
520
+
521
+  function removeAttr(attr) {
522
+    for (var i = 0; i < this.length; i += 1) {
523
+      this[i].removeAttribute(attr);
524
+    }
525
+
526
+    return this;
527
+  }
528
+
529
+  function transform(transform) {
530
+    for (var i = 0; i < this.length; i += 1) {
531
+      this[i].style.transform = transform;
532
+    }
533
+
534
+    return this;
535
+  }
536
+
537
+  function transition(duration) {
538
+    for (var i = 0; i < this.length; i += 1) {
539
+      this[i].style.transitionDuration = typeof duration !== 'string' ? duration + "ms" : duration;
540
+    }
541
+
542
+    return this;
543
+  }
544
+
545
+  function on() {
546
+    for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
547
+      args[_key5] = arguments[_key5];
548
+    }
549
+
550
+    var eventType = args[0],
551
+        targetSelector = args[1],
552
+        listener = args[2],
553
+        capture = args[3];
554
+
555
+    if (typeof args[1] === 'function') {
556
+      eventType = args[0];
557
+      listener = args[1];
558
+      capture = args[2];
559
+      targetSelector = undefined;
560
+    }
561
+
562
+    if (!capture) capture = false;
563
+
564
+    function handleLiveEvent(e) {
565
+      var target = e.target;
566
+      if (!target) return;
567
+      var eventData = e.target.dom7EventData || [];
568
+
569
+      if (eventData.indexOf(e) < 0) {
570
+        eventData.unshift(e);
571
+      }
572
+
573
+      if ($(target).is(targetSelector)) listener.apply(target, eventData);else {
574
+        var _parents = $(target).parents(); // eslint-disable-line
575
+
576
+
577
+        for (var k = 0; k < _parents.length; k += 1) {
578
+          if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);
579
+        }
580
+      }
581
+    }
582
+
583
+    function handleEvent(e) {
584
+      var eventData = e && e.target ? e.target.dom7EventData || [] : [];
585
+
586
+      if (eventData.indexOf(e) < 0) {
587
+        eventData.unshift(e);
588
+      }
589
+
590
+      listener.apply(this, eventData);
591
+    }
592
+
593
+    var events = eventType.split(' ');
594
+    var j;
595
+
596
+    for (var i = 0; i < this.length; i += 1) {
597
+      var el = this[i];
598
+
599
+      if (!targetSelector) {
600
+        for (j = 0; j < events.length; j += 1) {
601
+          var event = events[j];
602
+          if (!el.dom7Listeners) el.dom7Listeners = {};
603
+          if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
604
+          el.dom7Listeners[event].push({
605
+            listener: listener,
606
+            proxyListener: handleEvent
607
+          });
608
+          el.addEventListener(event, handleEvent, capture);
609
+        }
610
+      } else {
611
+        // Live events
612
+        for (j = 0; j < events.length; j += 1) {
613
+          var _event = events[j];
614
+          if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
615
+          if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];
616
+
617
+          el.dom7LiveListeners[_event].push({
618
+            listener: listener,
619
+            proxyListener: handleLiveEvent
620
+          });
621
+
622
+          el.addEventListener(_event, handleLiveEvent, capture);
623
+        }
624
+      }
625
+    }
626
+
627
+    return this;
628
+  }
629
+
630
+  function off() {
631
+    for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
632
+      args[_key6] = arguments[_key6];
633
+    }
634
+
635
+    var eventType = args[0],
636
+        targetSelector = args[1],
637
+        listener = args[2],
638
+        capture = args[3];
639
+
640
+    if (typeof args[1] === 'function') {
641
+      eventType = args[0];
642
+      listener = args[1];
643
+      capture = args[2];
644
+      targetSelector = undefined;
645
+    }
646
+
647
+    if (!capture) capture = false;
648
+    var events = eventType.split(' ');
649
+
650
+    for (var i = 0; i < events.length; i += 1) {
651
+      var event = events[i];
652
+
653
+      for (var j = 0; j < this.length; j += 1) {
654
+        var el = this[j];
655
+        var handlers = void 0;
656
+
657
+        if (!targetSelector && el.dom7Listeners) {
658
+          handlers = el.dom7Listeners[event];
659
+        } else if (targetSelector && el.dom7LiveListeners) {
660
+          handlers = el.dom7LiveListeners[event];
661
+        }
662
+
663
+        if (handlers && handlers.length) {
664
+          for (var k = handlers.length - 1; k >= 0; k -= 1) {
665
+            var handler = handlers[k];
666
+
667
+            if (listener && handler.listener === listener) {
668
+              el.removeEventListener(event, handler.proxyListener, capture);
669
+              handlers.splice(k, 1);
670
+            } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
671
+              el.removeEventListener(event, handler.proxyListener, capture);
672
+              handlers.splice(k, 1);
673
+            } else if (!listener) {
674
+              el.removeEventListener(event, handler.proxyListener, capture);
675
+              handlers.splice(k, 1);
676
+            }
677
+          }
678
+        }
679
+      }
680
+    }
681
+
682
+    return this;
683
+  }
684
+
685
+  function trigger() {
686
+    var window = getWindow();
687
+
688
+    for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
689
+      args[_key9] = arguments[_key9];
690
+    }
691
+
692
+    var events = args[0].split(' ');
693
+    var eventData = args[1];
694
+
695
+    for (var i = 0; i < events.length; i += 1) {
696
+      var event = events[i];
697
+
698
+      for (var j = 0; j < this.length; j += 1) {
699
+        var el = this[j];
700
+
701
+        if (window.CustomEvent) {
702
+          var evt = new window.CustomEvent(event, {
703
+            detail: eventData,
704
+            bubbles: true,
705
+            cancelable: true
706
+          });
707
+          el.dom7EventData = args.filter(function (data, dataIndex) {
708
+            return dataIndex > 0;
709
+          });
710
+          el.dispatchEvent(evt);
711
+          el.dom7EventData = [];
712
+          delete el.dom7EventData;
713
+        }
714
+      }
715
+    }
716
+
717
+    return this;
718
+  }
719
+
720
+  function transitionEnd(callback) {
721
+    var dom = this;
722
+
723
+    function fireCallBack(e) {
724
+      if (e.target !== this) return;
725
+      callback.call(this, e);
726
+      dom.off('transitionend', fireCallBack);
727
+    }
728
+
729
+    if (callback) {
730
+      dom.on('transitionend', fireCallBack);
731
+    }
732
+
733
+    return this;
734
+  }
735
+
736
+  function outerWidth(includeMargins) {
737
+    if (this.length > 0) {
738
+      if (includeMargins) {
739
+        var _styles = this.styles();
740
+
741
+        return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));
742
+      }
743
+
744
+      return this[0].offsetWidth;
745
+    }
746
+
747
+    return null;
748
+  }
749
+
750
+  function outerHeight(includeMargins) {
751
+    if (this.length > 0) {
752
+      if (includeMargins) {
753
+        var _styles2 = this.styles();
754
+
755
+        return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));
756
+      }
757
+
758
+      return this[0].offsetHeight;
759
+    }
760
+
761
+    return null;
762
+  }
763
+
764
+  function offset() {
765
+    if (this.length > 0) {
766
+      var window = getWindow();
767
+      var document = getDocument();
768
+      var el = this[0];
769
+      var box = el.getBoundingClientRect();
770
+      var body = document.body;
771
+      var clientTop = el.clientTop || body.clientTop || 0;
772
+      var clientLeft = el.clientLeft || body.clientLeft || 0;
773
+      var scrollTop = el === window ? window.scrollY : el.scrollTop;
774
+      var scrollLeft = el === window ? window.scrollX : el.scrollLeft;
775
+      return {
776
+        top: box.top + scrollTop - clientTop,
777
+        left: box.left + scrollLeft - clientLeft
778
+      };
779
+    }
780
+
781
+    return null;
782
+  }
783
+
784
+  function styles() {
785
+    var window = getWindow();
786
+    if (this[0]) return window.getComputedStyle(this[0], null);
787
+    return {};
788
+  }
789
+
790
+  function css(props, value) {
791
+    var window = getWindow();
792
+    var i;
793
+
794
+    if (arguments.length === 1) {
795
+      if (typeof props === 'string') {
796
+        // .css('width')
797
+        if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);
798
+      } else {
799
+        // .css({ width: '100px' })
800
+        for (i = 0; i < this.length; i += 1) {
801
+          for (var _prop in props) {
802
+            this[i].style[_prop] = props[_prop];
803
+          }
804
+        }
805
+
806
+        return this;
807
+      }
808
+    }
809
+
810
+    if (arguments.length === 2 && typeof props === 'string') {
811
+      // .css('width', '100px')
812
+      for (i = 0; i < this.length; i += 1) {
813
+        this[i].style[props] = value;
814
+      }
815
+
816
+      return this;
817
+    }
818
+
819
+    return this;
820
+  }
821
+
822
+  function each(callback) {
823
+    if (!callback) return this;
824
+    this.forEach(function (el, index) {
825
+      callback.apply(el, [el, index]);
826
+    });
827
+    return this;
828
+  }
829
+
830
+  function filter(callback) {
831
+    var result = arrayFilter(this, callback);
832
+    return $(result);
833
+  }
834
+
835
+  function html(html) {
836
+    if (typeof html === 'undefined') {
837
+      return this[0] ? this[0].innerHTML : null;
838
+    }
839
+
840
+    for (var i = 0; i < this.length; i += 1) {
841
+      this[i].innerHTML = html;
842
+    }
843
+
844
+    return this;
845
+  }
846
+
847
+  function text(text) {
848
+    if (typeof text === 'undefined') {
849
+      return this[0] ? this[0].textContent.trim() : null;
850
+    }
851
+
852
+    for (var i = 0; i < this.length; i += 1) {
853
+      this[i].textContent = text;
854
+    }
855
+
856
+    return this;
857
+  }
858
+
859
+  function is(selector) {
860
+    var window = getWindow();
861
+    var document = getDocument();
862
+    var el = this[0];
863
+    var compareWith;
864
+    var i;
865
+    if (!el || typeof selector === 'undefined') return false;
866
+
867
+    if (typeof selector === 'string') {
868
+      if (el.matches) return el.matches(selector);
869
+      if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
870
+      if (el.msMatchesSelector) return el.msMatchesSelector(selector);
871
+      compareWith = $(selector);
872
+
873
+      for (i = 0; i < compareWith.length; i += 1) {
874
+        if (compareWith[i] === el) return true;
875
+      }
876
+
877
+      return false;
878
+    }
879
+
880
+    if (selector === document) {
881
+      return el === document;
882
+    }
883
+
884
+    if (selector === window) {
885
+      return el === window;
886
+    }
887
+
888
+    if (selector.nodeType || selector instanceof Dom7) {
889
+      compareWith = selector.nodeType ? [selector] : selector;
890
+
891
+      for (i = 0; i < compareWith.length; i += 1) {
892
+        if (compareWith[i] === el) return true;
893
+      }
894
+
895
+      return false;
896
+    }
897
+
898
+    return false;
899
+  }
900
+
901
+  function index() {
902
+    var child = this[0];
903
+    var i;
904
+
905
+    if (child) {
906
+      i = 0; // eslint-disable-next-line
907
+
908
+      while ((child = child.previousSibling) !== null) {
909
+        if (child.nodeType === 1) i += 1;
910
+      }
911
+
912
+      return i;
913
+    }
914
+
915
+    return undefined;
916
+  }
917
+
918
+  function eq(index) {
919
+    if (typeof index === 'undefined') return this;
920
+    var length = this.length;
921
+
922
+    if (index > length - 1) {
923
+      return $([]);
924
+    }
925
+
926
+    if (index < 0) {
927
+      var returnIndex = length + index;
928
+      if (returnIndex < 0) return $([]);
929
+      return $([this[returnIndex]]);
930
+    }
931
+
932
+    return $([this[index]]);
933
+  }
934
+
935
+  function append() {
936
+    var newChild;
937
+    var document = getDocument();
938
+
939
+    for (var k = 0; k < arguments.length; k += 1) {
940
+      newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];
941
+
942
+      for (var i = 0; i < this.length; i += 1) {
943
+        if (typeof newChild === 'string') {
944
+          var tempDiv = document.createElement('div');
945
+          tempDiv.innerHTML = newChild;
946
+
947
+          while (tempDiv.firstChild) {
948
+            this[i].appendChild(tempDiv.firstChild);
949
+          }
950
+        } else if (newChild instanceof Dom7) {
951
+          for (var j = 0; j < newChild.length; j += 1) {
952
+            this[i].appendChild(newChild[j]);
953
+          }
954
+        } else {
955
+          this[i].appendChild(newChild);
956
+        }
957
+      }
958
+    }
959
+
960
+    return this;
961
+  }
962
+
963
+  function prepend(newChild) {
964
+    var document = getDocument();
965
+    var i;
966
+    var j;
967
+
968
+    for (i = 0; i < this.length; i += 1) {
969
+      if (typeof newChild === 'string') {
970
+        var tempDiv = document.createElement('div');
971
+        tempDiv.innerHTML = newChild;
972
+
973
+        for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
974
+          this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
975
+        }
976
+      } else if (newChild instanceof Dom7) {
977
+        for (j = 0; j < newChild.length; j += 1) {
978
+          this[i].insertBefore(newChild[j], this[i].childNodes[0]);
979
+        }
980
+      } else {
981
+        this[i].insertBefore(newChild, this[i].childNodes[0]);
982
+      }
983
+    }
984
+
985
+    return this;
986
+  }
987
+
988
+  function next(selector) {
989
+    if (this.length > 0) {
990
+      if (selector) {
991
+        if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
992
+          return $([this[0].nextElementSibling]);
993
+        }
994
+
995
+        return $([]);
996
+      }
997
+
998
+      if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);
999
+      return $([]);
1000
+    }
1001
+
1002
+    return $([]);
1003
+  }
1004
+
1005
+  function nextAll(selector) {
1006
+    var nextEls = [];
1007
+    var el = this[0];
1008
+    if (!el) return $([]);
1009
+
1010
+    while (el.nextElementSibling) {
1011
+      var _next = el.nextElementSibling; // eslint-disable-line
1012
+
1013
+      if (selector) {
1014
+        if ($(_next).is(selector)) nextEls.push(_next);
1015
+      } else nextEls.push(_next);
1016
+
1017
+      el = _next;
1018
+    }
1019
+
1020
+    return $(nextEls);
1021
+  }
1022
+
1023
+  function prev(selector) {
1024
+    if (this.length > 0) {
1025
+      var el = this[0];
1026
+
1027
+      if (selector) {
1028
+        if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
1029
+          return $([el.previousElementSibling]);
1030
+        }
1031
+
1032
+        return $([]);
1033
+      }
1034
+
1035
+      if (el.previousElementSibling) return $([el.previousElementSibling]);
1036
+      return $([]);
1037
+    }
1038
+
1039
+    return $([]);
1040
+  }
1041
+
1042
+  function prevAll(selector) {
1043
+    var prevEls = [];
1044
+    var el = this[0];
1045
+    if (!el) return $([]);
1046
+
1047
+    while (el.previousElementSibling) {
1048
+      var _prev = el.previousElementSibling; // eslint-disable-line
1049
+
1050
+      if (selector) {
1051
+        if ($(_prev).is(selector)) prevEls.push(_prev);
1052
+      } else prevEls.push(_prev);
1053
+
1054
+      el = _prev;
1055
+    }
1056
+
1057
+    return $(prevEls);
1058
+  }
1059
+
1060
+  function parent(selector) {
1061
+    var parents = []; // eslint-disable-line
1062
+
1063
+    for (var i = 0; i < this.length; i += 1) {
1064
+      if (this[i].parentNode !== null) {
1065
+        if (selector) {
1066
+          if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
1067
+        } else {
1068
+          parents.push(this[i].parentNode);
1069
+        }
1070
+      }
1071
+    }
1072
+
1073
+    return $(parents);
1074
+  }
1075
+
1076
+  function parents(selector) {
1077
+    var parents = []; // eslint-disable-line
1078
+
1079
+    for (var i = 0; i < this.length; i += 1) {
1080
+      var _parent = this[i].parentNode; // eslint-disable-line
1081
+
1082
+      while (_parent) {
1083
+        if (selector) {
1084
+          if ($(_parent).is(selector)) parents.push(_parent);
1085
+        } else {
1086
+          parents.push(_parent);
1087
+        }
1088
+
1089
+        _parent = _parent.parentNode;
1090
+      }
1091
+    }
1092
+
1093
+    return $(parents);
1094
+  }
1095
+
1096
+  function closest(selector) {
1097
+    var closest = this; // eslint-disable-line
1098
+
1099
+    if (typeof selector === 'undefined') {
1100
+      return $([]);
1101
+    }
1102
+
1103
+    if (!closest.is(selector)) {
1104
+      closest = closest.parents(selector).eq(0);
1105
+    }
1106
+
1107
+    return closest;
1108
+  }
1109
+
1110
+  function find(selector) {
1111
+    var foundElements = [];
1112
+
1113
+    for (var i = 0; i < this.length; i += 1) {
1114
+      var found = this[i].querySelectorAll(selector);
1115
+
1116
+      for (var j = 0; j < found.length; j += 1) {
1117
+        foundElements.push(found[j]);
1118
+      }
1119
+    }
1120
+
1121
+    return $(foundElements);
1122
+  }
1123
+
1124
+  function children(selector) {
1125
+    var children = []; // eslint-disable-line
1126
+
1127
+    for (var i = 0; i < this.length; i += 1) {
1128
+      var childNodes = this[i].children;
1129
+
1130
+      for (var j = 0; j < childNodes.length; j += 1) {
1131
+        if (!selector || $(childNodes[j]).is(selector)) {
1132
+          children.push(childNodes[j]);
1133
+        }
1134
+      }
1135
+    }
1136
+
1137
+    return $(children);
1138
+  }
1139
+
1140
+  function remove() {
1141
+    for (var i = 0; i < this.length; i += 1) {
1142
+      if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
1143
+    }
1144
+
1145
+    return this;
1146
+  }
1147
+
1148
+  var Methods = {
1149
+    addClass: addClass,
1150
+    removeClass: removeClass,
1151
+    hasClass: hasClass,
1152
+    toggleClass: toggleClass,
1153
+    attr: attr,
1154
+    removeAttr: removeAttr,
1155
+    transform: transform,
1156
+    transition: transition,
1157
+    on: on,
1158
+    off: off,
1159
+    trigger: trigger,
1160
+    transitionEnd: transitionEnd,
1161
+    outerWidth: outerWidth,
1162
+    outerHeight: outerHeight,
1163
+    styles: styles,
1164
+    offset: offset,
1165
+    css: css,
1166
+    each: each,
1167
+    html: html,
1168
+    text: text,
1169
+    is: is,
1170
+    index: index,
1171
+    eq: eq,
1172
+    append: append,
1173
+    prepend: prepend,
1174
+    next: next,
1175
+    nextAll: nextAll,
1176
+    prev: prev,
1177
+    prevAll: prevAll,
1178
+    parent: parent,
1179
+    parents: parents,
1180
+    closest: closest,
1181
+    find: find,
1182
+    children: children,
1183
+    filter: filter,
1184
+    remove: remove
1185
+  };
1186
+  Object.keys(Methods).forEach(function (methodName) {
1187
+    $.fn[methodName] = Methods[methodName];
1188
+  });
1189
+
1190
+  function deleteProps(obj) {
1191
+    var object = obj;
1192
+    Object.keys(object).forEach(function (key) {
1193
+      try {
1194
+        object[key] = null;
1195
+      } catch (e) {// no getter for object
1196
+      }
1197
+
1198
+      try {
1199
+        delete object[key];
1200
+      } catch (e) {// something got wrong
1201
+      }
1202
+    });
1203
+  }
1204
+
1205
+  function nextTick(callback, delay) {
1206
+    if (delay === void 0) {
1207
+      delay = 0;
1208
+    }
1209
+
1210
+    return setTimeout(callback, delay);
1211
+  }
1212
+
1213
+  function now() {
1214
+    return Date.now();
1215
+  }
1216
+
1217
+  function getTranslate(el, axis) {
1218
+    if (axis === void 0) {
1219
+      axis = 'x';
1220
+    }
1221
+
1222
+    var window = getWindow();
1223
+    var matrix;
1224
+    var curTransform;
1225
+    var transformMatrix;
1226
+    var curStyle = window.getComputedStyle(el, null);
1227
+
1228
+    if (window.WebKitCSSMatrix) {
1229
+      curTransform = curStyle.transform || curStyle.webkitTransform;
1230
+
1231
+      if (curTransform.split(',').length > 6) {
1232
+        curTransform = curTransform.split(', ').map(function (a) {
1233
+          return a.replace(',', '.');
1234
+        }).join(', ');
1235
+      } // Some old versions of Webkit choke when 'none' is passed; pass
1236
+      // empty string instead in this case
1237
+
1238
+
1239
+      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
1240
+    } else {
1241
+      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
1242
+      matrix = transformMatrix.toString().split(',');
1243
+    }
1244
+
1245
+    if (axis === 'x') {
1246
+      // Latest Chrome and webkits Fix
1247
+      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix
1248
+      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers
1249
+        else curTransform = parseFloat(matrix[4]);
1250
+    }
1251
+
1252
+    if (axis === 'y') {
1253
+      // Latest Chrome and webkits Fix
1254
+      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix
1255
+      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers
1256
+        else curTransform = parseFloat(matrix[5]);
1257
+    }
1258
+
1259
+    return curTransform || 0;
1260
+  }
1261
+
1262
+  function isObject$1(o) {
1263
+    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
1264
+  }
1265
+
1266
+  function extend$1() {
1267
+    var to = Object(arguments.length <= 0 ? undefined : arguments[0]);
1268
+
1269
+    for (var i = 1; i < arguments.length; i += 1) {
1270
+      var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
1271
+
1272
+      if (nextSource !== undefined && nextSource !== null) {
1273
+        var keysArray = Object.keys(Object(nextSource));
1274
+
1275
+        for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
1276
+          var nextKey = keysArray[nextIndex];
1277
+          var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
1278
+
1279
+          if (desc !== undefined && desc.enumerable) {
1280
+            if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {
1281
+              extend$1(to[nextKey], nextSource[nextKey]);
1282
+            } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {
1283
+              to[nextKey] = {};
1284
+              extend$1(to[nextKey], nextSource[nextKey]);
1285
+            } else {
1286
+              to[nextKey] = nextSource[nextKey];
1287
+            }
1288
+          }
1289
+        }
1290
+      }
1291
+    }
1292
+
1293
+    return to;
1294
+  }
1295
+
1296
+  function bindModuleMethods(instance, obj) {
1297
+    Object.keys(obj).forEach(function (key) {
1298
+      if (isObject$1(obj[key])) {
1299
+        Object.keys(obj[key]).forEach(function (subKey) {
1300
+          if (typeof obj[key][subKey] === 'function') {
1301
+            obj[key][subKey] = obj[key][subKey].bind(instance);
1302
+          }
1303
+        });
1304
+      }
1305
+
1306
+      instance[key] = obj[key];
1307
+    });
1308
+  }
1309
+
1310
+  var support;
1311
+
1312
+  function calcSupport() {
1313
+    var window = getWindow();
1314
+    var document = getDocument();
1315
+    return {
1316
+      touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
1317
+      pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,
1318
+      observer: function checkObserver() {
1319
+        return 'MutationObserver' in window || 'WebkitMutationObserver' in window;
1320
+      }(),
1321
+      passiveListener: function checkPassiveListener() {
1322
+        var supportsPassive = false;
1323
+
1324
+        try {
1325
+          var opts = Object.defineProperty({}, 'passive', {
1326
+            // eslint-disable-next-line
1327
+            get: function get() {
1328
+              supportsPassive = true;
1329
+            }
1330
+          });
1331
+          window.addEventListener('testPassiveListener', null, opts);
1332
+        } catch (e) {// No support
1333
+        }
1334
+
1335
+        return supportsPassive;
1336
+      }(),
1337
+      gestures: function checkGestures() {
1338
+        return 'ongesturestart' in window;
1339
+      }()
1340
+    };
1341
+  }
1342
+
1343
+  function getSupport() {
1344
+    if (!support) {
1345
+      support = calcSupport();
1346
+    }
1347
+
1348
+    return support;
1349
+  }
1350
+
1351
+  var device;
1352
+
1353
+  function calcDevice(_temp) {
1354
+    var _ref = _temp === void 0 ? {} : _temp,
1355
+        userAgent = _ref.userAgent;
1356
+
1357
+    var support = getSupport();
1358
+    var window = getWindow();
1359
+    var platform = window.navigator.platform;
1360
+    var ua = userAgent || window.navigator.userAgent;
1361
+    var device = {
1362
+      ios: false,
1363
+      android: false
1364
+    };
1365
+    var screenWidth = window.screen.width;
1366
+    var screenHeight = window.screen.height;
1367
+    var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
1368
+
1369
+    var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
1370
+    var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
1371
+    var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
1372
+    var windows = platform === 'Win32';
1373
+    var macos = platform === 'MacIntel'; // iPadOs 13 fix
1374
+
1375
+    var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
1376
+
1377
+    if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + "x" + screenHeight) >= 0) {
1378
+      ipad = ua.match(/(Version)\/([\d.]+)/);
1379
+      if (!ipad) ipad = [0, 1, '13_0_0'];
1380
+      macos = false;
1381
+    } // Android
1382
+
1383
+
1384
+    if (android && !windows) {
1385
+      device.os = 'android';
1386
+      device.android = true;
1387
+    }
1388
+
1389
+    if (ipad || iphone || ipod) {
1390
+      device.os = 'ios';
1391
+      device.ios = true;
1392
+    } // Export object
1393
+
1394
+
1395
+    return device;
1396
+  }
1397
+
1398
+  function getDevice(overrides) {
1399
+    if (overrides === void 0) {
1400
+      overrides = {};
1401
+    }
1402
+
1403
+    if (!device) {
1404
+      device = calcDevice(overrides);
1405
+    }
1406
+
1407
+    return device;
1408
+  }
1409
+
1410
+  var browser;
1411
+
1412
+  function calcBrowser() {
1413
+    var window = getWindow();
1414
+
1415
+    function isSafari() {
1416
+      var ua = window.navigator.userAgent.toLowerCase();
1417
+      return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
1418
+    }
1419
+
1420
+    return {
1421
+      isEdge: !!window.navigator.userAgent.match(/Edge/g),
1422
+      isSafari: isSafari(),
1423
+      isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
1424
+    };
1425
+  }
1426
+
1427
+  function getBrowser() {
1428
+    if (!browser) {
1429
+      browser = calcBrowser();
1430
+    }
1431
+
1432
+    return browser;
1433
+  }
1434
+
1435
+  var supportsResizeObserver = function supportsResizeObserver() {
1436
+    var window = getWindow();
1437
+    return typeof window.ResizeObserver !== 'undefined';
1438
+  };
1439
+
1440
+  var Resize = {
1441
+    name: 'resize',
1442
+    create: function create() {
1443
+      var swiper = this;
1444
+      extend$1(swiper, {
1445
+        resize: {
1446
+          observer: null,
1447
+          createObserver: function createObserver() {
1448
+            if (!swiper || swiper.destroyed || !swiper.initialized) return;
1449
+            swiper.resize.observer = new ResizeObserver(function (entries) {
1450
+              var width = swiper.width,
1451
+                  height = swiper.height;
1452
+              var newWidth = width;
1453
+              var newHeight = height;
1454
+              entries.forEach(function (_ref) {
1455
+                var contentBoxSize = _ref.contentBoxSize,
1456
+                    contentRect = _ref.contentRect,
1457
+                    target = _ref.target;
1458
+                if (target && target !== swiper.el) return;
1459
+                newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
1460
+                newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
1461
+              });
1462
+
1463
+              if (newWidth !== width || newHeight !== height) {
1464
+                swiper.resize.resizeHandler();
1465
+              }
1466
+            });
1467
+            swiper.resize.observer.observe(swiper.el);
1468
+          },
1469
+          removeObserver: function removeObserver() {
1470
+            if (swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el) {
1471
+              swiper.resize.observer.unobserve(swiper.el);
1472
+              swiper.resize.observer = null;
1473
+            }
1474
+          },
1475
+          resizeHandler: function resizeHandler() {
1476
+            if (!swiper || swiper.destroyed || !swiper.initialized) return;
1477
+            swiper.emit('beforeResize');
1478
+            swiper.emit('resize');
1479
+          },
1480
+          orientationChangeHandler: function orientationChangeHandler() {
1481
+            if (!swiper || swiper.destroyed || !swiper.initialized) return;
1482
+            swiper.emit('orientationchange');
1483
+          }
1484
+        }
1485
+      });
1486
+    },
1487
+    on: {
1488
+      init: function init(swiper) {
1489
+        var window = getWindow();
1490
+
1491
+        if (swiper.params.resizeObserver && supportsResizeObserver()) {
1492
+          swiper.resize.createObserver();
1493
+          return;
1494
+        } // Emit resize
1495
+
1496
+
1497
+        window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange
1498
+
1499
+        window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
1500
+      },
1501
+      destroy: function destroy(swiper) {
1502
+        var window = getWindow();
1503
+        swiper.resize.removeObserver();
1504
+        window.removeEventListener('resize', swiper.resize.resizeHandler);
1505
+        window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
1506
+      }
1507
+    }
1508
+  };
1509
+
1510
+  var Observer = {
1511
+    attach: function attach(target, options) {
1512
+      if (options === void 0) {
1513
+        options = {};
1514
+      }
1515
+
1516
+      var window = getWindow();
1517
+      var swiper = this;
1518
+      var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
1519
+      var observer = new ObserverFunc(function (mutations) {
1520
+        // The observerUpdate event should only be triggered
1521
+        // once despite the number of mutations.  Additional
1522
+        // triggers are redundant and are very costly
1523
+        if (mutations.length === 1) {
1524
+          swiper.emit('observerUpdate', mutations[0]);
1525
+          return;
1526
+        }
1527
+
1528
+        var observerUpdate = function observerUpdate() {
1529
+          swiper.emit('observerUpdate', mutations[0]);
1530
+        };
1531
+
1532
+        if (window.requestAnimationFrame) {
1533
+          window.requestAnimationFrame(observerUpdate);
1534
+        } else {
1535
+          window.setTimeout(observerUpdate, 0);
1536
+        }
1537
+      });
1538
+      observer.observe(target, {
1539
+        attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
1540
+        childList: typeof options.childList === 'undefined' ? true : options.childList,
1541
+        characterData: typeof options.characterData === 'undefined' ? true : options.characterData
1542
+      });
1543
+      swiper.observer.observers.push(observer);
1544
+    },
1545
+    init: function init() {
1546
+      var swiper = this;
1547
+      if (!swiper.support.observer || !swiper.params.observer) return;
1548
+
1549
+      if (swiper.params.observeParents) {
1550
+        var containerParents = swiper.$el.parents();
1551
+
1552
+        for (var i = 0; i < containerParents.length; i += 1) {
1553
+          swiper.observer.attach(containerParents[i]);
1554
+        }
1555
+      } // Observe container
1556
+
1557
+
1558
+      swiper.observer.attach(swiper.$el[0], {
1559
+        childList: swiper.params.observeSlideChildren
1560
+      }); // Observe wrapper
1561
+
1562
+      swiper.observer.attach(swiper.$wrapperEl[0], {
1563
+        attributes: false
1564
+      });
1565
+    },
1566
+    destroy: function destroy() {
1567
+      var swiper = this;
1568
+      swiper.observer.observers.forEach(function (observer) {
1569
+        observer.disconnect();
1570
+      });
1571
+      swiper.observer.observers = [];
1572
+    }
1573
+  };
1574
+  var Observer$1 = {
1575
+    name: 'observer',
1576
+    params: {
1577
+      observer: false,
1578
+      observeParents: false,
1579
+      observeSlideChildren: false
1580
+    },
1581
+    create: function create() {
1582
+      var swiper = this;
1583
+      bindModuleMethods(swiper, {
1584
+        observer: _extends({}, Observer, {
1585
+          observers: []
1586
+        })
1587
+      });
1588
+    },
1589
+    on: {
1590
+      init: function init(swiper) {
1591
+        swiper.observer.init();
1592
+      },
1593
+      destroy: function destroy(swiper) {
1594
+        swiper.observer.destroy();
1595
+      }
1596
+    }
1597
+  };
1598
+
1599
+  var modular = {
1600
+    useParams: function useParams(instanceParams) {
1601
+      var instance = this;
1602
+      if (!instance.modules) return;
1603
+      Object.keys(instance.modules).forEach(function (moduleName) {
1604
+        var module = instance.modules[moduleName]; // Extend params
1605
+
1606
+        if (module.params) {
1607
+          extend$1(instanceParams, module.params);
1608
+        }
1609
+      });
1610
+    },
1611
+    useModules: function useModules(modulesParams) {
1612
+      if (modulesParams === void 0) {
1613
+        modulesParams = {};
1614
+      }
1615
+
1616
+      var instance = this;
1617
+      if (!instance.modules) return;
1618
+      Object.keys(instance.modules).forEach(function (moduleName) {
1619
+        var module = instance.modules[moduleName];
1620
+        var moduleParams = modulesParams[moduleName] || {}; // Add event listeners
1621
+
1622
+        if (module.on && instance.on) {
1623
+          Object.keys(module.on).forEach(function (moduleEventName) {
1624
+            instance.on(moduleEventName, module.on[moduleEventName]);
1625
+          });
1626
+        } // Module create callback
1627
+
1628
+
1629
+        if (module.create) {
1630
+          module.create.bind(instance)(moduleParams);
1631
+        }
1632
+      });
1633
+    }
1634
+  };
1635
+
1636
+  /* eslint-disable no-underscore-dangle */
1637
+  var eventsEmitter = {
1638
+    on: function on(events, handler, priority) {
1639
+      var self = this;
1640
+      if (typeof handler !== 'function') return self;
1641
+      var method = priority ? 'unshift' : 'push';
1642
+      events.split(' ').forEach(function (event) {
1643
+        if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
1644
+        self.eventsListeners[event][method](handler);
1645
+      });
1646
+      return self;
1647
+    },
1648
+    once: function once(events, handler, priority) {
1649
+      var self = this;
1650
+      if (typeof handler !== 'function') return self;
1651
+
1652
+      function onceHandler() {
1653
+        self.off(events, onceHandler);
1654
+
1655
+        if (onceHandler.__emitterProxy) {
1656
+          delete onceHandler.__emitterProxy;
1657
+        }
1658
+
1659
+        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1660
+          args[_key] = arguments[_key];
1661
+        }
1662
+
1663
+        handler.apply(self, args);
1664
+      }
1665
+
1666
+      onceHandler.__emitterProxy = handler;
1667
+      return self.on(events, onceHandler, priority);
1668
+    },
1669
+    onAny: function onAny(handler, priority) {
1670
+      var self = this;
1671
+      if (typeof handler !== 'function') return self;
1672
+      var method = priority ? 'unshift' : 'push';
1673
+
1674
+      if (self.eventsAnyListeners.indexOf(handler) < 0) {
1675
+        self.eventsAnyListeners[method](handler);
1676
+      }
1677
+
1678
+      return self;
1679
+    },
1680
+    offAny: function offAny(handler) {
1681
+      var self = this;
1682
+      if (!self.eventsAnyListeners) return self;
1683
+      var index = self.eventsAnyListeners.indexOf(handler);
1684
+
1685
+      if (index >= 0) {
1686
+        self.eventsAnyListeners.splice(index, 1);
1687
+      }
1688
+
1689
+      return self;
1690
+    },
1691
+    off: function off(events, handler) {
1692
+      var self = this;
1693
+      if (!self.eventsListeners) return self;
1694
+      events.split(' ').forEach(function (event) {
1695
+        if (typeof handler === 'undefined') {
1696
+          self.eventsListeners[event] = [];
1697
+        } else if (self.eventsListeners[event]) {
1698
+          self.eventsListeners[event].forEach(function (eventHandler, index) {
1699
+            if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
1700
+              self.eventsListeners[event].splice(index, 1);
1701
+            }
1702
+          });
1703
+        }
1704
+      });
1705
+      return self;
1706
+    },
1707
+    emit: function emit() {
1708
+      var self = this;
1709
+      if (!self.eventsListeners) return self;
1710
+      var events;
1711
+      var data;
1712
+      var context;
1713
+
1714
+      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
1715
+        args[_key2] = arguments[_key2];
1716
+      }
1717
+
1718
+      if (typeof args[0] === 'string' || Array.isArray(args[0])) {
1719
+        events = args[0];
1720
+        data = args.slice(1, args.length);
1721
+        context = self;
1722
+      } else {
1723
+        events = args[0].events;
1724
+        data = args[0].data;
1725
+        context = args[0].context || self;
1726
+      }
1727
+
1728
+      data.unshift(context);
1729
+      var eventsArray = Array.isArray(events) ? events : events.split(' ');
1730
+      eventsArray.forEach(function (event) {
1731
+        if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
1732
+          self.eventsAnyListeners.forEach(function (eventHandler) {
1733
+            eventHandler.apply(context, [event].concat(data));
1734
+          });
1735
+        }
1736
+
1737
+        if (self.eventsListeners && self.eventsListeners[event]) {
1738
+          self.eventsListeners[event].forEach(function (eventHandler) {
1739
+            eventHandler.apply(context, data);
1740
+          });
1741
+        }
1742
+      });
1743
+      return self;
1744
+    }
1745
+  };
1746
+
1747
+  function updateSize() {
1748
+    var swiper = this;
1749
+    var width;
1750
+    var height;
1751
+    var $el = swiper.$el;
1752
+
1753
+    if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
1754
+      width = swiper.params.width;
1755
+    } else {
1756
+      width = $el[0].clientWidth;
1757
+    }
1758
+
1759
+    if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
1760
+      height = swiper.params.height;
1761
+    } else {
1762
+      height = $el[0].clientHeight;
1763
+    }
1764
+
1765
+    if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
1766
+      return;
1767
+    } // Subtract paddings
1768
+
1769
+
1770
+    width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);
1771
+    height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);
1772
+    if (Number.isNaN(width)) width = 0;
1773
+    if (Number.isNaN(height)) height = 0;
1774
+    extend$1(swiper, {
1775
+      width: width,
1776
+      height: height,
1777
+      size: swiper.isHorizontal() ? width : height
1778
+    });
1779
+  }
1780
+
1781
+  function updateSlides() {
1782
+    var swiper = this;
1783
+
1784
+    var getDirectionLabel = function getDirectionLabel(property) {
1785
+      if (swiper.isHorizontal()) {
1786
+        return property;
1787
+      } // prettier-ignore
1788
+
1789
+
1790
+      return {
1791
+        'width': 'height',
1792
+        'margin-top': 'margin-left',
1793
+        'margin-bottom ': 'margin-right',
1794
+        'margin-left': 'margin-top',
1795
+        'margin-right': 'margin-bottom',
1796
+        'padding-left': 'padding-top',
1797
+        'padding-right': 'padding-bottom',
1798
+        'marginRight': 'marginBottom'
1799
+      }[property];
1800
+    };
1801
+
1802
+    var getDirectionPropertyValue = function getDirectionPropertyValue(node, label) {
1803
+      return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);
1804
+    };
1805
+
1806
+    var window = getWindow();
1807
+    var params = swiper.params;
1808
+    var $wrapperEl = swiper.$wrapperEl,
1809
+        swiperSize = swiper.size,
1810
+        rtl = swiper.rtlTranslate,
1811
+        wrongRTL = swiper.wrongRTL;
1812
+    var isVirtual = swiper.virtual && params.virtual.enabled;
1813
+    var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
1814
+    var slides = $wrapperEl.children("." + swiper.params.slideClass);
1815
+    var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
1816
+    var snapGrid = [];
1817
+    var slidesGrid = [];
1818
+    var slidesSizesGrid = [];
1819
+
1820
+    function slidesForMargin(slideEl, slideIndex) {
1821
+      if (!params.cssMode) return true;
1822
+
1823
+      if (slideIndex === slides.length - 1) {
1824
+        return false;
1825
+      }
1826
+
1827
+      return true;
1828
+    }
1829
+
1830
+    var offsetBefore = params.slidesOffsetBefore;
1831
+
1832
+    if (typeof offsetBefore === 'function') {
1833
+      offsetBefore = params.slidesOffsetBefore.call(swiper);
1834
+    }
1835
+
1836
+    var offsetAfter = params.slidesOffsetAfter;
1837
+
1838
+    if (typeof offsetAfter === 'function') {
1839
+      offsetAfter = params.slidesOffsetAfter.call(swiper);
1840
+    }
1841
+
1842
+    var previousSnapGridLength = swiper.snapGrid.length;
1843
+    var previousSlidesGridLength = swiper.slidesGrid.length;
1844
+    var spaceBetween = params.spaceBetween;
1845
+    var slidePosition = -offsetBefore;
1846
+    var prevSlideSize = 0;
1847
+    var index = 0;
1848
+
1849
+    if (typeof swiperSize === 'undefined') {
1850
+      return;
1851
+    }
1852
+
1853
+    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
1854
+      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
1855
+    }
1856
+
1857
+    swiper.virtualSize = -spaceBetween; // reset margins
1858
+
1859
+    if (rtl) slides.css({
1860
+      marginLeft: '',
1861
+      marginTop: ''
1862
+    });else slides.css({
1863
+      marginRight: '',
1864
+      marginBottom: ''
1865
+    });
1866
+    var slidesNumberEvenToRows;
1867
+
1868
+    if (params.slidesPerColumn > 1) {
1869
+      if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
1870
+        slidesNumberEvenToRows = slidesLength;
1871
+      } else {
1872
+        slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
1873
+      }
1874
+
1875
+      if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
1876
+        slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
1877
+      }
1878
+    } // Calc slides
1879
+
1880
+
1881
+    var slideSize;
1882
+    var slidesPerColumn = params.slidesPerColumn;
1883
+    var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
1884
+    var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
1885
+
1886
+    for (var i = 0; i < slidesLength; i += 1) {
1887
+      slideSize = 0;
1888
+      var slide = slides.eq(i);
1889
+
1890
+      if (params.slidesPerColumn > 1) {
1891
+        // Set slides order
1892
+        var newSlideOrderIndex = void 0;
1893
+        var column = void 0;
1894
+        var row = void 0;
1895
+
1896
+        if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
1897
+          var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
1898
+          var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
1899
+          var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
1900
+          row = Math.floor(slideIndexInGroup / columnsInGroup);
1901
+          column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;
1902
+          newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;
1903
+          slide.css({
1904
+            '-webkit-box-ordinal-group': newSlideOrderIndex,
1905
+            '-moz-box-ordinal-group': newSlideOrderIndex,
1906
+            '-ms-flex-order': newSlideOrderIndex,
1907
+            '-webkit-order': newSlideOrderIndex,
1908
+            order: newSlideOrderIndex
1909
+          });
1910
+        } else if (params.slidesPerColumnFill === 'column') {
1911
+          column = Math.floor(i / slidesPerColumn);
1912
+          row = i - column * slidesPerColumn;
1913
+
1914
+          if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {
1915
+            row += 1;
1916
+
1917
+            if (row >= slidesPerColumn) {
1918
+              row = 0;
1919
+              column += 1;
1920
+            }
1921
+          }
1922
+        } else {
1923
+          row = Math.floor(i / slidesPerRow);
1924
+          column = i - row * slidesPerRow;
1925
+        }
1926
+
1927
+        slide.css(getDirectionLabel('margin-top'), row !== 0 && params.spaceBetween && params.spaceBetween + "px");
1928
+      }
1929
+
1930
+      if (slide.css('display') === 'none') continue; // eslint-disable-line
1931
+
1932
+      if (params.slidesPerView === 'auto') {
1933
+        var slideStyles = window.getComputedStyle(slide[0], null);
1934
+        var currentTransform = slide[0].style.transform;
1935
+        var currentWebKitTransform = slide[0].style.webkitTransform;
1936
+
1937
+        if (currentTransform) {
1938
+          slide[0].style.transform = 'none';
1939
+        }
1940
+
1941
+        if (currentWebKitTransform) {
1942
+          slide[0].style.webkitTransform = 'none';
1943
+        }
1944
+
1945
+        if (params.roundLengths) {
1946
+          slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);
1947
+        } else {
1948
+          // eslint-disable-next-line
1949
+          var width = getDirectionPropertyValue(slideStyles, 'width');
1950
+          var paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
1951
+          var paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
1952
+          var marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
1953
+          var marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
1954
+          var boxSizing = slideStyles.getPropertyValue(slideStyles, 'box-sizing');
1955
+
1956
+          if (boxSizing && boxSizing === 'border-box') {
1957
+            slideSize = width + marginLeft + marginRight;
1958
+          } else {
1959
+            var _slide$ = slide[0],
1960
+                clientWidth = _slide$.clientWidth,
1961
+                offsetWidth = _slide$.offsetWidth;
1962
+            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
1963
+          }
1964
+        }
1965
+
1966
+        if (currentTransform) {
1967
+          slide[0].style.transform = currentTransform;
1968
+        }
1969
+
1970
+        if (currentWebKitTransform) {
1971
+          slide[0].style.webkitTransform = currentWebKitTransform;
1972
+        }
1973
+
1974
+        if (params.roundLengths) slideSize = Math.floor(slideSize);
1975
+      } else {
1976
+        slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
1977
+        if (params.roundLengths) slideSize = Math.floor(slideSize);
1978
+
1979
+        if (slides[i]) {
1980
+          slides[i].style[getDirectionLabel('width')] = slideSize + "px";
1981
+        }
1982
+      }
1983
+
1984
+      if (slides[i]) {
1985
+        slides[i].swiperSlideSize = slideSize;
1986
+      }
1987
+
1988
+      slidesSizesGrid.push(slideSize);
1989
+
1990
+      if (params.centeredSlides) {
1991
+        slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
1992
+        if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
1993
+        if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
1994
+        if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
1995
+        if (params.roundLengths) slidePosition = Math.floor(slidePosition);
1996
+        if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
1997
+        slidesGrid.push(slidePosition);
1998
+      } else {
1999
+        if (params.roundLengths) slidePosition = Math.floor(slidePosition);
2000
+        if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
2001
+        slidesGrid.push(slidePosition);
2002
+        slidePosition = slidePosition + slideSize + spaceBetween;
2003
+      }
2004
+
2005
+      swiper.virtualSize += slideSize + spaceBetween;
2006
+      prevSlideSize = slideSize;
2007
+      index += 1;
2008
+    }
2009
+
2010
+    swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
2011
+    var newSlidesGrid;
2012
+
2013
+    if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
2014
+      $wrapperEl.css({
2015
+        width: swiper.virtualSize + params.spaceBetween + "px"
2016
+      });
2017
+    }
2018
+
2019
+    if (params.setWrapperSize) {
2020
+      var _$wrapperEl$css;
2021
+
2022
+      $wrapperEl.css((_$wrapperEl$css = {}, _$wrapperEl$css[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + "px", _$wrapperEl$css));
2023
+    }
2024
+
2025
+    if (params.slidesPerColumn > 1) {
2026
+      var _$wrapperEl$css2;
2027
+
2028
+      swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
2029
+      swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
2030
+      $wrapperEl.css((_$wrapperEl$css2 = {}, _$wrapperEl$css2[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + "px", _$wrapperEl$css2));
2031
+
2032
+      if (params.centeredSlides) {
2033
+        newSlidesGrid = [];
2034
+
2035
+        for (var _i = 0; _i < snapGrid.length; _i += 1) {
2036
+          var slidesGridItem = snapGrid[_i];
2037
+          if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
2038
+          if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
2039
+        }
2040
+
2041
+        snapGrid = newSlidesGrid;
2042
+      }
2043
+    } // Remove last grid elements depending on width
2044
+
2045
+
2046
+    if (!params.centeredSlides) {
2047
+      newSlidesGrid = [];
2048
+
2049
+      for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {
2050
+        var _slidesGridItem = snapGrid[_i2];
2051
+        if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);
2052
+
2053
+        if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {
2054
+          newSlidesGrid.push(_slidesGridItem);
2055
+        }
2056
+      }
2057
+
2058
+      snapGrid = newSlidesGrid;
2059
+
2060
+      if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
2061
+        snapGrid.push(swiper.virtualSize - swiperSize);
2062
+      }
2063
+    }
2064
+
2065
+    if (snapGrid.length === 0) snapGrid = [0];
2066
+
2067
+    if (params.spaceBetween !== 0) {
2068
+      var _slides$filter$css;
2069
+
2070
+      var key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');
2071
+      slides.filter(slidesForMargin).css((_slides$filter$css = {}, _slides$filter$css[key] = spaceBetween + "px", _slides$filter$css));
2072
+    }
2073
+
2074
+    if (params.centeredSlides && params.centeredSlidesBounds) {
2075
+      var allSlidesSize = 0;
2076
+      slidesSizesGrid.forEach(function (slideSizeValue) {
2077
+        allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
2078
+      });
2079
+      allSlidesSize -= params.spaceBetween;
2080
+      var maxSnap = allSlidesSize - swiperSize;
2081
+      snapGrid = snapGrid.map(function (snap) {
2082
+        if (snap < 0) return -offsetBefore;
2083
+        if (snap > maxSnap) return maxSnap + offsetAfter;
2084
+        return snap;
2085
+      });
2086
+    }
2087
+
2088
+    if (params.centerInsufficientSlides) {
2089
+      var _allSlidesSize = 0;
2090
+      slidesSizesGrid.forEach(function (slideSizeValue) {
2091
+        _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
2092
+      });
2093
+      _allSlidesSize -= params.spaceBetween;
2094
+
2095
+      if (_allSlidesSize < swiperSize) {
2096
+        var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;
2097
+        snapGrid.forEach(function (snap, snapIndex) {
2098
+          snapGrid[snapIndex] = snap - allSlidesOffset;
2099
+        });
2100
+        slidesGrid.forEach(function (snap, snapIndex) {
2101
+          slidesGrid[snapIndex] = snap + allSlidesOffset;
2102
+        });
2103
+      }
2104
+    }
2105
+
2106
+    extend$1(swiper, {
2107
+      slides: slides,
2108
+      snapGrid: snapGrid,
2109
+      slidesGrid: slidesGrid,
2110
+      slidesSizesGrid: slidesSizesGrid
2111
+    });
2112
+
2113
+    if (slidesLength !== previousSlidesLength) {
2114
+      swiper.emit('slidesLengthChange');
2115
+    }
2116
+
2117
+    if (snapGrid.length !== previousSnapGridLength) {
2118
+      if (swiper.params.watchOverflow) swiper.checkOverflow();
2119
+      swiper.emit('snapGridLengthChange');
2120
+    }
2121
+
2122
+    if (slidesGrid.length !== previousSlidesGridLength) {
2123
+      swiper.emit('slidesGridLengthChange');
2124
+    }
2125
+
2126
+    if (params.watchSlidesProgress || params.watchSlidesVisibility) {
2127
+      swiper.updateSlidesOffset();
2128
+    }
2129
+  }
2130
+
2131
+  function updateAutoHeight(speed) {
2132
+    var swiper = this;
2133
+    var activeSlides = [];
2134
+    var newHeight = 0;
2135
+    var i;
2136
+
2137
+    if (typeof speed === 'number') {
2138
+      swiper.setTransition(speed);
2139
+    } else if (speed === true) {
2140
+      swiper.setTransition(swiper.params.speed);
2141
+    } // Find slides currently in view
2142
+
2143
+
2144
+    if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
2145
+      if (swiper.params.centeredSlides) {
2146
+        swiper.visibleSlides.each(function (slide) {
2147
+          activeSlides.push(slide);
2148
+        });
2149
+      } else {
2150
+        for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
2151
+          var index = swiper.activeIndex + i;
2152
+          if (index > swiper.slides.length) break;
2153
+          activeSlides.push(swiper.slides.eq(index)[0]);
2154
+        }
2155
+      }
2156
+    } else {
2157
+      activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
2158
+    } // Find new height from highest slide in view
2159
+
2160
+
2161
+    for (i = 0; i < activeSlides.length; i += 1) {
2162
+      if (typeof activeSlides[i] !== 'undefined') {
2163
+        var height = activeSlides[i].offsetHeight;
2164
+        newHeight = height > newHeight ? height : newHeight;
2165
+      }
2166
+    } // Update Height
2167
+
2168
+
2169
+    if (newHeight) swiper.$wrapperEl.css('height', newHeight + "px");
2170
+  }
2171
+
2172
+  function updateSlidesOffset() {
2173
+    var swiper = this;
2174
+    var slides = swiper.slides;
2175
+
2176
+    for (var i = 0; i < slides.length; i += 1) {
2177
+      slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
2178
+    }
2179
+  }
2180
+
2181
+  function updateSlidesProgress(translate) {
2182
+    if (translate === void 0) {
2183
+      translate = this && this.translate || 0;
2184
+    }
2185
+
2186
+    var swiper = this;
2187
+    var params = swiper.params;
2188
+    var slides = swiper.slides,
2189
+        rtl = swiper.rtlTranslate;
2190
+    if (slides.length === 0) return;
2191
+    if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
2192
+    var offsetCenter = -translate;
2193
+    if (rtl) offsetCenter = translate; // Visible Slides
2194
+
2195
+    slides.removeClass(params.slideVisibleClass);
2196
+    swiper.visibleSlidesIndexes = [];
2197
+    swiper.visibleSlides = [];
2198
+
2199
+    for (var i = 0; i < slides.length; i += 1) {
2200
+      var slide = slides[i];
2201
+      var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);
2202
+
2203
+      if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {
2204
+        var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
2205
+        var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
2206
+        var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
2207
+
2208
+        if (isVisible) {
2209
+          swiper.visibleSlides.push(slide);
2210
+          swiper.visibleSlidesIndexes.push(i);
2211
+          slides.eq(i).addClass(params.slideVisibleClass);
2212
+        }
2213
+      }
2214
+
2215
+      slide.progress = rtl ? -slideProgress : slideProgress;
2216
+    }
2217
+
2218
+    swiper.visibleSlides = $(swiper.visibleSlides);
2219
+  }
2220
+
2221
+  function updateProgress(translate) {
2222
+    var swiper = this;
2223
+
2224
+    if (typeof translate === 'undefined') {
2225
+      var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line
2226
+
2227
+      translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
2228
+    }
2229
+
2230
+    var params = swiper.params;
2231
+    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
2232
+    var progress = swiper.progress,
2233
+        isBeginning = swiper.isBeginning,
2234
+        isEnd = swiper.isEnd;
2235
+    var wasBeginning = isBeginning;
2236
+    var wasEnd = isEnd;
2237
+
2238
+    if (translatesDiff === 0) {
2239
+      progress = 0;
2240
+      isBeginning = true;
2241
+      isEnd = true;
2242
+    } else {
2243
+      progress = (translate - swiper.minTranslate()) / translatesDiff;
2244
+      isBeginning = progress <= 0;
2245
+      isEnd = progress >= 1;
2246
+    }
2247
+
2248
+    extend$1(swiper, {
2249
+      progress: progress,
2250
+      isBeginning: isBeginning,
2251
+      isEnd: isEnd
2252
+    });
2253
+    if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
2254
+
2255
+    if (isBeginning && !wasBeginning) {
2256
+      swiper.emit('reachBeginning toEdge');
2257
+    }
2258
+
2259
+    if (isEnd && !wasEnd) {
2260
+      swiper.emit('reachEnd toEdge');
2261
+    }
2262
+
2263
+    if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
2264
+      swiper.emit('fromEdge');
2265
+    }
2266
+
2267
+    swiper.emit('progress', progress);
2268
+  }
2269
+
2270
+  function updateSlidesClasses() {
2271
+    var swiper = this;
2272
+    var slides = swiper.slides,
2273
+        params = swiper.params,
2274
+        $wrapperEl = swiper.$wrapperEl,
2275
+        activeIndex = swiper.activeIndex,
2276
+        realIndex = swiper.realIndex;
2277
+    var isVirtual = swiper.virtual && params.virtual.enabled;
2278
+    slides.removeClass(params.slideActiveClass + " " + params.slideNextClass + " " + params.slidePrevClass + " " + params.slideDuplicateActiveClass + " " + params.slideDuplicateNextClass + " " + params.slideDuplicatePrevClass);
2279
+    var activeSlide;
2280
+
2281
+    if (isVirtual) {
2282
+      activeSlide = swiper.$wrapperEl.find("." + params.slideClass + "[data-swiper-slide-index=\"" + activeIndex + "\"]");
2283
+    } else {
2284
+      activeSlide = slides.eq(activeIndex);
2285
+    } // Active classes
2286
+
2287
+
2288
+    activeSlide.addClass(params.slideActiveClass);
2289
+
2290
+    if (params.loop) {
2291
+      // Duplicate to all looped slides
2292
+      if (activeSlide.hasClass(params.slideDuplicateClass)) {
2293
+        $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
2294
+      } else {
2295
+        $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
2296
+      }
2297
+    } // Next Slide
2298
+
2299
+
2300
+    var nextSlide = activeSlide.nextAll("." + params.slideClass).eq(0).addClass(params.slideNextClass);
2301
+
2302
+    if (params.loop && nextSlide.length === 0) {
2303
+      nextSlide = slides.eq(0);
2304
+      nextSlide.addClass(params.slideNextClass);
2305
+    } // Prev Slide
2306
+
2307
+
2308
+    var prevSlide = activeSlide.prevAll("." + params.slideClass).eq(0).addClass(params.slidePrevClass);
2309
+
2310
+    if (params.loop && prevSlide.length === 0) {
2311
+      prevSlide = slides.eq(-1);
2312
+      prevSlide.addClass(params.slidePrevClass);
2313
+    }
2314
+
2315
+    if (params.loop) {
2316
+      // Duplicate to all looped slides
2317
+      if (nextSlide.hasClass(params.slideDuplicateClass)) {
2318
+        $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
2319
+      } else {
2320
+        $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
2321
+      }
2322
+
2323
+      if (prevSlide.hasClass(params.slideDuplicateClass)) {
2324
+        $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
2325
+      } else {
2326
+        $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
2327
+      }
2328
+    }
2329
+
2330
+    swiper.emitSlidesClasses();
2331
+  }
2332
+
2333
+  function updateActiveIndex(newActiveIndex) {
2334
+    var swiper = this;
2335
+    var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
2336
+    var slidesGrid = swiper.slidesGrid,
2337
+        snapGrid = swiper.snapGrid,
2338
+        params = swiper.params,
2339
+        previousIndex = swiper.activeIndex,
2340
+        previousRealIndex = swiper.realIndex,
2341
+        previousSnapIndex = swiper.snapIndex;
2342
+    var activeIndex = newActiveIndex;
2343
+    var snapIndex;
2344
+
2345
+    if (typeof activeIndex === 'undefined') {
2346
+      for (var i = 0; i < slidesGrid.length; i += 1) {
2347
+        if (typeof slidesGrid[i + 1] !== 'undefined') {
2348
+          if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
2349
+            activeIndex = i;
2350
+          } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
2351
+            activeIndex = i + 1;
2352
+          }
2353
+        } else if (translate >= slidesGrid[i]) {
2354
+          activeIndex = i;
2355
+        }
2356
+      } // Normalize slideIndex
2357
+
2358
+
2359
+      if (params.normalizeSlideIndex) {
2360
+        if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
2361
+      }
2362
+    }
2363
+
2364
+    if (snapGrid.indexOf(translate) >= 0) {
2365
+      snapIndex = snapGrid.indexOf(translate);
2366
+    } else {
2367
+      var skip = Math.min(params.slidesPerGroupSkip, activeIndex);
2368
+      snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
2369
+    }
2370
+
2371
+    if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
2372
+
2373
+    if (activeIndex === previousIndex) {
2374
+      if (snapIndex !== previousSnapIndex) {
2375
+        swiper.snapIndex = snapIndex;
2376
+        swiper.emit('snapIndexChange');
2377
+      }
2378
+
2379
+      return;
2380
+    } // Get real index
2381
+
2382
+
2383
+    var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
2384
+    extend$1(swiper, {
2385
+      snapIndex: snapIndex,
2386
+      realIndex: realIndex,
2387
+      previousIndex: previousIndex,
2388
+      activeIndex: activeIndex
2389
+    });
2390
+    swiper.emit('activeIndexChange');
2391
+    swiper.emit('snapIndexChange');
2392
+
2393
+    if (previousRealIndex !== realIndex) {
2394
+      swiper.emit('realIndexChange');
2395
+    }
2396
+
2397
+    if (swiper.initialized || swiper.params.runCallbacksOnInit) {
2398
+      swiper.emit('slideChange');
2399
+    }
2400
+  }
2401
+
2402
+  function updateClickedSlide(e) {
2403
+    var swiper = this;
2404
+    var params = swiper.params;
2405
+    var slide = $(e.target).closest("." + params.slideClass)[0];
2406
+    var slideFound = false;
2407
+    var slideIndex;
2408
+
2409
+    if (slide) {
2410
+      for (var i = 0; i < swiper.slides.length; i += 1) {
2411
+        if (swiper.slides[i] === slide) {
2412
+          slideFound = true;
2413
+          slideIndex = i;
2414
+          break;
2415
+        }
2416
+      }
2417
+    }
2418
+
2419
+    if (slide && slideFound) {
2420
+      swiper.clickedSlide = slide;
2421
+
2422
+      if (swiper.virtual && swiper.params.virtual.enabled) {
2423
+        swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
2424
+      } else {
2425
+        swiper.clickedIndex = slideIndex;
2426
+      }
2427
+    } else {
2428
+      swiper.clickedSlide = undefined;
2429
+      swiper.clickedIndex = undefined;
2430
+      return;
2431
+    }
2432
+
2433
+    if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
2434
+      swiper.slideToClickedSlide();
2435
+    }
2436
+  }
2437
+
2438
+  var update = {
2439
+    updateSize: updateSize,
2440
+    updateSlides: updateSlides,
2441
+    updateAutoHeight: updateAutoHeight,
2442
+    updateSlidesOffset: updateSlidesOffset,
2443
+    updateSlidesProgress: updateSlidesProgress,
2444
+    updateProgress: updateProgress,
2445
+    updateSlidesClasses: updateSlidesClasses,
2446
+    updateActiveIndex: updateActiveIndex,
2447
+    updateClickedSlide: updateClickedSlide
2448
+  };
2449
+
2450
+  function getSwiperTranslate(axis) {
2451
+    if (axis === void 0) {
2452
+      axis = this.isHorizontal() ? 'x' : 'y';
2453
+    }
2454
+
2455
+    var swiper = this;
2456
+    var params = swiper.params,
2457
+        rtl = swiper.rtlTranslate,
2458
+        translate = swiper.translate,
2459
+        $wrapperEl = swiper.$wrapperEl;
2460
+
2461
+    if (params.virtualTranslate) {
2462
+      return rtl ? -translate : translate;
2463
+    }
2464
+
2465
+    if (params.cssMode) {
2466
+      return translate;
2467
+    }
2468
+
2469
+    var currentTranslate = getTranslate($wrapperEl[0], axis);
2470
+    if (rtl) currentTranslate = -currentTranslate;
2471
+    return currentTranslate || 0;
2472
+  }
2473
+
2474
+  function setTranslate(translate, byController) {
2475
+    var swiper = this;
2476
+    var rtl = swiper.rtlTranslate,
2477
+        params = swiper.params,
2478
+        $wrapperEl = swiper.$wrapperEl,
2479
+        wrapperEl = swiper.wrapperEl,
2480
+        progress = swiper.progress;
2481
+    var x = 0;
2482
+    var y = 0;
2483
+    var z = 0;
2484
+
2485
+    if (swiper.isHorizontal()) {
2486
+      x = rtl ? -translate : translate;
2487
+    } else {
2488
+      y = translate;
2489
+    }
2490
+
2491
+    if (params.roundLengths) {
2492
+      x = Math.floor(x);
2493
+      y = Math.floor(y);
2494
+    }
2495
+
2496
+    if (params.cssMode) {
2497
+      wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
2498
+    } else if (!params.virtualTranslate) {
2499
+      $wrapperEl.transform("translate3d(" + x + "px, " + y + "px, " + z + "px)");
2500
+    }
2501
+
2502
+    swiper.previousTranslate = swiper.translate;
2503
+    swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress
2504
+
2505
+    var newProgress;
2506
+    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
2507
+
2508
+    if (translatesDiff === 0) {
2509
+      newProgress = 0;
2510
+    } else {
2511
+      newProgress = (translate - swiper.minTranslate()) / translatesDiff;
2512
+    }
2513
+
2514
+    if (newProgress !== progress) {
2515
+      swiper.updateProgress(translate);
2516
+    }
2517
+
2518
+    swiper.emit('setTranslate', swiper.translate, byController);
2519
+  }
2520
+
2521
+  function minTranslate() {
2522
+    return -this.snapGrid[0];
2523
+  }
2524
+
2525
+  function maxTranslate() {
2526
+    return -this.snapGrid[this.snapGrid.length - 1];
2527
+  }
2528
+
2529
+  function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
2530
+    if (translate === void 0) {
2531
+      translate = 0;
2532
+    }
2533
+
2534
+    if (speed === void 0) {
2535
+      speed = this.params.speed;
2536
+    }
2537
+
2538
+    if (runCallbacks === void 0) {
2539
+      runCallbacks = true;
2540
+    }
2541
+
2542
+    if (translateBounds === void 0) {
2543
+      translateBounds = true;
2544
+    }
2545
+
2546
+    var swiper = this;
2547
+    var params = swiper.params,
2548
+        wrapperEl = swiper.wrapperEl;
2549
+
2550
+    if (swiper.animating && params.preventInteractionOnTransition) {
2551
+      return false;
2552
+    }
2553
+
2554
+    var minTranslate = swiper.minTranslate();
2555
+    var maxTranslate = swiper.maxTranslate();
2556
+    var newTranslate;
2557
+    if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress
2558
+
2559
+    swiper.updateProgress(newTranslate);
2560
+
2561
+    if (params.cssMode) {
2562
+      var isH = swiper.isHorizontal();
2563
+
2564
+      if (speed === 0) {
2565
+        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
2566
+      } else {
2567
+        // eslint-disable-next-line
2568
+        if (wrapperEl.scrollTo) {
2569
+          var _wrapperEl$scrollTo;
2570
+
2571
+          wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
2572
+        } else {
2573
+          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
2574
+        }
2575
+      }
2576
+
2577
+      return true;
2578
+    }
2579
+
2580
+    if (speed === 0) {
2581
+      swiper.setTransition(0);
2582
+      swiper.setTranslate(newTranslate);
2583
+
2584
+      if (runCallbacks) {
2585
+        swiper.emit('beforeTransitionStart', speed, internal);
2586
+        swiper.emit('transitionEnd');
2587
+      }
2588
+    } else {
2589
+      swiper.setTransition(speed);
2590
+      swiper.setTranslate(newTranslate);
2591
+
2592
+      if (runCallbacks) {
2593
+        swiper.emit('beforeTransitionStart', speed, internal);
2594
+        swiper.emit('transitionStart');
2595
+      }
2596
+
2597
+      if (!swiper.animating) {
2598
+        swiper.animating = true;
2599
+
2600
+        if (!swiper.onTranslateToWrapperTransitionEnd) {
2601
+          swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
2602
+            if (!swiper || swiper.destroyed) return;
2603
+            if (e.target !== this) return;
2604
+            swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
2605
+            swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
2606
+            swiper.onTranslateToWrapperTransitionEnd = null;
2607
+            delete swiper.onTranslateToWrapperTransitionEnd;
2608
+
2609
+            if (runCallbacks) {
2610
+              swiper.emit('transitionEnd');
2611
+            }
2612
+          };
2613
+        }
2614
+
2615
+        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
2616
+        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
2617
+      }
2618
+    }
2619
+
2620
+    return true;
2621
+  }
2622
+
2623
+  var translate = {
2624
+    getTranslate: getSwiperTranslate,
2625
+    setTranslate: setTranslate,
2626
+    minTranslate: minTranslate,
2627
+    maxTranslate: maxTranslate,
2628
+    translateTo: translateTo
2629
+  };
2630
+
2631
+  function setTransition(duration, byController) {
2632
+    var swiper = this;
2633
+
2634
+    if (!swiper.params.cssMode) {
2635
+      swiper.$wrapperEl.transition(duration);
2636
+    }
2637
+
2638
+    swiper.emit('setTransition', duration, byController);
2639
+  }
2640
+
2641
+  function transitionStart(runCallbacks, direction) {
2642
+    if (runCallbacks === void 0) {
2643
+      runCallbacks = true;
2644
+    }
2645
+
2646
+    var swiper = this;
2647
+    var activeIndex = swiper.activeIndex,
2648
+        params = swiper.params,
2649
+        previousIndex = swiper.previousIndex;
2650
+    if (params.cssMode) return;
2651
+
2652
+    if (params.autoHeight) {
2653
+      swiper.updateAutoHeight();
2654
+    }
2655
+
2656
+    var dir = direction;
2657
+
2658
+    if (!dir) {
2659
+      if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
2660
+    }
2661
+
2662
+    swiper.emit('transitionStart');
2663
+
2664
+    if (runCallbacks && activeIndex !== previousIndex) {
2665
+      if (dir === 'reset') {
2666
+        swiper.emit('slideResetTransitionStart');
2667
+        return;
2668
+      }
2669
+
2670
+      swiper.emit('slideChangeTransitionStart');
2671
+
2672
+      if (dir === 'next') {
2673
+        swiper.emit('slideNextTransitionStart');
2674
+      } else {
2675
+        swiper.emit('slidePrevTransitionStart');
2676
+      }
2677
+    }
2678
+  }
2679
+
2680
+  function transitionEnd$1(runCallbacks, direction) {
2681
+    if (runCallbacks === void 0) {
2682
+      runCallbacks = true;
2683
+    }
2684
+
2685
+    var swiper = this;
2686
+    var activeIndex = swiper.activeIndex,
2687
+        previousIndex = swiper.previousIndex,
2688
+        params = swiper.params;
2689
+    swiper.animating = false;
2690
+    if (params.cssMode) return;
2691
+    swiper.setTransition(0);
2692
+    var dir = direction;
2693
+
2694
+    if (!dir) {
2695
+      if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
2696
+    }
2697
+
2698
+    swiper.emit('transitionEnd');
2699
+
2700
+    if (runCallbacks && activeIndex !== previousIndex) {
2701
+      if (dir === 'reset') {
2702
+        swiper.emit('slideResetTransitionEnd');
2703
+        return;
2704
+      }
2705
+
2706
+      swiper.emit('slideChangeTransitionEnd');
2707
+
2708
+      if (dir === 'next') {
2709
+        swiper.emit('slideNextTransitionEnd');
2710
+      } else {
2711
+        swiper.emit('slidePrevTransitionEnd');
2712
+      }
2713
+    }
2714
+  }
2715
+
2716
+  var transition$1 = {
2717
+    setTransition: setTransition,
2718
+    transitionStart: transitionStart,
2719
+    transitionEnd: transitionEnd$1
2720
+  };
2721
+
2722
+  function slideTo(index, speed, runCallbacks, internal) {
2723
+    if (index === void 0) {
2724
+      index = 0;
2725
+    }
2726
+
2727
+    if (speed === void 0) {
2728
+      speed = this.params.speed;
2729
+    }
2730
+
2731
+    if (runCallbacks === void 0) {
2732
+      runCallbacks = true;
2733
+    }
2734
+
2735
+    if (typeof index !== 'number' && typeof index !== 'string') {
2736
+      throw new Error("The 'index' argument cannot have type other than 'number' or 'string'. [" + typeof index + "] given.");
2737
+    }
2738
+
2739
+    if (typeof index === 'string') {
2740
+      /**
2741
+       * The `index` argument converted from `string` to `number`.
2742
+       * @type {number}
2743
+       */
2744
+      var indexAsNumber = parseInt(index, 10);
2745
+      /**
2746
+       * Determines whether the `index` argument is a valid `number`
2747
+       * after being converted from the `string` type.
2748
+       * @type {boolean}
2749
+       */
2750
+
2751
+      var isValidNumber = isFinite(indexAsNumber);
2752
+
2753
+      if (!isValidNumber) {
2754
+        throw new Error("The passed-in 'index' (string) couldn't be converted to 'number'. [" + index + "] given.");
2755
+      } // Knowing that the converted `index` is a valid number,
2756
+      // we can update the original argument's value.
2757
+
2758
+
2759
+      index = indexAsNumber;
2760
+    }
2761
+
2762
+    var swiper = this;
2763
+    var slideIndex = index;
2764
+    if (slideIndex < 0) slideIndex = 0;
2765
+    var params = swiper.params,
2766
+        snapGrid = swiper.snapGrid,
2767
+        slidesGrid = swiper.slidesGrid,
2768
+        previousIndex = swiper.previousIndex,
2769
+        activeIndex = swiper.activeIndex,
2770
+        rtl = swiper.rtlTranslate,
2771
+        wrapperEl = swiper.wrapperEl;
2772
+
2773
+    if (swiper.animating && params.preventInteractionOnTransition) {
2774
+      return false;
2775
+    }
2776
+
2777
+    var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
2778
+    var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
2779
+    if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
2780
+
2781
+    if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
2782
+      swiper.emit('beforeSlideChangeStart');
2783
+    }
2784
+
2785
+    var translate = -snapGrid[snapIndex]; // Update progress
2786
+
2787
+    swiper.updateProgress(translate); // Normalize slideIndex
2788
+
2789
+    if (params.normalizeSlideIndex) {
2790
+      for (var i = 0; i < slidesGrid.length; i += 1) {
2791
+        var normalizedTranslate = -Math.floor(translate * 100);
2792
+        var normalizedGird = Math.floor(slidesGrid[i] * 100);
2793
+        var normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
2794
+
2795
+        if (typeof slidesGrid[i + 1] !== 'undefined') {
2796
+          if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGird) / 2) {
2797
+            slideIndex = i;
2798
+          } else if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext) {
2799
+            slideIndex = i + 1;
2800
+          }
2801
+        } else if (normalizedTranslate >= normalizedGird) {
2802
+          slideIndex = i;
2803
+        }
2804
+      }
2805
+    } // Directions locks
2806
+
2807
+
2808
+    if (swiper.initialized && slideIndex !== activeIndex) {
2809
+      if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
2810
+        return false;
2811
+      }
2812
+
2813
+      if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
2814
+        if ((activeIndex || 0) !== slideIndex) return false;
2815
+      }
2816
+    }
2817
+
2818
+    var direction;
2819
+    if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index
2820
+
2821
+    if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
2822
+      swiper.updateActiveIndex(slideIndex); // Update Height
2823
+
2824
+      if (params.autoHeight) {
2825
+        swiper.updateAutoHeight();
2826
+      }
2827
+
2828
+      swiper.updateSlidesClasses();
2829
+
2830
+      if (params.effect !== 'slide') {
2831
+        swiper.setTranslate(translate);
2832
+      }
2833
+
2834
+      if (direction !== 'reset') {
2835
+        swiper.transitionStart(runCallbacks, direction);
2836
+        swiper.transitionEnd(runCallbacks, direction);
2837
+      }
2838
+
2839
+      return false;
2840
+    }
2841
+
2842
+    if (params.cssMode) {
2843
+      var isH = swiper.isHorizontal();
2844
+      var t = -translate;
2845
+
2846
+      if (rtl) {
2847
+        t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
2848
+      }
2849
+
2850
+      if (speed === 0) {
2851
+        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2852
+      } else {
2853
+        // eslint-disable-next-line
2854
+        if (wrapperEl.scrollTo) {
2855
+          var _wrapperEl$scrollTo;
2856
+
2857
+          wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
2858
+        } else {
2859
+          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2860
+        }
2861
+      }
2862
+
2863
+      return true;
2864
+    }
2865
+
2866
+    if (speed === 0) {
2867
+      swiper.setTransition(0);
2868
+      swiper.setTranslate(translate);
2869
+      swiper.updateActiveIndex(slideIndex);
2870
+      swiper.updateSlidesClasses();
2871
+      swiper.emit('beforeTransitionStart', speed, internal);
2872
+      swiper.transitionStart(runCallbacks, direction);
2873
+      swiper.transitionEnd(runCallbacks, direction);
2874
+    } else {
2875
+      swiper.setTransition(speed);
2876
+      swiper.setTranslate(translate);
2877
+      swiper.updateActiveIndex(slideIndex);
2878
+      swiper.updateSlidesClasses();
2879
+      swiper.emit('beforeTransitionStart', speed, internal);
2880
+      swiper.transitionStart(runCallbacks, direction);
2881
+
2882
+      if (!swiper.animating) {
2883
+        swiper.animating = true;
2884
+
2885
+        if (!swiper.onSlideToWrapperTransitionEnd) {
2886
+          swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
2887
+            if (!swiper || swiper.destroyed) return;
2888
+            if (e.target !== this) return;
2889
+            swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2890
+            swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2891
+            swiper.onSlideToWrapperTransitionEnd = null;
2892
+            delete swiper.onSlideToWrapperTransitionEnd;
2893
+            swiper.transitionEnd(runCallbacks, direction);
2894
+          };
2895
+        }
2896
+
2897
+        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2898
+        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2899
+      }
2900
+    }
2901
+
2902
+    return true;
2903
+  }
2904
+
2905
+  function slideToLoop(index, speed, runCallbacks, internal) {
2906
+    if (index === void 0) {
2907
+      index = 0;
2908
+    }
2909
+
2910
+    if (speed === void 0) {
2911
+      speed = this.params.speed;
2912
+    }
2913
+
2914
+    if (runCallbacks === void 0) {
2915
+      runCallbacks = true;
2916
+    }
2917
+
2918
+    var swiper = this;
2919
+    var newIndex = index;
2920
+
2921
+    if (swiper.params.loop) {
2922
+      newIndex += swiper.loopedSlides;
2923
+    }
2924
+
2925
+    return swiper.slideTo(newIndex, speed, runCallbacks, internal);
2926
+  }
2927
+
2928
+  /* eslint no-unused-vars: "off" */
2929
+  function slideNext(speed, runCallbacks, internal) {
2930
+    if (speed === void 0) {
2931
+      speed = this.params.speed;
2932
+    }
2933
+
2934
+    if (runCallbacks === void 0) {
2935
+      runCallbacks = true;
2936
+    }
2937
+
2938
+    var swiper = this;
2939
+    var params = swiper.params,
2940
+        animating = swiper.animating;
2941
+    var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
2942
+
2943
+    if (params.loop) {
2944
+      if (animating && params.loopPreventsSlide) return false;
2945
+      swiper.loopFix(); // eslint-disable-next-line
2946
+
2947
+      swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2948
+    }
2949
+
2950
+    return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
2951
+  }
2952
+
2953
+  /* eslint no-unused-vars: "off" */
2954
+  function slidePrev(speed, runCallbacks, internal) {
2955
+    if (speed === void 0) {
2956
+      speed = this.params.speed;
2957
+    }
2958
+
2959
+    if (runCallbacks === void 0) {
2960
+      runCallbacks = true;
2961
+    }
2962
+
2963
+    var swiper = this;
2964
+    var params = swiper.params,
2965
+        animating = swiper.animating,
2966
+        snapGrid = swiper.snapGrid,
2967
+        slidesGrid = swiper.slidesGrid,
2968
+        rtlTranslate = swiper.rtlTranslate;
2969
+
2970
+    if (params.loop) {
2971
+      if (animating && params.loopPreventsSlide) return false;
2972
+      swiper.loopFix(); // eslint-disable-next-line
2973
+
2974
+      swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2975
+    }
2976
+
2977
+    var translate = rtlTranslate ? swiper.translate : -swiper.translate;
2978
+
2979
+    function normalize(val) {
2980
+      if (val < 0) return -Math.floor(Math.abs(val));
2981
+      return Math.floor(val);
2982
+    }
2983
+
2984
+    var normalizedTranslate = normalize(translate);
2985
+    var normalizedSnapGrid = snapGrid.map(function (val) {
2986
+      return normalize(val);
2987
+    });
2988
+    snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
2989
+    var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
2990
+
2991
+    if (typeof prevSnap === 'undefined' && params.cssMode) {
2992
+      snapGrid.forEach(function (snap) {
2993
+        if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
2994
+      });
2995
+    }
2996
+
2997
+    var prevIndex;
2998
+
2999
+    if (typeof prevSnap !== 'undefined') {
3000
+      prevIndex = slidesGrid.indexOf(prevSnap);
3001
+      if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
3002
+    }
3003
+
3004
+    return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
3005
+  }
3006
+
3007
+  /* eslint no-unused-vars: "off" */
3008
+  function slideReset(speed, runCallbacks, internal) {
3009
+    if (speed === void 0) {
3010
+      speed = this.params.speed;
3011
+    }
3012
+
3013
+    if (runCallbacks === void 0) {
3014
+      runCallbacks = true;
3015
+    }
3016
+
3017
+    var swiper = this;
3018
+    return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
3019
+  }
3020
+
3021
+  /* eslint no-unused-vars: "off" */
3022
+  function slideToClosest(speed, runCallbacks, internal, threshold) {
3023
+    if (speed === void 0) {
3024
+      speed = this.params.speed;
3025
+    }
3026
+
3027
+    if (runCallbacks === void 0) {
3028
+      runCallbacks = true;
3029
+    }
3030
+
3031
+    if (threshold === void 0) {
3032
+      threshold = 0.5;
3033
+    }
3034
+
3035
+    var swiper = this;
3036
+    var index = swiper.activeIndex;
3037
+    var skip = Math.min(swiper.params.slidesPerGroupSkip, index);
3038
+    var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
3039
+    var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
3040
+
3041
+    if (translate >= swiper.snapGrid[snapIndex]) {
3042
+      // The current translate is on or after the current snap index, so the choice
3043
+      // is between the current index and the one after it.
3044
+      var currentSnap = swiper.snapGrid[snapIndex];
3045
+      var nextSnap = swiper.snapGrid[snapIndex + 1];
3046
+
3047
+      if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
3048
+        index += swiper.params.slidesPerGroup;
3049
+      }
3050
+    } else {
3051
+      // The current translate is before the current snap index, so the choice
3052
+      // is between the current index and the one before it.
3053
+      var prevSnap = swiper.snapGrid[snapIndex - 1];
3054
+      var _currentSnap = swiper.snapGrid[snapIndex];
3055
+
3056
+      if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {
3057
+        index -= swiper.params.slidesPerGroup;
3058
+      }
3059
+    }
3060
+
3061
+    index = Math.max(index, 0);
3062
+    index = Math.min(index, swiper.slidesGrid.length - 1);
3063
+    return swiper.slideTo(index, speed, runCallbacks, internal);
3064
+  }
3065
+
3066
+  function slideToClickedSlide() {
3067
+    var swiper = this;
3068
+    var params = swiper.params,
3069
+        $wrapperEl = swiper.$wrapperEl;
3070
+    var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
3071
+    var slideToIndex = swiper.clickedIndex;
3072
+    var realIndex;
3073
+
3074
+    if (params.loop) {
3075
+      if (swiper.animating) return;
3076
+      realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
3077
+
3078
+      if (params.centeredSlides) {
3079
+        if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
3080
+          swiper.loopFix();
3081
+          slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
3082
+          nextTick(function () {
3083
+            swiper.slideTo(slideToIndex);
3084
+          });
3085
+        } else {
3086
+          swiper.slideTo(slideToIndex);
3087
+        }
3088
+      } else if (slideToIndex > swiper.slides.length - slidesPerView) {
3089
+        swiper.loopFix();
3090
+        slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
3091
+        nextTick(function () {
3092
+          swiper.slideTo(slideToIndex);
3093
+        });
3094
+      } else {
3095
+        swiper.slideTo(slideToIndex);
3096
+      }
3097
+    } else {
3098
+      swiper.slideTo(slideToIndex);
3099
+    }
3100
+  }
3101
+
3102
+  var slide = {
3103
+    slideTo: slideTo,
3104
+    slideToLoop: slideToLoop,
3105
+    slideNext: slideNext,
3106
+    slidePrev: slidePrev,
3107
+    slideReset: slideReset,
3108
+    slideToClosest: slideToClosest,
3109
+    slideToClickedSlide: slideToClickedSlide
3110
+  };
3111
+
3112
+  function loopCreate() {
3113
+    var swiper = this;
3114
+    var document = getDocument();
3115
+    var params = swiper.params,
3116
+        $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides
3117
+
3118
+    $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass).remove();
3119
+    var slides = $wrapperEl.children("." + params.slideClass);
3120
+
3121
+    if (params.loopFillGroupWithBlank) {
3122
+      var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
3123
+
3124
+      if (blankSlidesNum !== params.slidesPerGroup) {
3125
+        for (var i = 0; i < blankSlidesNum; i += 1) {
3126
+          var blankNode = $(document.createElement('div')).addClass(params.slideClass + " " + params.slideBlankClass);
3127
+          $wrapperEl.append(blankNode);
3128
+        }
3129
+
3130
+        slides = $wrapperEl.children("." + params.slideClass);
3131
+      }
3132
+    }
3133
+
3134
+    if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
3135
+    swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
3136
+    swiper.loopedSlides += params.loopAdditionalSlides;
3137
+
3138
+    if (swiper.loopedSlides > slides.length) {
3139
+      swiper.loopedSlides = slides.length;
3140
+    }
3141
+
3142
+    var prependSlides = [];
3143
+    var appendSlides = [];
3144
+    slides.each(function (el, index) {
3145
+      var slide = $(el);
3146
+
3147
+      if (index < swiper.loopedSlides) {
3148
+        appendSlides.push(el);
3149
+      }
3150
+
3151
+      if (index < slides.length && index >= slides.length - swiper.loopedSlides) {
3152
+        prependSlides.push(el);
3153
+      }
3154
+
3155
+      slide.attr('data-swiper-slide-index', index);
3156
+    });
3157
+
3158
+    for (var _i = 0; _i < appendSlides.length; _i += 1) {
3159
+      $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));
3160
+    }
3161
+
3162
+    for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {
3163
+      $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));
3164
+    }
3165
+  }
3166
+
3167
+  function loopFix() {
3168
+    var swiper = this;
3169
+    swiper.emit('beforeLoopFix');
3170
+    var activeIndex = swiper.activeIndex,
3171
+        slides = swiper.slides,
3172
+        loopedSlides = swiper.loopedSlides,
3173
+        allowSlidePrev = swiper.allowSlidePrev,
3174
+        allowSlideNext = swiper.allowSlideNext,
3175
+        snapGrid = swiper.snapGrid,
3176
+        rtl = swiper.rtlTranslate;
3177
+    var newIndex;
3178
+    swiper.allowSlidePrev = true;
3179
+    swiper.allowSlideNext = true;
3180
+    var snapTranslate = -snapGrid[activeIndex];
3181
+    var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
3182
+
3183
+    if (activeIndex < loopedSlides) {
3184
+      newIndex = slides.length - loopedSlides * 3 + activeIndex;
3185
+      newIndex += loopedSlides;
3186
+      var slideChanged = swiper.slideTo(newIndex, 0, false, true);
3187
+
3188
+      if (slideChanged && diff !== 0) {
3189
+        swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
3190
+      }
3191
+    } else if (activeIndex >= slides.length - loopedSlides) {
3192
+      // Fix For Positive Oversliding
3193
+      newIndex = -slides.length + activeIndex + loopedSlides;
3194
+      newIndex += loopedSlides;
3195
+
3196
+      var _slideChanged = swiper.slideTo(newIndex, 0, false, true);
3197
+
3198
+      if (_slideChanged && diff !== 0) {
3199
+        swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
3200
+      }
3201
+    }
3202
+
3203
+    swiper.allowSlidePrev = allowSlidePrev;
3204
+    swiper.allowSlideNext = allowSlideNext;
3205
+    swiper.emit('loopFix');
3206
+  }
3207
+
3208
+  function loopDestroy() {
3209
+    var swiper = this;
3210
+    var $wrapperEl = swiper.$wrapperEl,
3211
+        params = swiper.params,
3212
+        slides = swiper.slides;
3213
+    $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + ",." + params.slideClass + "." + params.slideBlankClass).remove();
3214
+    slides.removeAttr('data-swiper-slide-index');
3215
+  }
3216
+
3217
+  var loop = {
3218
+    loopCreate: loopCreate,
3219
+    loopFix: loopFix,
3220
+    loopDestroy: loopDestroy
3221
+  };
3222
+
3223
+  function setGrabCursor(moving) {
3224
+    var swiper = this;
3225
+    if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
3226
+    var el = swiper.el;
3227
+    el.style.cursor = 'move';
3228
+    el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
3229
+    el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
3230
+    el.style.cursor = moving ? 'grabbing' : 'grab';
3231
+  }
3232
+
3233
+  function unsetGrabCursor() {
3234
+    var swiper = this;
3235
+
3236
+    if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
3237
+      return;
3238
+    }
3239
+
3240
+    swiper.el.style.cursor = '';
3241
+  }
3242
+
3243
+  var grabCursor = {
3244
+    setGrabCursor: setGrabCursor,
3245
+    unsetGrabCursor: unsetGrabCursor
3246
+  };
3247
+
3248
+  function appendSlide(slides) {
3249
+    var swiper = this;
3250
+    var $wrapperEl = swiper.$wrapperEl,
3251
+        params = swiper.params;
3252
+
3253
+    if (params.loop) {
3254
+      swiper.loopDestroy();
3255
+    }
3256
+
3257
+    if (typeof slides === 'object' && 'length' in slides) {
3258
+      for (var i = 0; i < slides.length; i += 1) {
3259
+        if (slides[i]) $wrapperEl.append(slides[i]);
3260
+      }
3261
+    } else {
3262
+      $wrapperEl.append(slides);
3263
+    }
3264
+
3265
+    if (params.loop) {
3266
+      swiper.loopCreate();
3267
+    }
3268
+
3269
+    if (!(params.observer && swiper.support.observer)) {
3270
+      swiper.update();
3271
+    }
3272
+  }
3273
+
3274
+  function prependSlide(slides) {
3275
+    var swiper = this;
3276
+    var params = swiper.params,
3277
+        $wrapperEl = swiper.$wrapperEl,
3278
+        activeIndex = swiper.activeIndex;
3279
+
3280
+    if (params.loop) {
3281
+      swiper.loopDestroy();
3282
+    }
3283
+
3284
+    var newActiveIndex = activeIndex + 1;
3285
+
3286
+    if (typeof slides === 'object' && 'length' in slides) {
3287
+      for (var i = 0; i < slides.length; i += 1) {
3288
+        if (slides[i]) $wrapperEl.prepend(slides[i]);
3289
+      }
3290
+
3291
+      newActiveIndex = activeIndex + slides.length;
3292
+    } else {
3293
+      $wrapperEl.prepend(slides);
3294
+    }
3295
+
3296
+    if (params.loop) {
3297
+      swiper.loopCreate();
3298
+    }
3299
+
3300
+    if (!(params.observer && swiper.support.observer)) {
3301
+      swiper.update();
3302
+    }
3303
+
3304
+    swiper.slideTo(newActiveIndex, 0, false);
3305
+  }
3306
+
3307
+  function addSlide(index, slides) {
3308
+    var swiper = this;
3309
+    var $wrapperEl = swiper.$wrapperEl,
3310
+        params = swiper.params,
3311
+        activeIndex = swiper.activeIndex;
3312
+    var activeIndexBuffer = activeIndex;
3313
+
3314
+    if (params.loop) {
3315
+      activeIndexBuffer -= swiper.loopedSlides;
3316
+      swiper.loopDestroy();
3317
+      swiper.slides = $wrapperEl.children("." + params.slideClass);
3318
+    }
3319
+
3320
+    var baseLength = swiper.slides.length;
3321
+
3322
+    if (index <= 0) {
3323
+      swiper.prependSlide(slides);
3324
+      return;
3325
+    }
3326
+
3327
+    if (index >= baseLength) {
3328
+      swiper.appendSlide(slides);
3329
+      return;
3330
+    }
3331
+
3332
+    var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
3333
+    var slidesBuffer = [];
3334
+
3335
+    for (var i = baseLength - 1; i >= index; i -= 1) {
3336
+      var currentSlide = swiper.slides.eq(i);
3337
+      currentSlide.remove();
3338
+      slidesBuffer.unshift(currentSlide);
3339
+    }
3340
+
3341
+    if (typeof slides === 'object' && 'length' in slides) {
3342
+      for (var _i = 0; _i < slides.length; _i += 1) {
3343
+        if (slides[_i]) $wrapperEl.append(slides[_i]);
3344
+      }
3345
+
3346
+      newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
3347
+    } else {
3348
+      $wrapperEl.append(slides);
3349
+    }
3350
+
3351
+    for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {
3352
+      $wrapperEl.append(slidesBuffer[_i2]);
3353
+    }
3354
+
3355
+    if (params.loop) {
3356
+      swiper.loopCreate();
3357
+    }
3358
+
3359
+    if (!(params.observer && swiper.support.observer)) {
3360
+      swiper.update();
3361
+    }
3362
+
3363
+    if (params.loop) {
3364
+      swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
3365
+    } else {
3366
+      swiper.slideTo(newActiveIndex, 0, false);
3367
+    }
3368
+  }
3369
+
3370
+  function removeSlide(slidesIndexes) {
3371
+    var swiper = this;
3372
+    var params = swiper.params,
3373
+        $wrapperEl = swiper.$wrapperEl,
3374
+        activeIndex = swiper.activeIndex;
3375
+    var activeIndexBuffer = activeIndex;
3376
+
3377
+    if (params.loop) {
3378
+      activeIndexBuffer -= swiper.loopedSlides;
3379
+      swiper.loopDestroy();
3380
+      swiper.slides = $wrapperEl.children("." + params.slideClass);
3381
+    }
3382
+
3383
+    var newActiveIndex = activeIndexBuffer;
3384
+    var indexToRemove;
3385
+
3386
+    if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
3387
+      for (var i = 0; i < slidesIndexes.length; i += 1) {
3388
+        indexToRemove = slidesIndexes[i];
3389
+        if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
3390
+        if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
3391
+      }
3392
+
3393
+      newActiveIndex = Math.max(newActiveIndex, 0);
3394
+    } else {
3395
+      indexToRemove = slidesIndexes;
3396
+      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
3397
+      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
3398
+      newActiveIndex = Math.max(newActiveIndex, 0);
3399
+    }
3400
+
3401
+    if (params.loop) {
3402
+      swiper.loopCreate();
3403
+    }
3404
+
3405
+    if (!(params.observer && swiper.support.observer)) {
3406
+      swiper.update();
3407
+    }
3408
+
3409
+    if (params.loop) {
3410
+      swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
3411
+    } else {
3412
+      swiper.slideTo(newActiveIndex, 0, false);
3413
+    }
3414
+  }
3415
+
3416
+  function removeAllSlides() {
3417
+    var swiper = this;
3418
+    var slidesIndexes = [];
3419
+
3420
+    for (var i = 0; i < swiper.slides.length; i += 1) {
3421
+      slidesIndexes.push(i);
3422
+    }
3423
+
3424
+    swiper.removeSlide(slidesIndexes);
3425
+  }
3426
+
3427
+  var manipulation = {
3428
+    appendSlide: appendSlide,
3429
+    prependSlide: prependSlide,
3430
+    addSlide: addSlide,
3431
+    removeSlide: removeSlide,
3432
+    removeAllSlides: removeAllSlides
3433
+  };
3434
+
3435
+  function onTouchStart(event) {
3436
+    var swiper = this;
3437
+    var document = getDocument();
3438
+    var window = getWindow();
3439
+    var data = swiper.touchEventsData;
3440
+    var params = swiper.params,
3441
+        touches = swiper.touches;
3442
+
3443
+    if (swiper.animating && params.preventInteractionOnTransition) {
3444
+      return;
3445
+    }
3446
+
3447
+    var e = event;
3448
+    if (e.originalEvent) e = e.originalEvent;
3449
+    var $targetEl = $(e.target);
3450
+
3451
+    if (params.touchEventsTarget === 'wrapper') {
3452
+      if (!$targetEl.closest(swiper.wrapperEl).length) return;
3453
+    }
3454
+
3455
+    data.isTouchEvent = e.type === 'touchstart';
3456
+    if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
3457
+    if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
3458
+    if (data.isTouched && data.isMoved) return; // change target el for shadow root componenet
3459
+
3460
+    var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';
3461
+
3462
+    if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {
3463
+      $targetEl = $(event.path[0]);
3464
+    }
3465
+
3466
+    if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : "." + params.noSwipingClass)[0]) {
3467
+      swiper.allowClick = true;
3468
+      return;
3469
+    }
3470
+
3471
+    if (params.swipeHandler) {
3472
+      if (!$targetEl.closest(params.swipeHandler)[0]) return;
3473
+    }
3474
+
3475
+    touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
3476
+    touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
3477
+    var startX = touches.currentX;
3478
+    var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
3479
+
3480
+    var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
3481
+    var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
3482
+
3483
+    if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
3484
+      if (edgeSwipeDetection === 'prevent') {
3485
+        event.preventDefault();
3486
+      } else {
3487
+        return;
3488
+      }
3489
+    }
3490
+
3491
+    extend$1(data, {
3492
+      isTouched: true,
3493
+      isMoved: false,
3494
+      allowTouchCallbacks: true,
3495
+      isScrolling: undefined,
3496
+      startMoving: undefined
3497
+    });
3498
+    touches.startX = startX;
3499
+    touches.startY = startY;
3500
+    data.touchStartTime = now();
3501
+    swiper.allowClick = true;
3502
+    swiper.updateSize();
3503
+    swiper.swipeDirection = undefined;
3504
+    if (params.threshold > 0) data.allowThresholdMove = false;
3505
+
3506
+    if (e.type !== 'touchstart') {
3507
+      var preventDefault = true;
3508
+      if ($targetEl.is(data.formElements)) preventDefault = false;
3509
+
3510
+      if (document.activeElement && $(document.activeElement).is(data.formElements) && document.activeElement !== $targetEl[0]) {
3511
+        document.activeElement.blur();
3512
+      }
3513
+
3514
+      var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
3515
+
3516
+      if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {
3517
+        e.preventDefault();
3518
+      }
3519
+    }
3520
+
3521
+    swiper.emit('touchStart', e);
3522
+  }
3523
+
3524
+  function onTouchMove(event) {
3525
+    var document = getDocument();
3526
+    var swiper = this;
3527
+    var data = swiper.touchEventsData;
3528
+    var params = swiper.params,
3529
+        touches = swiper.touches,
3530
+        rtl = swiper.rtlTranslate;
3531
+    var e = event;
3532
+    if (e.originalEvent) e = e.originalEvent;
3533
+
3534
+    if (!data.isTouched) {
3535
+      if (data.startMoving && data.isScrolling) {
3536
+        swiper.emit('touchMoveOpposite', e);
3537
+      }
3538
+
3539
+      return;
3540
+    }
3541
+
3542
+    if (data.isTouchEvent && e.type !== 'touchmove') return;
3543
+    var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
3544
+    var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
3545
+    var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
3546
+
3547
+    if (e.preventedByNestedSwiper) {
3548
+      touches.startX = pageX;
3549
+      touches.startY = pageY;
3550
+      return;
3551
+    }
3552
+
3553
+    if (!swiper.allowTouchMove) {
3554
+      // isMoved = true;
3555
+      swiper.allowClick = false;
3556
+
3557
+      if (data.isTouched) {
3558
+        extend$1(touches, {
3559
+          startX: pageX,
3560
+          startY: pageY,
3561
+          currentX: pageX,
3562
+          currentY: pageY
3563
+        });
3564
+        data.touchStartTime = now();
3565
+      }
3566
+
3567
+      return;
3568
+    }
3569
+
3570
+    if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
3571
+      if (swiper.isVertical()) {
3572
+        // Vertical
3573
+        if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
3574
+          data.isTouched = false;
3575
+          data.isMoved = false;
3576
+          return;
3577
+        }
3578
+      } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
3579
+        return;
3580
+      }
3581
+    }
3582
+
3583
+    if (data.isTouchEvent && document.activeElement) {
3584
+      if (e.target === document.activeElement && $(e.target).is(data.formElements)) {
3585
+        data.isMoved = true;
3586
+        swiper.allowClick = false;
3587
+        return;
3588
+      }
3589
+    }
3590
+
3591
+    if (data.allowTouchCallbacks) {
3592
+      swiper.emit('touchMove', e);
3593
+    }
3594
+
3595
+    if (e.targetTouches && e.targetTouches.length > 1) return;
3596
+    touches.currentX = pageX;
3597
+    touches.currentY = pageY;
3598
+    var diffX = touches.currentX - touches.startX;
3599
+    var diffY = touches.currentY - touches.startY;
3600
+    if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;
3601
+
3602
+    if (typeof data.isScrolling === 'undefined') {
3603
+      var touchAngle;
3604
+
3605
+      if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
3606
+        data.isScrolling = false;
3607
+      } else {
3608
+        // eslint-disable-next-line
3609
+        if (diffX * diffX + diffY * diffY >= 25) {
3610
+          touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
3611
+          data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
3612
+        }
3613
+      }
3614
+    }
3615
+
3616
+    if (data.isScrolling) {
3617
+      swiper.emit('touchMoveOpposite', e);
3618
+    }
3619
+
3620
+    if (typeof data.startMoving === 'undefined') {
3621
+      if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
3622
+        data.startMoving = true;
3623
+      }
3624
+    }
3625
+
3626
+    if (data.isScrolling) {
3627
+      data.isTouched = false;
3628
+      return;
3629
+    }
3630
+
3631
+    if (!data.startMoving) {
3632
+      return;
3633
+    }
3634
+
3635
+    swiper.allowClick = false;
3636
+
3637
+    if (!params.cssMode && e.cancelable) {
3638
+      e.preventDefault();
3639
+    }
3640
+
3641
+    if (params.touchMoveStopPropagation && !params.nested) {
3642
+      e.stopPropagation();
3643
+    }
3644
+
3645
+    if (!data.isMoved) {
3646
+      if (params.loop) {
3647
+        swiper.loopFix();
3648
+      }
3649
+
3650
+      data.startTranslate = swiper.getTranslate();
3651
+      swiper.setTransition(0);
3652
+
3653
+      if (swiper.animating) {
3654
+        swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
3655
+      }
3656
+
3657
+      data.allowMomentumBounce = false; // Grab Cursor
3658
+
3659
+      if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3660
+        swiper.setGrabCursor(true);
3661
+      }
3662
+
3663
+      swiper.emit('sliderFirstMove', e);
3664
+    }
3665
+
3666
+    swiper.emit('sliderMove', e);
3667
+    data.isMoved = true;
3668
+    var diff = swiper.isHorizontal() ? diffX : diffY;
3669
+    touches.diff = diff;
3670
+    diff *= params.touchRatio;
3671
+    if (rtl) diff = -diff;
3672
+    swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
3673
+    data.currentTranslate = diff + data.startTranslate;
3674
+    var disableParentSwiper = true;
3675
+    var resistanceRatio = params.resistanceRatio;
3676
+
3677
+    if (params.touchReleaseOnEdges) {
3678
+      resistanceRatio = 0;
3679
+    }
3680
+
3681
+    if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
3682
+      disableParentSwiper = false;
3683
+      if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);
3684
+    } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
3685
+      disableParentSwiper = false;
3686
+      if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);
3687
+    }
3688
+
3689
+    if (disableParentSwiper) {
3690
+      e.preventedByNestedSwiper = true;
3691
+    } // Directions locks
3692
+
3693
+
3694
+    if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
3695
+      data.currentTranslate = data.startTranslate;
3696
+    }
3697
+
3698
+    if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
3699
+      data.currentTranslate = data.startTranslate;
3700
+    }
3701
+
3702
+    if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
3703
+      data.currentTranslate = data.startTranslate;
3704
+    } // Threshold
3705
+
3706
+
3707
+    if (params.threshold > 0) {
3708
+      if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
3709
+        if (!data.allowThresholdMove) {
3710
+          data.allowThresholdMove = true;
3711
+          touches.startX = touches.currentX;
3712
+          touches.startY = touches.currentY;
3713
+          data.currentTranslate = data.startTranslate;
3714
+          touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
3715
+          return;
3716
+        }
3717
+      } else {
3718
+        data.currentTranslate = data.startTranslate;
3719
+        return;
3720
+      }
3721
+    }
3722
+
3723
+    if (!params.followFinger || params.cssMode) return; // Update active index in free mode
3724
+
3725
+    if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
3726
+      swiper.updateActiveIndex();
3727
+      swiper.updateSlidesClasses();
3728
+    }
3729
+
3730
+    if (params.freeMode) {
3731
+      // Velocity
3732
+      if (data.velocities.length === 0) {
3733
+        data.velocities.push({
3734
+          position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
3735
+          time: data.touchStartTime
3736
+        });
3737
+      }
3738
+
3739
+      data.velocities.push({
3740
+        position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
3741
+        time: now()
3742
+      });
3743
+    } // Update progress
3744
+
3745
+
3746
+    swiper.updateProgress(data.currentTranslate); // Update translate
3747
+
3748
+    swiper.setTranslate(data.currentTranslate);
3749
+  }
3750
+
3751
+  function onTouchEnd(event) {
3752
+    var swiper = this;
3753
+    var data = swiper.touchEventsData;
3754
+    var params = swiper.params,
3755
+        touches = swiper.touches,
3756
+        rtl = swiper.rtlTranslate,
3757
+        $wrapperEl = swiper.$wrapperEl,
3758
+        slidesGrid = swiper.slidesGrid,
3759
+        snapGrid = swiper.snapGrid;
3760
+    var e = event;
3761
+    if (e.originalEvent) e = e.originalEvent;
3762
+
3763
+    if (data.allowTouchCallbacks) {
3764
+      swiper.emit('touchEnd', e);
3765
+    }
3766
+
3767
+    data.allowTouchCallbacks = false;
3768
+
3769
+    if (!data.isTouched) {
3770
+      if (data.isMoved && params.grabCursor) {
3771
+        swiper.setGrabCursor(false);
3772
+      }
3773
+
3774
+      data.isMoved = false;
3775
+      data.startMoving = false;
3776
+      return;
3777
+    } // Return Grab Cursor
3778
+
3779
+
3780
+    if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3781
+      swiper.setGrabCursor(false);
3782
+    } // Time diff
3783
+
3784
+
3785
+    var touchEndTime = now();
3786
+    var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click
3787
+
3788
+    if (swiper.allowClick) {
3789
+      swiper.updateClickedSlide(e);
3790
+      swiper.emit('tap click', e);
3791
+
3792
+      if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
3793
+        swiper.emit('doubleTap doubleClick', e);
3794
+      }
3795
+    }
3796
+
3797
+    data.lastClickTime = now();
3798
+    nextTick(function () {
3799
+      if (!swiper.destroyed) swiper.allowClick = true;
3800
+    });
3801
+
3802
+    if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
3803
+      data.isTouched = false;
3804
+      data.isMoved = false;
3805
+      data.startMoving = false;
3806
+      return;
3807
+    }
3808
+
3809
+    data.isTouched = false;
3810
+    data.isMoved = false;
3811
+    data.startMoving = false;
3812
+    var currentPos;
3813
+
3814
+    if (params.followFinger) {
3815
+      currentPos = rtl ? swiper.translate : -swiper.translate;
3816
+    } else {
3817
+      currentPos = -data.currentTranslate;
3818
+    }
3819
+
3820
+    if (params.cssMode) {
3821
+      return;
3822
+    }
3823
+
3824
+    if (params.freeMode) {
3825
+      if (currentPos < -swiper.minTranslate()) {
3826
+        swiper.slideTo(swiper.activeIndex);
3827
+        return;
3828
+      }
3829
+
3830
+      if (currentPos > -swiper.maxTranslate()) {
3831
+        if (swiper.slides.length < snapGrid.length) {
3832
+          swiper.slideTo(snapGrid.length - 1);
3833
+        } else {
3834
+          swiper.slideTo(swiper.slides.length - 1);
3835
+        }
3836
+
3837
+        return;
3838
+      }
3839
+
3840
+      if (params.freeModeMomentum) {
3841
+        if (data.velocities.length > 1) {
3842
+          var lastMoveEvent = data.velocities.pop();
3843
+          var velocityEvent = data.velocities.pop();
3844
+          var distance = lastMoveEvent.position - velocityEvent.position;
3845
+          var time = lastMoveEvent.time - velocityEvent.time;
3846
+          swiper.velocity = distance / time;
3847
+          swiper.velocity /= 2;
3848
+
3849
+          if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
3850
+            swiper.velocity = 0;
3851
+          } // this implies that the user stopped moving a finger then released.
3852
+          // There would be no events with distance zero, so the last event is stale.
3853
+
3854
+
3855
+          if (time > 150 || now() - lastMoveEvent.time > 300) {
3856
+            swiper.velocity = 0;
3857
+          }
3858
+        } else {
3859
+          swiper.velocity = 0;
3860
+        }
3861
+
3862
+        swiper.velocity *= params.freeModeMomentumVelocityRatio;
3863
+        data.velocities.length = 0;
3864
+        var momentumDuration = 1000 * params.freeModeMomentumRatio;
3865
+        var momentumDistance = swiper.velocity * momentumDuration;
3866
+        var newPosition = swiper.translate + momentumDistance;
3867
+        if (rtl) newPosition = -newPosition;
3868
+        var doBounce = false;
3869
+        var afterBouncePosition;
3870
+        var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
3871
+        var needsLoopFix;
3872
+
3873
+        if (newPosition < swiper.maxTranslate()) {
3874
+          if (params.freeModeMomentumBounce) {
3875
+            if (newPosition + swiper.maxTranslate() < -bounceAmount) {
3876
+              newPosition = swiper.maxTranslate() - bounceAmount;
3877
+            }
3878
+
3879
+            afterBouncePosition = swiper.maxTranslate();
3880
+            doBounce = true;
3881
+            data.allowMomentumBounce = true;
3882
+          } else {
3883
+            newPosition = swiper.maxTranslate();
3884
+          }
3885
+
3886
+          if (params.loop && params.centeredSlides) needsLoopFix = true;
3887
+        } else if (newPosition > swiper.minTranslate()) {
3888
+          if (params.freeModeMomentumBounce) {
3889
+            if (newPosition - swiper.minTranslate() > bounceAmount) {
3890
+              newPosition = swiper.minTranslate() + bounceAmount;
3891
+            }
3892
+
3893
+            afterBouncePosition = swiper.minTranslate();
3894
+            doBounce = true;
3895
+            data.allowMomentumBounce = true;
3896
+          } else {
3897
+            newPosition = swiper.minTranslate();
3898
+          }
3899
+
3900
+          if (params.loop && params.centeredSlides) needsLoopFix = true;
3901
+        } else if (params.freeModeSticky) {
3902
+          var nextSlide;
3903
+
3904
+          for (var j = 0; j < snapGrid.length; j += 1) {
3905
+            if (snapGrid[j] > -newPosition) {
3906
+              nextSlide = j;
3907
+              break;
3908
+            }
3909
+          }
3910
+
3911
+          if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
3912
+            newPosition = snapGrid[nextSlide];
3913
+          } else {
3914
+            newPosition = snapGrid[nextSlide - 1];
3915
+          }
3916
+
3917
+          newPosition = -newPosition;
3918
+        }
3919
+
3920
+        if (needsLoopFix) {
3921
+          swiper.once('transitionEnd', function () {
3922
+            swiper.loopFix();
3923
+          });
3924
+        } // Fix duration
3925
+
3926
+
3927
+        if (swiper.velocity !== 0) {
3928
+          if (rtl) {
3929
+            momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
3930
+          } else {
3931
+            momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
3932
+          }
3933
+
3934
+          if (params.freeModeSticky) {
3935
+            // If freeModeSticky is active and the user ends a swipe with a slow-velocity
3936
+            // event, then durations can be 20+ seconds to slide one (or zero!) slides.
3937
+            // It's easy to see this when simulating touch with mouse events. To fix this,
3938
+            // limit single-slide swipes to the default slide duration. This also has the
3939
+            // nice side effect of matching slide speed if the user stopped moving before
3940
+            // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
3941
+            // For faster swipes, also apply limits (albeit higher ones).
3942
+            var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
3943
+            var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
3944
+
3945
+            if (moveDistance < currentSlideSize) {
3946
+              momentumDuration = params.speed;
3947
+            } else if (moveDistance < 2 * currentSlideSize) {
3948
+              momentumDuration = params.speed * 1.5;
3949
+            } else {
3950
+              momentumDuration = params.speed * 2.5;
3951
+            }
3952
+          }
3953
+        } else if (params.freeModeSticky) {
3954
+          swiper.slideToClosest();
3955
+          return;
3956
+        }
3957
+
3958
+        if (params.freeModeMomentumBounce && doBounce) {
3959
+          swiper.updateProgress(afterBouncePosition);
3960
+          swiper.setTransition(momentumDuration);
3961
+          swiper.setTranslate(newPosition);
3962
+          swiper.transitionStart(true, swiper.swipeDirection);
3963
+          swiper.animating = true;
3964
+          $wrapperEl.transitionEnd(function () {
3965
+            if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
3966
+            swiper.emit('momentumBounce');
3967
+            swiper.setTransition(params.speed);
3968
+            setTimeout(function () {
3969
+              swiper.setTranslate(afterBouncePosition);
3970
+              $wrapperEl.transitionEnd(function () {
3971
+                if (!swiper || swiper.destroyed) return;
3972
+                swiper.transitionEnd();
3973
+              });
3974
+            }, 0);
3975
+          });
3976
+        } else if (swiper.velocity) {
3977
+          swiper.updateProgress(newPosition);
3978
+          swiper.setTransition(momentumDuration);
3979
+          swiper.setTranslate(newPosition);
3980
+          swiper.transitionStart(true, swiper.swipeDirection);
3981
+
3982
+          if (!swiper.animating) {
3983
+            swiper.animating = true;
3984
+            $wrapperEl.transitionEnd(function () {
3985
+              if (!swiper || swiper.destroyed) return;
3986
+              swiper.transitionEnd();
3987
+            });
3988
+          }
3989
+        } else {
3990
+          swiper.emit('_freeModeNoMomentumRelease');
3991
+          swiper.updateProgress(newPosition);
3992
+        }
3993
+
3994
+        swiper.updateActiveIndex();
3995
+        swiper.updateSlidesClasses();
3996
+      } else if (params.freeModeSticky) {
3997
+        swiper.slideToClosest();
3998
+        return;
3999
+      } else if (params.freeMode) {
4000
+        swiper.emit('_freeModeNoMomentumRelease');
4001
+      }
4002
+
4003
+      if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
4004
+        swiper.updateProgress();
4005
+        swiper.updateActiveIndex();
4006
+        swiper.updateSlidesClasses();
4007
+      }
4008
+
4009
+      return;
4010
+    } // Find current slide
4011
+
4012
+
4013
+    var stopIndex = 0;
4014
+    var groupSize = swiper.slidesSizesGrid[0];
4015
+
4016
+    for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
4017
+      var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
4018
+
4019
+      if (typeof slidesGrid[i + _increment] !== 'undefined') {
4020
+        if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {
4021
+          stopIndex = i;
4022
+          groupSize = slidesGrid[i + _increment] - slidesGrid[i];
4023
+        }
4024
+      } else if (currentPos >= slidesGrid[i]) {
4025
+        stopIndex = i;
4026
+        groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
4027
+      }
4028
+    } // Find current slide size
4029
+
4030
+
4031
+    var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
4032
+    var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
4033
+
4034
+    if (timeDiff > params.longSwipesMs) {
4035
+      // Long touches
4036
+      if (!params.longSwipes) {
4037
+        swiper.slideTo(swiper.activeIndex);
4038
+        return;
4039
+      }
4040
+
4041
+      if (swiper.swipeDirection === 'next') {
4042
+        if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
4043
+      }
4044
+
4045
+      if (swiper.swipeDirection === 'prev') {
4046
+        if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
4047
+      }
4048
+    } else {
4049
+      // Short swipes
4050
+      if (!params.shortSwipes) {
4051
+        swiper.slideTo(swiper.activeIndex);
4052
+        return;
4053
+      }
4054
+
4055
+      var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
4056
+
4057
+      if (!isNavButtonTarget) {
4058
+        if (swiper.swipeDirection === 'next') {
4059
+          swiper.slideTo(stopIndex + increment);
4060
+        }
4061
+
4062
+        if (swiper.swipeDirection === 'prev') {
4063
+          swiper.slideTo(stopIndex);
4064
+        }
4065
+      } else if (e.target === swiper.navigation.nextEl) {
4066
+        swiper.slideTo(stopIndex + increment);
4067
+      } else {
4068
+        swiper.slideTo(stopIndex);
4069
+      }
4070
+    }
4071
+  }
4072
+
4073
+  function onResize() {
4074
+    var swiper = this;
4075
+    var params = swiper.params,
4076
+        el = swiper.el;
4077
+    if (el && el.offsetWidth === 0) return; // Breakpoints
4078
+
4079
+    if (params.breakpoints) {
4080
+      swiper.setBreakpoint();
4081
+    } // Save locks
4082
+
4083
+
4084
+    var allowSlideNext = swiper.allowSlideNext,
4085
+        allowSlidePrev = swiper.allowSlidePrev,
4086
+        snapGrid = swiper.snapGrid; // Disable locks on resize
4087
+
4088
+    swiper.allowSlideNext = true;
4089
+    swiper.allowSlidePrev = true;
4090
+    swiper.updateSize();
4091
+    swiper.updateSlides();
4092
+    swiper.updateSlidesClasses();
4093
+
4094
+    if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
4095
+      swiper.slideTo(swiper.slides.length - 1, 0, false, true);
4096
+    } else {
4097
+      swiper.slideTo(swiper.activeIndex, 0, false, true);
4098
+    }
4099
+
4100
+    if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
4101
+      swiper.autoplay.run();
4102
+    } // Return locks after resize
4103
+
4104
+
4105
+    swiper.allowSlidePrev = allowSlidePrev;
4106
+    swiper.allowSlideNext = allowSlideNext;
4107
+
4108
+    if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
4109
+      swiper.checkOverflow();
4110
+    }
4111
+  }
4112
+
4113
+  function onClick(e) {
4114
+    var swiper = this;
4115
+
4116
+    if (!swiper.allowClick) {
4117
+      if (swiper.params.preventClicks) e.preventDefault();
4118
+
4119
+      if (swiper.params.preventClicksPropagation && swiper.animating) {
4120
+        e.stopPropagation();
4121
+        e.stopImmediatePropagation();
4122
+      }
4123
+    }
4124
+  }
4125
+
4126
+  function onScroll() {
4127
+    var swiper = this;
4128
+    var wrapperEl = swiper.wrapperEl,
4129
+        rtlTranslate = swiper.rtlTranslate;
4130
+    swiper.previousTranslate = swiper.translate;
4131
+
4132
+    if (swiper.isHorizontal()) {
4133
+      if (rtlTranslate) {
4134
+        swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;
4135
+      } else {
4136
+        swiper.translate = -wrapperEl.scrollLeft;
4137
+      }
4138
+    } else {
4139
+      swiper.translate = -wrapperEl.scrollTop;
4140
+    } // eslint-disable-next-line
4141
+
4142
+
4143
+    if (swiper.translate === -0) swiper.translate = 0;
4144
+    swiper.updateActiveIndex();
4145
+    swiper.updateSlidesClasses();
4146
+    var newProgress;
4147
+    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
4148
+
4149
+    if (translatesDiff === 0) {
4150
+      newProgress = 0;
4151
+    } else {
4152
+      newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
4153
+    }
4154
+
4155
+    if (newProgress !== swiper.progress) {
4156
+      swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
4157
+    }
4158
+
4159
+    swiper.emit('setTranslate', swiper.translate, false);
4160
+  }
4161
+
4162
+  var dummyEventAttached = false;
4163
+
4164
+  function dummyEventListener() {}
4165
+
4166
+  function attachEvents() {
4167
+    var swiper = this;
4168
+    var document = getDocument();
4169
+    var params = swiper.params,
4170
+        touchEvents = swiper.touchEvents,
4171
+        el = swiper.el,
4172
+        wrapperEl = swiper.wrapperEl,
4173
+        device = swiper.device,
4174
+        support = swiper.support;
4175
+    swiper.onTouchStart = onTouchStart.bind(swiper);
4176
+    swiper.onTouchMove = onTouchMove.bind(swiper);
4177
+    swiper.onTouchEnd = onTouchEnd.bind(swiper);
4178
+
4179
+    if (params.cssMode) {
4180
+      swiper.onScroll = onScroll.bind(swiper);
4181
+    }
4182
+
4183
+    swiper.onClick = onClick.bind(swiper);
4184
+    var capture = !!params.nested; // Touch Events
4185
+
4186
+    if (!support.touch && support.pointerEvents) {
4187
+      el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
4188
+      document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
4189
+      document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
4190
+    } else {
4191
+      if (support.touch) {
4192
+        var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {
4193
+          passive: true,
4194
+          capture: false
4195
+        } : false;
4196
+        el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
4197
+        el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
4198
+          passive: false,
4199
+          capture: capture
4200
+        } : capture);
4201
+        el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
4202
+
4203
+        if (touchEvents.cancel) {
4204
+          el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
4205
+        }
4206
+
4207
+        if (!dummyEventAttached) {
4208
+          document.addEventListener('touchstart', dummyEventListener);
4209
+          dummyEventAttached = true;
4210
+        }
4211
+      }
4212
+
4213
+      if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
4214
+        el.addEventListener('mousedown', swiper.onTouchStart, false);
4215
+        document.addEventListener('mousemove', swiper.onTouchMove, capture);
4216
+        document.addEventListener('mouseup', swiper.onTouchEnd, false);
4217
+      }
4218
+    } // Prevent Links Clicks
4219
+
4220
+
4221
+    if (params.preventClicks || params.preventClicksPropagation) {
4222
+      el.addEventListener('click', swiper.onClick, true);
4223
+    }
4224
+
4225
+    if (params.cssMode) {
4226
+      wrapperEl.addEventListener('scroll', swiper.onScroll);
4227
+    } // Resize handler
4228
+
4229
+
4230
+    if (params.updateOnWindowResize) {
4231
+      swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
4232
+    } else {
4233
+      swiper.on('observerUpdate', onResize, true);
4234
+    }
4235
+  }
4236
+
4237
+  function detachEvents() {
4238
+    var swiper = this;
4239
+    var document = getDocument();
4240
+    var params = swiper.params,
4241
+        touchEvents = swiper.touchEvents,
4242
+        el = swiper.el,
4243
+        wrapperEl = swiper.wrapperEl,
4244
+        device = swiper.device,
4245
+        support = swiper.support;
4246
+    var capture = !!params.nested; // Touch Events
4247
+
4248
+    if (!support.touch && support.pointerEvents) {
4249
+      el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
4250
+      document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
4251
+      document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
4252
+    } else {
4253
+      if (support.touch) {
4254
+        var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {
4255
+          passive: true,
4256
+          capture: false
4257
+        } : false;
4258
+        el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
4259
+        el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
4260
+        el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
4261
+
4262
+        if (touchEvents.cancel) {
4263
+          el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
4264
+        }
4265
+      }
4266
+
4267
+      if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
4268
+        el.removeEventListener('mousedown', swiper.onTouchStart, false);
4269
+        document.removeEventListener('mousemove', swiper.onTouchMove, capture);
4270
+        document.removeEventListener('mouseup', swiper.onTouchEnd, false);
4271
+      }
4272
+    } // Prevent Links Clicks
4273
+
4274
+
4275
+    if (params.preventClicks || params.preventClicksPropagation) {
4276
+      el.removeEventListener('click', swiper.onClick, true);
4277
+    }
4278
+
4279
+    if (params.cssMode) {
4280
+      wrapperEl.removeEventListener('scroll', swiper.onScroll);
4281
+    } // Resize handler
4282
+
4283
+
4284
+    swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);
4285
+  }
4286
+
4287
+  var events = {
4288
+    attachEvents: attachEvents,
4289
+    detachEvents: detachEvents
4290
+  };
4291
+
4292
+  function setBreakpoint() {
4293
+    var swiper = this;
4294
+    var activeIndex = swiper.activeIndex,
4295
+        initialized = swiper.initialized,
4296
+        _swiper$loopedSlides = swiper.loopedSlides,
4297
+        loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,
4298
+        params = swiper.params,
4299
+        $el = swiper.$el;
4300
+    var breakpoints = params.breakpoints;
4301
+    if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters
4302
+
4303
+    var breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
4304
+
4305
+    if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
4306
+      var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
4307
+
4308
+      if (breakpointOnlyParams) {
4309
+        ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {
4310
+          var paramValue = breakpointOnlyParams[param];
4311
+          if (typeof paramValue === 'undefined') return;
4312
+
4313
+          if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
4314
+            breakpointOnlyParams[param] = 'auto';
4315
+          } else if (param === 'slidesPerView') {
4316
+            breakpointOnlyParams[param] = parseFloat(paramValue);
4317
+          } else {
4318
+            breakpointOnlyParams[param] = parseInt(paramValue, 10);
4319
+          }
4320
+        });
4321
+      }
4322
+
4323
+      var breakpointParams = breakpointOnlyParams || swiper.originalParams;
4324
+      var wasMultiRow = params.slidesPerColumn > 1;
4325
+      var isMultiRow = breakpointParams.slidesPerColumn > 1;
4326
+
4327
+      if (wasMultiRow && !isMultiRow) {
4328
+        $el.removeClass(params.containerModifierClass + "multirow " + params.containerModifierClass + "multirow-column");
4329
+        swiper.emitContainerClasses();
4330
+      } else if (!wasMultiRow && isMultiRow) {
4331
+        $el.addClass(params.containerModifierClass + "multirow");
4332
+
4333
+        if (breakpointParams.slidesPerColumnFill === 'column') {
4334
+          $el.addClass(params.containerModifierClass + "multirow-column");
4335
+        }
4336
+
4337
+        swiper.emitContainerClasses();
4338
+      }
4339
+
4340
+      var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
4341
+      var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
4342
+
4343
+      if (directionChanged && initialized) {
4344
+        swiper.changeDirection();
4345
+      }
4346
+
4347
+      extend$1(swiper.params, breakpointParams);
4348
+      extend$1(swiper, {
4349
+        allowTouchMove: swiper.params.allowTouchMove,
4350
+        allowSlideNext: swiper.params.allowSlideNext,
4351
+        allowSlidePrev: swiper.params.allowSlidePrev
4352
+      });
4353
+      swiper.currentBreakpoint = breakpoint;
4354
+      swiper.emit('_beforeBreakpoint', breakpointParams);
4355
+
4356
+      if (needsReLoop && initialized) {
4357
+        swiper.loopDestroy();
4358
+        swiper.loopCreate();
4359
+        swiper.updateSlides();
4360
+        swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
4361
+      }
4362
+
4363
+      swiper.emit('breakpoint', breakpointParams);
4364
+    }
4365
+  }
4366
+
4367
+  function getBreakpoint(breakpoints, base, containerEl) {
4368
+    if (base === void 0) {
4369
+      base = 'window';
4370
+    }
4371
+
4372
+    if (!breakpoints || base === 'container' && !containerEl) return undefined;
4373
+    var breakpoint = false;
4374
+    var window = getWindow();
4375
+    var currentWidth = base === 'window' ? window.innerWidth : containerEl.clientWidth;
4376
+    var currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
4377
+    var points = Object.keys(breakpoints).map(function (point) {
4378
+      if (typeof point === 'string' && point.indexOf('@') === 0) {
4379
+        var minRatio = parseFloat(point.substr(1));
4380
+        var value = currentHeight * minRatio;
4381
+        return {
4382
+          value: value,
4383
+          point: point
4384
+        };
4385
+      }
4386
+
4387
+      return {
4388
+        value: point,
4389
+        point: point
4390
+      };
4391
+    });
4392
+    points.sort(function (a, b) {
4393
+      return parseInt(a.value, 10) - parseInt(b.value, 10);
4394
+    });
4395
+
4396
+    for (var i = 0; i < points.length; i += 1) {
4397
+      var _points$i = points[i],
4398
+          point = _points$i.point,
4399
+          value = _points$i.value;
4400
+
4401
+      if (value <= currentWidth) {
4402
+        breakpoint = point;
4403
+      }
4404
+    }
4405
+
4406
+    return breakpoint || 'max';
4407
+  }
4408
+
4409
+  var breakpoints = {
4410
+    setBreakpoint: setBreakpoint,
4411
+    getBreakpoint: getBreakpoint
4412
+  };
4413
+
4414
+  function prepareClasses(entries, prefix) {
4415
+    var resultClasses = [];
4416
+    entries.forEach(function (item) {
4417
+      if (typeof item === 'object') {
4418
+        Object.entries(item).forEach(function (_ref) {
4419
+          var classNames = _ref[0],
4420
+              condition = _ref[1];
4421
+
4422
+          if (condition) {
4423
+            resultClasses.push(prefix + classNames);
4424
+          }
4425
+        });
4426
+      } else if (typeof item === 'string') {
4427
+        resultClasses.push(prefix + item);
4428
+      }
4429
+    });
4430
+    return resultClasses;
4431
+  }
4432
+
4433
+  function addClasses() {
4434
+    var swiper = this;
4435
+    var classNames = swiper.classNames,
4436
+        params = swiper.params,
4437
+        rtl = swiper.rtl,
4438
+        $el = swiper.$el,
4439
+        device = swiper.device,
4440
+        support = swiper.support; // prettier-ignore
4441
+
4442
+    var suffixes = prepareClasses(['initialized', params.direction, {
4443
+      'pointer-events': support.pointerEvents && !support.touch
4444
+    }, {
4445
+      'free-mode': params.freeMode
4446
+    }, {
4447
+      'autoheight': params.autoHeight
4448
+    }, {
4449
+      'rtl': rtl
4450
+    }, {
4451
+      'multirow': params.slidesPerColumn > 1
4452
+    }, {
4453
+      'multirow-column': params.slidesPerColumn > 1 && params.slidesPerColumnFill === 'column'
4454
+    }, {
4455
+      'android': device.android
4456
+    }, {
4457
+      'ios': device.ios
4458
+    }, {
4459
+      'css-mode': params.cssMode
4460
+    }], params.containerModifierClass);
4461
+    classNames.push.apply(classNames, suffixes);
4462
+    $el.addClass([].concat(classNames).join(' '));
4463
+    swiper.emitContainerClasses();
4464
+  }
4465
+
4466
+  function removeClasses() {
4467
+    var swiper = this;
4468
+    var $el = swiper.$el,
4469
+        classNames = swiper.classNames;
4470
+    $el.removeClass(classNames.join(' '));
4471
+    swiper.emitContainerClasses();
4472
+  }
4473
+
4474
+  var classes = {
4475
+    addClasses: addClasses,
4476
+    removeClasses: removeClasses
4477
+  };
4478
+
4479
+  function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
4480
+    var window = getWindow();
4481
+    var image;
4482
+
4483
+    function onReady() {
4484
+      if (callback) callback();
4485
+    }
4486
+
4487
+    var isPicture = $(imageEl).parent('picture')[0];
4488
+
4489
+    if (!isPicture && (!imageEl.complete || !checkForComplete)) {
4490
+      if (src) {
4491
+        image = new window.Image();
4492
+        image.onload = onReady;
4493
+        image.onerror = onReady;
4494
+
4495
+        if (sizes) {
4496
+          image.sizes = sizes;
4497
+        }
4498
+
4499
+        if (srcset) {
4500
+          image.srcset = srcset;
4501
+        }
4502
+
4503
+        if (src) {
4504
+          image.src = src;
4505
+        }
4506
+      } else {
4507
+        onReady();
4508
+      }
4509
+    } else {
4510
+      // image already loaded...
4511
+      onReady();
4512
+    }
4513
+  }
4514
+
4515
+  function preloadImages() {
4516
+    var swiper = this;
4517
+    swiper.imagesToLoad = swiper.$el.find('img');
4518
+
4519
+    function onReady() {
4520
+      if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
4521
+      if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
4522
+
4523
+      if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
4524
+        if (swiper.params.updateOnImagesReady) swiper.update();
4525
+        swiper.emit('imagesReady');
4526
+      }
4527
+    }
4528
+
4529
+    for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
4530
+      var imageEl = swiper.imagesToLoad[i];
4531
+      swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
4532
+    }
4533
+  }
4534
+
4535
+  var images = {
4536
+    loadImage: loadImage,
4537
+    preloadImages: preloadImages
4538
+  };
4539
+
4540
+  function checkOverflow() {
4541
+    var swiper = this;
4542
+    var params = swiper.params;
4543
+    var wasLocked = swiper.isLocked;
4544
+    var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;
4545
+
4546
+    if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
4547
+      swiper.isLocked = lastSlidePosition <= swiper.size;
4548
+    } else {
4549
+      swiper.isLocked = swiper.snapGrid.length === 1;
4550
+    }
4551
+
4552
+    swiper.allowSlideNext = !swiper.isLocked;
4553
+    swiper.allowSlidePrev = !swiper.isLocked; // events
4554
+
4555
+    if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
4556
+
4557
+    if (wasLocked && wasLocked !== swiper.isLocked) {
4558
+      swiper.isEnd = false;
4559
+      if (swiper.navigation) swiper.navigation.update();
4560
+    }
4561
+  }
4562
+
4563
+  var checkOverflow$1 = {
4564
+    checkOverflow: checkOverflow
4565
+  };
4566
+
4567
+  var defaults = {
4568
+    init: true,
4569
+    direction: 'horizontal',
4570
+    touchEventsTarget: 'container',
4571
+    initialSlide: 0,
4572
+    speed: 300,
4573
+    cssMode: false,
4574
+    updateOnWindowResize: true,
4575
+    resizeObserver: false,
4576
+    nested: false,
4577
+    // Overrides
4578
+    width: null,
4579
+    height: null,
4580
+    //
4581
+    preventInteractionOnTransition: false,
4582
+    // ssr
4583
+    userAgent: null,
4584
+    url: null,
4585
+    // To support iOS's swipe-to-go-back gesture (when being used in-app).
4586
+    edgeSwipeDetection: false,
4587
+    edgeSwipeThreshold: 20,
4588
+    // Free mode
4589
+    freeMode: false,
4590
+    freeModeMomentum: true,
4591
+    freeModeMomentumRatio: 1,
4592
+    freeModeMomentumBounce: true,
4593
+    freeModeMomentumBounceRatio: 1,
4594
+    freeModeMomentumVelocityRatio: 1,
4595
+    freeModeSticky: false,
4596
+    freeModeMinimumVelocity: 0.02,
4597
+    // Autoheight
4598
+    autoHeight: false,
4599
+    // Set wrapper width
4600
+    setWrapperSize: false,
4601
+    // Virtual Translate
4602
+    virtualTranslate: false,
4603
+    // Effects
4604
+    effect: 'slide',
4605
+    // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
4606
+    // Breakpoints
4607
+    breakpoints: undefined,
4608
+    breakpointsBase: 'window',
4609
+    // Slides grid
4610
+    spaceBetween: 0,
4611
+    slidesPerView: 1,
4612
+    slidesPerColumn: 1,
4613
+    slidesPerColumnFill: 'column',
4614
+    slidesPerGroup: 1,
4615
+    slidesPerGroupSkip: 0,
4616
+    centeredSlides: false,
4617
+    centeredSlidesBounds: false,
4618
+    slidesOffsetBefore: 0,
4619
+    // in px
4620
+    slidesOffsetAfter: 0,
4621
+    // in px
4622
+    normalizeSlideIndex: true,
4623
+    centerInsufficientSlides: false,
4624
+    // Disable swiper and hide navigation when container not overflow
4625
+    watchOverflow: false,
4626
+    // Round length
4627
+    roundLengths: false,
4628
+    // Touches
4629
+    touchRatio: 1,
4630
+    touchAngle: 45,
4631
+    simulateTouch: true,
4632
+    shortSwipes: true,
4633
+    longSwipes: true,
4634
+    longSwipesRatio: 0.5,
4635
+    longSwipesMs: 300,
4636
+    followFinger: true,
4637
+    allowTouchMove: true,
4638
+    threshold: 0,
4639
+    touchMoveStopPropagation: false,
4640
+    touchStartPreventDefault: true,
4641
+    touchStartForcePreventDefault: false,
4642
+    touchReleaseOnEdges: false,
4643
+    // Unique Navigation Elements
4644
+    uniqueNavElements: true,
4645
+    // Resistance
4646
+    resistance: true,
4647
+    resistanceRatio: 0.85,
4648
+    // Progress
4649
+    watchSlidesProgress: false,
4650
+    watchSlidesVisibility: false,
4651
+    // Cursor
4652
+    grabCursor: false,
4653
+    // Clicks
4654
+    preventClicks: true,
4655
+    preventClicksPropagation: true,
4656
+    slideToClickedSlide: false,
4657
+    // Images
4658
+    preloadImages: true,
4659
+    updateOnImagesReady: true,
4660
+    // loop
4661
+    loop: false,
4662
+    loopAdditionalSlides: 0,
4663
+    loopedSlides: null,
4664
+    loopFillGroupWithBlank: false,
4665
+    loopPreventsSlide: true,
4666
+    // Swiping/no swiping
4667
+    allowSlidePrev: true,
4668
+    allowSlideNext: true,
4669
+    swipeHandler: null,
4670
+    // '.swipe-handler',
4671
+    noSwiping: true,
4672
+    noSwipingClass: 'swiper-no-swiping',
4673
+    noSwipingSelector: null,
4674
+    // Passive Listeners
4675
+    passiveListeners: true,
4676
+    // NS
4677
+    containerModifierClass: 'swiper-container-',
4678
+    // NEW
4679
+    slideClass: 'swiper-slide',
4680
+    slideBlankClass: 'swiper-slide-invisible-blank',
4681
+    slideActiveClass: 'swiper-slide-active',
4682
+    slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
4683
+    slideVisibleClass: 'swiper-slide-visible',
4684
+    slideDuplicateClass: 'swiper-slide-duplicate',
4685
+    slideNextClass: 'swiper-slide-next',
4686
+    slideDuplicateNextClass: 'swiper-slide-duplicate-next',
4687
+    slidePrevClass: 'swiper-slide-prev',
4688
+    slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
4689
+    wrapperClass: 'swiper-wrapper',
4690
+    // Callbacks
4691
+    runCallbacksOnInit: true,
4692
+    // Internals
4693
+    _emitClasses: false
4694
+  };
4695
+
4696
+  var prototypes = {
4697
+    modular: modular,
4698
+    eventsEmitter: eventsEmitter,
4699
+    update: update,
4700
+    translate: translate,
4701
+    transition: transition$1,
4702
+    slide: slide,
4703
+    loop: loop,
4704
+    grabCursor: grabCursor,
4705
+    manipulation: manipulation,
4706
+    events: events,
4707
+    breakpoints: breakpoints,
4708
+    checkOverflow: checkOverflow$1,
4709
+    classes: classes,
4710
+    images: images
4711
+  };
4712
+  var extendedDefaults = {};
4713
+
4714
+  var Swiper = /*#__PURE__*/function () {
4715
+    function Swiper() {
4716
+      var el;
4717
+      var params;
4718
+
4719
+      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
4720
+        args[_key] = arguments[_key];
4721
+      }
4722
+
4723
+      if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
4724
+        params = args[0];
4725
+      } else {
4726
+        el = args[0];
4727
+        params = args[1];
4728
+      }
4729
+
4730
+      if (!params) params = {};
4731
+      params = extend$1({}, params);
4732
+      if (el && !params.el) params.el = el;
4733
+
4734
+      if (params.el && $(params.el).length > 1) {
4735
+        var swipers = [];
4736
+        $(params.el).each(function (containerEl) {
4737
+          var newParams = extend$1({}, params, {
4738
+            el: containerEl
4739
+          });
4740
+          swipers.push(new Swiper(newParams));
4741
+        });
4742
+        return swipers;
4743
+      } // Swiper Instance
4744
+
4745
+
4746
+      var swiper = this;
4747
+      swiper.support = getSupport();
4748
+      swiper.device = getDevice({
4749
+        userAgent: params.userAgent
4750
+      });
4751
+      swiper.browser = getBrowser();
4752
+      swiper.eventsListeners = {};
4753
+      swiper.eventsAnyListeners = [];
4754
+
4755
+      if (typeof swiper.modules === 'undefined') {
4756
+        swiper.modules = {};
4757
+      }
4758
+
4759
+      Object.keys(swiper.modules).forEach(function (moduleName) {
4760
+        var module = swiper.modules[moduleName];
4761
+
4762
+        if (module.params) {
4763
+          var moduleParamName = Object.keys(module.params)[0];
4764
+          var moduleParams = module.params[moduleParamName];
4765
+          if (typeof moduleParams !== 'object' || moduleParams === null) return;
4766
+          if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
4767
+
4768
+          if (params[moduleParamName] === true) {
4769
+            params[moduleParamName] = {
4770
+              enabled: true
4771
+            };
4772
+          }
4773
+
4774
+          if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
4775
+            params[moduleParamName].enabled = true;
4776
+          }
4777
+
4778
+          if (!params[moduleParamName]) params[moduleParamName] = {
4779
+            enabled: false
4780
+          };
4781
+        }
4782
+      }); // Extend defaults with modules params
4783
+
4784
+      var swiperParams = extend$1({}, defaults);
4785
+      swiper.useParams(swiperParams); // Extend defaults with passed params
4786
+
4787
+      swiper.params = extend$1({}, swiperParams, extendedDefaults, params);
4788
+      swiper.originalParams = extend$1({}, swiper.params);
4789
+      swiper.passedParams = extend$1({}, params); // add event listeners
4790
+
4791
+      if (swiper.params && swiper.params.on) {
4792
+        Object.keys(swiper.params.on).forEach(function (eventName) {
4793
+          swiper.on(eventName, swiper.params.on[eventName]);
4794
+        });
4795
+      }
4796
+
4797
+      if (swiper.params && swiper.params.onAny) {
4798
+        swiper.onAny(swiper.params.onAny);
4799
+      } // Save Dom lib
4800
+
4801
+
4802
+      swiper.$ = $; // Extend Swiper
4803
+
4804
+      extend$1(swiper, {
4805
+        el: el,
4806
+        // Classes
4807
+        classNames: [],
4808
+        // Slides
4809
+        slides: $(),
4810
+        slidesGrid: [],
4811
+        snapGrid: [],
4812
+        slidesSizesGrid: [],
4813
+        // isDirection
4814
+        isHorizontal: function isHorizontal() {
4815
+          return swiper.params.direction === 'horizontal';
4816
+        },
4817
+        isVertical: function isVertical() {
4818
+          return swiper.params.direction === 'vertical';
4819
+        },
4820
+        // Indexes
4821
+        activeIndex: 0,
4822
+        realIndex: 0,
4823
+        //
4824
+        isBeginning: true,
4825
+        isEnd: false,
4826
+        // Props
4827
+        translate: 0,
4828
+        previousTranslate: 0,
4829
+        progress: 0,
4830
+        velocity: 0,
4831
+        animating: false,
4832
+        // Locks
4833
+        allowSlideNext: swiper.params.allowSlideNext,
4834
+        allowSlidePrev: swiper.params.allowSlidePrev,
4835
+        // Touch Events
4836
+        touchEvents: function touchEvents() {
4837
+          var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
4838
+          var desktop = ['mousedown', 'mousemove', 'mouseup'];
4839
+
4840
+          if (swiper.support.pointerEvents) {
4841
+            desktop = ['pointerdown', 'pointermove', 'pointerup'];
4842
+          }
4843
+
4844
+          swiper.touchEventsTouch = {
4845
+            start: touch[0],
4846
+            move: touch[1],
4847
+            end: touch[2],
4848
+            cancel: touch[3]
4849
+          };
4850
+          swiper.touchEventsDesktop = {
4851
+            start: desktop[0],
4852
+            move: desktop[1],
4853
+            end: desktop[2]
4854
+          };
4855
+          return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
4856
+        }(),
4857
+        touchEventsData: {
4858
+          isTouched: undefined,
4859
+          isMoved: undefined,
4860
+          allowTouchCallbacks: undefined,
4861
+          touchStartTime: undefined,
4862
+          isScrolling: undefined,
4863
+          currentTranslate: undefined,
4864
+          startTranslate: undefined,
4865
+          allowThresholdMove: undefined,
4866
+          // Form elements to match
4867
+          formElements: 'input, select, option, textarea, button, video, label',
4868
+          // Last click time
4869
+          lastClickTime: now(),
4870
+          clickTimeout: undefined,
4871
+          // Velocities
4872
+          velocities: [],
4873
+          allowMomentumBounce: undefined,
4874
+          isTouchEvent: undefined,
4875
+          startMoving: undefined
4876
+        },
4877
+        // Clicks
4878
+        allowClick: true,
4879
+        // Touches
4880
+        allowTouchMove: swiper.params.allowTouchMove,
4881
+        touches: {
4882
+          startX: 0,
4883
+          startY: 0,
4884
+          currentX: 0,
4885
+          currentY: 0,
4886
+          diff: 0
4887
+        },
4888
+        // Images
4889
+        imagesToLoad: [],
4890
+        imagesLoaded: 0
4891
+      }); // Install Modules
4892
+
4893
+      swiper.useModules();
4894
+      swiper.emit('_swiper'); // Init
4895
+
4896
+      if (swiper.params.init) {
4897
+        swiper.init();
4898
+      } // Return app instance
4899
+
4900
+
4901
+      return swiper;
4902
+    }
4903
+
4904
+    var _proto = Swiper.prototype;
4905
+
4906
+    _proto.emitContainerClasses = function emitContainerClasses() {
4907
+      var swiper = this;
4908
+      if (!swiper.params._emitClasses || !swiper.el) return;
4909
+      var classes = swiper.el.className.split(' ').filter(function (className) {
4910
+        return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
4911
+      });
4912
+      swiper.emit('_containerClasses', classes.join(' '));
4913
+    };
4914
+
4915
+    _proto.getSlideClasses = function getSlideClasses(slideEl) {
4916
+      var swiper = this;
4917
+      return slideEl.className.split(' ').filter(function (className) {
4918
+        return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
4919
+      }).join(' ');
4920
+    };
4921
+
4922
+    _proto.emitSlidesClasses = function emitSlidesClasses() {
4923
+      var swiper = this;
4924
+      if (!swiper.params._emitClasses || !swiper.el) return;
4925
+      var updates = [];
4926
+      swiper.slides.each(function (slideEl) {
4927
+        var classNames = swiper.getSlideClasses(slideEl);
4928
+        updates.push({
4929
+          slideEl: slideEl,
4930
+          classNames: classNames
4931
+        });
4932
+        swiper.emit('_slideClass', slideEl, classNames);
4933
+      });
4934
+      swiper.emit('_slideClasses', updates);
4935
+    };
4936
+
4937
+    _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {
4938
+      var swiper = this;
4939
+      var params = swiper.params,
4940
+          slides = swiper.slides,
4941
+          slidesGrid = swiper.slidesGrid,
4942
+          swiperSize = swiper.size,
4943
+          activeIndex = swiper.activeIndex;
4944
+      var spv = 1;
4945
+
4946
+      if (params.centeredSlides) {
4947
+        var slideSize = slides[activeIndex].swiperSlideSize;
4948
+        var breakLoop;
4949
+
4950
+        for (var i = activeIndex + 1; i < slides.length; i += 1) {
4951
+          if (slides[i] && !breakLoop) {
4952
+            slideSize += slides[i].swiperSlideSize;
4953
+            spv += 1;
4954
+            if (slideSize > swiperSize) breakLoop = true;
4955
+          }
4956
+        }
4957
+
4958
+        for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {
4959
+          if (slides[_i] && !breakLoop) {
4960
+            slideSize += slides[_i].swiperSlideSize;
4961
+            spv += 1;
4962
+            if (slideSize > swiperSize) breakLoop = true;
4963
+          }
4964
+        }
4965
+      } else {
4966
+        for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {
4967
+          if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {
4968
+            spv += 1;
4969
+          }
4970
+        }
4971
+      }
4972
+
4973
+      return spv;
4974
+    };
4975
+
4976
+    _proto.update = function update() {
4977
+      var swiper = this;
4978
+      if (!swiper || swiper.destroyed) return;
4979
+      var snapGrid = swiper.snapGrid,
4980
+          params = swiper.params; // Breakpoints
4981
+
4982
+      if (params.breakpoints) {
4983
+        swiper.setBreakpoint();
4984
+      }
4985
+
4986
+      swiper.updateSize();
4987
+      swiper.updateSlides();
4988
+      swiper.updateProgress();
4989
+      swiper.updateSlidesClasses();
4990
+
4991
+      function setTranslate() {
4992
+        var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
4993
+        var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
4994
+        swiper.setTranslate(newTranslate);
4995
+        swiper.updateActiveIndex();
4996
+        swiper.updateSlidesClasses();
4997
+      }
4998
+
4999
+      var translated;
5000
+
5001
+      if (swiper.params.freeMode) {
5002
+        setTranslate();
5003
+
5004
+        if (swiper.params.autoHeight) {
5005
+          swiper.updateAutoHeight();
5006
+        }
5007
+      } else {
5008
+        if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
5009
+          translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
5010
+        } else {
5011
+          translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
5012
+        }
5013
+
5014
+        if (!translated) {
5015
+          setTranslate();
5016
+        }
5017
+      }
5018
+
5019
+      if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
5020
+        swiper.checkOverflow();
5021
+      }
5022
+
5023
+      swiper.emit('update');
5024
+    };
5025
+
5026
+    _proto.changeDirection = function changeDirection(newDirection, needUpdate) {
5027
+      if (needUpdate === void 0) {
5028
+        needUpdate = true;
5029
+      }
5030
+
5031
+      var swiper = this;
5032
+      var currentDirection = swiper.params.direction;
5033
+
5034
+      if (!newDirection) {
5035
+        // eslint-disable-next-line
5036
+        newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
5037
+      }
5038
+
5039
+      if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
5040
+        return swiper;
5041
+      }
5042
+
5043
+      swiper.$el.removeClass("" + swiper.params.containerModifierClass + currentDirection).addClass("" + swiper.params.containerModifierClass + newDirection);
5044
+      swiper.emitContainerClasses();
5045
+      swiper.params.direction = newDirection;
5046
+      swiper.slides.each(function (slideEl) {
5047
+        if (newDirection === 'vertical') {
5048
+          slideEl.style.width = '';
5049
+        } else {
5050
+          slideEl.style.height = '';
5051
+        }
5052
+      });
5053
+      swiper.emit('changeDirection');
5054
+      if (needUpdate) swiper.update();
5055
+      return swiper;
5056
+    };
5057
+
5058
+    _proto.mount = function mount(el) {
5059
+      var swiper = this;
5060
+      if (swiper.mounted) return true; // Find el
5061
+
5062
+      var $el = $(el || swiper.params.el);
5063
+      el = $el[0];
5064
+
5065
+      if (!el) {
5066
+        return false;
5067
+      }
5068
+
5069
+      el.swiper = swiper; // Find Wrapper
5070
+
5071
+      var $wrapperEl;
5072
+
5073
+      if (el && el.shadowRoot && el.shadowRoot.querySelector) {
5074
+        $wrapperEl = $(el.shadowRoot.querySelector("." + swiper.params.wrapperClass)); // Children needs to return slot items
5075
+
5076
+        $wrapperEl.children = function (options) {
5077
+          return $el.children(options);
5078
+        };
5079
+      } else {
5080
+        $wrapperEl = $el.children("." + swiper.params.wrapperClass);
5081
+      }
5082
+
5083
+      extend$1(swiper, {
5084
+        $el: $el,
5085
+        el: el,
5086
+        $wrapperEl: $wrapperEl,
5087
+        wrapperEl: $wrapperEl[0],
5088
+        mounted: true,
5089
+        // RTL
5090
+        rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
5091
+        rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
5092
+        wrongRTL: $wrapperEl.css('display') === '-webkit-box'
5093
+      });
5094
+      return true;
5095
+    };
5096
+
5097
+    _proto.init = function init(el) {
5098
+      var swiper = this;
5099
+      if (swiper.initialized) return swiper;
5100
+      var mounted = swiper.mount(el);
5101
+      if (mounted === false) return swiper;
5102
+      swiper.emit('beforeInit'); // Set breakpoint
5103
+
5104
+      if (swiper.params.breakpoints) {
5105
+        swiper.setBreakpoint();
5106
+      } // Add Classes
5107
+
5108
+
5109
+      swiper.addClasses(); // Create loop
5110
+
5111
+      if (swiper.params.loop) {
5112
+        swiper.loopCreate();
5113
+      } // Update size
5114
+
5115
+
5116
+      swiper.updateSize(); // Update slides
5117
+
5118
+      swiper.updateSlides();
5119
+
5120
+      if (swiper.params.watchOverflow) {
5121
+        swiper.checkOverflow();
5122
+      } // Set Grab Cursor
5123
+
5124
+
5125
+      if (swiper.params.grabCursor) {
5126
+        swiper.setGrabCursor();
5127
+      }
5128
+
5129
+      if (swiper.params.preloadImages) {
5130
+        swiper.preloadImages();
5131
+      } // Slide To Initial Slide
5132
+
5133
+
5134
+      if (swiper.params.loop) {
5135
+        swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
5136
+      } else {
5137
+        swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
5138
+      } // Attach events
5139
+
5140
+
5141
+      swiper.attachEvents(); // Init Flag
5142
+
5143
+      swiper.initialized = true; // Emit
5144
+
5145
+      swiper.emit('init');
5146
+      swiper.emit('afterInit');
5147
+      return swiper;
5148
+    };
5149
+
5150
+    _proto.destroy = function destroy(deleteInstance, cleanStyles) {
5151
+      if (deleteInstance === void 0) {
5152
+        deleteInstance = true;
5153
+      }
5154
+
5155
+      if (cleanStyles === void 0) {
5156
+        cleanStyles = true;
5157
+      }
5158
+
5159
+      var swiper = this;
5160
+      var params = swiper.params,
5161
+          $el = swiper.$el,
5162
+          $wrapperEl = swiper.$wrapperEl,
5163
+          slides = swiper.slides;
5164
+
5165
+      if (typeof swiper.params === 'undefined' || swiper.destroyed) {
5166
+        return null;
5167
+      }
5168
+
5169
+      swiper.emit('beforeDestroy'); // Init Flag
5170
+
5171
+      swiper.initialized = false; // Detach events
5172
+
5173
+      swiper.detachEvents(); // Destroy loop
5174
+
5175
+      if (params.loop) {
5176
+        swiper.loopDestroy();
5177
+      } // Cleanup styles
5178
+
5179
+
5180
+      if (cleanStyles) {
5181
+        swiper.removeClasses();
5182
+        $el.removeAttr('style');
5183
+        $wrapperEl.removeAttr('style');
5184
+
5185
+        if (slides && slides.length) {
5186
+          slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
5187
+        }
5188
+      }
5189
+
5190
+      swiper.emit('destroy'); // Detach emitter events
5191
+
5192
+      Object.keys(swiper.eventsListeners).forEach(function (eventName) {
5193
+        swiper.off(eventName);
5194
+      });
5195
+
5196
+      if (deleteInstance !== false) {
5197
+        swiper.$el[0].swiper = null;
5198
+        deleteProps(swiper);
5199
+      }
5200
+
5201
+      swiper.destroyed = true;
5202
+      return null;
5203
+    };
5204
+
5205
+    Swiper.extendDefaults = function extendDefaults(newDefaults) {
5206
+      extend$1(extendedDefaults, newDefaults);
5207
+    };
5208
+
5209
+    Swiper.installModule = function installModule(module) {
5210
+      if (!Swiper.prototype.modules) Swiper.prototype.modules = {};
5211
+      var name = module.name || Object.keys(Swiper.prototype.modules).length + "_" + now();
5212
+      Swiper.prototype.modules[name] = module;
5213
+    };
5214
+
5215
+    Swiper.use = function use(module) {
5216
+      if (Array.isArray(module)) {
5217
+        module.forEach(function (m) {
5218
+          return Swiper.installModule(m);
5219
+        });
5220
+        return Swiper;
5221
+      }
5222
+
5223
+      Swiper.installModule(module);
5224
+      return Swiper;
5225
+    };
5226
+
5227
+    _createClass(Swiper, null, [{
5228
+      key: "extendedDefaults",
5229
+      get: function get() {
5230
+        return extendedDefaults;
5231
+      }
5232
+    }, {
5233
+      key: "defaults",
5234
+      get: function get() {
5235
+        return defaults;
5236
+      }
5237
+    }]);
5238
+
5239
+    return Swiper;
5240
+  }();
5241
+
5242
+  Object.keys(prototypes).forEach(function (prototypeGroup) {
5243
+    Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
5244
+      Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
5245
+    });
5246
+  });
5247
+  Swiper.use([Resize, Observer$1]);
5248
+
5249
+  var Virtual = {
5250
+    update: function update(force) {
5251
+      var swiper = this;
5252
+      var _swiper$params = swiper.params,
5253
+          slidesPerView = _swiper$params.slidesPerView,
5254
+          slidesPerGroup = _swiper$params.slidesPerGroup,
5255
+          centeredSlides = _swiper$params.centeredSlides;
5256
+      var _swiper$params$virtua = swiper.params.virtual,
5257
+          addSlidesBefore = _swiper$params$virtua.addSlidesBefore,
5258
+          addSlidesAfter = _swiper$params$virtua.addSlidesAfter;
5259
+      var _swiper$virtual = swiper.virtual,
5260
+          previousFrom = _swiper$virtual.from,
5261
+          previousTo = _swiper$virtual.to,
5262
+          slides = _swiper$virtual.slides,
5263
+          previousSlidesGrid = _swiper$virtual.slidesGrid,
5264
+          renderSlide = _swiper$virtual.renderSlide,
5265
+          previousOffset = _swiper$virtual.offset;
5266
+      swiper.updateActiveIndex();
5267
+      var activeIndex = swiper.activeIndex || 0;
5268
+      var offsetProp;
5269
+      if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
5270
+      var slidesAfter;
5271
+      var slidesBefore;
5272
+
5273
+      if (centeredSlides) {
5274
+        slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
5275
+        slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
5276
+      } else {
5277
+        slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
5278
+        slidesBefore = slidesPerGroup + addSlidesBefore;
5279
+      }
5280
+
5281
+      var from = Math.max((activeIndex || 0) - slidesBefore, 0);
5282
+      var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
5283
+      var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
5284
+      extend$1(swiper.virtual, {
5285
+        from: from,
5286
+        to: to,
5287
+        offset: offset,
5288
+        slidesGrid: swiper.slidesGrid
5289
+      });
5290
+
5291
+      function onRendered() {
5292
+        swiper.updateSlides();
5293
+        swiper.updateProgress();
5294
+        swiper.updateSlidesClasses();
5295
+
5296
+        if (swiper.lazy && swiper.params.lazy.enabled) {
5297
+          swiper.lazy.load();
5298
+        }
5299
+      }
5300
+
5301
+      if (previousFrom === from && previousTo === to && !force) {
5302
+        if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
5303
+          swiper.slides.css(offsetProp, offset + "px");
5304
+        }
5305
+
5306
+        swiper.updateProgress();
5307
+        return;
5308
+      }
5309
+
5310
+      if (swiper.params.virtual.renderExternal) {
5311
+        swiper.params.virtual.renderExternal.call(swiper, {
5312
+          offset: offset,
5313
+          from: from,
5314
+          to: to,
5315
+          slides: function getSlides() {
5316
+            var slidesToRender = [];
5317
+
5318
+            for (var i = from; i <= to; i += 1) {
5319
+              slidesToRender.push(slides[i]);
5320
+            }
5321
+
5322
+            return slidesToRender;
5323
+          }()
5324
+        });
5325
+
5326
+        if (swiper.params.virtual.renderExternalUpdate) {
5327
+          onRendered();
5328
+        }
5329
+
5330
+        return;
5331
+      }
5332
+
5333
+      var prependIndexes = [];
5334
+      var appendIndexes = [];
5335
+
5336
+      if (force) {
5337
+        swiper.$wrapperEl.find("." + swiper.params.slideClass).remove();
5338
+      } else {
5339
+        for (var i = previousFrom; i <= previousTo; i += 1) {
5340
+          if (i < from || i > to) {
5341
+            swiper.$wrapperEl.find("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + i + "\"]").remove();
5342
+          }
5343
+        }
5344
+      }
5345
+
5346
+      for (var _i = 0; _i < slides.length; _i += 1) {
5347
+        if (_i >= from && _i <= to) {
5348
+          if (typeof previousTo === 'undefined' || force) {
5349
+            appendIndexes.push(_i);
5350
+          } else {
5351
+            if (_i > previousTo) appendIndexes.push(_i);
5352
+            if (_i < previousFrom) prependIndexes.push(_i);
5353
+          }
5354
+        }
5355
+      }
5356
+
5357
+      appendIndexes.forEach(function (index) {
5358
+        swiper.$wrapperEl.append(renderSlide(slides[index], index));
5359
+      });
5360
+      prependIndexes.sort(function (a, b) {
5361
+        return b - a;
5362
+      }).forEach(function (index) {
5363
+        swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
5364
+      });
5365
+      swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset + "px");
5366
+      onRendered();
5367
+    },
5368
+    renderSlide: function renderSlide(slide, index) {
5369
+      var swiper = this;
5370
+      var params = swiper.params.virtual;
5371
+
5372
+      if (params.cache && swiper.virtual.cache[index]) {
5373
+        return swiper.virtual.cache[index];
5374
+      }
5375
+
5376
+      var $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $("<div class=\"" + swiper.params.slideClass + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>");
5377
+      if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
5378
+      if (params.cache) swiper.virtual.cache[index] = $slideEl;
5379
+      return $slideEl;
5380
+    },
5381
+    appendSlide: function appendSlide(slides) {
5382
+      var swiper = this;
5383
+
5384
+      if (typeof slides === 'object' && 'length' in slides) {
5385
+        for (var i = 0; i < slides.length; i += 1) {
5386
+          if (slides[i]) swiper.virtual.slides.push(slides[i]);
5387
+        }
5388
+      } else {
5389
+        swiper.virtual.slides.push(slides);
5390
+      }
5391
+
5392
+      swiper.virtual.update(true);
5393
+    },
5394
+    prependSlide: function prependSlide(slides) {
5395
+      var swiper = this;
5396
+      var activeIndex = swiper.activeIndex;
5397
+      var newActiveIndex = activeIndex + 1;
5398
+      var numberOfNewSlides = 1;
5399
+
5400
+      if (Array.isArray(slides)) {
5401
+        for (var i = 0; i < slides.length; i += 1) {
5402
+          if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
5403
+        }
5404
+
5405
+        newActiveIndex = activeIndex + slides.length;
5406
+        numberOfNewSlides = slides.length;
5407
+      } else {
5408
+        swiper.virtual.slides.unshift(slides);
5409
+      }
5410
+
5411
+      if (swiper.params.virtual.cache) {
5412
+        var cache = swiper.virtual.cache;
5413
+        var newCache = {};
5414
+        Object.keys(cache).forEach(function (cachedIndex) {
5415
+          var $cachedEl = cache[cachedIndex];
5416
+          var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
5417
+
5418
+          if (cachedElIndex) {
5419
+            $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
5420
+          }
5421
+
5422
+          newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
5423
+        });
5424
+        swiper.virtual.cache = newCache;
5425
+      }
5426
+
5427
+      swiper.virtual.update(true);
5428
+      swiper.slideTo(newActiveIndex, 0);
5429
+    },
5430
+    removeSlide: function removeSlide(slidesIndexes) {
5431
+      var swiper = this;
5432
+      if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
5433
+      var activeIndex = swiper.activeIndex;
5434
+
5435
+      if (Array.isArray(slidesIndexes)) {
5436
+        for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
5437
+          swiper.virtual.slides.splice(slidesIndexes[i], 1);
5438
+
5439
+          if (swiper.params.virtual.cache) {
5440
+            delete swiper.virtual.cache[slidesIndexes[i]];
5441
+          }
5442
+
5443
+          if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
5444
+          activeIndex = Math.max(activeIndex, 0);
5445
+        }
5446
+      } else {
5447
+        swiper.virtual.slides.splice(slidesIndexes, 1);
5448
+
5449
+        if (swiper.params.virtual.cache) {
5450
+          delete swiper.virtual.cache[slidesIndexes];
5451
+        }
5452
+
5453
+        if (slidesIndexes < activeIndex) activeIndex -= 1;
5454
+        activeIndex = Math.max(activeIndex, 0);
5455
+      }
5456
+
5457
+      swiper.virtual.update(true);
5458
+      swiper.slideTo(activeIndex, 0);
5459
+    },
5460
+    removeAllSlides: function removeAllSlides() {
5461
+      var swiper = this;
5462
+      swiper.virtual.slides = [];
5463
+
5464
+      if (swiper.params.virtual.cache) {
5465
+        swiper.virtual.cache = {};
5466
+      }
5467
+
5468
+      swiper.virtual.update(true);
5469
+      swiper.slideTo(0, 0);
5470
+    }
5471
+  };
5472
+  var Virtual$1 = {
5473
+    name: 'virtual',
5474
+    params: {
5475
+      virtual: {
5476
+        enabled: false,
5477
+        slides: [],
5478
+        cache: true,
5479
+        renderSlide: null,
5480
+        renderExternal: null,
5481
+        renderExternalUpdate: true,
5482
+        addSlidesBefore: 0,
5483
+        addSlidesAfter: 0
5484
+      }
5485
+    },
5486
+    create: function create() {
5487
+      var swiper = this;
5488
+      bindModuleMethods(swiper, {
5489
+        virtual: _extends({}, Virtual, {
5490
+          slides: swiper.params.virtual.slides,
5491
+          cache: {}
5492
+        })
5493
+      });
5494
+    },
5495
+    on: {
5496
+      beforeInit: function beforeInit(swiper) {
5497
+        if (!swiper.params.virtual.enabled) return;
5498
+        swiper.classNames.push(swiper.params.containerModifierClass + "virtual");
5499
+        var overwriteParams = {
5500
+          watchSlidesProgress: true
5501
+        };
5502
+        extend$1(swiper.params, overwriteParams);
5503
+        extend$1(swiper.originalParams, overwriteParams);
5504
+
5505
+        if (!swiper.params.initialSlide) {
5506
+          swiper.virtual.update();
5507
+        }
5508
+      },
5509
+      setTranslate: function setTranslate(swiper) {
5510
+        if (!swiper.params.virtual.enabled) return;
5511
+        swiper.virtual.update();
5512
+      }
5513
+    }
5514
+  };
5515
+
5516
+  var Keyboard = {
5517
+    handle: function handle(event) {
5518
+      var swiper = this;
5519
+      var window = getWindow();
5520
+      var document = getDocument();
5521
+      var rtl = swiper.rtlTranslate;
5522
+      var e = event;
5523
+      if (e.originalEvent) e = e.originalEvent; // jquery fix
5524
+
5525
+      var kc = e.keyCode || e.charCode;
5526
+      var pageUpDown = swiper.params.keyboard.pageUpDown;
5527
+      var isPageUp = pageUpDown && kc === 33;
5528
+      var isPageDown = pageUpDown && kc === 34;
5529
+      var isArrowLeft = kc === 37;
5530
+      var isArrowRight = kc === 39;
5531
+      var isArrowUp = kc === 38;
5532
+      var isArrowDown = kc === 40; // Directions locks
5533
+
5534
+      if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
5535
+        return false;
5536
+      }
5537
+
5538
+      if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
5539
+        return false;
5540
+      }
5541
+
5542
+      if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
5543
+        return undefined;
5544
+      }
5545
+
5546
+      if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
5547
+        return undefined;
5548
+      }
5549
+
5550
+      if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
5551
+        var inView = false; // Check that swiper should be inside of visible area of window
5552
+
5553
+        if (swiper.$el.parents("." + swiper.params.slideClass).length > 0 && swiper.$el.parents("." + swiper.params.slideActiveClass).length === 0) {
5554
+          return undefined;
5555
+        }
5556
+
5557
+        var windowWidth = window.innerWidth;
5558
+        var windowHeight = window.innerHeight;
5559
+        var swiperOffset = swiper.$el.offset();
5560
+        if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
5561
+        var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
5562
+
5563
+        for (var i = 0; i < swiperCoord.length; i += 1) {
5564
+          var point = swiperCoord[i];
5565
+
5566
+          if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
5567
+            if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
5568
+
5569
+            inView = true;
5570
+          }
5571
+        }
5572
+
5573
+        if (!inView) return undefined;
5574
+      }
5575
+
5576
+      if (swiper.isHorizontal()) {
5577
+        if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
5578
+          if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5579
+        }
5580
+
5581
+        if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
5582
+        if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
5583
+      } else {
5584
+        if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
5585
+          if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5586
+        }
5587
+
5588
+        if (isPageDown || isArrowDown) swiper.slideNext();
5589
+        if (isPageUp || isArrowUp) swiper.slidePrev();
5590
+      }
5591
+
5592
+      swiper.emit('keyPress', kc);
5593
+      return undefined;
5594
+    },
5595
+    enable: function enable() {
5596
+      var swiper = this;
5597
+      var document = getDocument();
5598
+      if (swiper.keyboard.enabled) return;
5599
+      $(document).on('keydown', swiper.keyboard.handle);
5600
+      swiper.keyboard.enabled = true;
5601
+    },
5602
+    disable: function disable() {
5603
+      var swiper = this;
5604
+      var document = getDocument();
5605
+      if (!swiper.keyboard.enabled) return;
5606
+      $(document).off('keydown', swiper.keyboard.handle);
5607
+      swiper.keyboard.enabled = false;
5608
+    }
5609
+  };
5610
+  var Keyboard$1 = {
5611
+    name: 'keyboard',
5612
+    params: {
5613
+      keyboard: {
5614
+        enabled: false,
5615
+        onlyInViewport: true,
5616
+        pageUpDown: true
5617
+      }
5618
+    },
5619
+    create: function create() {
5620
+      var swiper = this;
5621
+      bindModuleMethods(swiper, {
5622
+        keyboard: _extends({
5623
+          enabled: false
5624
+        }, Keyboard)
5625
+      });
5626
+    },
5627
+    on: {
5628
+      init: function init(swiper) {
5629
+        if (swiper.params.keyboard.enabled) {
5630
+          swiper.keyboard.enable();
5631
+        }
5632
+      },
5633
+      destroy: function destroy(swiper) {
5634
+        if (swiper.keyboard.enabled) {
5635
+          swiper.keyboard.disable();
5636
+        }
5637
+      }
5638
+    }
5639
+  };
5640
+
5641
+  function isEventSupported() {
5642
+    var document = getDocument();
5643
+    var eventName = 'onwheel';
5644
+    var isSupported = (eventName in document);
5645
+
5646
+    if (!isSupported) {
5647
+      var element = document.createElement('div');
5648
+      element.setAttribute(eventName, 'return;');
5649
+      isSupported = typeof element[eventName] === 'function';
5650
+    }
5651
+
5652
+    if (!isSupported && document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.
5653
+    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
5654
+    document.implementation.hasFeature('', '') !== true) {
5655
+      // This is the only way to test support for the `wheel` event in IE9+.
5656
+      isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
5657
+    }
5658
+
5659
+    return isSupported;
5660
+  }
5661
+
5662
+  var Mousewheel = {
5663
+    lastScrollTime: now(),
5664
+    lastEventBeforeSnap: undefined,
5665
+    recentWheelEvents: [],
5666
+    event: function event() {
5667
+      var window = getWindow();
5668
+      if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
5669
+      return isEventSupported() ? 'wheel' : 'mousewheel';
5670
+    },
5671
+    normalize: function normalize(e) {
5672
+      // Reasonable defaults
5673
+      var PIXEL_STEP = 10;
5674
+      var LINE_HEIGHT = 40;
5675
+      var PAGE_HEIGHT = 800;
5676
+      var sX = 0;
5677
+      var sY = 0; // spinX, spinY
5678
+
5679
+      var pX = 0;
5680
+      var pY = 0; // pixelX, pixelY
5681
+      // Legacy
5682
+
5683
+      if ('detail' in e) {
5684
+        sY = e.detail;
5685
+      }
5686
+
5687
+      if ('wheelDelta' in e) {
5688
+        sY = -e.wheelDelta / 120;
5689
+      }
5690
+
5691
+      if ('wheelDeltaY' in e) {
5692
+        sY = -e.wheelDeltaY / 120;
5693
+      }
5694
+
5695
+      if ('wheelDeltaX' in e) {
5696
+        sX = -e.wheelDeltaX / 120;
5697
+      } // side scrolling on FF with DOMMouseScroll
5698
+
5699
+
5700
+      if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
5701
+        sX = sY;
5702
+        sY = 0;
5703
+      }
5704
+
5705
+      pX = sX * PIXEL_STEP;
5706
+      pY = sY * PIXEL_STEP;
5707
+
5708
+      if ('deltaY' in e) {
5709
+        pY = e.deltaY;
5710
+      }
5711
+
5712
+      if ('deltaX' in e) {
5713
+        pX = e.deltaX;
5714
+      }
5715
+
5716
+      if (e.shiftKey && !pX) {
5717
+        // if user scrolls with shift he wants horizontal scroll
5718
+        pX = pY;
5719
+        pY = 0;
5720
+      }
5721
+
5722
+      if ((pX || pY) && e.deltaMode) {
5723
+        if (e.deltaMode === 1) {
5724
+          // delta in LINE units
5725
+          pX *= LINE_HEIGHT;
5726
+          pY *= LINE_HEIGHT;
5727
+        } else {
5728
+          // delta in PAGE units
5729
+          pX *= PAGE_HEIGHT;
5730
+          pY *= PAGE_HEIGHT;
5731
+        }
5732
+      } // Fall-back if spin cannot be determined
5733
+
5734
+
5735
+      if (pX && !sX) {
5736
+        sX = pX < 1 ? -1 : 1;
5737
+      }
5738
+
5739
+      if (pY && !sY) {
5740
+        sY = pY < 1 ? -1 : 1;
5741
+      }
5742
+
5743
+      return {
5744
+        spinX: sX,
5745
+        spinY: sY,
5746
+        pixelX: pX,
5747
+        pixelY: pY
5748
+      };
5749
+    },
5750
+    handleMouseEnter: function handleMouseEnter() {
5751
+      var swiper = this;
5752
+      swiper.mouseEntered = true;
5753
+    },
5754
+    handleMouseLeave: function handleMouseLeave() {
5755
+      var swiper = this;
5756
+      swiper.mouseEntered = false;
5757
+    },
5758
+    handle: function handle(event) {
5759
+      var e = event;
5760
+      var disableParentSwiper = true;
5761
+      var swiper = this;
5762
+      var params = swiper.params.mousewheel;
5763
+
5764
+      if (swiper.params.cssMode) {
5765
+        e.preventDefault();
5766
+      }
5767
+
5768
+      var target = swiper.$el;
5769
+
5770
+      if (swiper.params.mousewheel.eventsTarget !== 'container') {
5771
+        target = $(swiper.params.mousewheel.eventsTarget);
5772
+      }
5773
+
5774
+      if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
5775
+      if (e.originalEvent) e = e.originalEvent; // jquery fix
5776
+
5777
+      var delta = 0;
5778
+      var rtlFactor = swiper.rtlTranslate ? -1 : 1;
5779
+      var data = Mousewheel.normalize(e);
5780
+
5781
+      if (params.forceToAxis) {
5782
+        if (swiper.isHorizontal()) {
5783
+          if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
5784
+        } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
5785
+      } else {
5786
+        delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
5787
+      }
5788
+
5789
+      if (delta === 0) return true;
5790
+      if (params.invert) delta = -delta; // Get the scroll positions
5791
+
5792
+      var positions = swiper.getTranslate() + delta * params.sensitivity;
5793
+      if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
5794
+      if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:
5795
+      //     the disableParentSwiper will be true.
5796
+      // When loop is false:
5797
+      //     if the scroll positions is not on edge,
5798
+      //     then the disableParentSwiper will be true.
5799
+      //     if the scroll on edge positions,
5800
+      //     then the disableParentSwiper will be false.
5801
+
5802
+      disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
5803
+      if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
5804
+
5805
+      if (!swiper.params.freeMode) {
5806
+        // Register the new event in a variable which stores the relevant data
5807
+        var newEvent = {
5808
+          time: now(),
5809
+          delta: Math.abs(delta),
5810
+          direction: Math.sign(delta),
5811
+          raw: event
5812
+        }; // Keep the most recent events
5813
+
5814
+        var recentWheelEvents = swiper.mousewheel.recentWheelEvents;
5815
+
5816
+        if (recentWheelEvents.length >= 2) {
5817
+          recentWheelEvents.shift(); // only store the last N events
5818
+        }
5819
+
5820
+        var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
5821
+        recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
5822
+        //   If direction has changed or
5823
+        //   if the scroll is quicker than the previous one:
5824
+        //     Animate the slider.
5825
+        // Else (this is the first time the wheel is moved):
5826
+        //     Animate the slider.
5827
+
5828
+        if (prevEvent) {
5829
+          if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
5830
+            swiper.mousewheel.animateSlider(newEvent);
5831
+          }
5832
+        } else {
5833
+          swiper.mousewheel.animateSlider(newEvent);
5834
+        } // If it's time to release the scroll:
5835
+        //   Return now so you don't hit the preventDefault.
5836
+
5837
+
5838
+        if (swiper.mousewheel.releaseScroll(newEvent)) {
5839
+          return true;
5840
+        }
5841
+      } else {
5842
+        // Freemode or scrollContainer:
5843
+        // If we recently snapped after a momentum scroll, then ignore wheel events
5844
+        // to give time for the deceleration to finish. Stop ignoring after 500 msecs
5845
+        // or if it's a new scroll (larger delta or inverse sign as last event before
5846
+        // an end-of-momentum snap).
5847
+        var _newEvent = {
5848
+          time: now(),
5849
+          delta: Math.abs(delta),
5850
+          direction: Math.sign(delta)
5851
+        };
5852
+        var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;
5853
+        var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;
5854
+
5855
+        if (!ignoreWheelEvents) {
5856
+          swiper.mousewheel.lastEventBeforeSnap = undefined;
5857
+
5858
+          if (swiper.params.loop) {
5859
+            swiper.loopFix();
5860
+          }
5861
+
5862
+          var position = swiper.getTranslate() + delta * params.sensitivity;
5863
+          var wasBeginning = swiper.isBeginning;
5864
+          var wasEnd = swiper.isEnd;
5865
+          if (position >= swiper.minTranslate()) position = swiper.minTranslate();
5866
+          if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
5867
+          swiper.setTransition(0);
5868
+          swiper.setTranslate(position);
5869
+          swiper.updateProgress();
5870
+          swiper.updateActiveIndex();
5871
+          swiper.updateSlidesClasses();
5872
+
5873
+          if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
5874
+            swiper.updateSlidesClasses();
5875
+          }
5876
+
5877
+          if (swiper.params.freeModeSticky) {
5878
+            // When wheel scrolling starts with sticky (aka snap) enabled, then detect
5879
+            // the end of a momentum scroll by storing recent (N=15?) wheel events.
5880
+            // 1. do all N events have decreasing or same (absolute value) delta?
5881
+            // 2. did all N events arrive in the last M (M=500?) msecs?
5882
+            // 3. does the earliest event have an (absolute value) delta that's
5883
+            //    at least P (P=1?) larger than the most recent event's delta?
5884
+            // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
5885
+            // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
5886
+            // Snap immediately and ignore remaining wheel events in this scroll.
5887
+            // See comment above for "remaining wheel events in this scroll" determination.
5888
+            // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
5889
+            clearTimeout(swiper.mousewheel.timeout);
5890
+            swiper.mousewheel.timeout = undefined;
5891
+            var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;
5892
+
5893
+            if (_recentWheelEvents.length >= 15) {
5894
+              _recentWheelEvents.shift(); // only store the last N events
5895
+
5896
+            }
5897
+
5898
+            var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;
5899
+
5900
+            var firstEvent = _recentWheelEvents[0];
5901
+
5902
+            _recentWheelEvents.push(_newEvent);
5903
+
5904
+            if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {
5905
+              // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
5906
+              _recentWheelEvents.splice(0);
5907
+            } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {
5908
+              // We're at the end of the deceleration of a momentum scroll, so there's no need
5909
+              // to wait for more events. Snap ASAP on the next tick.
5910
+              // Also, because there's some remaining momentum we'll bias the snap in the
5911
+              // direction of the ongoing scroll because it's better UX for the scroll to snap
5912
+              // in the same direction as the scroll instead of reversing to snap.  Therefore,
5913
+              // if it's already scrolled more than 20% in the current direction, keep going.
5914
+              var snapToThreshold = delta > 0 ? 0.8 : 0.2;
5915
+              swiper.mousewheel.lastEventBeforeSnap = _newEvent;
5916
+
5917
+              _recentWheelEvents.splice(0);
5918
+
5919
+              swiper.mousewheel.timeout = nextTick(function () {
5920
+                swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5921
+              }, 0); // no delay; move on next tick
5922
+            }
5923
+
5924
+            if (!swiper.mousewheel.timeout) {
5925
+              // if we get here, then we haven't detected the end of a momentum scroll, so
5926
+              // we'll consider a scroll "complete" when there haven't been any wheel events
5927
+              // for 500ms.
5928
+              swiper.mousewheel.timeout = nextTick(function () {
5929
+                var snapToThreshold = 0.5;
5930
+                swiper.mousewheel.lastEventBeforeSnap = _newEvent;
5931
+
5932
+                _recentWheelEvents.splice(0);
5933
+
5934
+                swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5935
+              }, 500);
5936
+            }
5937
+          } // Emit event
5938
+
5939
+
5940
+          if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay
5941
+
5942
+          if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
5943
+
5944
+          if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
5945
+        }
5946
+      }
5947
+
5948
+      if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5949
+      return false;
5950
+    },
5951
+    animateSlider: function animateSlider(newEvent) {
5952
+      var swiper = this;
5953
+      var window = getWindow();
5954
+
5955
+      if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {
5956
+        // Prevent if delta of wheel scroll delta is below configured threshold
5957
+        return false;
5958
+      }
5959
+
5960
+      if (this.params.mousewheel.thresholdTime && now() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {
5961
+        // Prevent if time between scrolls is below configured threshold
5962
+        return false;
5963
+      } // If the movement is NOT big enough and
5964
+      // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
5965
+      //   Don't go any further (avoid insignificant scroll movement).
5966
+
5967
+
5968
+      if (newEvent.delta >= 6 && now() - swiper.mousewheel.lastScrollTime < 60) {
5969
+        // Return false as a default
5970
+        return true;
5971
+      } // If user is scrolling towards the end:
5972
+      //   If the slider hasn't hit the latest slide or
5973
+      //   if the slider is a loop and
5974
+      //   if the slider isn't moving right now:
5975
+      //     Go to next slide and
5976
+      //     emit a scroll event.
5977
+      // Else (the user is scrolling towards the beginning) and
5978
+      // if the slider hasn't hit the first slide or
5979
+      // if the slider is a loop and
5980
+      // if the slider isn't moving right now:
5981
+      //   Go to prev slide and
5982
+      //   emit a scroll event.
5983
+
5984
+
5985
+      if (newEvent.direction < 0) {
5986
+        if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
5987
+          swiper.slideNext();
5988
+          swiper.emit('scroll', newEvent.raw);
5989
+        }
5990
+      } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
5991
+        swiper.slidePrev();
5992
+        swiper.emit('scroll', newEvent.raw);
5993
+      } // If you got here is because an animation has been triggered so store the current time
5994
+
5995
+
5996
+      swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default
5997
+
5998
+      return false;
5999
+    },
6000
+    releaseScroll: function releaseScroll(newEvent) {
6001
+      var swiper = this;
6002
+      var params = swiper.params.mousewheel;
6003
+
6004
+      if (newEvent.direction < 0) {
6005
+        if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
6006
+          // Return true to animate scroll on edges
6007
+          return true;
6008
+        }
6009
+      } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
6010
+        // Return true to animate scroll on edges
6011
+        return true;
6012
+      }
6013
+
6014
+      return false;
6015
+    },
6016
+    enable: function enable() {
6017
+      var swiper = this;
6018
+      var event = Mousewheel.event();
6019
+
6020
+      if (swiper.params.cssMode) {
6021
+        swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
6022
+        return true;
6023
+      }
6024
+
6025
+      if (!event) return false;
6026
+      if (swiper.mousewheel.enabled) return false;
6027
+      var target = swiper.$el;
6028
+
6029
+      if (swiper.params.mousewheel.eventsTarget !== 'container') {
6030
+        target = $(swiper.params.mousewheel.eventsTarget);
6031
+      }
6032
+
6033
+      target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
6034
+      target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
6035
+      target.on(event, swiper.mousewheel.handle);
6036
+      swiper.mousewheel.enabled = true;
6037
+      return true;
6038
+    },
6039
+    disable: function disable() {
6040
+      var swiper = this;
6041
+      var event = Mousewheel.event();
6042
+
6043
+      if (swiper.params.cssMode) {
6044
+        swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
6045
+        return true;
6046
+      }
6047
+
6048
+      if (!event) return false;
6049
+      if (!swiper.mousewheel.enabled) return false;
6050
+      var target = swiper.$el;
6051
+
6052
+      if (swiper.params.mousewheel.eventsTarget !== 'container') {
6053
+        target = $(swiper.params.mousewheel.eventsTarget);
6054
+      }
6055
+
6056
+      target.off(event, swiper.mousewheel.handle);
6057
+      swiper.mousewheel.enabled = false;
6058
+      return true;
6059
+    }
6060
+  };
6061
+  var Mousewheel$1 = {
6062
+    name: 'mousewheel',
6063
+    params: {
6064
+      mousewheel: {
6065
+        enabled: false,
6066
+        releaseOnEdges: false,
6067
+        invert: false,
6068
+        forceToAxis: false,
6069
+        sensitivity: 1,
6070
+        eventsTarget: 'container',
6071
+        thresholdDelta: null,
6072
+        thresholdTime: null
6073
+      }
6074
+    },
6075
+    create: function create() {
6076
+      var swiper = this;
6077
+      bindModuleMethods(swiper, {
6078
+        mousewheel: {
6079
+          enabled: false,
6080
+          lastScrollTime: now(),
6081
+          lastEventBeforeSnap: undefined,
6082
+          recentWheelEvents: [],
6083
+          enable: Mousewheel.enable,
6084
+          disable: Mousewheel.disable,
6085
+          handle: Mousewheel.handle,
6086
+          handleMouseEnter: Mousewheel.handleMouseEnter,
6087
+          handleMouseLeave: Mousewheel.handleMouseLeave,
6088
+          animateSlider: Mousewheel.animateSlider,
6089
+          releaseScroll: Mousewheel.releaseScroll
6090
+        }
6091
+      });
6092
+    },
6093
+    on: {
6094
+      init: function init(swiper) {
6095
+        if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
6096
+          swiper.mousewheel.disable();
6097
+        }
6098
+
6099
+        if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
6100
+      },
6101
+      destroy: function destroy(swiper) {
6102
+        if (swiper.params.cssMode) {
6103
+          swiper.mousewheel.enable();
6104
+        }
6105
+
6106
+        if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
6107
+      }
6108
+    }
6109
+  };
6110
+
6111
+  var Navigation = {
6112
+    update: function update() {
6113
+      // Update Navigation Buttons
6114
+      var swiper = this;
6115
+      var params = swiper.params.navigation;
6116
+      if (swiper.params.loop) return;
6117
+      var _swiper$navigation = swiper.navigation,
6118
+          $nextEl = _swiper$navigation.$nextEl,
6119
+          $prevEl = _swiper$navigation.$prevEl;
6120
+
6121
+      if ($prevEl && $prevEl.length > 0) {
6122
+        if (swiper.isBeginning) {
6123
+          $prevEl.addClass(params.disabledClass);
6124
+        } else {
6125
+          $prevEl.removeClass(params.disabledClass);
6126
+        }
6127
+
6128
+        $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
6129
+      }
6130
+
6131
+      if ($nextEl && $nextEl.length > 0) {
6132
+        if (swiper.isEnd) {
6133
+          $nextEl.addClass(params.disabledClass);
6134
+        } else {
6135
+          $nextEl.removeClass(params.disabledClass);
6136
+        }
6137
+
6138
+        $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
6139
+      }
6140
+    },
6141
+    onPrevClick: function onPrevClick(e) {
6142
+      var swiper = this;
6143
+      e.preventDefault();
6144
+      if (swiper.isBeginning && !swiper.params.loop) return;
6145
+      swiper.slidePrev();
6146
+    },
6147
+    onNextClick: function onNextClick(e) {
6148
+      var swiper = this;
6149
+      e.preventDefault();
6150
+      if (swiper.isEnd && !swiper.params.loop) return;
6151
+      swiper.slideNext();
6152
+    },
6153
+    init: function init() {
6154
+      var swiper = this;
6155
+      var params = swiper.params.navigation;
6156
+      if (!(params.nextEl || params.prevEl)) return;
6157
+      var $nextEl;
6158
+      var $prevEl;
6159
+
6160
+      if (params.nextEl) {
6161
+        $nextEl = $(params.nextEl);
6162
+
6163
+        if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {
6164
+          $nextEl = swiper.$el.find(params.nextEl);
6165
+        }
6166
+      }
6167
+
6168
+      if (params.prevEl) {
6169
+        $prevEl = $(params.prevEl);
6170
+
6171
+        if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {
6172
+          $prevEl = swiper.$el.find(params.prevEl);
6173
+        }
6174
+      }
6175
+
6176
+      if ($nextEl && $nextEl.length > 0) {
6177
+        $nextEl.on('click', swiper.navigation.onNextClick);
6178
+      }
6179
+
6180
+      if ($prevEl && $prevEl.length > 0) {
6181
+        $prevEl.on('click', swiper.navigation.onPrevClick);
6182
+      }
6183
+
6184
+      extend$1(swiper.navigation, {
6185
+        $nextEl: $nextEl,
6186
+        nextEl: $nextEl && $nextEl[0],
6187
+        $prevEl: $prevEl,
6188
+        prevEl: $prevEl && $prevEl[0]
6189
+      });
6190
+    },
6191
+    destroy: function destroy() {
6192
+      var swiper = this;
6193
+      var _swiper$navigation2 = swiper.navigation,
6194
+          $nextEl = _swiper$navigation2.$nextEl,
6195
+          $prevEl = _swiper$navigation2.$prevEl;
6196
+
6197
+      if ($nextEl && $nextEl.length) {
6198
+        $nextEl.off('click', swiper.navigation.onNextClick);
6199
+        $nextEl.removeClass(swiper.params.navigation.disabledClass);
6200
+      }
6201
+
6202
+      if ($prevEl && $prevEl.length) {
6203
+        $prevEl.off('click', swiper.navigation.onPrevClick);
6204
+        $prevEl.removeClass(swiper.params.navigation.disabledClass);
6205
+      }
6206
+    }
6207
+  };
6208
+  var Navigation$1 = {
6209
+    name: 'navigation',
6210
+    params: {
6211
+      navigation: {
6212
+        nextEl: null,
6213
+        prevEl: null,
6214
+        hideOnClick: false,
6215
+        disabledClass: 'swiper-button-disabled',
6216
+        hiddenClass: 'swiper-button-hidden',
6217
+        lockClass: 'swiper-button-lock'
6218
+      }
6219
+    },
6220
+    create: function create() {
6221
+      var swiper = this;
6222
+      bindModuleMethods(swiper, {
6223
+        navigation: _extends({}, Navigation)
6224
+      });
6225
+    },
6226
+    on: {
6227
+      init: function init(swiper) {
6228
+        swiper.navigation.init();
6229
+        swiper.navigation.update();
6230
+      },
6231
+      toEdge: function toEdge(swiper) {
6232
+        swiper.navigation.update();
6233
+      },
6234
+      fromEdge: function fromEdge(swiper) {
6235
+        swiper.navigation.update();
6236
+      },
6237
+      destroy: function destroy(swiper) {
6238
+        swiper.navigation.destroy();
6239
+      },
6240
+      click: function click(swiper, e) {
6241
+        var _swiper$navigation3 = swiper.navigation,
6242
+            $nextEl = _swiper$navigation3.$nextEl,
6243
+            $prevEl = _swiper$navigation3.$prevEl;
6244
+        var targetEl = e.target;
6245
+
6246
+        if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {
6247
+          if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
6248
+          var isHidden;
6249
+
6250
+          if ($nextEl) {
6251
+            isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
6252
+          } else if ($prevEl) {
6253
+            isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
6254
+          }
6255
+
6256
+          if (isHidden === true) {
6257
+            swiper.emit('navigationShow');
6258
+          } else {
6259
+            swiper.emit('navigationHide');
6260
+          }
6261
+
6262
+          if ($nextEl) {
6263
+            $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
6264
+          }
6265
+
6266
+          if ($prevEl) {
6267
+            $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
6268
+          }
6269
+        }
6270
+      }
6271
+    }
6272
+  };
6273
+
6274
+  var Pagination = {
6275
+    update: function update() {
6276
+      // Render || Update Pagination bullets/items
6277
+      var swiper = this;
6278
+      var rtl = swiper.rtl;
6279
+      var params = swiper.params.pagination;
6280
+      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6281
+      var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
6282
+      var $el = swiper.pagination.$el; // Current/Total
6283
+
6284
+      var current;
6285
+      var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
6286
+
6287
+      if (swiper.params.loop) {
6288
+        current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
6289
+
6290
+        if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
6291
+          current -= slidesLength - swiper.loopedSlides * 2;
6292
+        }
6293
+
6294
+        if (current > total - 1) current -= total;
6295
+        if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
6296
+      } else if (typeof swiper.snapIndex !== 'undefined') {
6297
+        current = swiper.snapIndex;
6298
+      } else {
6299
+        current = swiper.activeIndex || 0;
6300
+      } // Types
6301
+
6302
+
6303
+      if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
6304
+        var bullets = swiper.pagination.bullets;
6305
+        var firstIndex;
6306
+        var lastIndex;
6307
+        var midIndex;
6308
+
6309
+        if (params.dynamicBullets) {
6310
+          swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
6311
+          $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + "px");
6312
+
6313
+          if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
6314
+            swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;
6315
+
6316
+            if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {
6317
+              swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
6318
+            } else if (swiper.pagination.dynamicBulletIndex < 0) {
6319
+              swiper.pagination.dynamicBulletIndex = 0;
6320
+            }
6321
+          }
6322
+
6323
+          firstIndex = current - swiper.pagination.dynamicBulletIndex;
6324
+          lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
6325
+          midIndex = (lastIndex + firstIndex) / 2;
6326
+        }
6327
+
6328
+        bullets.removeClass(params.bulletActiveClass + " " + params.bulletActiveClass + "-next " + params.bulletActiveClass + "-next-next " + params.bulletActiveClass + "-prev " + params.bulletActiveClass + "-prev-prev " + params.bulletActiveClass + "-main");
6329
+
6330
+        if ($el.length > 1) {
6331
+          bullets.each(function (bullet) {
6332
+            var $bullet = $(bullet);
6333
+            var bulletIndex = $bullet.index();
6334
+
6335
+            if (bulletIndex === current) {
6336
+              $bullet.addClass(params.bulletActiveClass);
6337
+            }
6338
+
6339
+            if (params.dynamicBullets) {
6340
+              if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
6341
+                $bullet.addClass(params.bulletActiveClass + "-main");
6342
+              }
6343
+
6344
+              if (bulletIndex === firstIndex) {
6345
+                $bullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6346
+              }
6347
+
6348
+              if (bulletIndex === lastIndex) {
6349
+                $bullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6350
+              }
6351
+            }
6352
+          });
6353
+        } else {
6354
+          var $bullet = bullets.eq(current);
6355
+          var bulletIndex = $bullet.index();
6356
+          $bullet.addClass(params.bulletActiveClass);
6357
+
6358
+          if (params.dynamicBullets) {
6359
+            var $firstDisplayedBullet = bullets.eq(firstIndex);
6360
+            var $lastDisplayedBullet = bullets.eq(lastIndex);
6361
+
6362
+            for (var i = firstIndex; i <= lastIndex; i += 1) {
6363
+              bullets.eq(i).addClass(params.bulletActiveClass + "-main");
6364
+            }
6365
+
6366
+            if (swiper.params.loop) {
6367
+              if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
6368
+                for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {
6369
+                  bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + "-main");
6370
+                }
6371
+
6372
+                bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + "-prev");
6373
+              } else {
6374
+                $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6375
+                $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6376
+              }
6377
+            } else {
6378
+              $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6379
+              $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6380
+            }
6381
+          }
6382
+        }
6383
+
6384
+        if (params.dynamicBullets) {
6385
+          var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
6386
+          var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;
6387
+          var offsetProp = rtl ? 'right' : 'left';
6388
+          bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + "px");
6389
+        }
6390
+      }
6391
+
6392
+      if (params.type === 'fraction') {
6393
+        $el.find("." + params.currentClass).text(params.formatFractionCurrent(current + 1));
6394
+        $el.find("." + params.totalClass).text(params.formatFractionTotal(total));
6395
+      }
6396
+
6397
+      if (params.type === 'progressbar') {
6398
+        var progressbarDirection;
6399
+
6400
+        if (params.progressbarOpposite) {
6401
+          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
6402
+        } else {
6403
+          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
6404
+        }
6405
+
6406
+        var scale = (current + 1) / total;
6407
+        var scaleX = 1;
6408
+        var scaleY = 1;
6409
+
6410
+        if (progressbarDirection === 'horizontal') {
6411
+          scaleX = scale;
6412
+        } else {
6413
+          scaleY = scale;
6414
+        }
6415
+
6416
+        $el.find("." + params.progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")").transition(swiper.params.speed);
6417
+      }
6418
+
6419
+      if (params.type === 'custom' && params.renderCustom) {
6420
+        $el.html(params.renderCustom(swiper, current + 1, total));
6421
+        swiper.emit('paginationRender', $el[0]);
6422
+      } else {
6423
+        swiper.emit('paginationUpdate', $el[0]);
6424
+      }
6425
+
6426
+      $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
6427
+    },
6428
+    render: function render() {
6429
+      // Render Container
6430
+      var swiper = this;
6431
+      var params = swiper.params.pagination;
6432
+      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6433
+      var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
6434
+      var $el = swiper.pagination.$el;
6435
+      var paginationHTML = '';
6436
+
6437
+      if (params.type === 'bullets') {
6438
+        var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
6439
+
6440
+        if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {
6441
+          numberOfBullets = slidesLength;
6442
+        }
6443
+
6444
+        for (var i = 0; i < numberOfBullets; i += 1) {
6445
+          if (params.renderBullet) {
6446
+            paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
6447
+          } else {
6448
+            paginationHTML += "<" + params.bulletElement + " class=\"" + params.bulletClass + "\"></" + params.bulletElement + ">";
6449
+          }
6450
+        }
6451
+
6452
+        $el.html(paginationHTML);
6453
+        swiper.pagination.bullets = $el.find("." + params.bulletClass.replace(/ /g, '.'));
6454
+      }
6455
+
6456
+      if (params.type === 'fraction') {
6457
+        if (params.renderFraction) {
6458
+          paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
6459
+        } else {
6460
+          paginationHTML = "<span class=\"" + params.currentClass + "\"></span>" + ' / ' + ("<span class=\"" + params.totalClass + "\"></span>");
6461
+        }
6462
+
6463
+        $el.html(paginationHTML);
6464
+      }
6465
+
6466
+      if (params.type === 'progressbar') {
6467
+        if (params.renderProgressbar) {
6468
+          paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
6469
+        } else {
6470
+          paginationHTML = "<span class=\"" + params.progressbarFillClass + "\"></span>";
6471
+        }
6472
+
6473
+        $el.html(paginationHTML);
6474
+      }
6475
+
6476
+      if (params.type !== 'custom') {
6477
+        swiper.emit('paginationRender', swiper.pagination.$el[0]);
6478
+      }
6479
+    },
6480
+    init: function init() {
6481
+      var swiper = this;
6482
+      var params = swiper.params.pagination;
6483
+      if (!params.el) return;
6484
+      var $el = $(params.el);
6485
+      if ($el.length === 0) return;
6486
+
6487
+      if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
6488
+        $el = swiper.$el.find(params.el);
6489
+      }
6490
+
6491
+      if (params.type === 'bullets' && params.clickable) {
6492
+        $el.addClass(params.clickableClass);
6493
+      }
6494
+
6495
+      $el.addClass(params.modifierClass + params.type);
6496
+
6497
+      if (params.type === 'bullets' && params.dynamicBullets) {
6498
+        $el.addClass("" + params.modifierClass + params.type + "-dynamic");
6499
+        swiper.pagination.dynamicBulletIndex = 0;
6500
+
6501
+        if (params.dynamicMainBullets < 1) {
6502
+          params.dynamicMainBullets = 1;
6503
+        }
6504
+      }
6505
+
6506
+      if (params.type === 'progressbar' && params.progressbarOpposite) {
6507
+        $el.addClass(params.progressbarOppositeClass);
6508
+      }
6509
+
6510
+      if (params.clickable) {
6511
+        $el.on('click', "." + params.bulletClass.replace(/ /g, '.'), function onClick(e) {
6512
+          e.preventDefault();
6513
+          var index = $(this).index() * swiper.params.slidesPerGroup;
6514
+          if (swiper.params.loop) index += swiper.loopedSlides;
6515
+          swiper.slideTo(index);
6516
+        });
6517
+      }
6518
+
6519
+      extend$1(swiper.pagination, {
6520
+        $el: $el,
6521
+        el: $el[0]
6522
+      });
6523
+    },
6524
+    destroy: function destroy() {
6525
+      var swiper = this;
6526
+      var params = swiper.params.pagination;
6527
+      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6528
+      var $el = swiper.pagination.$el;
6529
+      $el.removeClass(params.hiddenClass);
6530
+      $el.removeClass(params.modifierClass + params.type);
6531
+      if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
6532
+
6533
+      if (params.clickable) {
6534
+        $el.off('click', "." + params.bulletClass.replace(/ /g, '.'));
6535
+      }
6536
+    }
6537
+  };
6538
+  var Pagination$1 = {
6539
+    name: 'pagination',
6540
+    params: {
6541
+      pagination: {
6542
+        el: null,
6543
+        bulletElement: 'span',
6544
+        clickable: false,
6545
+        hideOnClick: false,
6546
+        renderBullet: null,
6547
+        renderProgressbar: null,
6548
+        renderFraction: null,
6549
+        renderCustom: null,
6550
+        progressbarOpposite: false,
6551
+        type: 'bullets',
6552
+        // 'bullets' or 'progressbar' or 'fraction' or 'custom'
6553
+        dynamicBullets: false,
6554
+        dynamicMainBullets: 1,
6555
+        formatFractionCurrent: function formatFractionCurrent(number) {
6556
+          return number;
6557
+        },
6558
+        formatFractionTotal: function formatFractionTotal(number) {
6559
+          return number;
6560
+        },
6561
+        bulletClass: 'swiper-pagination-bullet',
6562
+        bulletActiveClass: 'swiper-pagination-bullet-active',
6563
+        modifierClass: 'swiper-pagination-',
6564
+        // NEW
6565
+        currentClass: 'swiper-pagination-current',
6566
+        totalClass: 'swiper-pagination-total',
6567
+        hiddenClass: 'swiper-pagination-hidden',
6568
+        progressbarFillClass: 'swiper-pagination-progressbar-fill',
6569
+        progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
6570
+        clickableClass: 'swiper-pagination-clickable',
6571
+        // NEW
6572
+        lockClass: 'swiper-pagination-lock'
6573
+      }
6574
+    },
6575
+    create: function create() {
6576
+      var swiper = this;
6577
+      bindModuleMethods(swiper, {
6578
+        pagination: _extends({
6579
+          dynamicBulletIndex: 0
6580
+        }, Pagination)
6581
+      });
6582
+    },
6583
+    on: {
6584
+      init: function init(swiper) {
6585
+        swiper.pagination.init();
6586
+        swiper.pagination.render();
6587
+        swiper.pagination.update();
6588
+      },
6589
+      activeIndexChange: function activeIndexChange(swiper) {
6590
+        if (swiper.params.loop) {
6591
+          swiper.pagination.update();
6592
+        } else if (typeof swiper.snapIndex === 'undefined') {
6593
+          swiper.pagination.update();
6594
+        }
6595
+      },
6596
+      snapIndexChange: function snapIndexChange(swiper) {
6597
+        if (!swiper.params.loop) {
6598
+          swiper.pagination.update();
6599
+        }
6600
+      },
6601
+      slidesLengthChange: function slidesLengthChange(swiper) {
6602
+        if (swiper.params.loop) {
6603
+          swiper.pagination.render();
6604
+          swiper.pagination.update();
6605
+        }
6606
+      },
6607
+      snapGridLengthChange: function snapGridLengthChange(swiper) {
6608
+        if (!swiper.params.loop) {
6609
+          swiper.pagination.render();
6610
+          swiper.pagination.update();
6611
+        }
6612
+      },
6613
+      destroy: function destroy(swiper) {
6614
+        swiper.pagination.destroy();
6615
+      },
6616
+      click: function click(swiper, e) {
6617
+        var targetEl = e.target;
6618
+
6619
+        if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {
6620
+          if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
6621
+          var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
6622
+
6623
+          if (isHidden === true) {
6624
+            swiper.emit('paginationShow');
6625
+          } else {
6626
+            swiper.emit('paginationHide');
6627
+          }
6628
+
6629
+          swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
6630
+        }
6631
+      }
6632
+    }
6633
+  };
6634
+
6635
+  var Scrollbar = {
6636
+    setTranslate: function setTranslate() {
6637
+      var swiper = this;
6638
+      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6639
+      var scrollbar = swiper.scrollbar,
6640
+          rtl = swiper.rtlTranslate,
6641
+          progress = swiper.progress;
6642
+      var dragSize = scrollbar.dragSize,
6643
+          trackSize = scrollbar.trackSize,
6644
+          $dragEl = scrollbar.$dragEl,
6645
+          $el = scrollbar.$el;
6646
+      var params = swiper.params.scrollbar;
6647
+      var newSize = dragSize;
6648
+      var newPos = (trackSize - dragSize) * progress;
6649
+
6650
+      if (rtl) {
6651
+        newPos = -newPos;
6652
+
6653
+        if (newPos > 0) {
6654
+          newSize = dragSize - newPos;
6655
+          newPos = 0;
6656
+        } else if (-newPos + dragSize > trackSize) {
6657
+          newSize = trackSize + newPos;
6658
+        }
6659
+      } else if (newPos < 0) {
6660
+        newSize = dragSize + newPos;
6661
+        newPos = 0;
6662
+      } else if (newPos + dragSize > trackSize) {
6663
+        newSize = trackSize - newPos;
6664
+      }
6665
+
6666
+      if (swiper.isHorizontal()) {
6667
+        $dragEl.transform("translate3d(" + newPos + "px, 0, 0)");
6668
+        $dragEl[0].style.width = newSize + "px";
6669
+      } else {
6670
+        $dragEl.transform("translate3d(0px, " + newPos + "px, 0)");
6671
+        $dragEl[0].style.height = newSize + "px";
6672
+      }
6673
+
6674
+      if (params.hide) {
6675
+        clearTimeout(swiper.scrollbar.timeout);
6676
+        $el[0].style.opacity = 1;
6677
+        swiper.scrollbar.timeout = setTimeout(function () {
6678
+          $el[0].style.opacity = 0;
6679
+          $el.transition(400);
6680
+        }, 1000);
6681
+      }
6682
+    },
6683
+    setTransition: function setTransition(duration) {
6684
+      var swiper = this;
6685
+      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6686
+      swiper.scrollbar.$dragEl.transition(duration);
6687
+    },
6688
+    updateSize: function updateSize() {
6689
+      var swiper = this;
6690
+      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6691
+      var scrollbar = swiper.scrollbar;
6692
+      var $dragEl = scrollbar.$dragEl,
6693
+          $el = scrollbar.$el;
6694
+      $dragEl[0].style.width = '';
6695
+      $dragEl[0].style.height = '';
6696
+      var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
6697
+      var divider = swiper.size / swiper.virtualSize;
6698
+      var moveDivider = divider * (trackSize / swiper.size);
6699
+      var dragSize;
6700
+
6701
+      if (swiper.params.scrollbar.dragSize === 'auto') {
6702
+        dragSize = trackSize * divider;
6703
+      } else {
6704
+        dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
6705
+      }
6706
+
6707
+      if (swiper.isHorizontal()) {
6708
+        $dragEl[0].style.width = dragSize + "px";
6709
+      } else {
6710
+        $dragEl[0].style.height = dragSize + "px";
6711
+      }
6712
+
6713
+      if (divider >= 1) {
6714
+        $el[0].style.display = 'none';
6715
+      } else {
6716
+        $el[0].style.display = '';
6717
+      }
6718
+
6719
+      if (swiper.params.scrollbar.hide) {
6720
+        $el[0].style.opacity = 0;
6721
+      }
6722
+
6723
+      extend$1(scrollbar, {
6724
+        trackSize: trackSize,
6725
+        divider: divider,
6726
+        moveDivider: moveDivider,
6727
+        dragSize: dragSize
6728
+      });
6729
+      scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
6730
+    },
6731
+    getPointerPosition: function getPointerPosition(e) {
6732
+      var swiper = this;
6733
+
6734
+      if (swiper.isHorizontal()) {
6735
+        return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;
6736
+      }
6737
+
6738
+      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;
6739
+    },
6740
+    setDragPosition: function setDragPosition(e) {
6741
+      var swiper = this;
6742
+      var scrollbar = swiper.scrollbar,
6743
+          rtl = swiper.rtlTranslate;
6744
+      var $el = scrollbar.$el,
6745
+          dragSize = scrollbar.dragSize,
6746
+          trackSize = scrollbar.trackSize,
6747
+          dragStartPos = scrollbar.dragStartPos;
6748
+      var positionRatio;
6749
+      positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
6750
+      positionRatio = Math.max(Math.min(positionRatio, 1), 0);
6751
+
6752
+      if (rtl) {
6753
+        positionRatio = 1 - positionRatio;
6754
+      }
6755
+
6756
+      var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
6757
+      swiper.updateProgress(position);
6758
+      swiper.setTranslate(position);
6759
+      swiper.updateActiveIndex();
6760
+      swiper.updateSlidesClasses();
6761
+    },
6762
+    onDragStart: function onDragStart(e) {
6763
+      var swiper = this;
6764
+      var params = swiper.params.scrollbar;
6765
+      var scrollbar = swiper.scrollbar,
6766
+          $wrapperEl = swiper.$wrapperEl;
6767
+      var $el = scrollbar.$el,
6768
+          $dragEl = scrollbar.$dragEl;
6769
+      swiper.scrollbar.isTouched = true;
6770
+      swiper.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
6771
+      e.preventDefault();
6772
+      e.stopPropagation();
6773
+      $wrapperEl.transition(100);
6774
+      $dragEl.transition(100);
6775
+      scrollbar.setDragPosition(e);
6776
+      clearTimeout(swiper.scrollbar.dragTimeout);
6777
+      $el.transition(0);
6778
+
6779
+      if (params.hide) {
6780
+        $el.css('opacity', 1);
6781
+      }
6782
+
6783
+      if (swiper.params.cssMode) {
6784
+        swiper.$wrapperEl.css('scroll-snap-type', 'none');
6785
+      }
6786
+
6787
+      swiper.emit('scrollbarDragStart', e);
6788
+    },
6789
+    onDragMove: function onDragMove(e) {
6790
+      var swiper = this;
6791
+      var scrollbar = swiper.scrollbar,
6792
+          $wrapperEl = swiper.$wrapperEl;
6793
+      var $el = scrollbar.$el,
6794
+          $dragEl = scrollbar.$dragEl;
6795
+      if (!swiper.scrollbar.isTouched) return;
6796
+      if (e.preventDefault) e.preventDefault();else e.returnValue = false;
6797
+      scrollbar.setDragPosition(e);
6798
+      $wrapperEl.transition(0);
6799
+      $el.transition(0);
6800
+      $dragEl.transition(0);
6801
+      swiper.emit('scrollbarDragMove', e);
6802
+    },
6803
+    onDragEnd: function onDragEnd(e) {
6804
+      var swiper = this;
6805
+      var params = swiper.params.scrollbar;
6806
+      var scrollbar = swiper.scrollbar,
6807
+          $wrapperEl = swiper.$wrapperEl;
6808
+      var $el = scrollbar.$el;
6809
+      if (!swiper.scrollbar.isTouched) return;
6810
+      swiper.scrollbar.isTouched = false;
6811
+
6812
+      if (swiper.params.cssMode) {
6813
+        swiper.$wrapperEl.css('scroll-snap-type', '');
6814
+        $wrapperEl.transition('');
6815
+      }
6816
+
6817
+      if (params.hide) {
6818
+        clearTimeout(swiper.scrollbar.dragTimeout);
6819
+        swiper.scrollbar.dragTimeout = nextTick(function () {
6820
+          $el.css('opacity', 0);
6821
+          $el.transition(400);
6822
+        }, 1000);
6823
+      }
6824
+
6825
+      swiper.emit('scrollbarDragEnd', e);
6826
+
6827
+      if (params.snapOnRelease) {
6828
+        swiper.slideToClosest();
6829
+      }
6830
+    },
6831
+    enableDraggable: function enableDraggable() {
6832
+      var swiper = this;
6833
+      if (!swiper.params.scrollbar.el) return;
6834
+      var document = getDocument();
6835
+      var scrollbar = swiper.scrollbar,
6836
+          touchEventsTouch = swiper.touchEventsTouch,
6837
+          touchEventsDesktop = swiper.touchEventsDesktop,
6838
+          params = swiper.params,
6839
+          support = swiper.support;
6840
+      var $el = scrollbar.$el;
6841
+      var target = $el[0];
6842
+      var activeListener = support.passiveListener && params.passiveListeners ? {
6843
+        passive: false,
6844
+        capture: false
6845
+      } : false;
6846
+      var passiveListener = support.passiveListener && params.passiveListeners ? {
6847
+        passive: true,
6848
+        capture: false
6849
+      } : false;
6850
+      if (!target) return;
6851
+
6852
+      if (!support.touch) {
6853
+        target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6854
+        document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6855
+        document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6856
+      } else {
6857
+        target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6858
+        target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6859
+        target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6860
+      }
6861
+    },
6862
+    disableDraggable: function disableDraggable() {
6863
+      var swiper = this;
6864
+      if (!swiper.params.scrollbar.el) return;
6865
+      var document = getDocument();
6866
+      var scrollbar = swiper.scrollbar,
6867
+          touchEventsTouch = swiper.touchEventsTouch,
6868
+          touchEventsDesktop = swiper.touchEventsDesktop,
6869
+          params = swiper.params,
6870
+          support = swiper.support;
6871
+      var $el = scrollbar.$el;
6872
+      var target = $el[0];
6873
+      var activeListener = support.passiveListener && params.passiveListeners ? {
6874
+        passive: false,
6875
+        capture: false
6876
+      } : false;
6877
+      var passiveListener = support.passiveListener && params.passiveListeners ? {
6878
+        passive: true,
6879
+        capture: false
6880
+      } : false;
6881
+      if (!target) return;
6882
+
6883
+      if (!support.touch) {
6884
+        target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6885
+        document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6886
+        document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6887
+      } else {
6888
+        target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6889
+        target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6890
+        target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6891
+      }
6892
+    },
6893
+    init: function init() {
6894
+      var swiper = this;
6895
+      if (!swiper.params.scrollbar.el) return;
6896
+      var scrollbar = swiper.scrollbar,
6897
+          $swiperEl = swiper.$el;
6898
+      var params = swiper.params.scrollbar;
6899
+      var $el = $(params.el);
6900
+
6901
+      if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
6902
+        $el = $swiperEl.find(params.el);
6903
+      }
6904
+
6905
+      var $dragEl = $el.find("." + swiper.params.scrollbar.dragClass);
6906
+
6907
+      if ($dragEl.length === 0) {
6908
+        $dragEl = $("<div class=\"" + swiper.params.scrollbar.dragClass + "\"></div>");
6909
+        $el.append($dragEl);
6910
+      }
6911
+
6912
+      extend$1(scrollbar, {
6913
+        $el: $el,
6914
+        el: $el[0],
6915
+        $dragEl: $dragEl,
6916
+        dragEl: $dragEl[0]
6917
+      });
6918
+
6919
+      if (params.draggable) {
6920
+        scrollbar.enableDraggable();
6921
+      }
6922
+    },
6923
+    destroy: function destroy() {
6924
+      var swiper = this;
6925
+      swiper.scrollbar.disableDraggable();
6926
+    }
6927
+  };
6928
+  var Scrollbar$1 = {
6929
+    name: 'scrollbar',
6930
+    params: {
6931
+      scrollbar: {
6932
+        el: null,
6933
+        dragSize: 'auto',
6934
+        hide: false,
6935
+        draggable: false,
6936
+        snapOnRelease: true,
6937
+        lockClass: 'swiper-scrollbar-lock',
6938
+        dragClass: 'swiper-scrollbar-drag'
6939
+      }
6940
+    },
6941
+    create: function create() {
6942
+      var swiper = this;
6943
+      bindModuleMethods(swiper, {
6944
+        scrollbar: _extends({
6945
+          isTouched: false,
6946
+          timeout: null,
6947
+          dragTimeout: null
6948
+        }, Scrollbar)
6949
+      });
6950
+    },
6951
+    on: {
6952
+      init: function init(swiper) {
6953
+        swiper.scrollbar.init();
6954
+        swiper.scrollbar.updateSize();
6955
+        swiper.scrollbar.setTranslate();
6956
+      },
6957
+      update: function update(swiper) {
6958
+        swiper.scrollbar.updateSize();
6959
+      },
6960
+      resize: function resize(swiper) {
6961
+        swiper.scrollbar.updateSize();
6962
+      },
6963
+      observerUpdate: function observerUpdate(swiper) {
6964
+        swiper.scrollbar.updateSize();
6965
+      },
6966
+      setTranslate: function setTranslate(swiper) {
6967
+        swiper.scrollbar.setTranslate();
6968
+      },
6969
+      setTransition: function setTransition(swiper, duration) {
6970
+        swiper.scrollbar.setTransition(duration);
6971
+      },
6972
+      destroy: function destroy(swiper) {
6973
+        swiper.scrollbar.destroy();
6974
+      }
6975
+    }
6976
+  };
6977
+
6978
+  var Parallax = {
6979
+    setTransform: function setTransform(el, progress) {
6980
+      var swiper = this;
6981
+      var rtl = swiper.rtl;
6982
+      var $el = $(el);
6983
+      var rtlFactor = rtl ? -1 : 1;
6984
+      var p = $el.attr('data-swiper-parallax') || '0';
6985
+      var x = $el.attr('data-swiper-parallax-x');
6986
+      var y = $el.attr('data-swiper-parallax-y');
6987
+      var scale = $el.attr('data-swiper-parallax-scale');
6988
+      var opacity = $el.attr('data-swiper-parallax-opacity');
6989
+
6990
+      if (x || y) {
6991
+        x = x || '0';
6992
+        y = y || '0';
6993
+      } else if (swiper.isHorizontal()) {
6994
+        x = p;
6995
+        y = '0';
6996
+      } else {
6997
+        y = p;
6998
+        x = '0';
6999
+      }
7000
+
7001
+      if (x.indexOf('%') >= 0) {
7002
+        x = parseInt(x, 10) * progress * rtlFactor + "%";
7003
+      } else {
7004
+        x = x * progress * rtlFactor + "px";
7005
+      }
7006
+
7007
+      if (y.indexOf('%') >= 0) {
7008
+        y = parseInt(y, 10) * progress + "%";
7009
+      } else {
7010
+        y = y * progress + "px";
7011
+      }
7012
+
7013
+      if (typeof opacity !== 'undefined' && opacity !== null) {
7014
+        var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
7015
+        $el[0].style.opacity = currentOpacity;
7016
+      }
7017
+
7018
+      if (typeof scale === 'undefined' || scale === null) {
7019
+        $el.transform("translate3d(" + x + ", " + y + ", 0px)");
7020
+      } else {
7021
+        var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
7022
+        $el.transform("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")");
7023
+      }
7024
+    },
7025
+    setTranslate: function setTranslate() {
7026
+      var swiper = this;
7027
+      var $el = swiper.$el,
7028
+          slides = swiper.slides,
7029
+          progress = swiper.progress,
7030
+          snapGrid = swiper.snapGrid;
7031
+      $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
7032
+        swiper.parallax.setTransform(el, progress);
7033
+      });
7034
+      slides.each(function (slideEl, slideIndex) {
7035
+        var slideProgress = slideEl.progress;
7036
+
7037
+        if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
7038
+          slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
7039
+        }
7040
+
7041
+        slideProgress = Math.min(Math.max(slideProgress, -1), 1);
7042
+        $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
7043
+          swiper.parallax.setTransform(el, slideProgress);
7044
+        });
7045
+      });
7046
+    },
7047
+    setTransition: function setTransition(duration) {
7048
+      if (duration === void 0) {
7049
+        duration = this.params.speed;
7050
+      }
7051
+
7052
+      var swiper = this;
7053
+      var $el = swiper.$el;
7054
+      $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {
7055
+        var $parallaxEl = $(parallaxEl);
7056
+        var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
7057
+        if (duration === 0) parallaxDuration = 0;
7058
+        $parallaxEl.transition(parallaxDuration);
7059
+      });
7060
+    }
7061
+  };
7062
+  var Parallax$1 = {
7063
+    name: 'parallax',
7064
+    params: {
7065
+      parallax: {
7066
+        enabled: false
7067
+      }
7068
+    },
7069
+    create: function create() {
7070
+      var swiper = this;
7071
+      bindModuleMethods(swiper, {
7072
+        parallax: _extends({}, Parallax)
7073
+      });
7074
+    },
7075
+    on: {
7076
+      beforeInit: function beforeInit(swiper) {
7077
+        if (!swiper.params.parallax.enabled) return;
7078
+        swiper.params.watchSlidesProgress = true;
7079
+        swiper.originalParams.watchSlidesProgress = true;
7080
+      },
7081
+      init: function init(swiper) {
7082
+        if (!swiper.params.parallax.enabled) return;
7083
+        swiper.parallax.setTranslate();
7084
+      },
7085
+      setTranslate: function setTranslate(swiper) {
7086
+        if (!swiper.params.parallax.enabled) return;
7087
+        swiper.parallax.setTranslate();
7088
+      },
7089
+      setTransition: function setTransition(swiper, duration) {
7090
+        if (!swiper.params.parallax.enabled) return;
7091
+        swiper.parallax.setTransition(duration);
7092
+      }
7093
+    }
7094
+  };
7095
+
7096
+  var Zoom = {
7097
+    // Calc Scale From Multi-touches
7098
+    getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
7099
+      if (e.targetTouches.length < 2) return 1;
7100
+      var x1 = e.targetTouches[0].pageX;
7101
+      var y1 = e.targetTouches[0].pageY;
7102
+      var x2 = e.targetTouches[1].pageX;
7103
+      var y2 = e.targetTouches[1].pageY;
7104
+      var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
7105
+      return distance;
7106
+    },
7107
+    // Events
7108
+    onGestureStart: function onGestureStart(e) {
7109
+      var swiper = this;
7110
+      var support = swiper.support;
7111
+      var params = swiper.params.zoom;
7112
+      var zoom = swiper.zoom;
7113
+      var gesture = zoom.gesture;
7114
+      zoom.fakeGestureTouched = false;
7115
+      zoom.fakeGestureMoved = false;
7116
+
7117
+      if (!support.gestures) {
7118
+        if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
7119
+          return;
7120
+        }
7121
+
7122
+        zoom.fakeGestureTouched = true;
7123
+        gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
7124
+      }
7125
+
7126
+      if (!gesture.$slideEl || !gesture.$slideEl.length) {
7127
+        gesture.$slideEl = $(e.target).closest("." + swiper.params.slideClass);
7128
+        if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
7129
+        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
7130
+        gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
7131
+        gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
7132
+
7133
+        if (gesture.$imageWrapEl.length === 0) {
7134
+          gesture.$imageEl = undefined;
7135
+          return;
7136
+        }
7137
+      }
7138
+
7139
+      if (gesture.$imageEl) {
7140
+        gesture.$imageEl.transition(0);
7141
+      }
7142
+
7143
+      swiper.zoom.isScaling = true;
7144
+    },
7145
+    onGestureChange: function onGestureChange(e) {
7146
+      var swiper = this;
7147
+      var support = swiper.support;
7148
+      var params = swiper.params.zoom;
7149
+      var zoom = swiper.zoom;
7150
+      var gesture = zoom.gesture;
7151
+
7152
+      if (!support.gestures) {
7153
+        if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
7154
+          return;
7155
+        }
7156
+
7157
+        zoom.fakeGestureMoved = true;
7158
+        gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
7159
+      }
7160
+
7161
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
7162
+        if (e.type === 'gesturechange') zoom.onGestureStart(e);
7163
+        return;
7164
+      }
7165
+
7166
+      if (support.gestures) {
7167
+        zoom.scale = e.scale * zoom.currentScale;
7168
+      } else {
7169
+        zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;
7170
+      }
7171
+
7172
+      if (zoom.scale > gesture.maxRatio) {
7173
+        zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);
7174
+      }
7175
+
7176
+      if (zoom.scale < params.minRatio) {
7177
+        zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);
7178
+      }
7179
+
7180
+      gesture.$imageEl.transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7181
+    },
7182
+    onGestureEnd: function onGestureEnd(e) {
7183
+      var swiper = this;
7184
+      var device = swiper.device;
7185
+      var support = swiper.support;
7186
+      var params = swiper.params.zoom;
7187
+      var zoom = swiper.zoom;
7188
+      var gesture = zoom.gesture;
7189
+
7190
+      if (!support.gestures) {
7191
+        if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
7192
+          return;
7193
+        }
7194
+
7195
+        if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {
7196
+          return;
7197
+        }
7198
+
7199
+        zoom.fakeGestureTouched = false;
7200
+        zoom.fakeGestureMoved = false;
7201
+      }
7202
+
7203
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7204
+      zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
7205
+      gesture.$imageEl.transition(swiper.params.speed).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7206
+      zoom.currentScale = zoom.scale;
7207
+      zoom.isScaling = false;
7208
+      if (zoom.scale === 1) gesture.$slideEl = undefined;
7209
+    },
7210
+    onTouchStart: function onTouchStart(e) {
7211
+      var swiper = this;
7212
+      var device = swiper.device;
7213
+      var zoom = swiper.zoom;
7214
+      var gesture = zoom.gesture,
7215
+          image = zoom.image;
7216
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7217
+      if (image.isTouched) return;
7218
+      if (device.android && e.cancelable) e.preventDefault();
7219
+      image.isTouched = true;
7220
+      image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
7221
+      image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
7222
+    },
7223
+    onTouchMove: function onTouchMove(e) {
7224
+      var swiper = this;
7225
+      var zoom = swiper.zoom;
7226
+      var gesture = zoom.gesture,
7227
+          image = zoom.image,
7228
+          velocity = zoom.velocity;
7229
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7230
+      swiper.allowClick = false;
7231
+      if (!image.isTouched || !gesture.$slideEl) return;
7232
+
7233
+      if (!image.isMoved) {
7234
+        image.width = gesture.$imageEl[0].offsetWidth;
7235
+        image.height = gesture.$imageEl[0].offsetHeight;
7236
+        image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
7237
+        image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
7238
+        gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
7239
+        gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
7240
+        gesture.$imageWrapEl.transition(0);
7241
+
7242
+        if (swiper.rtl) {
7243
+          image.startX = -image.startX;
7244
+          image.startY = -image.startY;
7245
+        }
7246
+      } // Define if we need image drag
7247
+
7248
+
7249
+      var scaledWidth = image.width * zoom.scale;
7250
+      var scaledHeight = image.height * zoom.scale;
7251
+      if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
7252
+      image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
7253
+      image.maxX = -image.minX;
7254
+      image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
7255
+      image.maxY = -image.minY;
7256
+      image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
7257
+      image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
7258
+
7259
+      if (!image.isMoved && !zoom.isScaling) {
7260
+        if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
7261
+          image.isTouched = false;
7262
+          return;
7263
+        }
7264
+
7265
+        if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
7266
+          image.isTouched = false;
7267
+          return;
7268
+        }
7269
+      }
7270
+
7271
+      if (e.cancelable) {
7272
+        e.preventDefault();
7273
+      }
7274
+
7275
+      e.stopPropagation();
7276
+      image.isMoved = true;
7277
+      image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
7278
+      image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
7279
+
7280
+      if (image.currentX < image.minX) {
7281
+        image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);
7282
+      }
7283
+
7284
+      if (image.currentX > image.maxX) {
7285
+        image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);
7286
+      }
7287
+
7288
+      if (image.currentY < image.minY) {
7289
+        image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);
7290
+      }
7291
+
7292
+      if (image.currentY > image.maxY) {
7293
+        image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);
7294
+      } // Velocity
7295
+
7296
+
7297
+      if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
7298
+      if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
7299
+      if (!velocity.prevTime) velocity.prevTime = Date.now();
7300
+      velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
7301
+      velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
7302
+      if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
7303
+      if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
7304
+      velocity.prevPositionX = image.touchesCurrent.x;
7305
+      velocity.prevPositionY = image.touchesCurrent.y;
7306
+      velocity.prevTime = Date.now();
7307
+      gesture.$imageWrapEl.transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
7308
+    },
7309
+    onTouchEnd: function onTouchEnd() {
7310
+      var swiper = this;
7311
+      var zoom = swiper.zoom;
7312
+      var gesture = zoom.gesture,
7313
+          image = zoom.image,
7314
+          velocity = zoom.velocity;
7315
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7316
+
7317
+      if (!image.isTouched || !image.isMoved) {
7318
+        image.isTouched = false;
7319
+        image.isMoved = false;
7320
+        return;
7321
+      }
7322
+
7323
+      image.isTouched = false;
7324
+      image.isMoved = false;
7325
+      var momentumDurationX = 300;
7326
+      var momentumDurationY = 300;
7327
+      var momentumDistanceX = velocity.x * momentumDurationX;
7328
+      var newPositionX = image.currentX + momentumDistanceX;
7329
+      var momentumDistanceY = velocity.y * momentumDurationY;
7330
+      var newPositionY = image.currentY + momentumDistanceY; // Fix duration
7331
+
7332
+      if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
7333
+      if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
7334
+      var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
7335
+      image.currentX = newPositionX;
7336
+      image.currentY = newPositionY; // Define if we need image drag
7337
+
7338
+      var scaledWidth = image.width * zoom.scale;
7339
+      var scaledHeight = image.height * zoom.scale;
7340
+      image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
7341
+      image.maxX = -image.minX;
7342
+      image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
7343
+      image.maxY = -image.minY;
7344
+      image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
7345
+      image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
7346
+      gesture.$imageWrapEl.transition(momentumDuration).transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
7347
+    },
7348
+    onTransitionEnd: function onTransitionEnd() {
7349
+      var swiper = this;
7350
+      var zoom = swiper.zoom;
7351
+      var gesture = zoom.gesture;
7352
+
7353
+      if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
7354
+        if (gesture.$imageEl) {
7355
+          gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
7356
+        }
7357
+
7358
+        if (gesture.$imageWrapEl) {
7359
+          gesture.$imageWrapEl.transform('translate3d(0,0,0)');
7360
+        }
7361
+
7362
+        zoom.scale = 1;
7363
+        zoom.currentScale = 1;
7364
+        gesture.$slideEl = undefined;
7365
+        gesture.$imageEl = undefined;
7366
+        gesture.$imageWrapEl = undefined;
7367
+      }
7368
+    },
7369
+    // Toggle Zoom
7370
+    toggle: function toggle(e) {
7371
+      var swiper = this;
7372
+      var zoom = swiper.zoom;
7373
+
7374
+      if (zoom.scale && zoom.scale !== 1) {
7375
+        // Zoom Out
7376
+        zoom.out();
7377
+      } else {
7378
+        // Zoom In
7379
+        zoom.in(e);
7380
+      }
7381
+    },
7382
+    in: function _in(e) {
7383
+      var swiper = this;
7384
+      var window = getWindow();
7385
+      var zoom = swiper.zoom;
7386
+      var params = swiper.params.zoom;
7387
+      var gesture = zoom.gesture,
7388
+          image = zoom.image;
7389
+
7390
+      if (!gesture.$slideEl) {
7391
+        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
7392
+          gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
7393
+        } else {
7394
+          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
7395
+        }
7396
+
7397
+        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
7398
+        gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
7399
+      }
7400
+
7401
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7402
+      gesture.$slideEl.addClass("" + params.zoomedSlideClass);
7403
+      var touchX;
7404
+      var touchY;
7405
+      var offsetX;
7406
+      var offsetY;
7407
+      var diffX;
7408
+      var diffY;
7409
+      var translateX;
7410
+      var translateY;
7411
+      var imageWidth;
7412
+      var imageHeight;
7413
+      var scaledWidth;
7414
+      var scaledHeight;
7415
+      var translateMinX;
7416
+      var translateMinY;
7417
+      var translateMaxX;
7418
+      var translateMaxY;
7419
+      var slideWidth;
7420
+      var slideHeight;
7421
+
7422
+      if (typeof image.touchesStart.x === 'undefined' && e) {
7423
+        touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
7424
+        touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
7425
+      } else {
7426
+        touchX = image.touchesStart.x;
7427
+        touchY = image.touchesStart.y;
7428
+      }
7429
+
7430
+      zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
7431
+      zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
7432
+
7433
+      if (e) {
7434
+        slideWidth = gesture.$slideEl[0].offsetWidth;
7435
+        slideHeight = gesture.$slideEl[0].offsetHeight;
7436
+        offsetX = gesture.$slideEl.offset().left + window.scrollX;
7437
+        offsetY = gesture.$slideEl.offset().top + window.scrollY;
7438
+        diffX = offsetX + slideWidth / 2 - touchX;
7439
+        diffY = offsetY + slideHeight / 2 - touchY;
7440
+        imageWidth = gesture.$imageEl[0].offsetWidth;
7441
+        imageHeight = gesture.$imageEl[0].offsetHeight;
7442
+        scaledWidth = imageWidth * zoom.scale;
7443
+        scaledHeight = imageHeight * zoom.scale;
7444
+        translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
7445
+        translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
7446
+        translateMaxX = -translateMinX;
7447
+        translateMaxY = -translateMinY;
7448
+        translateX = diffX * zoom.scale;
7449
+        translateY = diffY * zoom.scale;
7450
+
7451
+        if (translateX < translateMinX) {
7452
+          translateX = translateMinX;
7453
+        }
7454
+
7455
+        if (translateX > translateMaxX) {
7456
+          translateX = translateMaxX;
7457
+        }
7458
+
7459
+        if (translateY < translateMinY) {
7460
+          translateY = translateMinY;
7461
+        }
7462
+
7463
+        if (translateY > translateMaxY) {
7464
+          translateY = translateMaxY;
7465
+        }
7466
+      } else {
7467
+        translateX = 0;
7468
+        translateY = 0;
7469
+      }
7470
+
7471
+      gesture.$imageWrapEl.transition(300).transform("translate3d(" + translateX + "px, " + translateY + "px,0)");
7472
+      gesture.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7473
+    },
7474
+    out: function out() {
7475
+      var swiper = this;
7476
+      var zoom = swiper.zoom;
7477
+      var params = swiper.params.zoom;
7478
+      var gesture = zoom.gesture;
7479
+
7480
+      if (!gesture.$slideEl) {
7481
+        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
7482
+          gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
7483
+        } else {
7484
+          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
7485
+        }
7486
+
7487
+        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
7488
+        gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
7489
+      }
7490
+
7491
+      if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7492
+      zoom.scale = 1;
7493
+      zoom.currentScale = 1;
7494
+      gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
7495
+      gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
7496
+      gesture.$slideEl.removeClass("" + params.zoomedSlideClass);
7497
+      gesture.$slideEl = undefined;
7498
+    },
7499
+    toggleGestures: function toggleGestures(method) {
7500
+      var swiper = this;
7501
+      var zoom = swiper.zoom;
7502
+      var selector = zoom.slideSelector,
7503
+          passive = zoom.passiveListener;
7504
+      swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);
7505
+      swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);
7506
+      swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);
7507
+    },
7508
+    enableGestures: function enableGestures() {
7509
+      if (this.zoom.gesturesEnabled) return;
7510
+      this.zoom.gesturesEnabled = true;
7511
+      this.zoom.toggleGestures('on');
7512
+    },
7513
+    disableGestures: function disableGestures() {
7514
+      if (!this.zoom.gesturesEnabled) return;
7515
+      this.zoom.gesturesEnabled = false;
7516
+      this.zoom.toggleGestures('off');
7517
+    },
7518
+    // Attach/Detach Events
7519
+    enable: function enable() {
7520
+      var swiper = this;
7521
+      var support = swiper.support;
7522
+      var zoom = swiper.zoom;
7523
+      if (zoom.enabled) return;
7524
+      zoom.enabled = true;
7525
+      var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
7526
+        passive: true,
7527
+        capture: false
7528
+      } : false;
7529
+      var activeListenerWithCapture = support.passiveListener ? {
7530
+        passive: false,
7531
+        capture: true
7532
+      } : true;
7533
+      var slideSelector = "." + swiper.params.slideClass;
7534
+      swiper.zoom.passiveListener = passiveListener;
7535
+      swiper.zoom.slideSelector = slideSelector; // Scale image
7536
+
7537
+      if (support.gestures) {
7538
+        swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
7539
+        swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
7540
+      } else if (swiper.touchEvents.start === 'touchstart') {
7541
+        swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
7542
+        swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
7543
+        swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
7544
+
7545
+        if (swiper.touchEvents.cancel) {
7546
+          swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
7547
+        }
7548
+      } // Move image
7549
+
7550
+
7551
+      swiper.$wrapperEl.on(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
7552
+    },
7553
+    disable: function disable() {
7554
+      var swiper = this;
7555
+      var zoom = swiper.zoom;
7556
+      if (!zoom.enabled) return;
7557
+      var support = swiper.support;
7558
+      swiper.zoom.enabled = false;
7559
+      var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
7560
+        passive: true,
7561
+        capture: false
7562
+      } : false;
7563
+      var activeListenerWithCapture = support.passiveListener ? {
7564
+        passive: false,
7565
+        capture: true
7566
+      } : true;
7567
+      var slideSelector = "." + swiper.params.slideClass; // Scale image
7568
+
7569
+      if (support.gestures) {
7570
+        swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
7571
+        swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
7572
+      } else if (swiper.touchEvents.start === 'touchstart') {
7573
+        swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
7574
+        swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
7575
+        swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
7576
+
7577
+        if (swiper.touchEvents.cancel) {
7578
+          swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
7579
+        }
7580
+      } // Move image
7581
+
7582
+
7583
+      swiper.$wrapperEl.off(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
7584
+    }
7585
+  };
7586
+  var Zoom$1 = {
7587
+    name: 'zoom',
7588
+    params: {
7589
+      zoom: {
7590
+        enabled: false,
7591
+        maxRatio: 3,
7592
+        minRatio: 1,
7593
+        toggle: true,
7594
+        containerClass: 'swiper-zoom-container',
7595
+        zoomedSlideClass: 'swiper-slide-zoomed'
7596
+      }
7597
+    },
7598
+    create: function create() {
7599
+      var swiper = this;
7600
+      bindModuleMethods(swiper, {
7601
+        zoom: _extends({
7602
+          enabled: false,
7603
+          scale: 1,
7604
+          currentScale: 1,
7605
+          isScaling: false,
7606
+          gesture: {
7607
+            $slideEl: undefined,
7608
+            slideWidth: undefined,
7609
+            slideHeight: undefined,
7610
+            $imageEl: undefined,
7611
+            $imageWrapEl: undefined,
7612
+            maxRatio: 3
7613
+          },
7614
+          image: {
7615
+            isTouched: undefined,
7616
+            isMoved: undefined,
7617
+            currentX: undefined,
7618
+            currentY: undefined,
7619
+            minX: undefined,
7620
+            minY: undefined,
7621
+            maxX: undefined,
7622
+            maxY: undefined,
7623
+            width: undefined,
7624
+            height: undefined,
7625
+            startX: undefined,
7626
+            startY: undefined,
7627
+            touchesStart: {},
7628
+            touchesCurrent: {}
7629
+          },
7630
+          velocity: {
7631
+            x: undefined,
7632
+            y: undefined,
7633
+            prevPositionX: undefined,
7634
+            prevPositionY: undefined,
7635
+            prevTime: undefined
7636
+          }
7637
+        }, Zoom)
7638
+      });
7639
+      var scale = 1;
7640
+      Object.defineProperty(swiper.zoom, 'scale', {
7641
+        get: function get() {
7642
+          return scale;
7643
+        },
7644
+        set: function set(value) {
7645
+          if (scale !== value) {
7646
+            var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
7647
+            var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
7648
+            swiper.emit('zoomChange', value, imageEl, slideEl);
7649
+          }
7650
+
7651
+          scale = value;
7652
+        }
7653
+      });
7654
+    },
7655
+    on: {
7656
+      init: function init(swiper) {
7657
+        if (swiper.params.zoom.enabled) {
7658
+          swiper.zoom.enable();
7659
+        }
7660
+      },
7661
+      destroy: function destroy(swiper) {
7662
+        swiper.zoom.disable();
7663
+      },
7664
+      touchStart: function touchStart(swiper, e) {
7665
+        if (!swiper.zoom.enabled) return;
7666
+        swiper.zoom.onTouchStart(e);
7667
+      },
7668
+      touchEnd: function touchEnd(swiper, e) {
7669
+        if (!swiper.zoom.enabled) return;
7670
+        swiper.zoom.onTouchEnd(e);
7671
+      },
7672
+      doubleTap: function doubleTap(swiper, e) {
7673
+        if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
7674
+          swiper.zoom.toggle(e);
7675
+        }
7676
+      },
7677
+      transitionEnd: function transitionEnd(swiper) {
7678
+        if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
7679
+          swiper.zoom.onTransitionEnd();
7680
+        }
7681
+      },
7682
+      slideChange: function slideChange(swiper) {
7683
+        if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
7684
+          swiper.zoom.onTransitionEnd();
7685
+        }
7686
+      }
7687
+    }
7688
+  };
7689
+
7690
+  var Lazy = {
7691
+    loadInSlide: function loadInSlide(index, loadInDuplicate) {
7692
+      if (loadInDuplicate === void 0) {
7693
+        loadInDuplicate = true;
7694
+      }
7695
+
7696
+      var swiper = this;
7697
+      var params = swiper.params.lazy;
7698
+      if (typeof index === 'undefined') return;
7699
+      if (swiper.slides.length === 0) return;
7700
+      var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7701
+      var $slideEl = isVirtual ? swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + index + "\"]") : swiper.slides.eq(index);
7702
+      var $images = $slideEl.find("." + params.elementClass + ":not(." + params.loadedClass + "):not(." + params.loadingClass + ")");
7703
+
7704
+      if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
7705
+        $images.push($slideEl[0]);
7706
+      }
7707
+
7708
+      if ($images.length === 0) return;
7709
+      $images.each(function (imageEl) {
7710
+        var $imageEl = $(imageEl);
7711
+        $imageEl.addClass(params.loadingClass);
7712
+        var background = $imageEl.attr('data-background');
7713
+        var src = $imageEl.attr('data-src');
7714
+        var srcset = $imageEl.attr('data-srcset');
7715
+        var sizes = $imageEl.attr('data-sizes');
7716
+        var $pictureEl = $imageEl.parent('picture');
7717
+        swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {
7718
+          if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
7719
+
7720
+          if (background) {
7721
+            $imageEl.css('background-image', "url(\"" + background + "\")");
7722
+            $imageEl.removeAttr('data-background');
7723
+          } else {
7724
+            if (srcset) {
7725
+              $imageEl.attr('srcset', srcset);
7726
+              $imageEl.removeAttr('data-srcset');
7727
+            }
7728
+
7729
+            if (sizes) {
7730
+              $imageEl.attr('sizes', sizes);
7731
+              $imageEl.removeAttr('data-sizes');
7732
+            }
7733
+
7734
+            if ($pictureEl.length) {
7735
+              $pictureEl.children('source').each(function (sourceEl) {
7736
+                var $source = $(sourceEl);
7737
+
7738
+                if ($source.attr('data-srcset')) {
7739
+                  $source.attr('srcset', $source.attr('data-srcset'));
7740
+                  $source.removeAttr('data-srcset');
7741
+                }
7742
+              });
7743
+            }
7744
+
7745
+            if (src) {
7746
+              $imageEl.attr('src', src);
7747
+              $imageEl.removeAttr('data-src');
7748
+            }
7749
+          }
7750
+
7751
+          $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
7752
+          $slideEl.find("." + params.preloaderClass).remove();
7753
+
7754
+          if (swiper.params.loop && loadInDuplicate) {
7755
+            var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
7756
+
7757
+            if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
7758
+              var originalSlide = swiper.$wrapperEl.children("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + swiper.params.slideDuplicateClass + ")");
7759
+              swiper.lazy.loadInSlide(originalSlide.index(), false);
7760
+            } else {
7761
+              var duplicatedSlide = swiper.$wrapperEl.children("." + swiper.params.slideDuplicateClass + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]");
7762
+              swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
7763
+            }
7764
+          }
7765
+
7766
+          swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
7767
+
7768
+          if (swiper.params.autoHeight) {
7769
+            swiper.updateAutoHeight();
7770
+          }
7771
+        });
7772
+        swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
7773
+      });
7774
+    },
7775
+    load: function load() {
7776
+      var swiper = this;
7777
+      var $wrapperEl = swiper.$wrapperEl,
7778
+          swiperParams = swiper.params,
7779
+          slides = swiper.slides,
7780
+          activeIndex = swiper.activeIndex;
7781
+      var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
7782
+      var params = swiperParams.lazy;
7783
+      var slidesPerView = swiperParams.slidesPerView;
7784
+
7785
+      if (slidesPerView === 'auto') {
7786
+        slidesPerView = 0;
7787
+      }
7788
+
7789
+      function slideExist(index) {
7790
+        if (isVirtual) {
7791
+          if ($wrapperEl.children("." + swiperParams.slideClass + "[data-swiper-slide-index=\"" + index + "\"]").length) {
7792
+            return true;
7793
+          }
7794
+        } else if (slides[index]) return true;
7795
+
7796
+        return false;
7797
+      }
7798
+
7799
+      function slideIndex(slideEl) {
7800
+        if (isVirtual) {
7801
+          return $(slideEl).attr('data-swiper-slide-index');
7802
+        }
7803
+
7804
+        return $(slideEl).index();
7805
+      }
7806
+
7807
+      if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
7808
+
7809
+      if (swiper.params.watchSlidesVisibility) {
7810
+        $wrapperEl.children("." + swiperParams.slideVisibleClass).each(function (slideEl) {
7811
+          var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
7812
+          swiper.lazy.loadInSlide(index);
7813
+        });
7814
+      } else if (slidesPerView > 1) {
7815
+        for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
7816
+          if (slideExist(i)) swiper.lazy.loadInSlide(i);
7817
+        }
7818
+      } else {
7819
+        swiper.lazy.loadInSlide(activeIndex);
7820
+      }
7821
+
7822
+      if (params.loadPrevNext) {
7823
+        if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
7824
+          var amount = params.loadPrevNextAmount;
7825
+          var spv = slidesPerView;
7826
+          var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
7827
+          var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides
7828
+
7829
+          for (var _i = activeIndex + slidesPerView; _i < maxIndex; _i += 1) {
7830
+            if (slideExist(_i)) swiper.lazy.loadInSlide(_i);
7831
+          } // Prev Slides
7832
+
7833
+
7834
+          for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {
7835
+            if (slideExist(_i2)) swiper.lazy.loadInSlide(_i2);
7836
+          }
7837
+        } else {
7838
+          var nextSlide = $wrapperEl.children("." + swiperParams.slideNextClass);
7839
+          if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
7840
+          var prevSlide = $wrapperEl.children("." + swiperParams.slidePrevClass);
7841
+          if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
7842
+        }
7843
+      }
7844
+    },
7845
+    checkInViewOnLoad: function checkInViewOnLoad() {
7846
+      var window = getWindow();
7847
+      var swiper = this;
7848
+      if (!swiper || swiper.destroyed) return;
7849
+      var $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);
7850
+      var isWindow = $scrollElement[0] === window;
7851
+      var scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;
7852
+      var scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;
7853
+      var swiperOffset = swiper.$el.offset();
7854
+      var rtl = swiper.rtlTranslate;
7855
+      var inView = false;
7856
+      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
7857
+      var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
7858
+
7859
+      for (var i = 0; i < swiperCoord.length; i += 1) {
7860
+        var point = swiperCoord[i];
7861
+
7862
+        if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {
7863
+          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
7864
+
7865
+          inView = true;
7866
+        }
7867
+      }
7868
+
7869
+      if (inView) {
7870
+        swiper.lazy.load();
7871
+        $scrollElement.off('scroll', swiper.lazy.checkInViewOnLoad);
7872
+      } else if (!swiper.lazy.scrollHandlerAttached) {
7873
+        swiper.lazy.scrollHandlerAttached = true;
7874
+        $scrollElement.on('scroll', swiper.lazy.checkInViewOnLoad);
7875
+      }
7876
+    }
7877
+  };
7878
+  var Lazy$1 = {
7879
+    name: 'lazy',
7880
+    params: {
7881
+      lazy: {
7882
+        checkInView: false,
7883
+        enabled: false,
7884
+        loadPrevNext: false,
7885
+        loadPrevNextAmount: 1,
7886
+        loadOnTransitionStart: false,
7887
+        scrollingElement: '',
7888
+        elementClass: 'swiper-lazy',
7889
+        loadingClass: 'swiper-lazy-loading',
7890
+        loadedClass: 'swiper-lazy-loaded',
7891
+        preloaderClass: 'swiper-lazy-preloader'
7892
+      }
7893
+    },
7894
+    create: function create() {
7895
+      var swiper = this;
7896
+      bindModuleMethods(swiper, {
7897
+        lazy: _extends({
7898
+          initialImageLoaded: false
7899
+        }, Lazy)
7900
+      });
7901
+    },
7902
+    on: {
7903
+      beforeInit: function beforeInit(swiper) {
7904
+        if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
7905
+          swiper.params.preloadImages = false;
7906
+        }
7907
+      },
7908
+      init: function init(swiper) {
7909
+        if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
7910
+          if (swiper.params.lazy.checkInView) {
7911
+            swiper.lazy.checkInViewOnLoad();
7912
+          } else {
7913
+            swiper.lazy.load();
7914
+          }
7915
+        }
7916
+      },
7917
+      scroll: function scroll(swiper) {
7918
+        if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
7919
+          swiper.lazy.load();
7920
+        }
7921
+      },
7922
+      'scrollbarDragMove resize _freeModeNoMomentumRelease': function lazyLoad(swiper) {
7923
+        if (swiper.params.lazy.enabled) {
7924
+          swiper.lazy.load();
7925
+        }
7926
+      },
7927
+      transitionStart: function transitionStart(swiper) {
7928
+        if (swiper.params.lazy.enabled) {
7929
+          if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {
7930
+            swiper.lazy.load();
7931
+          }
7932
+        }
7933
+      },
7934
+      transitionEnd: function transitionEnd(swiper) {
7935
+        if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
7936
+          swiper.lazy.load();
7937
+        }
7938
+      },
7939
+      slideChange: function slideChange(swiper) {
7940
+        if (swiper.params.lazy.enabled && swiper.params.cssMode) {
7941
+          swiper.lazy.load();
7942
+        }
7943
+      }
7944
+    }
7945
+  };
7946
+
7947
+  var Controller = {
7948
+    LinearSpline: function LinearSpline(x, y) {
7949
+      var binarySearch = function search() {
7950
+        var maxIndex;
7951
+        var minIndex;
7952
+        var guess;
7953
+        return function (array, val) {
7954
+          minIndex = -1;
7955
+          maxIndex = array.length;
7956
+
7957
+          while (maxIndex - minIndex > 1) {
7958
+            guess = maxIndex + minIndex >> 1;
7959
+
7960
+            if (array[guess] <= val) {
7961
+              minIndex = guess;
7962
+            } else {
7963
+              maxIndex = guess;
7964
+            }
7965
+          }
7966
+
7967
+          return maxIndex;
7968
+        };
7969
+      }();
7970
+
7971
+      this.x = x;
7972
+      this.y = y;
7973
+      this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:
7974
+      // (x1,y1) is the known point before given value,
7975
+      // (x3,y3) is the known point after given value.
7976
+
7977
+      var i1;
7978
+      var i3;
7979
+
7980
+      this.interpolate = function interpolate(x2) {
7981
+        if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):
7982
+
7983
+        i3 = binarySearch(this.x, x2);
7984
+        i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:
7985
+        // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
7986
+
7987
+        return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
7988
+      };
7989
+
7990
+      return this;
7991
+    },
7992
+    // xxx: for now i will just save one spline function to to
7993
+    getInterpolateFunction: function getInterpolateFunction(c) {
7994
+      var swiper = this;
7995
+
7996
+      if (!swiper.controller.spline) {
7997
+        swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
7998
+      }
7999
+    },
8000
+    setTranslate: function setTranslate(_setTranslate, byController) {
8001
+      var swiper = this;
8002
+      var controlled = swiper.controller.control;
8003
+      var multiplier;
8004
+      var controlledTranslate;
8005
+      var Swiper = swiper.constructor;
8006
+
8007
+      function setControlledTranslate(c) {
8008
+        // this will create an Interpolate function based on the snapGrids
8009
+        // x is the Grid of the scrolled scroller and y will be the controlled scroller
8010
+        // it makes sense to create this only once and recall it for the interpolation
8011
+        // the function does a lot of value caching for performance
8012
+        var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
8013
+
8014
+        if (swiper.params.controller.by === 'slide') {
8015
+          swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
8016
+          // but it did not work out
8017
+
8018
+          controlledTranslate = -swiper.controller.spline.interpolate(-translate);
8019
+        }
8020
+
8021
+        if (!controlledTranslate || swiper.params.controller.by === 'container') {
8022
+          multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
8023
+          controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
8024
+        }
8025
+
8026
+        if (swiper.params.controller.inverse) {
8027
+          controlledTranslate = c.maxTranslate() - controlledTranslate;
8028
+        }
8029
+
8030
+        c.updateProgress(controlledTranslate);
8031
+        c.setTranslate(controlledTranslate, swiper);
8032
+        c.updateActiveIndex();
8033
+        c.updateSlidesClasses();
8034
+      }
8035
+
8036
+      if (Array.isArray(controlled)) {
8037
+        for (var i = 0; i < controlled.length; i += 1) {
8038
+          if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
8039
+            setControlledTranslate(controlled[i]);
8040
+          }
8041
+        }
8042
+      } else if (controlled instanceof Swiper && byController !== controlled) {
8043
+        setControlledTranslate(controlled);
8044
+      }
8045
+    },
8046
+    setTransition: function setTransition(duration, byController) {
8047
+      var swiper = this;
8048
+      var Swiper = swiper.constructor;
8049
+      var controlled = swiper.controller.control;
8050
+      var i;
8051
+
8052
+      function setControlledTransition(c) {
8053
+        c.setTransition(duration, swiper);
8054
+
8055
+        if (duration !== 0) {
8056
+          c.transitionStart();
8057
+
8058
+          if (c.params.autoHeight) {
8059
+            nextTick(function () {
8060
+              c.updateAutoHeight();
8061
+            });
8062
+          }
8063
+
8064
+          c.$wrapperEl.transitionEnd(function () {
8065
+            if (!controlled) return;
8066
+
8067
+            if (c.params.loop && swiper.params.controller.by === 'slide') {
8068
+              c.loopFix();
8069
+            }
8070
+
8071
+            c.transitionEnd();
8072
+          });
8073
+        }
8074
+      }
8075
+
8076
+      if (Array.isArray(controlled)) {
8077
+        for (i = 0; i < controlled.length; i += 1) {
8078
+          if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
8079
+            setControlledTransition(controlled[i]);
8080
+          }
8081
+        }
8082
+      } else if (controlled instanceof Swiper && byController !== controlled) {
8083
+        setControlledTransition(controlled);
8084
+      }
8085
+    }
8086
+  };
8087
+  var Controller$1 = {
8088
+    name: 'controller',
8089
+    params: {
8090
+      controller: {
8091
+        control: undefined,
8092
+        inverse: false,
8093
+        by: 'slide' // or 'container'
8094
+
8095
+      }
8096
+    },
8097
+    create: function create() {
8098
+      var swiper = this;
8099
+      bindModuleMethods(swiper, {
8100
+        controller: _extends({
8101
+          control: swiper.params.controller.control
8102
+        }, Controller)
8103
+      });
8104
+    },
8105
+    on: {
8106
+      update: function update(swiper) {
8107
+        if (!swiper.controller.control) return;
8108
+
8109
+        if (swiper.controller.spline) {
8110
+          swiper.controller.spline = undefined;
8111
+          delete swiper.controller.spline;
8112
+        }
8113
+      },
8114
+      resize: function resize(swiper) {
8115
+        if (!swiper.controller.control) return;
8116
+
8117
+        if (swiper.controller.spline) {
8118
+          swiper.controller.spline = undefined;
8119
+          delete swiper.controller.spline;
8120
+        }
8121
+      },
8122
+      observerUpdate: function observerUpdate(swiper) {
8123
+        if (!swiper.controller.control) return;
8124
+
8125
+        if (swiper.controller.spline) {
8126
+          swiper.controller.spline = undefined;
8127
+          delete swiper.controller.spline;
8128
+        }
8129
+      },
8130
+      setTranslate: function setTranslate(swiper, translate, byController) {
8131
+        if (!swiper.controller.control) return;
8132
+        swiper.controller.setTranslate(translate, byController);
8133
+      },
8134
+      setTransition: function setTransition(swiper, duration, byController) {
8135
+        if (!swiper.controller.control) return;
8136
+        swiper.controller.setTransition(duration, byController);
8137
+      }
8138
+    }
8139
+  };
8140
+
8141
+  var A11y = {
8142
+    getRandomNumber: function getRandomNumber(size) {
8143
+      if (size === void 0) {
8144
+        size = 16;
8145
+      }
8146
+
8147
+      var randomChar = function randomChar() {
8148
+        return Math.round(16 * Math.random()).toString(16);
8149
+      };
8150
+
8151
+      return 'x'.repeat(size).replace(/x/g, randomChar);
8152
+    },
8153
+    makeElFocusable: function makeElFocusable($el) {
8154
+      $el.attr('tabIndex', '0');
8155
+      return $el;
8156
+    },
8157
+    makeElNotFocusable: function makeElNotFocusable($el) {
8158
+      $el.attr('tabIndex', '-1');
8159
+      return $el;
8160
+    },
8161
+    addElRole: function addElRole($el, role) {
8162
+      $el.attr('role', role);
8163
+      return $el;
8164
+    },
8165
+    addElRoleDescription: function addElRoleDescription($el, description) {
8166
+      $el.attr('aria-role-description', description);
8167
+      return $el;
8168
+    },
8169
+    addElControls: function addElControls($el, controls) {
8170
+      $el.attr('aria-controls', controls);
8171
+      return $el;
8172
+    },
8173
+    addElLabel: function addElLabel($el, label) {
8174
+      $el.attr('aria-label', label);
8175
+      return $el;
8176
+    },
8177
+    addElId: function addElId($el, id) {
8178
+      $el.attr('id', id);
8179
+      return $el;
8180
+    },
8181
+    addElLive: function addElLive($el, live) {
8182
+      $el.attr('aria-live', live);
8183
+      return $el;
8184
+    },
8185
+    disableEl: function disableEl($el) {
8186
+      $el.attr('aria-disabled', true);
8187
+      return $el;
8188
+    },
8189
+    enableEl: function enableEl($el) {
8190
+      $el.attr('aria-disabled', false);
8191
+      return $el;
8192
+    },
8193
+    onEnterOrSpaceKey: function onEnterOrSpaceKey(e) {
8194
+      if (e.keyCode !== 13 && e.keyCode !== 32) return;
8195
+      var swiper = this;
8196
+      var params = swiper.params.a11y;
8197
+      var $targetEl = $(e.target);
8198
+
8199
+      if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
8200
+        if (!(swiper.isEnd && !swiper.params.loop)) {
8201
+          swiper.slideNext();
8202
+        }
8203
+
8204
+        if (swiper.isEnd) {
8205
+          swiper.a11y.notify(params.lastSlideMessage);
8206
+        } else {
8207
+          swiper.a11y.notify(params.nextSlideMessage);
8208
+        }
8209
+      }
8210
+
8211
+      if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
8212
+        if (!(swiper.isBeginning && !swiper.params.loop)) {
8213
+          swiper.slidePrev();
8214
+        }
8215
+
8216
+        if (swiper.isBeginning) {
8217
+          swiper.a11y.notify(params.firstSlideMessage);
8218
+        } else {
8219
+          swiper.a11y.notify(params.prevSlideMessage);
8220
+        }
8221
+      }
8222
+
8223
+      if (swiper.pagination && $targetEl.is("." + swiper.params.pagination.bulletClass.replace(/ /g, '.'))) {
8224
+        $targetEl[0].click();
8225
+      }
8226
+    },
8227
+    notify: function notify(message) {
8228
+      var swiper = this;
8229
+      var notification = swiper.a11y.liveRegion;
8230
+      if (notification.length === 0) return;
8231
+      notification.html('');
8232
+      notification.html(message);
8233
+    },
8234
+    updateNavigation: function updateNavigation() {
8235
+      var swiper = this;
8236
+      if (swiper.params.loop || !swiper.navigation) return;
8237
+      var _swiper$navigation = swiper.navigation,
8238
+          $nextEl = _swiper$navigation.$nextEl,
8239
+          $prevEl = _swiper$navigation.$prevEl;
8240
+
8241
+      if ($prevEl && $prevEl.length > 0) {
8242
+        if (swiper.isBeginning) {
8243
+          swiper.a11y.disableEl($prevEl);
8244
+          swiper.a11y.makeElNotFocusable($prevEl);
8245
+        } else {
8246
+          swiper.a11y.enableEl($prevEl);
8247
+          swiper.a11y.makeElFocusable($prevEl);
8248
+        }
8249
+      }
8250
+
8251
+      if ($nextEl && $nextEl.length > 0) {
8252
+        if (swiper.isEnd) {
8253
+          swiper.a11y.disableEl($nextEl);
8254
+          swiper.a11y.makeElNotFocusable($nextEl);
8255
+        } else {
8256
+          swiper.a11y.enableEl($nextEl);
8257
+          swiper.a11y.makeElFocusable($nextEl);
8258
+        }
8259
+      }
8260
+    },
8261
+    updatePagination: function updatePagination() {
8262
+      var swiper = this;
8263
+      var params = swiper.params.a11y;
8264
+
8265
+      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8266
+        swiper.pagination.bullets.each(function (bulletEl) {
8267
+          var $bulletEl = $(bulletEl);
8268
+          swiper.a11y.makeElFocusable($bulletEl);
8269
+
8270
+          if (!swiper.params.pagination.renderBullet) {
8271
+            swiper.a11y.addElRole($bulletEl, 'button');
8272
+            swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
8273
+          }
8274
+        });
8275
+      }
8276
+    },
8277
+    init: function init() {
8278
+      var swiper = this;
8279
+      var params = swiper.params.a11y;
8280
+      swiper.$el.append(swiper.a11y.liveRegion); // Container
8281
+
8282
+      var $containerEl = swiper.$el;
8283
+
8284
+      if (params.containerRoleDescriptionMessage) {
8285
+        swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
8286
+      }
8287
+
8288
+      if (params.containerMessage) {
8289
+        swiper.a11y.addElLabel($containerEl, params.containerMessage);
8290
+      } // Wrapper
8291
+
8292
+
8293
+      var $wrapperEl = swiper.$wrapperEl;
8294
+      var wrapperId = $wrapperEl.attr('id') || "swiper-wrapper-" + swiper.a11y.getRandomNumber(16);
8295
+      var live;
8296
+      swiper.a11y.addElId($wrapperEl, wrapperId);
8297
+
8298
+      if (swiper.params.autoplay && swiper.params.autoplay.enabled) {
8299
+        live = 'off';
8300
+      } else {
8301
+        live = 'polite';
8302
+      }
8303
+
8304
+      swiper.a11y.addElLive($wrapperEl, live); // Slide
8305
+
8306
+      if (params.itemRoleDescriptionMessage) {
8307
+        swiper.a11y.addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);
8308
+      }
8309
+
8310
+      swiper.a11y.addElRole($(swiper.slides), 'group');
8311
+      swiper.slides.each(function (slideEl) {
8312
+        var $slideEl = $(slideEl);
8313
+        swiper.a11y.addElLabel($slideEl, $slideEl.index() + 1 + " / " + swiper.slides.length);
8314
+      }); // Navigation
8315
+
8316
+      var $nextEl;
8317
+      var $prevEl;
8318
+
8319
+      if (swiper.navigation && swiper.navigation.$nextEl) {
8320
+        $nextEl = swiper.navigation.$nextEl;
8321
+      }
8322
+
8323
+      if (swiper.navigation && swiper.navigation.$prevEl) {
8324
+        $prevEl = swiper.navigation.$prevEl;
8325
+      }
8326
+
8327
+      if ($nextEl && $nextEl.length) {
8328
+        swiper.a11y.makeElFocusable($nextEl);
8329
+
8330
+        if ($nextEl[0].tagName !== 'BUTTON') {
8331
+          swiper.a11y.addElRole($nextEl, 'button');
8332
+          $nextEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);
8333
+        }
8334
+
8335
+        swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
8336
+        swiper.a11y.addElControls($nextEl, wrapperId);
8337
+      }
8338
+
8339
+      if ($prevEl && $prevEl.length) {
8340
+        swiper.a11y.makeElFocusable($prevEl);
8341
+
8342
+        if ($prevEl[0].tagName !== 'BUTTON') {
8343
+          swiper.a11y.addElRole($prevEl, 'button');
8344
+          $prevEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);
8345
+        }
8346
+
8347
+        swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
8348
+        swiper.a11y.addElControls($prevEl, wrapperId);
8349
+      } // Pagination
8350
+
8351
+
8352
+      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8353
+        swiper.pagination.$el.on('keydown', "." + swiper.params.pagination.bulletClass.replace(/ /g, '.'), swiper.a11y.onEnterOrSpaceKey);
8354
+      }
8355
+    },
8356
+    destroy: function destroy() {
8357
+      var swiper = this;
8358
+      if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
8359
+      var $nextEl;
8360
+      var $prevEl;
8361
+
8362
+      if (swiper.navigation && swiper.navigation.$nextEl) {
8363
+        $nextEl = swiper.navigation.$nextEl;
8364
+      }
8365
+
8366
+      if (swiper.navigation && swiper.navigation.$prevEl) {
8367
+        $prevEl = swiper.navigation.$prevEl;
8368
+      }
8369
+
8370
+      if ($nextEl) {
8371
+        $nextEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);
8372
+      }
8373
+
8374
+      if ($prevEl) {
8375
+        $prevEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);
8376
+      } // Pagination
8377
+
8378
+
8379
+      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8380
+        swiper.pagination.$el.off('keydown', "." + swiper.params.pagination.bulletClass.replace(/ /g, '.'), swiper.a11y.onEnterOrSpaceKey);
8381
+      }
8382
+    }
8383
+  };
8384
+  var A11y$1 = {
8385
+    name: 'a11y',
8386
+    params: {
8387
+      a11y: {
8388
+        enabled: true,
8389
+        notificationClass: 'swiper-notification',
8390
+        prevSlideMessage: 'Previous slide',
8391
+        nextSlideMessage: 'Next slide',
8392
+        firstSlideMessage: 'This is the first slide',
8393
+        lastSlideMessage: 'This is the last slide',
8394
+        paginationBulletMessage: 'Go to slide {{index}}',
8395
+        containerMessage: null,
8396
+        containerRoleDescriptionMessage: null,
8397
+        itemRoleDescriptionMessage: null
8398
+      }
8399
+    },
8400
+    create: function create() {
8401
+      var swiper = this;
8402
+      bindModuleMethods(swiper, {
8403
+        a11y: _extends({}, A11y, {
8404
+          liveRegion: $("<span class=\"" + swiper.params.a11y.notificationClass + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")
8405
+        })
8406
+      });
8407
+    },
8408
+    on: {
8409
+      afterInit: function afterInit(swiper) {
8410
+        if (!swiper.params.a11y.enabled) return;
8411
+        swiper.a11y.init();
8412
+        swiper.a11y.updateNavigation();
8413
+      },
8414
+      toEdge: function toEdge(swiper) {
8415
+        if (!swiper.params.a11y.enabled) return;
8416
+        swiper.a11y.updateNavigation();
8417
+      },
8418
+      fromEdge: function fromEdge(swiper) {
8419
+        if (!swiper.params.a11y.enabled) return;
8420
+        swiper.a11y.updateNavigation();
8421
+      },
8422
+      paginationUpdate: function paginationUpdate(swiper) {
8423
+        if (!swiper.params.a11y.enabled) return;
8424
+        swiper.a11y.updatePagination();
8425
+      },
8426
+      destroy: function destroy(swiper) {
8427
+        if (!swiper.params.a11y.enabled) return;
8428
+        swiper.a11y.destroy();
8429
+      }
8430
+    }
8431
+  };
8432
+
8433
+  var History = {
8434
+    init: function init() {
8435
+      var swiper = this;
8436
+      var window = getWindow();
8437
+      if (!swiper.params.history) return;
8438
+
8439
+      if (!window.history || !window.history.pushState) {
8440
+        swiper.params.history.enabled = false;
8441
+        swiper.params.hashNavigation.enabled = true;
8442
+        return;
8443
+      }
8444
+
8445
+      var history = swiper.history;
8446
+      history.initialized = true;
8447
+      history.paths = History.getPathValues(swiper.params.url);
8448
+      if (!history.paths.key && !history.paths.value) return;
8449
+      history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
8450
+
8451
+      if (!swiper.params.history.replaceState) {
8452
+        window.addEventListener('popstate', swiper.history.setHistoryPopState);
8453
+      }
8454
+    },
8455
+    destroy: function destroy() {
8456
+      var swiper = this;
8457
+      var window = getWindow();
8458
+
8459
+      if (!swiper.params.history.replaceState) {
8460
+        window.removeEventListener('popstate', swiper.history.setHistoryPopState);
8461
+      }
8462
+    },
8463
+    setHistoryPopState: function setHistoryPopState() {
8464
+      var swiper = this;
8465
+      swiper.history.paths = History.getPathValues(swiper.params.url);
8466
+      swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
8467
+    },
8468
+    getPathValues: function getPathValues(urlOverride) {
8469
+      var window = getWindow();
8470
+      var location;
8471
+
8472
+      if (urlOverride) {
8473
+        location = new URL(urlOverride);
8474
+      } else {
8475
+        location = window.location;
8476
+      }
8477
+
8478
+      var pathArray = location.pathname.slice(1).split('/').filter(function (part) {
8479
+        return part !== '';
8480
+      });
8481
+      var total = pathArray.length;
8482
+      var key = pathArray[total - 2];
8483
+      var value = pathArray[total - 1];
8484
+      return {
8485
+        key: key,
8486
+        value: value
8487
+      };
8488
+    },
8489
+    setHistory: function setHistory(key, index) {
8490
+      var swiper = this;
8491
+      var window = getWindow();
8492
+      if (!swiper.history.initialized || !swiper.params.history.enabled) return;
8493
+      var location;
8494
+
8495
+      if (swiper.params.url) {
8496
+        location = new URL(swiper.params.url);
8497
+      } else {
8498
+        location = window.location;
8499
+      }
8500
+
8501
+      var slide = swiper.slides.eq(index);
8502
+      var value = History.slugify(slide.attr('data-history'));
8503
+
8504
+      if (!location.pathname.includes(key)) {
8505
+        value = key + "/" + value;
8506
+      }
8507
+
8508
+      var currentState = window.history.state;
8509
+
8510
+      if (currentState && currentState.value === value) {
8511
+        return;
8512
+      }
8513
+
8514
+      if (swiper.params.history.replaceState) {
8515
+        window.history.replaceState({
8516
+          value: value
8517
+        }, null, value);
8518
+      } else {
8519
+        window.history.pushState({
8520
+          value: value
8521
+        }, null, value);
8522
+      }
8523
+    },
8524
+    slugify: function slugify(text) {
8525
+      return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
8526
+    },
8527
+    scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
8528
+      var swiper = this;
8529
+
8530
+      if (value) {
8531
+        for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
8532
+          var slide = swiper.slides.eq(i);
8533
+          var slideHistory = History.slugify(slide.attr('data-history'));
8534
+
8535
+          if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
8536
+            var index = slide.index();
8537
+            swiper.slideTo(index, speed, runCallbacks);
8538
+          }
8539
+        }
8540
+      } else {
8541
+        swiper.slideTo(0, speed, runCallbacks);
8542
+      }
8543
+    }
8544
+  };
8545
+  var History$1 = {
8546
+    name: 'history',
8547
+    params: {
8548
+      history: {
8549
+        enabled: false,
8550
+        replaceState: false,
8551
+        key: 'slides'
8552
+      }
8553
+    },
8554
+    create: function create() {
8555
+      var swiper = this;
8556
+      bindModuleMethods(swiper, {
8557
+        history: _extends({}, History)
8558
+      });
8559
+    },
8560
+    on: {
8561
+      init: function init(swiper) {
8562
+        if (swiper.params.history.enabled) {
8563
+          swiper.history.init();
8564
+        }
8565
+      },
8566
+      destroy: function destroy(swiper) {
8567
+        if (swiper.params.history.enabled) {
8568
+          swiper.history.destroy();
8569
+        }
8570
+      },
8571
+      transitionEnd: function transitionEnd(swiper) {
8572
+        if (swiper.history.initialized) {
8573
+          swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
8574
+        }
8575
+      },
8576
+      slideChange: function slideChange(swiper) {
8577
+        if (swiper.history.initialized && swiper.params.cssMode) {
8578
+          swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
8579
+        }
8580
+      }
8581
+    }
8582
+  };
8583
+
8584
+  var HashNavigation = {
8585
+    onHashCange: function onHashCange() {
8586
+      var swiper = this;
8587
+      var document = getDocument();
8588
+      swiper.emit('hashChange');
8589
+      var newHash = document.location.hash.replace('#', '');
8590
+      var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
8591
+
8592
+      if (newHash !== activeSlideHash) {
8593
+        var newIndex = swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-hash=\"" + newHash + "\"]").index();
8594
+        if (typeof newIndex === 'undefined') return;
8595
+        swiper.slideTo(newIndex);
8596
+      }
8597
+    },
8598
+    setHash: function setHash() {
8599
+      var swiper = this;
8600
+      var window = getWindow();
8601
+      var document = getDocument();
8602
+      if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
8603
+
8604
+      if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
8605
+        window.history.replaceState(null, null, "#" + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');
8606
+        swiper.emit('hashSet');
8607
+      } else {
8608
+        var slide = swiper.slides.eq(swiper.activeIndex);
8609
+        var hash = slide.attr('data-hash') || slide.attr('data-history');
8610
+        document.location.hash = hash || '';
8611
+        swiper.emit('hashSet');
8612
+      }
8613
+    },
8614
+    init: function init() {
8615
+      var swiper = this;
8616
+      var document = getDocument();
8617
+      var window = getWindow();
8618
+      if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
8619
+      swiper.hashNavigation.initialized = true;
8620
+      var hash = document.location.hash.replace('#', '');
8621
+
8622
+      if (hash) {
8623
+        var speed = 0;
8624
+
8625
+        for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
8626
+          var slide = swiper.slides.eq(i);
8627
+          var slideHash = slide.attr('data-hash') || slide.attr('data-history');
8628
+
8629
+          if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
8630
+            var index = slide.index();
8631
+            swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
8632
+          }
8633
+        }
8634
+      }
8635
+
8636
+      if (swiper.params.hashNavigation.watchState) {
8637
+        $(window).on('hashchange', swiper.hashNavigation.onHashCange);
8638
+      }
8639
+    },
8640
+    destroy: function destroy() {
8641
+      var swiper = this;
8642
+      var window = getWindow();
8643
+
8644
+      if (swiper.params.hashNavigation.watchState) {
8645
+        $(window).off('hashchange', swiper.hashNavigation.onHashCange);
8646
+      }
8647
+    }
8648
+  };
8649
+  var HashNavigation$1 = {
8650
+    name: 'hash-navigation',
8651
+    params: {
8652
+      hashNavigation: {
8653
+        enabled: false,
8654
+        replaceState: false,
8655
+        watchState: false
8656
+      }
8657
+    },
8658
+    create: function create() {
8659
+      var swiper = this;
8660
+      bindModuleMethods(swiper, {
8661
+        hashNavigation: _extends({
8662
+          initialized: false
8663
+        }, HashNavigation)
8664
+      });
8665
+    },
8666
+    on: {
8667
+      init: function init(swiper) {
8668
+        if (swiper.params.hashNavigation.enabled) {
8669
+          swiper.hashNavigation.init();
8670
+        }
8671
+      },
8672
+      destroy: function destroy(swiper) {
8673
+        if (swiper.params.hashNavigation.enabled) {
8674
+          swiper.hashNavigation.destroy();
8675
+        }
8676
+      },
8677
+      transitionEnd: function transitionEnd(swiper) {
8678
+        if (swiper.hashNavigation.initialized) {
8679
+          swiper.hashNavigation.setHash();
8680
+        }
8681
+      },
8682
+      slideChange: function slideChange(swiper) {
8683
+        if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
8684
+          swiper.hashNavigation.setHash();
8685
+        }
8686
+      }
8687
+    }
8688
+  };
8689
+
8690
+  var Autoplay = {
8691
+    run: function run() {
8692
+      var swiper = this;
8693
+      var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
8694
+      var delay = swiper.params.autoplay.delay;
8695
+
8696
+      if ($activeSlideEl.attr('data-swiper-autoplay')) {
8697
+        delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
8698
+      }
8699
+
8700
+      clearTimeout(swiper.autoplay.timeout);
8701
+      swiper.autoplay.timeout = nextTick(function () {
8702
+        var autoplayResult;
8703
+
8704
+        if (swiper.params.autoplay.reverseDirection) {
8705
+          if (swiper.params.loop) {
8706
+            swiper.loopFix();
8707
+            autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
8708
+            swiper.emit('autoplay');
8709
+          } else if (!swiper.isBeginning) {
8710
+            autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
8711
+            swiper.emit('autoplay');
8712
+          } else if (!swiper.params.autoplay.stopOnLastSlide) {
8713
+            autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
8714
+            swiper.emit('autoplay');
8715
+          } else {
8716
+            swiper.autoplay.stop();
8717
+          }
8718
+        } else if (swiper.params.loop) {
8719
+          swiper.loopFix();
8720
+          autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
8721
+          swiper.emit('autoplay');
8722
+        } else if (!swiper.isEnd) {
8723
+          autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
8724
+          swiper.emit('autoplay');
8725
+        } else if (!swiper.params.autoplay.stopOnLastSlide) {
8726
+          autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);
8727
+          swiper.emit('autoplay');
8728
+        } else {
8729
+          swiper.autoplay.stop();
8730
+        }
8731
+
8732
+        if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {
8733
+          swiper.autoplay.run();
8734
+        }
8735
+      }, delay);
8736
+    },
8737
+    start: function start() {
8738
+      var swiper = this;
8739
+      if (typeof swiper.autoplay.timeout !== 'undefined') return false;
8740
+      if (swiper.autoplay.running) return false;
8741
+      swiper.autoplay.running = true;
8742
+      swiper.emit('autoplayStart');
8743
+      swiper.autoplay.run();
8744
+      return true;
8745
+    },
8746
+    stop: function stop() {
8747
+      var swiper = this;
8748
+      if (!swiper.autoplay.running) return false;
8749
+      if (typeof swiper.autoplay.timeout === 'undefined') return false;
8750
+
8751
+      if (swiper.autoplay.timeout) {
8752
+        clearTimeout(swiper.autoplay.timeout);
8753
+        swiper.autoplay.timeout = undefined;
8754
+      }
8755
+
8756
+      swiper.autoplay.running = false;
8757
+      swiper.emit('autoplayStop');
8758
+      return true;
8759
+    },
8760
+    pause: function pause(speed) {
8761
+      var swiper = this;
8762
+      if (!swiper.autoplay.running) return;
8763
+      if (swiper.autoplay.paused) return;
8764
+      if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
8765
+      swiper.autoplay.paused = true;
8766
+
8767
+      if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
8768
+        swiper.autoplay.paused = false;
8769
+        swiper.autoplay.run();
8770
+      } else {
8771
+        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
8772
+        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
8773
+      }
8774
+    },
8775
+    onVisibilityChange: function onVisibilityChange() {
8776
+      var swiper = this;
8777
+      var document = getDocument();
8778
+
8779
+      if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
8780
+        swiper.autoplay.pause();
8781
+      }
8782
+
8783
+      if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
8784
+        swiper.autoplay.run();
8785
+        swiper.autoplay.paused = false;
8786
+      }
8787
+    },
8788
+    onTransitionEnd: function onTransitionEnd(e) {
8789
+      var swiper = this;
8790
+      if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
8791
+      if (e.target !== swiper.$wrapperEl[0]) return;
8792
+      swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
8793
+      swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
8794
+      swiper.autoplay.paused = false;
8795
+
8796
+      if (!swiper.autoplay.running) {
8797
+        swiper.autoplay.stop();
8798
+      } else {
8799
+        swiper.autoplay.run();
8800
+      }
8801
+    }
8802
+  };
8803
+  var Autoplay$1 = {
8804
+    name: 'autoplay',
8805
+    params: {
8806
+      autoplay: {
8807
+        enabled: false,
8808
+        delay: 3000,
8809
+        waitForTransition: true,
8810
+        disableOnInteraction: true,
8811
+        stopOnLastSlide: false,
8812
+        reverseDirection: false
8813
+      }
8814
+    },
8815
+    create: function create() {
8816
+      var swiper = this;
8817
+      bindModuleMethods(swiper, {
8818
+        autoplay: _extends({}, Autoplay, {
8819
+          running: false,
8820
+          paused: false
8821
+        })
8822
+      });
8823
+    },
8824
+    on: {
8825
+      init: function init(swiper) {
8826
+        if (swiper.params.autoplay.enabled) {
8827
+          swiper.autoplay.start();
8828
+          var document = getDocument();
8829
+          document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
8830
+        }
8831
+      },
8832
+      beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {
8833
+        if (swiper.autoplay.running) {
8834
+          if (internal || !swiper.params.autoplay.disableOnInteraction) {
8835
+            swiper.autoplay.pause(speed);
8836
+          } else {
8837
+            swiper.autoplay.stop();
8838
+          }
8839
+        }
8840
+      },
8841
+      sliderFirstMove: function sliderFirstMove(swiper) {
8842
+        if (swiper.autoplay.running) {
8843
+          if (swiper.params.autoplay.disableOnInteraction) {
8844
+            swiper.autoplay.stop();
8845
+          } else {
8846
+            swiper.autoplay.pause();
8847
+          }
8848
+        }
8849
+      },
8850
+      touchEnd: function touchEnd(swiper) {
8851
+        if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
8852
+          swiper.autoplay.run();
8853
+        }
8854
+      },
8855
+      destroy: function destroy(swiper) {
8856
+        if (swiper.autoplay.running) {
8857
+          swiper.autoplay.stop();
8858
+        }
8859
+
8860
+        var document = getDocument();
8861
+        document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
8862
+      }
8863
+    }
8864
+  };
8865
+
8866
+  var Fade = {
8867
+    setTranslate: function setTranslate() {
8868
+      var swiper = this;
8869
+      var slides = swiper.slides;
8870
+
8871
+      for (var i = 0; i < slides.length; i += 1) {
8872
+        var $slideEl = swiper.slides.eq(i);
8873
+        var offset = $slideEl[0].swiperSlideOffset;
8874
+        var tx = -offset;
8875
+        if (!swiper.params.virtualTranslate) tx -= swiper.translate;
8876
+        var ty = 0;
8877
+
8878
+        if (!swiper.isHorizontal()) {
8879
+          ty = tx;
8880
+          tx = 0;
8881
+        }
8882
+
8883
+        var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
8884
+        $slideEl.css({
8885
+          opacity: slideOpacity
8886
+        }).transform("translate3d(" + tx + "px, " + ty + "px, 0px)");
8887
+      }
8888
+    },
8889
+    setTransition: function setTransition(duration) {
8890
+      var swiper = this;
8891
+      var slides = swiper.slides,
8892
+          $wrapperEl = swiper.$wrapperEl;
8893
+      slides.transition(duration);
8894
+
8895
+      if (swiper.params.virtualTranslate && duration !== 0) {
8896
+        var eventTriggered = false;
8897
+        slides.transitionEnd(function () {
8898
+          if (eventTriggered) return;
8899
+          if (!swiper || swiper.destroyed) return;
8900
+          eventTriggered = true;
8901
+          swiper.animating = false;
8902
+          var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
8903
+
8904
+          for (var i = 0; i < triggerEvents.length; i += 1) {
8905
+            $wrapperEl.trigger(triggerEvents[i]);
8906
+          }
8907
+        });
8908
+      }
8909
+    }
8910
+  };
8911
+  var EffectFade = {
8912
+    name: 'effect-fade',
8913
+    params: {
8914
+      fadeEffect: {
8915
+        crossFade: false
8916
+      }
8917
+    },
8918
+    create: function create() {
8919
+      var swiper = this;
8920
+      bindModuleMethods(swiper, {
8921
+        fadeEffect: _extends({}, Fade)
8922
+      });
8923
+    },
8924
+    on: {
8925
+      beforeInit: function beforeInit(swiper) {
8926
+        if (swiper.params.effect !== 'fade') return;
8927
+        swiper.classNames.push(swiper.params.containerModifierClass + "fade");
8928
+        var overwriteParams = {
8929
+          slidesPerView: 1,
8930
+          slidesPerColumn: 1,
8931
+          slidesPerGroup: 1,
8932
+          watchSlidesProgress: true,
8933
+          spaceBetween: 0,
8934
+          virtualTranslate: true
8935
+        };
8936
+        extend$1(swiper.params, overwriteParams);
8937
+        extend$1(swiper.originalParams, overwriteParams);
8938
+      },
8939
+      setTranslate: function setTranslate(swiper) {
8940
+        if (swiper.params.effect !== 'fade') return;
8941
+        swiper.fadeEffect.setTranslate();
8942
+      },
8943
+      setTransition: function setTransition(swiper, duration) {
8944
+        if (swiper.params.effect !== 'fade') return;
8945
+        swiper.fadeEffect.setTransition(duration);
8946
+      }
8947
+    }
8948
+  };
8949
+
8950
+  var Cube = {
8951
+    setTranslate: function setTranslate() {
8952
+      var swiper = this;
8953
+      var $el = swiper.$el,
8954
+          $wrapperEl = swiper.$wrapperEl,
8955
+          slides = swiper.slides,
8956
+          swiperWidth = swiper.width,
8957
+          swiperHeight = swiper.height,
8958
+          rtl = swiper.rtlTranslate,
8959
+          swiperSize = swiper.size,
8960
+          browser = swiper.browser;
8961
+      var params = swiper.params.cubeEffect;
8962
+      var isHorizontal = swiper.isHorizontal();
8963
+      var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
8964
+      var wrapperRotate = 0;
8965
+      var $cubeShadowEl;
8966
+
8967
+      if (params.shadow) {
8968
+        if (isHorizontal) {
8969
+          $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
8970
+
8971
+          if ($cubeShadowEl.length === 0) {
8972
+            $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
8973
+            $wrapperEl.append($cubeShadowEl);
8974
+          }
8975
+
8976
+          $cubeShadowEl.css({
8977
+            height: swiperWidth + "px"
8978
+          });
8979
+        } else {
8980
+          $cubeShadowEl = $el.find('.swiper-cube-shadow');
8981
+
8982
+          if ($cubeShadowEl.length === 0) {
8983
+            $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
8984
+            $el.append($cubeShadowEl);
8985
+          }
8986
+        }
8987
+      }
8988
+
8989
+      for (var i = 0; i < slides.length; i += 1) {
8990
+        var $slideEl = slides.eq(i);
8991
+        var slideIndex = i;
8992
+
8993
+        if (isVirtual) {
8994
+          slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
8995
+        }
8996
+
8997
+        var slideAngle = slideIndex * 90;
8998
+        var round = Math.floor(slideAngle / 360);
8999
+
9000
+        if (rtl) {
9001
+          slideAngle = -slideAngle;
9002
+          round = Math.floor(-slideAngle / 360);
9003
+        }
9004
+
9005
+        var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
9006
+        var tx = 0;
9007
+        var ty = 0;
9008
+        var tz = 0;
9009
+
9010
+        if (slideIndex % 4 === 0) {
9011
+          tx = -round * 4 * swiperSize;
9012
+          tz = 0;
9013
+        } else if ((slideIndex - 1) % 4 === 0) {
9014
+          tx = 0;
9015
+          tz = -round * 4 * swiperSize;
9016
+        } else if ((slideIndex - 2) % 4 === 0) {
9017
+          tx = swiperSize + round * 4 * swiperSize;
9018
+          tz = swiperSize;
9019
+        } else if ((slideIndex - 3) % 4 === 0) {
9020
+          tx = -swiperSize;
9021
+          tz = 3 * swiperSize + swiperSize * 4 * round;
9022
+        }
9023
+
9024
+        if (rtl) {
9025
+          tx = -tx;
9026
+        }
9027
+
9028
+        if (!isHorizontal) {
9029
+          ty = tx;
9030
+          tx = 0;
9031
+        }
9032
+
9033
+        var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
9034
+
9035
+        if (progress <= 1 && progress > -1) {
9036
+          wrapperRotate = slideIndex * 90 + progress * 90;
9037
+          if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
9038
+        }
9039
+
9040
+        $slideEl.transform(transform);
9041
+
9042
+        if (params.slideShadows) {
9043
+          // Set shadows
9044
+          var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
9045
+          var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
9046
+
9047
+          if (shadowBefore.length === 0) {
9048
+            shadowBefore = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
9049
+            $slideEl.append(shadowBefore);
9050
+          }
9051
+
9052
+          if (shadowAfter.length === 0) {
9053
+            shadowAfter = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
9054
+            $slideEl.append(shadowAfter);
9055
+          }
9056
+
9057
+          if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
9058
+          if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
9059
+        }
9060
+      }
9061
+
9062
+      $wrapperEl.css({
9063
+        '-webkit-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
9064
+        '-moz-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
9065
+        '-ms-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
9066
+        'transform-origin': "50% 50% -" + swiperSize / 2 + "px"
9067
+      });
9068
+
9069
+      if (params.shadow) {
9070
+        if (isHorizontal) {
9071
+          $cubeShadowEl.transform("translate3d(0px, " + (swiperWidth / 2 + params.shadowOffset) + "px, " + -swiperWidth / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + params.shadowScale + ")");
9072
+        } else {
9073
+          var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
9074
+          var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
9075
+          var scale1 = params.shadowScale;
9076
+          var scale2 = params.shadowScale / multiplier;
9077
+          var offset = params.shadowOffset;
9078
+          $cubeShadowEl.transform("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + (swiperHeight / 2 + offset) + "px, " + -swiperHeight / 2 / scale2 + "px) rotateX(-90deg)");
9079
+        }
9080
+      }
9081
+
9082
+      var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;
9083
+      $wrapperEl.transform("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)");
9084
+    },
9085
+    setTransition: function setTransition(duration) {
9086
+      var swiper = this;
9087
+      var $el = swiper.$el,
9088
+          slides = swiper.slides;
9089
+      slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
9090
+
9091
+      if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
9092
+        $el.find('.swiper-cube-shadow').transition(duration);
9093
+      }
9094
+    }
9095
+  };
9096
+  var EffectCube = {
9097
+    name: 'effect-cube',
9098
+    params: {
9099
+      cubeEffect: {
9100
+        slideShadows: true,
9101
+        shadow: true,
9102
+        shadowOffset: 20,
9103
+        shadowScale: 0.94
9104
+      }
9105
+    },
9106
+    create: function create() {
9107
+      var swiper = this;
9108
+      bindModuleMethods(swiper, {
9109
+        cubeEffect: _extends({}, Cube)
9110
+      });
9111
+    },
9112
+    on: {
9113
+      beforeInit: function beforeInit(swiper) {
9114
+        if (swiper.params.effect !== 'cube') return;
9115
+        swiper.classNames.push(swiper.params.containerModifierClass + "cube");
9116
+        swiper.classNames.push(swiper.params.containerModifierClass + "3d");
9117
+        var overwriteParams = {
9118
+          slidesPerView: 1,
9119
+          slidesPerColumn: 1,
9120
+          slidesPerGroup: 1,
9121
+          watchSlidesProgress: true,
9122
+          resistanceRatio: 0,
9123
+          spaceBetween: 0,
9124
+          centeredSlides: false,
9125
+          virtualTranslate: true
9126
+        };
9127
+        extend$1(swiper.params, overwriteParams);
9128
+        extend$1(swiper.originalParams, overwriteParams);
9129
+      },
9130
+      setTranslate: function setTranslate(swiper) {
9131
+        if (swiper.params.effect !== 'cube') return;
9132
+        swiper.cubeEffect.setTranslate();
9133
+      },
9134
+      setTransition: function setTransition(swiper, duration) {
9135
+        if (swiper.params.effect !== 'cube') return;
9136
+        swiper.cubeEffect.setTransition(duration);
9137
+      }
9138
+    }
9139
+  };
9140
+
9141
+  var Flip = {
9142
+    setTranslate: function setTranslate() {
9143
+      var swiper = this;
9144
+      var slides = swiper.slides,
9145
+          rtl = swiper.rtlTranslate;
9146
+
9147
+      for (var i = 0; i < slides.length; i += 1) {
9148
+        var $slideEl = slides.eq(i);
9149
+        var progress = $slideEl[0].progress;
9150
+
9151
+        if (swiper.params.flipEffect.limitRotation) {
9152
+          progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
9153
+        }
9154
+
9155
+        var offset = $slideEl[0].swiperSlideOffset;
9156
+        var rotate = -180 * progress;
9157
+        var rotateY = rotate;
9158
+        var rotateX = 0;
9159
+        var tx = -offset;
9160
+        var ty = 0;
9161
+
9162
+        if (!swiper.isHorizontal()) {
9163
+          ty = tx;
9164
+          tx = 0;
9165
+          rotateX = -rotateY;
9166
+          rotateY = 0;
9167
+        } else if (rtl) {
9168
+          rotateY = -rotateY;
9169
+        }
9170
+
9171
+        $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
9172
+
9173
+        if (swiper.params.flipEffect.slideShadows) {
9174
+          // Set shadows
9175
+          var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
9176
+          var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
9177
+
9178
+          if (shadowBefore.length === 0) {
9179
+            shadowBefore = $("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>");
9180
+            $slideEl.append(shadowBefore);
9181
+          }
9182
+
9183
+          if (shadowAfter.length === 0) {
9184
+            shadowAfter = $("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>");
9185
+            $slideEl.append(shadowAfter);
9186
+          }
9187
+
9188
+          if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
9189
+          if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
9190
+        }
9191
+
9192
+        $slideEl.transform("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)");
9193
+      }
9194
+    },
9195
+    setTransition: function setTransition(duration) {
9196
+      var swiper = this;
9197
+      var slides = swiper.slides,
9198
+          activeIndex = swiper.activeIndex,
9199
+          $wrapperEl = swiper.$wrapperEl;
9200
+      slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
9201
+
9202
+      if (swiper.params.virtualTranslate && duration !== 0) {
9203
+        var eventTriggered = false; // eslint-disable-next-line
9204
+
9205
+        slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
9206
+          if (eventTriggered) return;
9207
+          if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
9208
+
9209
+          eventTriggered = true;
9210
+          swiper.animating = false;
9211
+          var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
9212
+
9213
+          for (var i = 0; i < triggerEvents.length; i += 1) {
9214
+            $wrapperEl.trigger(triggerEvents[i]);
9215
+          }
9216
+        });
9217
+      }
9218
+    }
9219
+  };
9220
+  var EffectFlip = {
9221
+    name: 'effect-flip',
9222
+    params: {
9223
+      flipEffect: {
9224
+        slideShadows: true,
9225
+        limitRotation: true
9226
+      }
9227
+    },
9228
+    create: function create() {
9229
+      var swiper = this;
9230
+      bindModuleMethods(swiper, {
9231
+        flipEffect: _extends({}, Flip)
9232
+      });
9233
+    },
9234
+    on: {
9235
+      beforeInit: function beforeInit(swiper) {
9236
+        if (swiper.params.effect !== 'flip') return;
9237
+        swiper.classNames.push(swiper.params.containerModifierClass + "flip");
9238
+        swiper.classNames.push(swiper.params.containerModifierClass + "3d");
9239
+        var overwriteParams = {
9240
+          slidesPerView: 1,
9241
+          slidesPerColumn: 1,
9242
+          slidesPerGroup: 1,
9243
+          watchSlidesProgress: true,
9244
+          spaceBetween: 0,
9245
+          virtualTranslate: true
9246
+        };
9247
+        extend$1(swiper.params, overwriteParams);
9248
+        extend$1(swiper.originalParams, overwriteParams);
9249
+      },
9250
+      setTranslate: function setTranslate(swiper) {
9251
+        if (swiper.params.effect !== 'flip') return;
9252
+        swiper.flipEffect.setTranslate();
9253
+      },
9254
+      setTransition: function setTransition(swiper, duration) {
9255
+        if (swiper.params.effect !== 'flip') return;
9256
+        swiper.flipEffect.setTransition(duration);
9257
+      }
9258
+    }
9259
+  };
9260
+
9261
+  var Coverflow = {
9262
+    setTranslate: function setTranslate() {
9263
+      var swiper = this;
9264
+      var swiperWidth = swiper.width,
9265
+          swiperHeight = swiper.height,
9266
+          slides = swiper.slides,
9267
+          slidesSizesGrid = swiper.slidesSizesGrid;
9268
+      var params = swiper.params.coverflowEffect;
9269
+      var isHorizontal = swiper.isHorizontal();
9270
+      var transform = swiper.translate;
9271
+      var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
9272
+      var rotate = isHorizontal ? params.rotate : -params.rotate;
9273
+      var translate = params.depth; // Each slide offset from center
9274
+
9275
+      for (var i = 0, length = slides.length; i < length; i += 1) {
9276
+        var $slideEl = slides.eq(i);
9277
+        var slideSize = slidesSizesGrid[i];
9278
+        var slideOffset = $slideEl[0].swiperSlideOffset;
9279
+        var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;
9280
+        var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
9281
+        var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0
9282
+
9283
+        var translateZ = -translate * Math.abs(offsetMultiplier);
9284
+        var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders
9285
+
9286
+        if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
9287
+          stretch = parseFloat(params.stretch) / 100 * slideSize;
9288
+        }
9289
+
9290
+        var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
9291
+        var translateX = isHorizontal ? stretch * offsetMultiplier : 0;
9292
+        var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values
9293
+
9294
+        if (Math.abs(translateX) < 0.001) translateX = 0;
9295
+        if (Math.abs(translateY) < 0.001) translateY = 0;
9296
+        if (Math.abs(translateZ) < 0.001) translateZ = 0;
9297
+        if (Math.abs(rotateY) < 0.001) rotateY = 0;
9298
+        if (Math.abs(rotateX) < 0.001) rotateX = 0;
9299
+        if (Math.abs(scale) < 0.001) scale = 0;
9300
+        var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px)  rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg) scale(" + scale + ")";
9301
+        $slideEl.transform(slideTransform);
9302
+        $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
9303
+
9304
+        if (params.slideShadows) {
9305
+          // Set shadows
9306
+          var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
9307
+          var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
9308
+
9309
+          if ($shadowBeforeEl.length === 0) {
9310
+            $shadowBeforeEl = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
9311
+            $slideEl.append($shadowBeforeEl);
9312
+          }
9313
+
9314
+          if ($shadowAfterEl.length === 0) {
9315
+            $shadowAfterEl = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
9316
+            $slideEl.append($shadowAfterEl);
9317
+          }
9318
+
9319
+          if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
9320
+          if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
9321
+        }
9322
+      }
9323
+    },
9324
+    setTransition: function setTransition(duration) {
9325
+      var swiper = this;
9326
+      swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
9327
+    }
9328
+  };
9329
+  var EffectCoverflow = {
9330
+    name: 'effect-coverflow',
9331
+    params: {
9332
+      coverflowEffect: {
9333
+        rotate: 50,
9334
+        stretch: 0,
9335
+        depth: 100,
9336
+        scale: 1,
9337
+        modifier: 1,
9338
+        slideShadows: true
9339
+      }
9340
+    },
9341
+    create: function create() {
9342
+      var swiper = this;
9343
+      bindModuleMethods(swiper, {
9344
+        coverflowEffect: _extends({}, Coverflow)
9345
+      });
9346
+    },
9347
+    on: {
9348
+      beforeInit: function beforeInit(swiper) {
9349
+        if (swiper.params.effect !== 'coverflow') return;
9350
+        swiper.classNames.push(swiper.params.containerModifierClass + "coverflow");
9351
+        swiper.classNames.push(swiper.params.containerModifierClass + "3d");
9352
+        swiper.params.watchSlidesProgress = true;
9353
+        swiper.originalParams.watchSlidesProgress = true;
9354
+      },
9355
+      setTranslate: function setTranslate(swiper) {
9356
+        if (swiper.params.effect !== 'coverflow') return;
9357
+        swiper.coverflowEffect.setTranslate();
9358
+      },
9359
+      setTransition: function setTransition(swiper, duration) {
9360
+        if (swiper.params.effect !== 'coverflow') return;
9361
+        swiper.coverflowEffect.setTransition(duration);
9362
+      }
9363
+    }
9364
+  };
9365
+
9366
+  var Thumbs = {
9367
+    init: function init() {
9368
+      var swiper = this;
9369
+      var thumbsParams = swiper.params.thumbs;
9370
+      if (swiper.thumbs.initialized) return false;
9371
+      swiper.thumbs.initialized = true;
9372
+      var SwiperClass = swiper.constructor;
9373
+
9374
+      if (thumbsParams.swiper instanceof SwiperClass) {
9375
+        swiper.thumbs.swiper = thumbsParams.swiper;
9376
+        extend$1(swiper.thumbs.swiper.originalParams, {
9377
+          watchSlidesProgress: true,
9378
+          slideToClickedSlide: false
9379
+        });
9380
+        extend$1(swiper.thumbs.swiper.params, {
9381
+          watchSlidesProgress: true,
9382
+          slideToClickedSlide: false
9383
+        });
9384
+      } else if (isObject$1(thumbsParams.swiper)) {
9385
+        swiper.thumbs.swiper = new SwiperClass(extend$1({}, thumbsParams.swiper, {
9386
+          watchSlidesVisibility: true,
9387
+          watchSlidesProgress: true,
9388
+          slideToClickedSlide: false
9389
+        }));
9390
+        swiper.thumbs.swiperCreated = true;
9391
+      }
9392
+
9393
+      swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
9394
+      swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
9395
+      return true;
9396
+    },
9397
+    onThumbClick: function onThumbClick() {
9398
+      var swiper = this;
9399
+      var thumbsSwiper = swiper.thumbs.swiper;
9400
+      if (!thumbsSwiper) return;
9401
+      var clickedIndex = thumbsSwiper.clickedIndex;
9402
+      var clickedSlide = thumbsSwiper.clickedSlide;
9403
+      if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
9404
+      if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
9405
+      var slideToIndex;
9406
+
9407
+      if (thumbsSwiper.params.loop) {
9408
+        slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
9409
+      } else {
9410
+        slideToIndex = clickedIndex;
9411
+      }
9412
+
9413
+      if (swiper.params.loop) {
9414
+        var currentIndex = swiper.activeIndex;
9415
+
9416
+        if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
9417
+          swiper.loopFix(); // eslint-disable-next-line
9418
+
9419
+          swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
9420
+          currentIndex = swiper.activeIndex;
9421
+        }
9422
+
9423
+        var prevIndex = swiper.slides.eq(currentIndex).prevAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
9424
+        var nextIndex = swiper.slides.eq(currentIndex).nextAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
9425
+        if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
9426
+      }
9427
+
9428
+      swiper.slideTo(slideToIndex);
9429
+    },
9430
+    update: function update(initial) {
9431
+      var swiper = this;
9432
+      var thumbsSwiper = swiper.thumbs.swiper;
9433
+      if (!thumbsSwiper) return;
9434
+      var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
9435
+      var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
9436
+      var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
9437
+
9438
+      if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
9439
+        var currentThumbsIndex = thumbsSwiper.activeIndex;
9440
+        var newThumbsIndex;
9441
+        var direction;
9442
+
9443
+        if (thumbsSwiper.params.loop) {
9444
+          if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
9445
+            thumbsSwiper.loopFix(); // eslint-disable-next-line
9446
+
9447
+            thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
9448
+            currentThumbsIndex = thumbsSwiper.activeIndex;
9449
+          } // Find actual thumbs index to slide to
9450
+
9451
+
9452
+          var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
9453
+          var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
9454
+          if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;
9455
+          direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
9456
+        } else {
9457
+          newThumbsIndex = swiper.realIndex;
9458
+          direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
9459
+        }
9460
+
9461
+        if (useOffset) {
9462
+          newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
9463
+        }
9464
+
9465
+        if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
9466
+          if (thumbsSwiper.params.centeredSlides) {
9467
+            if (newThumbsIndex > currentThumbsIndex) {
9468
+              newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
9469
+            } else {
9470
+              newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
9471
+            }
9472
+          } else if (newThumbsIndex > currentThumbsIndex) {
9473
+            newThumbsIndex = newThumbsIndex - slidesPerView + 1;
9474
+          }
9475
+
9476
+          thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
9477
+        }
9478
+      } // Activate thumbs
9479
+
9480
+
9481
+      var thumbsToActivate = 1;
9482
+      var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
9483
+
9484
+      if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
9485
+        thumbsToActivate = swiper.params.slidesPerView;
9486
+      }
9487
+
9488
+      if (!swiper.params.thumbs.multipleActiveThumbs) {
9489
+        thumbsToActivate = 1;
9490
+      }
9491
+
9492
+      thumbsToActivate = Math.floor(thumbsToActivate);
9493
+      thumbsSwiper.slides.removeClass(thumbActiveClass);
9494
+
9495
+      if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
9496
+        for (var i = 0; i < thumbsToActivate; i += 1) {
9497
+          thumbsSwiper.$wrapperEl.children("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]").addClass(thumbActiveClass);
9498
+        }
9499
+      } else {
9500
+        for (var _i = 0; _i < thumbsToActivate; _i += 1) {
9501
+          thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);
9502
+        }
9503
+      }
9504
+    }
9505
+  };
9506
+  var Thumbs$1 = {
9507
+    name: 'thumbs',
9508
+    params: {
9509
+      thumbs: {
9510
+        swiper: null,
9511
+        multipleActiveThumbs: true,
9512
+        autoScrollOffset: 0,
9513
+        slideThumbActiveClass: 'swiper-slide-thumb-active',
9514
+        thumbsContainerClass: 'swiper-container-thumbs'
9515
+      }
9516
+    },
9517
+    create: function create() {
9518
+      var swiper = this;
9519
+      bindModuleMethods(swiper, {
9520
+        thumbs: _extends({
9521
+          swiper: null,
9522
+          initialized: false
9523
+        }, Thumbs)
9524
+      });
9525
+    },
9526
+    on: {
9527
+      beforeInit: function beforeInit(swiper) {
9528
+        var thumbs = swiper.params.thumbs;
9529
+        if (!thumbs || !thumbs.swiper) return;
9530
+        swiper.thumbs.init();
9531
+        swiper.thumbs.update(true);
9532
+      },
9533
+      slideChange: function slideChange(swiper) {
9534
+        if (!swiper.thumbs.swiper) return;
9535
+        swiper.thumbs.update();
9536
+      },
9537
+      update: function update(swiper) {
9538
+        if (!swiper.thumbs.swiper) return;
9539
+        swiper.thumbs.update();
9540
+      },
9541
+      resize: function resize(swiper) {
9542
+        if (!swiper.thumbs.swiper) return;
9543
+        swiper.thumbs.update();
9544
+      },
9545
+      observerUpdate: function observerUpdate(swiper) {
9546
+        if (!swiper.thumbs.swiper) return;
9547
+        swiper.thumbs.update();
9548
+      },
9549
+      setTransition: function setTransition(swiper, duration) {
9550
+        var thumbsSwiper = swiper.thumbs.swiper;
9551
+        if (!thumbsSwiper) return;
9552
+        thumbsSwiper.setTransition(duration);
9553
+      },
9554
+      beforeDestroy: function beforeDestroy(swiper) {
9555
+        var thumbsSwiper = swiper.thumbs.swiper;
9556
+        if (!thumbsSwiper) return;
9557
+
9558
+        if (swiper.thumbs.swiperCreated && thumbsSwiper) {
9559
+          thumbsSwiper.destroy();
9560
+        }
9561
+      }
9562
+    }
9563
+  };
9564
+
9565
+  // Swiper Class
9566
+  var components = [Virtual$1, Keyboard$1, Mousewheel$1, Navigation$1, Pagination$1, Scrollbar$1, Parallax$1, Zoom$1, Lazy$1, Controller$1, A11y$1, History$1, HashNavigation$1, Autoplay$1, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs$1];
9567
+  Swiper.use(components);
9568
+
9569
+  return Swiper;
9570
+
9571
+})));
9572
+//# sourceMappingURL=swiper-bundle.js.map