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